前言¶
用 DeepSeek Harness(DSH)做長任務時,常見做法是換會話前手寫一段「當前進度」Markdown,或指望模型從聊天記錄裏自己總結。前者容易過期、後者不穩定。若你已經在用 continual-evolve 一類插件,把偏好與做法落在 ~/.dsh/evolve/memory.db 裏,交接時仍缺一個固定骨架:誰在做、做到哪、下一步、卡在哪。
下面介紹的 dsh-continual-evolve-handoff 是 ZK-Andy/dsh-continual-evolve 的 fork,在原有記憶層上增加 evolve_read 的 action=handoff:不新建存儲,只把當前工作區記憶投影成四問視圖。
這是什麼¶
- 維護者:chaoguang668(社區目錄 SkillHub 分類爲「記憶」)
- 定位:Fork of ZK-Andy/dsh-continual-evolve;除 handoff 讀路徑外,其餘行爲與上游一致(單 SQLite 庫、開局注入索引、門禁寫、
evolve_write/ 默認evolve_read等) - 增量能力:
evolve_read(kind="memory", action="handoff")將本工作區記憶渲染爲四個問題,不再返回零散 id 正文或檢索列表
倉庫內 HANDOFF.md 說明:交接紀律借自另一工作臺項目——會話價值在產出物,不在聊天量;換會話前值得寫下的只有 who / progress / next / blocked。
與上游記憶層的關係¶
本 fork 不改 schema、不改既有 evolve_read 的 id / query 路徑。底層仍是:
- 中央庫:
~/.dsh/evolve/memory.db,按工作區路徑分區 - 寫路徑唯一:
evolve_write過事務門禁落盤 - 會話開局注入記憶索引(默認 token 預算 6000,CJK 感知降級)
handoff 是 只讀投影:始終反映庫裏當前 active 行,不會像手工維護的 HANDOFF 文件那樣悄悄過期。
handoff 視圖的四問結構¶
調用 evolve_read(kind="memory", action="handoff") 時,輸出固定爲四塊(HANDOFF.md):
## ① 我是誰 ← user / feedback 類記憶
## ② 幹到哪 ← 已落地內容,帶證據
## ③ 下一步 ← L2 會話狀態,設計上不進庫,顯式爲空槽
## ④ 卡在哪 ← 同上
記憶類型與問題的對應(ZCode 分類):
| type | 主要回答 |
|---|---|
user |
① 工作區是什麼、規則與環境 |
feedback |
① 做法(正文需含 Why: / How to apply: 契約) |
reference |
資源在哪 |
③、④ 屬於 L2 會話/任務狀態,按 continual-evolve 設計 永不入庫。handoff 因此渲染爲「帶原因的空槽」,而不是僞造一條會很快腐化的 memory。
action 爲可選枚舉,目前僅 handoff;非法值會校驗失敗,不會靜默退回普通 read。
設計取捨:投影而非新存儲¶
手工維護交接文件往往變成沒人看的週報。投影的優勢是:內容等於 store 此刻的真實狀態。
實現上還針對兩類開發中踩過的坑做了防護(詳見 HANDOFF.md):
- 契約標籤誤過濾:早期把以
**Why:**/**How to apply:**開頭的行當噪聲去掉,會導致 feedback 在視圖中「整段消失」而庫裏仍在。現改爲去掉標籤、保留正文,並優先採用How to apply行。 - 靜默裁剪:注入層可以安靜降級以不拖垮回合;handoff 的價值是「讀完就能開工」,裁掉條目必須明示,並提示用
evolve_read(…, query)補查。
超預算時的裁剪順序爲 progress → who → next → blocked;先整行丟棄(每問至少保留一行以免有內容卻空白),再按字節縮短,且報告計數與警告文案。
核心功能(繼承 + 增量)¶
繼承自 continual-evolve(與上游 README 一致)¶
- 一個庫,一個寫者;
evolve_write/evolve_read(id、關鍵詞 FTS) - 開局注入四組索引:User Profile / Project Meta / Project Memory / Feedback Memory
- 提案制提取、內容質量評審環(默認
review.dryRun: true)、L0/L1 分層、賬本回滾、插件管理記憶卡等
本 fork 獨有¶
evolve_read(kind="memory", action="handoff")四問交接視圖- 新增模塊
src/surfaces/evolve-handoff.ts;test/evolve-handoff.test.ts含 17 個用例(問題順序、類型路由、契約標籤迴歸、預算披露等)
許可:MIT(與上游相同)。
安裝與啓用¶
社區目錄 SkillHub 給出的安裝提示爲(原文):
請安裝 DSH 插件 chaoguang668/dsh-continual-evolve-handoff
目錄頁:https://www.skillhub.cn/plugins/chaoguang668/dsh-continual-evolve-handoff
本 fork 的 package.json 仍名爲 dsh-continual-evolve 且 repository 指向上游;不應用 npm 上的 dsh plugin add dsh-continual-evolve 代替本倉庫,否則會裝到 ZK-Andy 上游而非 handoff 增量。
上游 README 記載的 GitHub 源碼安裝方式爲(首次需批准 allowBuilds 構建步驟):
dsh plugin add ZK-Andy/dsh-continual-evolve
安裝 handoff 版時,在 Harness 插件安裝流程中改用 SkillHub 標識的倉庫 chaoguang668/dsh-continual-evolve-handoff(與上游相同的 dsh plugin add <owner/repo> 形式,具體以你當前 DSH 版本文檔爲準)。裝完或升級後 重啓正在使用的 profile(桌面端或 dsh <profile>)。
運行要求(上游 README):Node ≥ 22.5(依賴 node:sqlite);缺失時插件降級爲 no-op 並在控制台告警。engines 字段爲 ^22.19.0 || >=24.0.0。
典型用法¶
1. 平時仍用自然語言寫記憶(上游 README)¶
「記住我做 review 用 oxlint,不用 eslint」 → evolve_write,過門禁落盤
「把這套做法存成技能」 → 物化成 SKILL.md,重啓後 skill 工具能發現
「所有項目都用」 → 技能搬到全局分區
會話中途寫入的記憶 下個會話 才進入注入索引(section 凍結以利於 prompt cache)。
2. 換會話或開新 agent 前拉交接視圖¶
在工具調用層面使用 handoff 動作(HANDOFF.md):
evolve_read(kind="memory", action="handoff")
也可在對話中讓模型「讀取 handoff 交接視圖」——前提是已安裝本 fork 且 evolve_read 已註冊 action 參數。
若輸出提示有條目因體積上限未展開,按文案用 evolve_read 的 query 檢索補全,並優先覈對 ②「幹到哪」是否有缺口。
3. 配置(與上游相同,節選)¶
常用鍵仍掛在 continual-evolve 插件 id 下,例如:
- id: continual-evolve
config:
memoryIndex:
maxTokens: 8000
extraction: true
review:
dryRun: false
完整表見上游 README(memoryIndex.*、review.*、memoryCard.enabled 等)。handoff 投影本身無單獨配置塊。
適用場景與注意¶
適合誰
- 已採用或打算採用 continual-evolve 記憶模型,且需要在會話切換時用 固定四問 對齊上下文
- 希望交接內容來自治理過的 memory store,而不是另一份手工 Markdown
注意
- 插件以 當前 dsh 進程權限 運行,可讀寫
~/.dsh/evolve/;安裝前請閱讀源碼與 MIT 許可證,確認符合你的安全策略。 - ③④ 空槽是設計行爲,不是 bug;即時任務狀態應放在會話內或倉庫 ADR,不要強行寫入 L1 記憶。
- SkillHub 爲社區目錄,與 DeepSeek / 幻方無官方從屬關係;DSH 生態本身是「一切皆插件」。
- 上游 README 的快速開始仍指向 npm / ZK-Andy 倉庫;使用 handoff 必須以 chaoguang668/dsh-continual-evolve-handoff 爲準。
結尾¶
dsh-continual-evolve-handoff 在 continual-evolve 的單庫記憶之上,用一次 evolve_read 調用給出 我是誰 / 幹到哪 / 下一步 / 卡在哪 的只讀投影,並顯式處理 L2 空槽與裁剪披露,適合作爲 DSH 長任務的工作區交接入口。
- 社區目錄:https://www.skillhub.cn/plugins/chaoguang668/dsh-continual-evolve-handoff
- GitHub:https://github.com/chaoguang668/dsh-continual-evolve-handoff
- handoff 設計說明:https://github.com/chaoguang668/dsh-continual-evolve-handoff/blob/main/HANDOFF.md
- 上游記憶插件:https://github.com/ZK-Andy/dsh-continual-evolve