是什么¶
adversarial-review 是一个对抗式多视角代码审查插件。它通过多透镜并行攻击式审查的方式,解决单一视角审查容易遗漏缺陷或混入风格问题的问题。插件由 JohnXu22786 维护,支持 dsh(DeepSeek Harness)插件入口与独立 CLI 两种运行方式。
核心能力¶
插件包含以下核心功能:
- dsh (DeepSeek Harness) 插件入口:注册 gavel_review 工具,供模型在会话中直接调用。
- 独立 CLI 入口:支持在本地命令行运行,兼容任何支持 OpenAI Chat Completions 协议的模型服务。
- 确定性静态哨兵:在模型介入前运行基于规则(Regex)的扫描,确保输出兜底。
- 抑制规则:防止同一类问题重复报告。
- 审查历史:增量对比已知问题。
- 跨透镜合并:聚类去重,计算确认加成。
- 严重度定级:确定性计算严重度。
- 仲裁层:合并多视角发现。
- 零第三方运行时依赖:核心引擎与 CLI 仅使用 Node.js 内置模块。
安装与配置¶
通过 DSH CLI 安装插件:
dsh plugin --profile demo add github:JohnXu22786/adversarial-review
安装后,插件会在 Cordis 配置中注册,并在 package.json 中声明 dsh.bundle.patch。
独立 CLI 使用¶
独立 CLI 工具为 gavel。
环境要求¶
- Node.js >= 20.19(运行构建产物)
- Node.js >= 23.6(直接运行源码)
基本构建与使用¶
- 安装依赖并构建:
npm install
npm run build
- 使用 diff 文件审查:
node bin/gavel.mjs review --diff examples/sample.diff --api-key $GAVEL_API_KEY --model deepseek-chat
- 审查最近一次提交:
node bin/gavel.mjs review --base HEAD~1
- 审查指定文件:
node bin/gavel.mjs review --path src/order.js --path src/notify.js
- 深度审查并生成抑制规则(CI 场景):
node bin/gavel.mjs review --diff p.patch --deep --emit-rules --out report.md --json-out report.json --fail-on required
常用选项¶
| 选项 | 描述 |
|---|---|
--diff |
指定 unified diff 文件路径(支持 - 读取 stdin) |
--base |
基于 Git 引用(如 HEAD~1)生成 diff |
--path |
审查指定文件(支持重复) |
--lens |
指定透镜子集(如 correctness,security) |
--deep |
启用深度审查(逐个挑战候选项) |
--emit-rules |
生成“必须修复”及以上级别的抑制规则 |
--fail-on |
触发失败阈值(CI 门控) |
--out / --json-out |
输出 Markdown 或 JSON 报告路径 |
--model / --api-key |
模型与密钥配置(环境变量 GAVEL_API_KEY 或 DEEPSEEK_API_KEY) |
退出代码¶
0:成功(包括无发现)。1:参数错误或运行时错误(如缺失 API Key)。2:--fail-on阈值被触发。130:被信号中断。
DSH 集成说明¶
在 DSH 环境中,插件通过 apply(ctx, config) 注册能力。模型可以在会话中直接调用 gavel_review 工具。插件运行时为只读进程,不会修改代码。
审查流程¶
插件执行一个七步管道流程:
1. Ingest collect:解析 unified diff 或读取文件,构建行映射。
2. Static sentinel tripwire:运行确定性正则规则扫描(如硬编码凭证、危险调用)。
3. Lens probing probe:并行运行正确性、安全性、可维护性透镜(LLM 调用)。
4. Deep review deep(可选):基于挑战的候选项重新验证。
5. Arbitration merge:跨透镜聚类、去重、指纹识别、严重度定级。
6. Suppression filter suppress:匹配抑制规则,归档不再报告的问题。
7. Docket record docket:追加历史记录,标记已知问题。
注意事项¶
- 只读进程:插件仅读取代码,不修改文件。
- 运行时依赖:零第三方运行时依赖。
- 许可证:MIT License。
- API 密钥:必须提供 API Key(如
GAVEL_API_KEY或DEEPSEEK_API_KEY)。 - 版本兼容:确保 Node.js 版本满足要求。
结语¶
adversarial-review 通过多透镜并行审查与仲裁机制,为代码审查提供了确定性与可追溯性。它适合需要高质量代码交付的 DSH 工作流。