dsh-continual-evolve-handoff:在記憶庫上投影四問交接視圖

前言

用 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):

  1. 契約標籤誤過濾:早期把以 **Why:** / **How to apply:** 開頭的行當噪聲去掉,會導致 feedback 在視圖中「整段消失」而庫裏仍在。現改爲去掉標籤、保留正文,並優先採用 How to apply 行。
  2. 靜默裁剪:注入層可以安靜降級以不拖垮回合;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
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜