dsh-error-atlas:把运行错误与任务复盘沉淀成可注入的记忆图谱

前言

在 DeepSeek Harness(DSH)里跑命令、调工具、改配置,失败信息往往只出现在当轮日志里。会话一关,同类退出码、工具报错、步失败很难被下一次请求自动带上,复盘也多半停在口头总结。社区里已有经验库、云端案例检索、单仓修复沉淀等方向,各自管采纳流程、公共检索或「先修好再记」——若你更关心本机真实失败的去重身份、可视化位置,以及「写完教训之后又犯了吗」的可度量结论,可以单独装一个只做采集、注入与度量的插件。下面介绍维护者 chaos-miku 的 dsh-error-atlas(错误星图),分类属于 DSH 插件目录中的「记忆」。

这是什么

dsh-error-atlas 是面向 DSH 的 local-first 记忆插件:自动记录运行期失败与编程任务复盘,把可复用的规则压成短句注入后续上下文,并用 WebGL 把整库渲染成交互式知识图谱。数据只落在本机 $DSH_HOME/error-atlas/records.json,不联网、不上报。

一句话分工:给每个失败一个签名(类型 + 工具 + 消息,命令侧用指纹去重)、一个位置(会话岛、程序卫星)、一个判决(复盘后同一签名是否复发)。

写侧:错误与复盘如何入库

安装之后无需额外配置,宿主会从 DSH 事件里抓取失败并聚合。

  1. 运行期错误:包括 agent/error(步/轮失败)、api-session/error、agent-loop/config-start-failed,以及 tools/result 中的工具失败与非零退出码。
  2. 去重聚合:同一签名合并为一条,累计次数、首末时间、涉及会话。
  3. 任务复盘:全局提示词要求编程任务收尾前由模型调用 atlas_retro,写入做了什么、根因、怎么修、教训;若模型未写,宿主会留自动骨架,不占用模型手写份额。
  4. 命令指纹:失败不存整条命令行,而记「可执行 + 脚本/子命令」,减少「换目录再失败一次」的噪声;stderr 最后一行保留作详情。
  5. 噪声静音:仅有退出码、无 stderr 且重复 ≥5 次的记录默认不进图谱(stats.noise 可查看);需要时可开 showNoise,或通过 GET|POST /error-atlas/prefs、面板过滤调整。

每条复盘会生成一行 ≤96 字符的 essence(如果 <情形> → <根因> → 下次 <做法>);注入上下文时最多 3 行 essence,失效教训(写完又复发)优先,无教训时不注入,避免固定开销。

读侧:教训如何回到模型

  1. 动态简报:每轮请求注入「失效教训 + 最近几条规则」,只发 essence,不塞整段复盘。
  2. 只读工具 atlas_lessons:按 query / program / limit 查询教训。
  3. 只读工具 atlas_impact:统计可判定教训数、复发比例、教训覆盖的错误签名比例(README 中作者库内示例:59 条复盘 / 102 个签名,30 条可判定、6 条复发、61% 签名有过教训——仅为该仓库实测,非通用承诺)。

面板底部「记忆」栏有两个开关,关闭后即时生效且重启保留:收尾提示(不再注册收尾复盘提示词段)、注入教训(不再每轮注入简报;图谱与复盘仍记录)。

图谱面板在展示什么

左侧栏打开 错误图谱(星形图标)。中心为 DSH 本体,外圈为会话窗口(出过错的窗口各成一座岛),程序卫星挂在外层轨道,缆绳状连线指向相关错误。同一签名在多个窗口出现仍只画一个节点,挂在最先出事的窗口,其余窗口在详情卡列出。

节点类型包括 AGENT、TOOL、EXIT、SESSION、CONFIG、DEV(插件内置开发错误)、RETRO(复盘)、PROJECT(程序)、STALE(教训失效)。复盘与错误之间的「教训」线有流动光点;同一错误在复盘后再次出现,管线反向并标红,顶部「教训失效」计数增加。

顶部提供统计、搜索、外观(自转、节点大小、间距、光点、光晕)、过滤、重排、导出 Markdown、清空运行时错误(保留开发错误与复盘)等操作。需要 Node ≥ 20;客户端需 WebGL2,不可用时面板会降级提示。图谱上限约 2400 个去重节点,超出时 stats.truncated 会标记,被复盘引用的错误不会被裁掉。

安装与启用

DSH 生态采用插件化扩展;插件可在 SkillHub 目录页 查看简介(与 DeepSeek / 幻方无官方从属关系)。市场可搜 error-atlas / 错误星图。

从 npm 安装(README 推荐):

plugin_manager install_bundle target="dsh-error-atlas"

指定版本示例:

plugin_manager install_bundle target="dsh-error-atlas@0.11.25"

本地包开发安装:

plugin_manager install_bundle target="<本包绝对路径>"

安装后重启 DSH(注册路由、工具与提示词段),再刷新页面。插件以当前 DSH 进程权限运行,安装前建议浏览 GitHub 源码 与 MIT 许可证。

典型用法

经过上面的步骤,日常使用可以概括为:

  1. 打开错误图谱面板,确认客户端标题旁 build 号(如 README 截图中的 V33,文档写明当前客户端代际为 V51)与预期一致。
  2. 正常在 DSH 内开发;失败自动入库,重复签名在图上变大变亮。
  3. 任务收尾让模型调用 atlas_retro 写复盘;面板上紫色 RETRO 节点与教训连线表示关联关系。
  4. 新会话中依赖自动注入,或让模型调用 atlas_lessons / atlas_impact 主动查询。
  5. 噪声过多时在卡片上「忽略」或调过滤;需要终端摘要时:
node bin/atlas-digest.mjs
node bin/atlas-digest.mjs --json

未装包时也可:

npx -y -p dsh-error-atlas atlas-digest

复盘 CLI:

node bin/atlas-retro.mjs --list
node bin/atlas-retro.mjs --upgrade <id> --lesson "…"
node bin/atlas-retro.mjs --new --title "…" --lesson "…"

宿主在线时优先走 POST /error-atlas/retro(仅回环);离线时 CLI 会直接改库并警告。

适用场景与边界

适合:希望在本机沉淀工具层失败与非零退出、用复盘补逻辑坑、并想看见「教训是否复发」的 DSH 用户;可与偏经验采纳流程的 dsh-dream 等插件并存(README 明确分工)。

注意:

  • 只自动看见工具层失败与非零退出;模型在成功路径上的逻辑错误需靠复盘手写。
  • 教训注入为全局每轮一次,不按工作区精确匹配。
  • 程序节点从复盘 files 与 cwd 推导,未写复盘的目录不会出现在图里。
  • 与 Sentry 类服务端追踪不同:无 instrumentation 上报、无跨机聚合。
  • HTTP 路由(/error-atlas/data|prefs|retro|clear|export)仅接受回环地址;导出目录为 $DSH_HOME/error-atlas/exports/。

结尾

dsh-error-atlas 把 DSH 运行错误与任务复盘写成结构化本地库,用 essence 控制注入成本,用复发标记回答机制是否管用,并用 GPU 星图把会话岛与程序卫星画在同一张图上。详情与问题反馈见 GitHub:chaos-miku/dsh-error-atlas,目录入口见 SkillHub 插件页。

羽毛球分组比赛记分
小程序二维码

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

Xiaoye