# jsc-mod-companion ## 指令 ### `/jsc-mod-companion:status` 查看目前角色、心情、關係階段與四維度(好感、信賴、親密、依賴)與待辦數量。 查看目前角色、心情、好感與待辦數量。情緒有 8 個維度(心情、精力、害羞、忌妒、想念、心跳、想家、不悅),預設列出前 3 強,`--all` 顯示完整數值(▰▱ 量表依維度上色);band 上的情緒名稱為目前最強的主情緒。 ```text /jsc-mod-companion:status /jsc-mod-companion:status --all ``` ### `/jsc-mod-companion:switch <角色>` 切換角色;不給角色會列出可用角色。 ```text /jsc-mod-companion:switch 小明 ``` ### `/jsc-mod-companion:disable` 關閉陪伴,所有資料保留。 ```text /jsc-mod-companion:disable ``` ### `/jsc-mod-companion:setup [key=value…]` 不給參數時顯示目前設定;給 key=value 則儲存。可設定:`nickname`、`wake=HH:MM`、`sleep=HH:MM`、`tz=+0800`、`careLimit=N`(每日主動關心上限)、`quietStart=HH:MM`、`quietEnd=HH:MM`。 ```text /jsc-mod-companion:setup nickname=阿明 wake=07:30 sleep=23:30 tz=+0800 careLimit=3 quietStart=22:00 quietEnd=08:00 ``` ### `/jsc-mod-companion:todo [list]` 列出未完成的待辦。 ```text /jsc-mod-companion:todo ``` ### `/jsc-mod-companion:todo add <內容> [due=YYYY-MM-DDTHH:MM]` 新增待辦,可指定到期時間(依 `tz` 設定換算)。 ```text /jsc-mod-companion:todo add 買牛奶 due=2026-10-15T18:00 ``` ### `/jsc-mod-companion:todo promise <內容> [due=YYYY-MM-DDTHH:MM]` 記錄角色答應使用者的事(列表中標示【承諾】),用法同 `todo add`。 ```text /jsc-mod-companion:todo promise 週末一起討論新章節 due=2026-10-17T10:00 ``` ### `/jsc-mod-companion:todo done <編號>` 將待辦標為完成。 ```text /jsc-mod-companion:todo done 1 ``` ### `/jsc-mod-companion:quiet [分鐘]` 暫時靜音,不主動關心;預設 60 分鐘,`0` 取消靜音。 ```text /jsc-mod-companion:quiet 30 ``` ### `/jsc-mod-companion:ingest` 解析單章小說(txt/md),逐一詢問合併、新建或略過後寫入角色資料;提供章節檔或要求建立角色時也會自動使用。 ```text /jsc-mod-companion:ingest chapter1.md 章節編號 1 ``` ## 關係與階段 關係有好感、信賴、親密、依賴四個維度(0–100),各有「原典基準」(朋友線為 0)與「存檔累積」兩本帳,有效值為兩者相加。階段為 陌生、熟人、朋友、好友,只升不降: | 階段 | 條件 | | --- | --- | | 熟人 | 好感 ≥ 15 | | 朋友 | 好感 ≥ 30、信賴 ≥ 25 | | 好友 | 好感 ≥ 50、信賴 ≥ 45、親密 ≥ 30 | - 每日增量有日限(好感 4,信賴、親密、依賴依角色 `relationTraits` 的心防、害羞、撒嬌、依賴傾向調整);有效增量 = 原始增量 × (1 − 今日累計 / 日限) × (1 − 目前值 / 100)。 - 被罵時好感 −3,信賴依期望違反公式扣除(越親密扣越多,單次上限 −30)。 - 14 天無互動後,每個維度每天 −0.5;階段不會降低。 - 舊版單一好感值(`affinity`)的存檔在讀檔時自動升級:好感值保留,其餘維度依比例推估,階段不低於原本。 與第 9 章的差異:不實作曖昧、戀人、穩定戀人與冷戰子狀態;負向事件目前只有「被罵」一種嚴重度(0.4);增量沿用原有的「有意義互動/被罵」判斷,尚未接標籤管線。 ## 人格 18 參數(與第 9 章的差異) 人格參數依 wiki 9.2 實作於 `hooks/companion/core/params.ts`: - 三層值:角色包基準(`core.json` 的 `params`)+存檔偏移(每次 ±1,上限 ±15)+今日偏移(N(0,5),上限 ±10),總值限制在 0–100。 - 衍生值:有效心防、有效害羞、有效口是心非,公式同 9.2;信賴與親密以 0–100 輸入。 - Big Five 保留為推導值:有 `params` 時,神經質(心情半衰期)與外向性(關心頻率)改由 18 參數推導,加權為設計啟發式;沒有 `params` 的舊角色沿用 `neuroticism`、`extraversion`。ingest 的 Big Five 推論與證據機制不變。 - 姓名、性別、年齡、核心信念不可由 AI 改動,`filterAiPatch` 會剔除這些欄位。 - 目前只提供計算與儲存欄位(`state.json` 的 `params`);每日抽樣、存檔偏移累積的觸發時機留待後續工作項目。 ## 評估標籤 使用者每句話會對應到一個評估標籤,再由 `rules.ts` 的規則表換成心情增減量;模型只負責分類,不給數值。 - 正則先判明確的情況(責罵、感謝、完成)。 - 正則沒判出時,採用模型於回覆末尾補的 `<評估:標籤>`;標籤須在 `tags.ts` 的白名單內,缺失或不在白名單就當作沒有標籤。 - 白名單約 20 個,參考 wiki 第 9.4 章;不含戀愛與親密類標籤。 ## 情緒模型 - 8 維度各有基準與半衰期(心情 8h、精力 6h、害羞 2h、忌妒 4h、想念 12h、心跳 1h、想家 24h、不悅 4h,神經質 50 時),數值集中在 `hooks/companion/emotion.ts`。 - 晝夜節律:精力基準在本地 15 點最高、凌晨 3 點最低(±0.1,依 `tz` 設定)。 - 事件的情感注入、疲勞易怒(精力低於 0.3 時負面變化 ×1.5)、正向習慣化(重複 ×0.7ⁿ)、負向敏感化(重複最多 ×2),計次以 6 小時半衰期遺忘。 - 舊的 PAD 存檔讀檔時自動映射(p→心情、a→精力、d→害羞)並升級,不需重建。 - 與第 9 章的差異:晝夜節律振幅、習慣化係數等數值為本實作自訂,尚未逐項對照第 9 章。