前言¶
用 DSH(DeepSeek Harness)写代码时,助手往往能在单次会话里把事做完,但不会记住你上次踩过的坑。新开一轮对话,你还得重复说明:回调守卫要放在幂等判断之前、金额别用 float、发版前要先跑某个脚本。常见补救要么是整段对话上云,要么是只存结论、不统计「这个问题你已经犯过几次」。
下面介绍社区插件 dsh-evolution(维护者 wycto,分类:记忆):在本地记录开发会话,用你在 DSH 里已配好的模型做跨会话复盘,把重复出现的坑和有效做法沉淀成本地知识;默认不联网、不上传、不写你的代码仓库。数据落在磁盘上的人可读文件里,可随时查看、导出或删除。
这是什么¶
dsh-evolution 是 DSH 的本地优先自动进化插件。当前 README 标注为 Phase 1 — 真复盘 + 注入(package 版本 0.2.2):会话账本采集、数据预览、试跑(看效果与成本、不调模型)、脱敏、界面化配置、目录自检;手动/自动复盘、本地洞察库、检索与注入、导出与 skill 草稿均已可用。自动复盘默认关闭——开着插件不会产生模型费用,直到你显式打开;注入只发本地已存条目,不调模型、不联网。
许可证 MIT,运行环境要求 Node >= 22。
核心功能¶
工作流概览¶
正常对话时,每次事件被结构化写入本地账本(纯本地、零成本、不调模型)。攒够 N 轮且会话静默后(或你在面板点「现在复盘」),会用你在「配置」页显式指定的模型做一次归纳——未指定则一次都不调,插件不会默认用当前会话里的模型。归纳结果经代码层校验(证据链、禁止清单、再脱敏)后写入本地洞察库;下次进入同一仓库时,把相关条目注入上下文。
三个关键设计:
| 决定 | 含义 |
|---|---|
| 账本记录零 LLM、零网络 | 可每轮都记、可回扫历史,成本近似为零 |
| 只记信号,不记工具输入输出 | 避免体积膨胀与噪音 |
| 默认关闭一切「往外」的行为 | 上传、写仓库、向量化、跨工作区聚合均需显式打开 |
洞察不是一句空结论,而是带证据链的条目(会话 id + 轮次 + 原文引用);无证据会被拒收。同一条经验再次出现时会合并加一(recurrence),而不是重复堆条目。
记什么、不记什么¶
| 内容 | 是否记录 |
|---|---|
| 提问与助手回答(可配置截断) | 记 |
| 工具名称与成功/失败 | 记 |
| 工具参数与输出 | 不记 |
| 模型思考过程、图片等非文本 | 不记 |
| 绝对路径 | 默认脱敏为 <path>/文件名 |
面板能力¶
安装并重启 dsh web 后,侧边栏底部有「自动进化」,内含总览、洞察、试跑、数据预览、注入预览、脱敏预览、导出与草稿、配置、数据与隐私等页面。要点:
- 试跑:开启自动复盘前先看会不会跑、会注入什么、大概花多少钱;不调模型、不写文件。
- 注入预览:逐字展示下次进该仓库时会进 system prompt 的内容。
- 洞察:手动「现在复盘」、看证据链、置顶/采纳/归档/合并等;可从日志重建索引。
隐私默认值(保守一侧)¶
| 能力 | 默认 |
|---|---|
| 记录会话账本 | 开 |
| 注入已有洞察 | 开(零模型调用) |
| 自动复盘 | 关 |
| 上传、写代码仓库、向量检索、SQLite、跨工作区画像 | 关 |
脱敏在写磁盘之前完成;内置规则覆盖 API key、Bearer/Basic、JWT、常见云厂商密钥、绝对路径等,并支持自定义敏感词表。作者 README 声明:不提供云端托管、默认不上传、不做面向管理者的个人画像展示。
安装与启用¶
在已配置 DSH Web profile 的环境下执行:
dsh plugin --profile web add dsh-evolution
装完重启 dsh web,侧边栏底部会出现「自动进化」。
建议装完先做三步:
- 打开「自动进化」→ 总览,确认「运行中」且数据落点路径符合预期。
- 在 数据与隐私 页点「重新自检」,确认目录可创建。
- 正常对话几轮,在 数据预览 刷新,确认有记录。
若要试真复盘:先在 试跑 页预览(不花钱),再到 洞察 页点「现在复盘」——这一步才会调用模型并消耗你在 DSH 里配置的额度。
数据落盘位置¶
默认目录为 ~/.dsh-evolution/(Windows:C:\Users\<你>\.dsh-evolution\)。可通过环境变量 DSH_EVOLUTION_HOME 或面板「配置」里的数据目录修改。
~/.dsh-evolution/
├── config.json # 配置(纯 JSON,可手改)
├── state.json # 复盘水位、用量、暂停等
├── ledger/ # 账本,按天分片 NDJSON
├── insights/ # insights.ndjson(真相源)+ index.json(可重建)
├── exports/ # 导出留档
├── skills/ # skill 草稿默认落点
├── observations/ # 预留
└── drafts/ # 预留
可选开启 SQLite 后端(database.enabled + driver=sqlite,默认关)时,账本与洞察迁入 index.sqlite;首次启用会一次性从旧 NDJSON 导入且原文件保留。
配置主文件为 ~/.dsh-evolution/config.json,也可在面板修改;分组包括总开关、会话账本、自动复盘、隐私与脱敏、注入、导出与草稿等。自动复盘组内 review.enabled 默认为关;模型须在配置页下拉选择宿主里真实可用的 provider × model,留空则不会自动调模型。
典型用法¶
- 只采集、先沉淀:保持默认(自动复盘关),多轮开发对话,在数据预览确认账本正常;已有洞察会在同仓库下次会话被注入(注入预览可核对原文)。
- 手动复盘一次:配置页选好复盘模型 → 洞察页「现在复盘」→ 展开条目核对证据链与 recurrence。
- 开自动复盘前:试跑页确认抽取条件、注入片段与预估成本,再打开
review.enabled。 - 导出与 skill:在「导出与草稿」导出 markdown/JSON;对「已复现且采纳过」的条目可生成
SKILL.md草稿(默认写在插件目录;写入代码仓库需面板额外确认)。
从源码开发安装(README 提供,需本地构建或直接使用入库的 client/dist/index.js):
git clone https://github.com/wycto/dsh-evolution.git && cd dsh-evolution
npm run build
dsh plugin --profile web add "link:<绝对路径>/dsh-evolution"
适用场景与注意¶
适合:长期在同一仓库用 DSH 迭代、希望把重复性失误变成可注入的本地提醒、又不愿把完整对话默认上传到第三方的开发者。
注意:
- 插件以当前 dsh 进程权限运行,安装前建议阅读 GitHub 仓库 源码与 MIT 许可证。
- 归纳质量差时,错误结论可能被注入并长期生效;务必先用试跑与注入预览,再开自动复盘。
- 注入按
repoRoot路径匹配仓库,避免同名目录串库;宁可少注入,也不让 A 仓库的经验进 B 仓库。 - DSH 生态是「一切皆插件」;社区目录 SkillHub 插件页 为独立站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-evolution 把「跨会话记得住、进化得了」放在本机:账本零模型成本、复盘与外向能力默认关闭、洞察带证据链且可导出。若你在 DSH Web 里长期写同一套代码,值得一装并按总览 → 自检 → 预览 → 再开复盘的顺序启用。
- 目录页:https://www.skillhub.cn/plugins/wycto/dsh-evolution
- GitHub:https://github.com/wycto/dsh-evolution