refactor: 技能統一收進 jsc-skills,加入 herdr,版本統一為 0.0.1

- 新增 jsc-skills plugin,含 herdr、herdr-issue、ingest,以 /jsc-skills:<名稱> 呼叫
- ingest 自 companion 移入,移除獨立的 herdr-issue plugin
- companion 版本由 0.0.3 改為 0.0.1

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
root
2026-10-13 07:29:05 +00:00
co-authored by Claude Sonnet 5.5
parent 6ae82d1889
commit 26fbf9ae30
17 changed files with 238 additions and 22 deletions
+2 -2
View File
@@ -1,7 +1,7 @@
{
"name": "companion",
"version": "0.0.3",
"description": "小說角色陪伴:人設注入、語氣、心情與好感、互動記憶、主動關心與待辦,並可用 ingest skill 解析小說建立角色",
"version": "0.0.1",
"description": "小說角色陪伴:人設注入、語氣、心情與好感、互動記憶、主動關心與待辦",
"license": "MIT",
"author": {
"name": "JSC"
-27
View File
@@ -1,27 +0,0 @@
---
name: ingest
description: 解析一章輕小說(txt 或 md),抽出世界觀與人物,逐一詢問合併、新建或略過,並寫入 companion 角色資料。使用者提供小說章節檔或要求建立/更新角色設定時使用。
---
# 小說章節解析
輸入:單章 txt 或 md 與章節編號。不保存整章原文,只存結構化摘要與簡短對白範例(每句 ≤80 字)。
## 流程
1. **讀取與分段**:超過約 6000 字的章節依段落/場景切成多段,逐段抽取後合併為一份結果,出現順序(`order`)沿用全章連續編號。
2. **抽取**:時間、地點、環境、用語(寫入共用世界觀庫);人物、對白、獨白(寫入角色)。人物標 `main`(有戲份的主要角色)或 `minor`(路人)。
3. **整理成 `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"`,不可猜測。
4. **逐一詢問人物**:呼叫 `planMerge` 取得清單(主要角色在前,路人最後批次問)。每位問「合併 / 新建 / 略過」,並顯示疑似同一人的理由(名字、別名、特徵)。
5. **套用**:呼叫 `applyParseResult(fs, root, result, decisions, resolutions)`。
- 同一章重跑不會重複寫入(以章節編號冪等);合併只追加不覆蓋。
- 回傳的 `conflicts` 是基本資訊衝突,**逐欄位**問使用者保留或取代,答案放進 `resolutions["人物.欄位"]`(`keep` / `replace`)後再套用一次。更新既有值前一律先問。
6. **口癖與個性**:用 `summarizeTics` 由對白與獨白歸納語尾、口頭禪、稱呼;個性先用屬性標籤取先驗(`initPersonality`),再把模型推論交給 `applyInference`(自動限制在先驗 ±20,每個維度必須附章節與對白證據)。使用者手動調整的維度用 `overrideDim` 鎖定,之後不再自動更新。
## 注意
- 模型從對白推得的個性可信度偏低,只當先驗。
- 不要在 repo 內保存受版權保護的長篇設定或台詞;資料寫在使用者家目錄的 `~/.companion` 資料夾。
- 範例完整流程見 `docs/ingest-walkthrough.md`。