前言¶
在 DeepSeek Harness(DSH)裏做長期陪伴或帶人格的智能體時,上下文窗口是易失的:對話一滿會被裁剪,清上下文或壓縮後「她是誰、做到哪、答應過什麼」往往跟着歸零。常見做法是把設定寫進系統提示或某次會話裏,但換會話、重啓 DSH 之後,連續性仍靠人工複製粘貼。
人格接力(dsh-identity-relay)由 wumingzhiren-lab 維護,歸類爲「記憶」類 DSH 插件。下面介紹它如何把人格卡、交接書和長期記憶落到磁盤,並在每個新會話開工時自動注入,讓換會話、清上下文之後仍能從同一套檔案讀檔。
這是什麼¶
一句話:把「靈魂」從上下文搬到純文本文件;插件負責讀檔、注入、預警和維護,不負責自動採集聊天內容。
- 倉庫:wumingzhiren-lab/dsh-identity-relay
- 社區目錄:SkillHub 插件頁
- 許可證:MIT(見倉庫)
- 插件以當前 DSH 進程權限讀寫
memoryDir,安裝前建議通讀源碼與許可證;社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係
三個磁盤文件¶
記憶庫默認目錄爲 ~/.dsh/identity-memory(可在配置裏改 memoryDir)。安裝後會自動生成模板,模板不等於已配好人格。
| 文件 | 作用 |
|---|---|
persona.md |
人格卡:身份、性格、說話方式、紅線 |
handover.md |
交接書:上一段在做什麼、接下來做什麼、答應過什麼 |
facts.jsonl |
長期記憶:一行一條 JSON,含時間、內容、來源、狀態等 |
每次新會話開工(新建、恢復、清上下文、壓縮之後),插件會把「人格卡 + 交接書 + 近期記憶」注入第一輪上下文。上下文佔用接近上限時,會在下一步之前插入預警,提醒先用 relay_handover 寫交接書。會話進行中若磁盤上的三個文件被別的會話或人工編輯改動,下一步之前會提示先 relay_load 重讀。
relay_handover / relay_persona 覆蓋寫入前,舊版會自動進入 history/,各保留最近 10 份。
記憶的來源與狀態¶
每條長期記憶帶來源檔位與狀態,檢索默認只出 active 條目。
來源五檔(可信度從高到低):owner(主人)> self(自己說過/答應的)> evidence > tool > inferred;老數據可爲 unknown,不猜測。
- 作廢:標
superseded等狀態,不刪行;用relay_recall時設includeSuperseded: true可查看歷史 - 同鍵
subject:新記憶寫入時舊條自動作廢並指向新條,由規則處理而非模型推斷 - 關聯:
related最多 5 個 id,回憶命中時可帶出關聯條(最多 3 條) - 歸檔:
status: archived不再參與讀檔與默認檢索,行仍保留;收工整理腳本~/.dsh/identity-memory/tools/consolidate.mjs僅歸檔符合條件的過程流水,owner/self永不歸檔
八個工具¶
Bot 通過 DSH 暴露的工具讀寫檔案(名稱以倉庫文檔爲準):
relay_load— 重讀人格卡、交接書與近期記憶relay_remember— 寫入一條長期記憶(可選source、subject、related、validFrom/validTo、importance等)relay_recall— 關鍵詞回憶,默認最多 20 條 activerelay_retract— 按內容片段定位並蓋章作廢relay_conflicts— 規則檢測可能矛盾的記憶對;默認只報告,執行需顯式參數且主人原話不會從此入口被蓋relay_handover— 讀/寫交接書relay_persona— 讀/更新人格卡relay_status— 記憶庫統計、歷史備份數、上下文壓力
FAQ 中明確:不會自動把聊天摘要寫入記憶;只有調用 relay_remember(或你/她主動維護文件)纔會增長 facts.jsonl。
安裝與裝完檢查¶
推薦從 GitHub 安裝(無需 git clone):
dsh plugin add github:wumingzhiren-lab/dsh-identity-relay#main
也可在 DSH 插件管理器的市場/安裝中填寫 github:wumingzhiren-lab/dsh-identity-relay。本地開發可用 dsh plugin add <本目錄絕對路徑>。安裝後 HMR 生效,一般無需重啓。
裝完後建議按 README「裝完 60 秒」走一遍:
- 調用
relay_status,若人格卡/交接書仍是初始模板,會標 ⚠️ - 填寫
persona.md或通過relay_persona寫入;插件不會替你編人格 - 用
relay_handover寫第一份交接書 - 用只有檔案裏纔有的信息驗讀檔;不通則
relay_load檢查是否仍是空模板
可選配置¶
在 cordis.patch.yml 的 config 中可調整行爲。常用項包括:
| 鍵 | 默認 | 說明 |
|---|---|---|
enabled |
true |
總開關 |
memoryDir |
~/.dsh/identity-memory |
記憶庫路徑 |
injectOnCreated / injectOnResume / injectOnSubagents |
true |
各類會話是否注入 |
warnRatio |
0.7 |
上下文佔用比例預警(0.5–0.99,越界會被夾緊) |
recallLimit |
20 |
讀檔注入的記憶條數(1–100) |
injectSelect |
"relevance" |
讀檔挑記憶:relevance 或 recent |
maxFactsChars |
8000 |
記憶段字符預算;0 表示不設限 |
完整鍵表與邊界說明見倉庫 README「配置」一節(例如 maxFacts 有 100 條硬下限等防呆行爲)。
適用場景與注意¶
適合需要跨會話人格連續、可審計的長期記憶(來源、作廢、同鍵更新)的 DSH 智能體或 QQ Bot 等宿主場景。若只需要單次會話內的簡單摘要,不必上全套檔案模型。
使用時需接受幾件事:記憶要人工或工具寫入;開放世界的語義衝突不會全自動判死,需人終審或規則內的同鍵替換;插件零依賴、純文本存儲,便於備份與 diff,也意味你要自己管好 memoryDir 的備份與權限。
倉庫 README 提供本地測試命令(在臨時目錄跑,不碰真實記憶庫),例如 node test/smoke.mjs 及 step4–step18、benchmark、fuzz 等;文檔記載 2026-11-03 實測 426/426 通過。當前 package.json 版本爲 0.5.0,功能細節以 README / CHANGELOG 爲準。
結尾¶
人格接力解決的不只是「能不能記住」,而是「記住的內容還算不算數」:磁盤上的檔案、來源檔位與蓋章作廢,讓讀檔和回憶有憑據。DSH 生態主張「一切皆插件」;若要在 Harness 裏做長期身份連續,可從官方安裝命令裝好記憶庫,填人格卡與交接書,再用 relay_remember 把該留的東西寫進 facts.jsonl。
- 目錄頁:https://www.skillhub.cn/plugins/wumingzhiren-lab/dsh-identity-relay
- GitHub:https://github.com/wumingzhiren-lab/dsh-identity-relay