前言¶
DeepSeek Harness(DSH)採用插件化架構,允許在宿主組合層註冊行爲。dsh-plugin-persona-memory 插件解決了傳統記憶管理方案(如 memory-boot、ptc-memory)僅在選中特定預設時才注入記憶的問題。該插件將角色設定與長期記憶管理註冊在宿主組合層,使得記憶對所有 agent 預設的每個會話生效。它替代了舊版的三 agent 預設加載方式,提供了一套統一的角色庫、全局/項目兩級記憶以及長期日誌管理方案。
核心功能¶
該插件提供以下核心能力:
* 角色設定與長期記憶管理:支持角色庫的增刪改查及切換。
* 宿主組合層註冊:安裝後追加進 dsh.profile.bundles,通過 cordis.patch.yml 插入宿主組合。
* 右側欄管理面板:提供可視化的角色、記憶和日誌管理界面。
* 工具與技能:提供 memory 和 persona 兩個全局工具,以及 persona-creator 技能。
* 長期日誌 (JOURNAL.l):支持追加與檢索,但不注入提示詞。
安裝與啓用¶
使用 DSH 內置插件管理器進行安裝。安裝命令如下:
dsh plugin --profile <profile> add github:hu568/dsh-plugin-persona-memory
安裝後,本包被追加進 profile 的 dsh.profile.bundles。驗證安裝是否成功,可以在 agent 中請求接口:
GET /persona-memory/api/state
返回 200 且 ok: true 即表示面板路由已註冊。
文件結構與注入邏輯¶
插件會在宿主環境生成以下文件和注入段落:
* 角色庫:$DSH_HOME/personas/<id>/{persona.yml,SOUL.md,USER.md}
* 全局記憶:$DSH_HOME/memory/FACT.md
* 項目記憶:<項目根>/MEMORY.md
* 長期日誌:$DSH_HOME/memory/JOURNAL.l
注入的提示詞段落使用 memory: 前綴(如 memory:soul, memory:user, memory:facts),並設置 interpolate: false。這確保了即使在精簡模式(router-standard)下,這些段落也能保留,同時避免了宿主 renderPrompt() 對未註冊變量的錯誤處理。
寫入限制¶
爲了防止上下文無限膨脹,插件在寫入側設置了硬性閘口(超限直接報錯,不靜默截斷):
| 文件 | 限制規則 | 說明 |
|---|---|---|
全局 FACT.md |
行數 AND 字節 | 默認 100 行 / 8000 字節(UTF-8)。任一超限即拒絕寫入。 |
項目 MEMORY.md |
字符數 | 默認 8000 字符。與注入側 maxChars 同口徑。 |
長期日誌 JOURNAL.l |
無限制 | 僅追加,不注入提示詞,用於流水賬存儲。 |
子代理行爲¶
子代理會話的注入邏輯與主會話不同:
* 不注入:角色 (memory:soul/memory:user)、全局記憶 (memory:facts → FACT.md) 及長期日誌 (JOURNAL.l) 均不注入。
* 僅注入:項目記憶 (memory:facts → MEMORY.md) 會被注入,因爲這是子代理執行具體委派任務所需的上下文。
* 配置:可通過 subagentProjectOnly: false 恢復舊版(子代理與主會話一致)的行爲。
工具與面板¶
插件註冊了兩個全局工具 memory 和 persona,以及右側欄面板。
工具命令¶
- memory:
action=read: 讀取 FACT.md、MEMORY.md 並報告當前體量。action=update, scope=global: 覆蓋寫入 FACT.md(受行數/字節限制)。action=update, scope=project: 覆蓋寫入 MEMORY.md(受字符數限制)。action=append: 向 JOURNAL.l 追加日誌。action=search: 按子串檢索日誌。
- persona:
action=list/current/show/use/create/update/delete: 管理角色庫。
面板 API¶
右側欄面板通過 HTTP 路由提供服務,前綴默認爲 /persona-memory:
GET /persona-memory/api/state
POST /persona-memory/api/persona/{show,use,save,delete,order}
POST /persona-memory/api/memory/save
POST /persona-memory/api/journal/{append,search}
注意事項¶
- 卸載不會清理數據:執行
remove操作不會刪除$DSH_HOME/personas和$DSH_HOME/memory目錄下的文件,需手動清理。 - 更新操作:若插件內容更新但安裝規格字符串未變,DSH 會報
ambiguous-install錯誤。更新時需先remove再add。 - 依賴項:運行依賴
schemastery(別名安裝npm:@deepseek-ai/schemastery@3.18.2)。 - 版本兼容:實測 DSH 版本爲
0.1.5-rc.1~0.2.0-rc.2。