前言¶
DeepSeek Harness(DSH)里常见的一类「记忆」插件,比拼的是能塞进上下文多少、检索多快。上下文有限时,模型读到的往往是摘要和结论,而不是完整原文;结论一旦被当成事实沿用,过期判断也会一直生效,且很难被察觉。
下面介绍的 dsh-retcon(回溯性重构)走另一条路:它不扩大记忆容量,也不做向量或 RAG。它只做一件事——在写下一条判断时,必须写清「什么情况下它是错的」;没写就不许写入。配套的是一份与宿主无关的 Markdown 封存格式,以及可选的 DSH 插件,用来生成格式、执行检查、回访补记和列出未结案条目。
这是什么¶
一句话:封存格式 + 一把尺子。 维护者为 QiDouZu,在 SkillHub 社区目录中归类为「记忆」。当前 package.json 版本为 0.2.3,许可证 MIT。
仓库自承框架分三层:
- L0:
格式.md、读取/标准.md、scripts/check_seal.py——纯 Markdown 与 Python,不依赖 DSH。 - L1:本仓库的
index.js插件——替你记住格式并在写入时检查。 - L2:变更史、回访等自动化;README 写明度量尚未完成。
它不存记忆——不是知识库、不是画像、不做索引。生成的文件落在工作区 封存/ 下,形态与普通 Markdown 文件相同;没有 DSH 时,用手写格式 + check_seal.py 也能跑同一套流程。
核心功能¶
封存结构与写入门槛¶
每条「判断」对应一个带日期的 Markdown 文件,例如 20261025_标题.md。结构由插件工具 seal_write 自动生成,你需要填的是内容。第一节「我的假设」里,「怎么推翻我」为必填;答不出具体、可执行的推翻方式,写入会被拒收(v0.1.1 起,含糊表述如「多试试就知道」也会被拒)。
典型骨架如下(字段含义以仓库 格式.md 为准):
# 标题
> 封存时间 / 来源 / 衍生自(可选)
## 一、我的假设(写完不改)
### 那是什么 ← 建议以「我猜/我以为」开头
### 凭什么这么假设
### 我可能错在哪 ← 至少两条
### 怎么推翻我 ← 一件能执行的事(必填)
## 二、原片(指针)
## 三、后来 ← 回访时填
## 四、注释 ← 推翻记录与变更
三个 DSH 工具¶
装插件并重启 DSH 后,应能通过模型调用以下工具(验收方式:问 AI 是否有 seal_write,或直接试调一次):
| 工具 | 作用 |
|---|---|
seal_write |
封存一条判断;缺少可执行的「怎么推翻我」则失败 |
seal_later |
回访:记录验证后是「站住了」还是「塌了」及原因 |
seal_list |
列出「后来」仍为空、尚未结案的封存 |
可选:丢弃实验与离线检查¶
仓库还提供 scripts/cut_ledger.py,用于「丢弃」实验(切掉某段上下文并预测什么应仍在,事后记录结果),与封存是另一半流程。独立检查器 scripts/check_seal.py 可在无 DSH 环境下校验封存是否符合标准。
安装与启用¶
官方 README 未提供 dsh plugin add github:... 一类命令;安装方式是把插件目录放进 DSH 的 plugins 路径,然后重启。目录名须为 dsh-retcon/,至少包含:
dsh-retcon/
├── index.js
├── cordis.patch.yml
└── package.json
1、定位插件目录。 不要凭猜测;README 给出三个常见候选,最终以「重启后工具是否出现」为准:
| 候选 | 路径 |
|---|---|
| A | 启动 DSH 时工作目录下的 plugins/ |
| B | ~/.dsh/plugins/ |
| C | DSH 安装目录下的 node_modules/ |
若目录不存在,自行创建即可。仍不确定时,可问当前 DSH 实例「插件目录在哪」,再用装包、重启、看 seal_write 是否出现来验证。
2、重启 DSH。
3、验收。 确认 seal_write、seal_later、seal_list 可用。
cordis.patch.yml 中 name: 'dsh-retcon' 须与 package.json 的 "name": "dsh-retcon" 一致;id 为内部挂载标签,可按 README 说明理解,一般无需改文件内容即可使用。
典型用法¶
装好后可直接试一条封存(参数以 README 示例为准,标题与假设内容按你的场景替换):
seal_write({
title: "先试试它拦不拦",
hypothesis: "…",
evidence: "…",
might_be_wrong: ["…", "…"],
falsify: "一次具体的取帧、摘句或跑数,用来验证或推翻"
})
日常流程可以是:仅在「赌注大、反直觉、已在用却说不清依据、与他人说法冲突却反驳不了」等情况下调用 seal_write;隔一段时间用 seal_list 看未结案项,用 seal_later 填「后来」。README 强调:偏好、已确认事实、随手选择等不必封存;封存条数宜少(作者经验表述为十条以内更值得看,而非上百条流水账)。
无 DSH 时,可复制 格式.md 手写,并用 Python 运行检查器:
python scripts/check_seal.py <封存文件路径>
(具体子命令与参数以仓库 scripts/ 内脚本帮助为准。)
适用场景与注意¶
更适合谁: 把 AI 当长期助手、记忆里积累大量判断的用户;或需要把「审美/解读类判断」写成可推翻假设的场景。README 明确写「其他人不用」——没有 live 冲突、只作日用工具的用户,这套格式可能是负担。
与手写模板的差别: 模板可以漏填「怎么推翻我」;插件在 seal_write 那次写入上不允许空栏。若你能稳定按 格式.md 自律填写,可以不装插件;若容易滑过那一栏,插件的价值就是那一下拒收。
安全与信任: DSH 插件在当前 DSH 进程权限下运行,会读写你工作区内的 封存/ 等路径。安装前请自行阅读 GitHub 源码 与 MIT 许可证,确认符合你的环境与合规要求。SkillHub 目录页由社区维护,与 DeepSeek / 幻方无官方从属关系;DSH 生态本身是「一切皆插件」的组装方式,本插件是其中可选的一环。
使用预期: 第一轮被拒是设计的一部分(例如只写「这个方案更好」却给不出推翻条件)。「怎么推翻我」必须指向可执行动作,而不是口号。
结尾¶
dsh-retcon 的价值不在「记得更多」,而在让记忆里的结论保持可被推翻的状态:第三节「后来」空着时是待验假设,填了才是经过回访的记录。若你已在用 DSH,可按上文三步手动放入 dsh-retcon 并验收工具;若只想拿格式与尺子,同一仓库的 L0 文件与 retcon-form 也可单独使用。
- 社区目录页:https://www.skillhub.cn/plugins/QiDouZu/dsh-retcon
- 源码与完整文档:https://github.com/QiDouZu/dsh-retcon