- jsc-mod-statusline:/jsc-mod-statusline:enable、compact、disable - jsc-mod-companion:/jsc-mod-companion:status、switch、disable、setup、todo、quiet - 同步更新 plugin.json、marketplace.json 與各 README - 補上 statusline band 測試缺少的 ui.render 底層處理 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2.5 KiB
2.5 KiB
name, description
| name | description |
|---|---|
| ingest | 解析一章輕小說(txt 或 md),抽出世界觀與人物,逐一詢問合併、新建或略過,並寫入 companion 角色資料。使用者提供小說章節檔或要求建立/更新角色設定時使用。 |
小說章節解析
輸入:單章 txt 或 md 與章節編號。不保存整章原文,只存結構化摘要與簡短對白範例(每句 ≤80 字)。
流程
- 讀取與分段:超過約 6000 字的章節依段落/場景切成多段,逐段抽取後合併為一份結果,出現順序(
order)沿用全章連續編號。 - 抽取:時間、地點、環境、用語(寫入共用世界觀庫);人物、對白、獨白(寫入角色)。人物標
main(有戲份的主要角色)或minor(路人)。 - 整理成
ParseResult(型別見hooks/companion/core/types.ts):- 記憶分四層:
episodic情節、semantic語意、emotional情感、procedural程序;每筆含importance(1–10)與order。 - 基本資訊欄位:birthday、zodiac、bloodType、hair、face、height、weight、measurements。每欄附
source(novel>official>wiki)與confidence(0–1);原文沒寫的先搜尋,查不到填value: "unknown",不可猜測。
- 記憶分四層:
- 逐一詢問人物:呼叫
planMerge取得清單(主要角色在前,路人最後批次問)。每位問「合併 / 新建 / 略過」,並顯示疑似同一人的理由(名字、別名、特徵)。 - 套用:呼叫
applyParseResult(fs, root, result, decisions, resolutions)。- 同一章重跑不會重複寫入(以章節編號冪等);合併只追加不覆蓋。
- 回傳的
conflicts是基本資訊衝突,逐欄位問使用者保留或取代,答案放進resolutions["人物.欄位"](keep/replace)後再套用一次。更新既有值前一律先問。
- 口癖與個性:用
summarizeTics由對白與獨白歸納語尾、口頭禪、稱呼;個性先用屬性標籤取先驗(initPersonality),再把模型推論交給applyInference(自動限制在先驗 ±20,每個維度必須附章節與對白證據)。使用者手動調整的維度用overrideDim鎖定,之後不再自動更新。
注意
- 模型從對白推得的個性可信度偏低,只當先驗。
- 不要在 repo 內保存受版權保護的長篇設定或台詞;資料寫在使用者家目錄的
~/.companion資料夾。 - 範例完整流程見
docs/ingest-walkthrough.md。