dsh-adversarial-review-preset
给 DeepSeek Harness(dsh)用的 「对抗式审查」Agent 预设插件。
它把 Agent 的立场从"确认代码正确"改成"证明代码是错的":预设被审查对象有缺陷,每条结论都必须给出可定位的依据,并且在用户确认之前不修改任何文件。
English · 简体中文
它做了什么
这是一个 bundle 插件:它向 profile 插入一个 @deepseek-ai/dsh-agent-preset 声明,在 Harness 的 Agent 预设列表里新增一个可选模式「对抗式审查」。
插件只做两件事,其余能力完全沿用内置的标准模式(同样的工具集、plan/compaction/delegation 分组、subagent 与 workflow):
1. 换掉 persona:把"找茬"写成硬性纪律
- 立场:预设被审查的代码、测试、文档或方案是错的,直到亲自验证它正确为止;结论里不得出现"应该没问题""大概是"这类未经取证的措辞。
- 证据纪律:每条结论必须可定位(文件路径 + 行号,或权威原文的章节号/条款号);引用权威原文时逐字摘录;无法定位的直觉只能作为"待验证假设"单列,不计入缺陷清单。
- 被审查对象不可变:审查期间不修改被审查对象;严禁为了让测试通过而修改测试,除非能精确引用权威条款证明测试本身违规(此时单独标注为"测试违规"而非"代码缺陷")。
- 先报告后修改:输出缺陷报告并等待用户确认;确认后一次只修一个缺陷,先写复现该缺陷的失败测试。
- 对抗式复核:对每条已发现缺陷主动构造"它是误报"的反驳并尝试证成,反驳成立就撤销该条。
- 委派独立复核:只把缺陷描述和被审查文件交给 subagent,避免既有结论污染复核者。
2. 挂载两份审查技能
预设通过 @deepseek-ai/dsh-skill-filesystem 的 customSkillDirs 挂载本包 skills/ 目录(路径由 !!js 表达式从已安装包自身解析,不写死绝对路径、不依赖 preset 目录):
| 技能 | 内容 |
|---|
adversarial-review | 通用对抗式审查流程:核心铁律、A–D 覆盖式核对 checklist(分支完整性 / 步骤一致性 / 条件方向 / 资源与生命周期)、连锁错误交叉验证、测试盲区检查、对抗式复核、7 类高频缺陷模式、缺陷报告格式与优先级表、修复纪律 |
whatwg-spec-adversarial-review | 对照 WHATWG 规范逐行找茬的专用 checklist(偏 tokenizer / tree construction 等规范密集型模块) |
安装
需要 dsh 已启用代码工作工具(插件管理能力)。
用插件管理器安装本仓库:
plugin_manager(action: "install_bundle", target: "github:Ink-dark/dsh-adversarial-review-preset")
或让 Agent 代劳:
安装插件 github:Ink-dark/dsh-adversarial-review-preset
也可以给本地克隆目录的绝对路径:
plugin_manager(action: "install_bundle", target: "D:\\path\\to\\dsh-adversarial-review-preset")
安装会 影响该 profile 下的所有会话,需要 Full access 或一次审批。
使用
新建任务时在 Agent 预设选择里选「对抗式审查」。
已经有了的会话不会切换过去 —— 已存在的会话与它们的子代理会保留启动时的插件版本。
兼容性
peerDependencies 约束 DSH 运行时:>=0.1.7-rc.2 <0.2.0。
DSH 在安装时校验这些 @deepseek-ai/dsh-* 范围;不满足会阻止安装与激活(这是该平台的设计,避免插件 Config schema 不匹配导致崩溃)。如果需要在非兼容版本上强行使用,用 dsh plugin allow-version 或插件管理器为该精确版本对授予豁免。
本插件只声明它写了 Config 的那些包作为 peer(version-sensitive),不声明仅按名字挂载的包,因此只在这些 schema 真有可能变化时才拦截。
仓库结构
package.json bundle 清单 + dsh.bundle.patch + peerDependencies
cordis.patch.yml 唯一的约定文件:插入 preset-adversarial-review 声明
skills/
adversarial-review/SKILL.md
whatwg-spec-adversarial-review/SKILL.md
预设声明本身没有可执行 JS —— 整个插件是"用 YAML 组合已有插件",这也是它体积小、易审查的原因。
改这个插件
预设声明由 bundle patch 携带,不能原地编辑声明:改完 cordis.patch.yml 后重新安装(或让插件管理器重载该 bundle)。
改 skills/ 下的 Markdown 会被 dsh-skill-filesystem 的 watcher 捕获,通常无需重装。
许可
MIT,见 LICENSE。