前言¶
用 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