前言¶
在 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