dsh-reflect:把对话里的纠正变成 AGENTS.md 里的永久规则

前言

在 DeepSeek Harness(DSH)里和模型协作时,同一条偏好往往要重复说很多遍:包管理器用 pnpm、金额用分不用元、某目录不要动。手写或维护 AGENTS.md 可以,但每次纠正都要切到文件、想措辞、选放全局还是项目,容易打断节奏。

dsh-reflect 是维护者 caimc21069065-prog 为 DSH 写的 Cordis 插件,思路借鉴 claude-reflect(纠正 → 确认 → 永久规则),在 dsh 插件体系里重新实现。下面介绍它做什么、怎么装、怎么用,以及配置与存储上需要注意的点。

这是什么

dsh-reflect 的定位很窄:当你纠正模型时,经确认把这条纠正写成永久规则,写入人类可读的 AGENTS.md,并在后续会话里自动生效。它不是通用记忆库,也不做历史扫描、skill 生成或团队同步(MVP 范围见仓库内需求文档)。

几条设计原则在 README 里写得很清楚:

  • 永不静默写入:规则落盘前一律弹出确认条,由你选择全局、当前项目、编辑后保存或跳过。
  • 两条触发路径:显式 remember:(及配置中的中文前缀)直达确认;短纠正消息可走自动检测(中文优先),经分类后再弹确认条。
  • 立即生效 + 原生兼容:确认后当前会话立刻注入规则;同时写入 AGENTS.md 标记段,新会话由 dsh 原生 dsh-agent-instructions 加载,即使停用插件规则仍保留。
  • 纯 Markdown 存储:规则在可手改、可进 Git 的文件里,不绑专有后端。

当前 npm 包版本为 0.1.0,许可证 MIT。社区目录页:skillhub.cn/plugins/caimc21069065-prog/dsh-reflect;源码:github.com/caimc21069065-prog/dsh-reflect。目录站点与 DeepSeek / 幻方无官方从属关系,DSH 生态本身是「一切皆插件」的开放形态。

核心功能

显式触发(remember:)

在输入里带上配置认可的前缀(默认含 remember:、记住:、记住:),例如:

remember: 本项目用 pnpm,不要用 npm

这条消息不会以原文发给模型,而是直接进入确认流程。若确认界面不可用或内容疑似密钥,消息仍会被消费,并注入警告说明未保存的原因,不会静默消失。

确认条提供四个方向:保存到全局(默认 ~/.dsh/AGENTS.md)、保存到当前项目(./AGENTS.md)、编辑后保存、跳过。设计目标是在常见路径下 ≤ 2 次点击 完成保存。

自动检测

发送不超过默认 500 字符的短纠正,例如:

不要用 npm,用 pnpm

消息照常发给模型;插件异步用当前会话的模型路由做分类,输出形如 { is_rule, rule, scope_hint, confidence }。判定为可复用规则且置信度 ≥ 默认阈值 0.7 时,弹出同款确认条,不阻塞模型回答。

可通过配置关闭自动检测、改阈值、或为分类单独指定更便宜的 classifierProvider / classifierModel;也可开启 detectPatternGate 做正则初筛以省一次分类调用(可能降低召回)。

确认后的行为

保存成功后,插件向当前会话注入带来源 dsh-reflect 的 system-reminder,从下一个请求起模型遵守该规则,无需重启 dsh web。跨会话则依赖写入 AGENTS.md 后 dsh 原生加载链。

规则写入独立 HTML 注释标记段,与文件其余内容隔离;同一条规则(忽略大小写与多余空白)不会重复写入。标记损坏时拒绝自动写入并记错误,避免盲写整文件。写入经 dsh 文件系统服务的版本守卫读-改-写,并发编辑时会重试。

安装与启用

要求 dsh >= 0.2.1-rc.2(package.json 中 engines 为 <0.3.0),Node >= 20.3.0。安装后重启 dsh web 即可,零配置可用。

推荐从已发布 npm 包安装:

dsh plugin --profile web add dsh-reflect

README 也给出从本地检出构建后安装的方式(需自行 clone 仓库、npm install、npm run build,再以本地路径 dsh plugin --profile web add ./dsh-reflect 添加)。安装前请自行查看源码与 MIT 许可证;插件以当前 dsh 进程权限读写文件,远程 SSH 会话下全局规则会落在远端的 ~/.dsh/AGENTS.md,多机使用时需知晓规则分散在各主机。

典型用法

路径一:你明确要记成规则

remember: 价格一律用分(cents)表示,不要用元

在确认条选「保存到当前项目」或「保存到全局」,必要时选「编辑后保存…」改措辞后再选作用域。

路径二:日常纠正,交给自动检测

在对话里正常纠正模型(保持短句、非 slash 命令、非确认语),等模型回复的同时,若分类置信度够高会出现确认条;未应答前若开始新输入,未答的自动检测确认卡会作废,避免旧卡片误导。

落盘后的片段形态如下(示例来自 README):

<!-- dsh-reflect: learned rules -->
## Learned rules

- 本项目使用 pnpm,不使用 npm
- 价格一律用分(cents)表示,不要用元

<!-- end dsh-reflect -->

标记段内可手工增删改;已启动的会话不追踪外部修改,新会话读取最新文件。

配置(可选)

在 profile 的 patch 行或用户层 cordis.patch.yml 中覆盖,均有默认值:

- name: dsh-reflect
  config:
    autoDetect: true
    detectMaxChars: 500
    detectPatternGate: false
    detectTimeoutMs: 8000
    confidenceThreshold: 0.7
    classifierProvider: ''
    classifierModel: ''
    rememberPrefixes: ['remember:', '记住:', '记住:']
    globalAgentsFile: ''
    projectAgentsFile: AGENTS.md
    locale: zh

关闭 autoDetect 后仅保留 remember: 等显式路径。默认自动检测会复用会话主模型路由,每条候选多一次小调用;控成本时可配便宜分类模型或开启 detectPatternGate。

适用场景与注意

适合:经常在 Web 会话里纠正模型、希望规则进 Git 与 AGENTS.md、且愿意每次落盘前点确认的开发场景。

不适合:需要通用长期记忆、自动扫历史、或团队规则同步——这些不在 MVP 范围。

分类模型不可用、超时或输出非法时,对该候选静默跳过,不打断会话。headless 或取消确认时会消费触发消息并注入「规则未保存」类警告。重复规则不会再次写入,会提示已存在。子代理路径上的用户消息也会触发分类(确认阶段由 DELEGATED_CALLER 拦截),这部分调用成本 README 中说明暂无法用公开 API 提前规避。

结尾

dsh-reflect 把「纠正模型」收敛成一条可审计的链路:确认 → 写入 AGENTS.md → 当前会话即时生效、新会话原生加载。若你要在 DSH 里少重复同一偏好,可从社区目录或 GitHub 安装试用,并按需调整分类与检测配置。

  • 目录页:https://www.skillhub.cn/plugins/caimc21069065-prog/dsh-reflect
  • GitHub:https://github.com/caimc21069065-prog/dsh-reflect
羽毛球分组比赛记分
小程序二维码

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

小夜