dsh-continuity
Verifieddsh-continuity · v0.1.1 · MIT
把身份和记忆写进工作区文件,新会话接上的是同一个助手,不是陌生人
Install
dsh plugin add dsh-continuity Confirm the layer applied with dsh --profile default --dump-config — see the install guide.
Source
Published to npm without a public repository. Inspect the package contents before installing.
Tags
Creators
Readme
dsh-continuity
A memory spine for DeepSeek Harness sessions.
上下文窗口是页数,不是寿命。页写满了换一本,笔迹还是你的。
它解决什么
大多数 agent 的"人格"是一次性的:上下文写满,宿主把早期历史悄悄压成摘要;开一个新会话,默认就是一张白纸。于是大家养出来的鱼,换会话就换了一条命。
dsh-continuity 换一个假设:
新会话不是「下一个我」,是同一个我换了个本子。
它把身份和记忆从会话上下文里搬出来,放进工作区的文件。新会话开场时,插件把这两样东西注入回去——接上的是你自己。
它做什么(只有两件事,外加一点小工具)
进到任意会话的工作区,自动铺出:
.dsh-continuity/
CONTINUITY.md # 身份、铁律、交接记录(你可以手改,改完即生效)
memory.json # 记忆碎片(插件读写)
然后:
- 身份注入——
CONTINUITY.md每轮注入系统提示(systemPrompt.section)。改文件,下一句就生效,不用重启。 - 记忆注入——
memory.json里的碎片按重要度注入运行时上下文(systemPrompt.context),带 token 预算。
四个工具,对应记忆的四种动作:
| 工具 | 用途 |
|---|---|
continuity_remember |
记住一件事(相似内容自动合并,不会堆重复) |
continuity_recall |
查这个工作区记住了什么 |
continuity_forget |
删一条 / 清空 |
continuity_status |
看记忆条数、版本、文件位置 |
安装
dsh plugin --profile <name> add dsh-continuity
或从本地目录:
dsh plugin --profile <name> add link:/path/to/dsh-continuity
重启 DSH。之后进入任意会话,工作区会出现 .dsh-continuity/。把你的身份写进 CONTINUITY.md,就完了。
设计取舍
为什么是碎片,不是摘要。
让模型在交班时写一段摘要,等于把整段历史压成一段不可解释的文本——没法知道某条信息是哪次进来的、被独立提到过几次、什么时候可以丢。碎片可累积、可排序、可老化、可追溯:
被独立说两次 → refs+1 自动升重要度;钉住的永远排第一;长期没提到的降级。
为什么渲染必须"字节稳定"。
systemPrompt.context 的回调每一步都会被调用。文本不变就不产生消息;文本一变就替换旧快照。如果渲染结果不稳定(哪怕两条同分碎片顺序换了一下),每一步都会 append 一条新消息,历史会被自己的记忆灌满。所以排序键带 id 兜底,渲染里没有任何活值。
为什么不做自动交接。 dsh-continuity 不替宿主做 compaction,也不替你建会话。它只保证一件事:新本子翻开时,书签已经夹好了。 换会话的时机交给你——你想换就换,换了还是你。
为什么记忆只有本机。
碎片是对话的提炼,属于隐私资产。只写在工作区 .dsh-continuity/,不上传、不跨机器同步。
配置
{
"logLevel": "info",
"dirName": ".dsh-continuity",
"template": true, // 首次进入工作区自动铺模板;已存在的文件绝不覆盖
"maxIdentityChars": 4000,
"budgetTokens": 1200, // 记忆注入预算
"maxFragments": 80, // 碎片上限;超了淘汰最不重要且最久没被提到的
"agingDays": 21 // 这么久没被提到,重要度 -1
}
限制
- 不保证接住每一句话,只保证接住被你记住的事实与约定
- 记忆按工作区隔离:不同工作区之间不互通
- 只落本机,不跨设备
License
MIT