{"slug":"auto-test-code","title":"auto-test-code","summary":"当用户明确要求\"测试代码\"、\"运行代码审查\"或\"进行代码自检\"时使用。通过多轮 A 轮批判性代码审查 + B 轮代码质量原则检查，系统化发现、记录、修复程序代码中的问题，并将计划/过程/结果统一沉淀到目标代码根目录的 `.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/auto-test-code/{yyyy-mm-dd-hh-mm}/output/tests/` 隔离工作区。⚠️ 不适用：用户只是想优化功能（应直接修改）、只是询问代码问题（应直接回答）、没有明确\"测试代码\"意图。","platform":"Claude","tags":["code-review"],"authorName":"LLM Mart","authorSlug":"llm-mart","score":0,"source":"github","price":null,"verified":false,"createdAt":"2026-08-27T17:01:23.855684Z","repo":{"url":"https://github.com/huangwb8/skills","stars":48,"forks":8,"license":"MIT","updatedAt":"2026-09-25T04:25:50Z"},"bodyHtml":"<h1>auto-test-code</h1>\n<p>本 README 面向<strong>使用者</strong>：如何触发并正确使用 <code>auto-test-code</code> skill。\n执行指令与硬性规范在 <code>SKILL.md</code>；默认参数在 <code>config.yaml</code>。</p>\n<hr>\n<h2>用法</h2>\n<h3>最推荐用法</h3>\n<pre><code>用 auto-test-code 测试 /path/to/project，进行 2 轮 A 轮审查 + B 轮质量检查\n</code></pre>\n<h3>其他常见场景</h3>\n<h4>单轮快速审查</h4>\n<pre><code>用 auto-test-code 测试 /path/to/project，只做 1 轮 A 轮审查\n</code></pre>\n<h4>指定代码语言</h4>\n<pre><code>用 auto-test-code 测试 /path/to/project，重点审查 Python 和 JavaScript 代码\n</code></pre>\n<h4>指定深挖维度（全覆盖 + 重点深挖）</h4>\n<pre><code>用 auto-test-code 测试 /path/to/project，本轮深挖并发安全和资源管理问题\n</code></pre>\n<hr>\n<h2>设计理念</h2>\n<p><code>auto-test-code</code> 是一个<strong>批判性思维驱动的代码自审查技能</strong>，核心价值在于：</p>\n<ul>\n<li><strong>独立评估模式</strong>：每轮审查都基于当前代码状态独立分析，避免确认偏差</li>\n<li><strong>批判性思维驱动</strong>：强制使用\"刁钻角度\"思考，发现深层系统性问题</li>\n<li><strong>可追溯文档</strong>：所有问题、修复、验证都固化为文档，可复现可复盘</li>\n</ul>\n<p><strong>与普通代码审查的区别</strong>：</p>\n<table>\n<thead>\n<tr>\n<th>维度</th>\n<th>普通代码审查</th>\n<th>auto-test-code</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>目标</td>\n<td>发现表面问题（风格、规范）</td>\n<td>发现系统性问题（算法/边界/并发/安全/设计）</td>\n</tr>\n<tr>\n<td>方法</td>\n<td>人工检查 + 主观判断</td>\n<td>批判性思维框架 + 静态分析 + 动态推理</td>\n</tr>\n<tr>\n<td>输出</td>\n<td>口头建议</td>\n<td>可追溯的文档 + 修复计划 + 验证报告</td>\n</tr>\n<tr>\n<td>质量</td>\n<td>无明确标准</td>\n<td>强制数量要求（≥10 个问题）和质量门槛（P0+P1 ≥ 60%）</td>\n</tr>\n</tbody>\n</table>\n<hr>\n<h2>功能概述</h2>\n<table>\n<thead>\n<tr>\n<th>特性</th>\n<th>说明</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>多轮 A 轮迭代</strong></td>\n<td>静态分析 → 动态推理 → 计划 → 优化 → 轻量测试（可重复 N 次）</td>\n</tr>\n<tr>\n<td><strong>独立评估模式</strong></td>\n<td>每轮基于当前代码状态独立审查，不查看历史记录</td>\n</tr>\n<tr>\n<td><strong>批判性思维驱动</strong></td>\n<td>强制使用刁钻角度（空输入/超大输入/竞态条件/资源耗尽）</td>\n</tr>\n<tr>\n<td><strong>强制质量要求</strong></td>\n<td>每轮至少 10 个问题，P0+P1 占比 ≥ 60%，系统性问题 ≥ 3 个</td>\n</tr>\n<tr>\n<td><strong>B 轮质量检查</strong></td>\n<td>9 大维度代码质量原则检查（算法复杂度、边界覆盖、安全漏洞分类审查、设计质量等）</td>\n</tr>\n<tr>\n<td><strong>可追溯文档</strong></td>\n<td>统一沉淀到 <code>.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/auto-test-code/{yyyy-mm-dd-hh-mm}/output/tests/</code> 隔离工作区（REVIEW/PLAN/RUN/REPORT + artifacts），可复现可复盘</td>\n</tr>\n</tbody>\n</table>\n<hr>\n<h2>提示词示例</h2>\n<h3>示例 1：完整审查流程（推荐）</h3>\n<pre><code>你：用 auto-test-code 测试 /path/to/project，进行 3 轮 A 轮审查 + B 轮质量检查\n\n技能：开始执行完整审查流程...\n      [A 轮 #1] 发现 15 个问题（P0: 3, P1: 8, P2: 4）\n      [A 轮 #2] 发现 12 个问题（P0: 2, P1: 7, P2: 3）\n      [A 轮 #3] 发现 10 个问题（P0: 1, P1: 6, P2: 3）\n      [B 轮] 完成 9 维度质量检查\n      产出：.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/auto-test-code/{yyyy-mm-dd-hh-mm}/output/tests/v*/（含 REVIEW/PLAN/RUN/REPORT）+ .bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/auto-test-code/{yyyy-mm-dd-hh-mm}/output/tests/b-v*/\n</code></pre>\n<h3>示例 2：单轮快速检查</h3>\n<pre><code>你：用 auto-test-code 测试当前目录的代码，只做 1 轮审查\n\n技能：执行单轮 A 轮审查...\n      发现 18 个问题（P0: 4, P1: 10, P2: 4）\n      产出：.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/auto-test-code/{yyyy-mm-dd-hh-mm}/output/tests/vYYYYMMDDHHMM/\n</code></pre>\n<h3>示例 3：指定深挖维度（全覆盖 + 重点深挖）</h3>\n<pre><code>你：用 auto-test-code 测试 /path/to/project，深挖并发安全和资源管理问题\n\n技能：本轮深挖维度：并发安全性、资源管理（其余维度仍全覆盖）\n      刁钻角度（用于深挖）：竞态条件、死锁、文件描述符泄漏、内存泄漏\n      发现 15 个相关问题（P0: 5, P1: 7, P2: 3）\n</code></pre>\n<h3>示例 4：结合特定代码语言</h3>\n<pre><code>你：用 auto-test-code 测试 /path/to/project，重点审查 Python 代码\n\n技能：扫描 *.py 文件...\n      发现 16 个问题（P0: 3, P1: 9, P2: 4）\n      聚焦：Python 特有问题（GIL、动态类型、资源管理）\n</code></pre>\n<hr>\n<h2>隔离工作区</h2>\n<ul>\n<li>每次 skill 执行都会在目标项目根目录创建 <code>.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/auto-test-code/{yyyy-mm-dd-hh-mm}/</code> 作为当次隔离工作区。</li>\n<li>所有计划、报告、日志、辅助脚本和中间产物都只写入该工作区，避免把 skill 文件泄露到源项目其他位置。</li>\n<li>运行可能产生缓存或临时文件的命令时，优先将工作目录、<code>TMPDIR</code>、<code>XDG_CACHE_HOME</code>、<code>PYTHONPYCACHEPREFIX</code> 等重定向到当前工作区。</li>\n<li>除了用户明确要求的源码修复外，<code>.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/auto-test-code/{yyyy-mm-dd-hh-mm}/</code> 之外不应新增任何 auto-test-code 相关文件。</li>\n</ul>\n<hr>\n<h2>输出文件</h2>\n<p>技能执行后会在目标代码目录下的隔离工作区生成以下文件：</p>\n<pre><code>{项目根目录}/\n└── tmp/\n    └── 2026-03-10-15-30/           # 本次技能执行的隔离工作区（示例）\n        ├── .auto-test-code-run.json  # 运行清单（记录 code_root / run_id / tests_dir）\n        └── tests/                    # 会话目录（计划/过程/结果都在同一处）\n            ├── v202602161028/        # A 轮会话（示例）\n            │   ├── REVIEW.md         # 批判性审查（问题清单 + 改进计划）\n            │   ├── TEST_PLAN.md      # 测试计划\n            │   ├── TEST_RUN.md       # 测试过程（命令、关键输出摘录、决策）\n            │   ├── TEST_REPORT.md    # 测试结果与证据\n            │   ├── _artifacts/       # 中间产物\n            │   └── _scripts/         # 会话内辅助脚本（可选）\n            └── b-v202602161028/      # B 轮会话（质量检查 + 验证）\n                └── ...\n</code></pre>\n<h3>文件说明</h3>\n<table>\n<thead>\n<tr>\n<th>文件</th>\n<th>说明</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/auto-test-code/{yyyy-mm-dd-hh-mm}/output/tests/v*/REVIEW.md</code></td>\n<td>A 轮批判性审查（问题清单 + 改进计划）</td>\n</tr>\n<tr>\n<td><code>.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/auto-test-code/{yyyy-mm-dd-hh-mm}/output/tests/b-v*/REVIEW.md</code></td>\n<td>B 轮代码质量检查报告（9 大维度评估）</td>\n</tr>\n<tr>\n<td><code>.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/auto-test-code/{yyyy-mm-dd-hh-mm}/output/tests/*/TEST_PLAN.md</code></td>\n<td>测试计划，列出本轮验证的修复点</td>\n</tr>\n<tr>\n<td><code>.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/auto-test-code/{yyyy-mm-dd-hh-mm}/output/tests/*/TEST_RUN.md</code></td>\n<td>测试过程记录（命令、关键输出摘录、关键决策）</td>\n</tr>\n<tr>\n<td><code>.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/auto-test-code/{yyyy-mm-dd-hh-mm}/output/tests/*/TEST_REPORT.md</code></td>\n<td>测试报告，包含验证结果和证据</td>\n</tr>\n<tr>\n<td><code>.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/auto-test-code/{yyyy-mm-dd-hh-mm}/output/tests/*/_artifacts/</code></td>\n<td>中间产物（命令输出、日志、截图等）</td>\n</tr>\n</tbody>\n</table>\n<hr>\n<h2>配置选项</h2>\n<p>在 <code>config.yaml</code> 中可调整以下参数：</p>\n<h3>轮次控制</h3>\n<table>\n<thead>\n<tr>\n<th>参数</th>\n<th>默认值</th>\n<th>说明</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>test_rounds.default_a_rounds</code></td>\n<td>1</td>\n<td>默认 A 轮次数</td>\n</tr>\n<tr>\n<td><code>test_rounds.max_a_rounds</code></td>\n<td>10</td>\n<td>最大 A 轮次数</td>\n</tr>\n<tr>\n<td><code>test_rounds.min_suggestions_per_round</code></td>\n<td>10</td>\n<td>每轮最少问题数</td>\n</tr>\n<tr>\n<td><code>test_rounds.target_suggestions_range</code></td>\n<td>[15, 20]</td>\n<td>目标问题数范围</td>\n</tr>\n<tr>\n<td><code>test_rounds.min_p0_p1_ratio</code></td>\n<td>60</td>\n<td>P0+P1 最小占比（%）</td>\n</tr>\n</tbody>\n</table>\n<h3>A 轮审查范围</h3>\n<table>\n<thead>\n<tr>\n<th>参数</th>\n<th>默认值</th>\n<th>说明</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>a_round_check.independent_review.enabled</code></td>\n<td>true</td>\n<td>独立评估模式开关</td>\n</tr>\n<tr>\n<td><code>a_round_check.independent_review.scan_patterns</code></td>\n<td>[\"<strong>/*.py\", \"</strong>/*.js\", ...]</td>\n<td>扫描文件模式</td>\n</tr>\n<tr>\n<td><code>a_round_check.independent_review.exclude_patterns</code></td>\n<td>[\"tmp/<strong>\", \"node_modules/</strong>\", ...]</td>\n<td>排除目录</td>\n</tr>\n</tbody>\n</table>\n<h3>B 轮检查维度</h3>\n<table>\n<thead>\n<tr>\n<th>参数</th>\n<th>默认值</th>\n<th>说明</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>b_round_check.mandatory</code></td>\n<td>true</td>\n<td>B 轮是否强制执行</td>\n</tr>\n<tr>\n<td><code>b_round_check.min_suggestions</code></td>\n<td>10</td>\n<td>B 轮最少建议数</td>\n</tr>\n<tr>\n<td><code>b_round_check.dimensions</code></td>\n<td>[9 大维度]</td>\n<td>检查维度列表</td>\n</tr>\n</tbody>\n</table>\n<p><strong>修改方式</strong>：编辑你的安装目录下的配置（Codex: <code>~/.codex/skills/auto-test-code/config.yaml</code>；Claude Code: <code>~/.claude/skills/auto-test-code/config.yaml</code>）。如需对单个项目做覆盖，可在目标项目根目录创建 <code>.auto-test-code/config.yaml</code>（仅覆盖 <code>directories.tmp</code>、<code>directories.tests</code> 与 <code>templates.*</code>，脚本会做路径安全校验）。</p>\n<hr>\n<h2>配套脚本（可选）</h2>\n<p>技能提供辅助脚本用于创建和验证测试会话：</p>\n<h3>创建测试会话</h3>\n<pre><code># 在目标代码根目录内执行\nRUN_ID=2026-03-10-15-30\npython3 ~/.codex/skills/auto-test-code/scripts/create_session.py --code-root . --run-id \"$RUN_ID\" --kind a --id v202602161028\n# 或\nRUN_ID=2026-03-10-15-30\npython3 ~/.claude/skills/auto-test-code/scripts/create_session.py --code-root . --run-id \"$RUN_ID\" --kind a --id v202602161028\n</code></pre>\n<p><strong>作用</strong>：自动创建 <code>.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/auto-test-code/{yyyy-mm-dd-hh-mm}/output/tests/</code> 会话目录骨架（REVIEW/PLAN/RUN/REPORT + _artifacts/_scripts），并写入运行清单 <code>.auto-test-code-run.json</code></p>\n<h3>验证测试会话</h3>\n<pre><code>python3 ~/.codex/skills/auto-test-code/scripts/verify_session.py --require-review .bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/auto-test-code/2026-03-10-15-30/output/tests/v202602161028\n# 或\npython3 ~/.claude/skills/auto-test-code/scripts/verify_session.py --require-review .bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/auto-test-code/2026-03-10-15-30/output/tests/v202602161028\n</code></pre>\n<p><strong>作用</strong>：检查会话完整性（REVIEW/PLAN/RUN/REPORT + 引用一致性）；如需强制检查模板占位符是否全部替换，可加 <code>--strict</code></p>\n<hr>\n<h2>常见问题</h2>\n<h3>Q：技能没有被触发怎么办？</h3>\n<p>A：尝试用更明确的描述：</p>\n<ul>\n<li>✅ \"用 auto-test-code 测试 XXX\"</li>\n<li>✅ \"运行 auto-test-code 对 XXX 进行代码审查\"</li>\n<li>❌ \"帮我测试一下代码\"（太模糊）</li>\n</ul>\n<h3>Q：A 轮和 B 轮有什么区别？</h3>\n<p>A：</p>\n<ul>\n<li><strong>A 轮</strong>：批判性代码审查，发现具体问题（P0/P1/P2），要求每轮 ≥ 10 个问题</li>\n<li><strong>B 轮</strong>：代码质量原则检查，从 9 大维度评估代码质量（算法复杂度、边界覆盖、安全漏洞分类审查、设计质量等）</li>\n</ul>\n<h3>Q：问题优先级 P0/P1/P2 是什么意思？</h3>\n<p>A：</p>\n<table>\n<thead>\n<tr>\n<th>优先级</th>\n<th>含义</th>\n<th>典型场景</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>P0</strong></td>\n<td>必须修复</td>\n<td>崩溃风险、安全漏洞、数据损坏、资源泄漏</td>\n</tr>\n<tr>\n<td><strong>P1</strong></td>\n<td>强烈建议</td>\n<td>性能问题、边界条件缺陷、逻辑错误</td>\n</tr>\n<tr>\n<td><strong>P2</strong></td>\n<td>建议优化</td>\n<td>代码风格、可读性、冗余代码</td>\n</tr>\n</tbody>\n</table>\n<h3>Q：如何选择 A 轮次数？</h3>\n<p>A：</p>\n<table>\n<thead>\n<tr>\n<th>场景</th>\n<th>推荐轮次</th>\n<th>理由</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>初次审查/代码质量较差</td>\n<td>3-5 轮</td>\n<td>多轮逐步发现深层问题</td>\n</tr>\n<tr>\n<td>日常审查/代码质量较好</td>\n<td>1-2 轮</td>\n<td>快速检查主要问题</td>\n</tr>\n<tr>\n<td>关键项目/上线前</td>\n<td>5-10 轮</td>\n<td>确保代码质量达到高标准</td>\n</tr>\n</tbody>\n</table>\n<h3>Q：什么是\"独立评估模式\"？</h3>\n<p>A：每轮 A 轮都基于代码的<strong>当前状态</strong>独立分析，不查看历史 <code>.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/auto-test-code/{yyyy-mm-dd-hh-mm}/</code> 工作区中的审查文件。好处是让\"多轮\"带来\"多角度\"，而非\"重复确认\"。</p>\n<h3>Q：如何理解\"批判性思维\"？</h3>\n<p>A：使用\"刁钻角度\"思考代码可能的问题：</p>\n<ul>\n<li>空输入、超大输入、恶意输入会怎样？</li>\n<li>并发访问时会有竞态条件吗？</li>\n<li>资源耗尽时会发生什么？</li>\n<li>异常抛出时资源会正确释放吗？</li>\n</ul>\n<p>详见 <code>references/CRITICAL_THINKING_FOR_CODE.md</code></p>\n<hr>\n<h2>WHICHMODEL - 模型选择最佳实践</h2>\n<p><strong>最后更新</strong>：2026-01-25</p>\n<h3>披露信息</h3>\n<ul>\n<li><strong>覆盖厂商</strong>：Anthropic, OpenAI（2/6 = 33%）</li>\n<li><strong>来源构成</strong>：社区 65%, 学术 20%, 官方 10%, 技术博客 5%</li>\n<li><strong>数据时效</strong>：2024-06 至 2026-01</li>\n<li><strong>局限性</strong>：未覆盖国产模型，未独立测试代码审查准确率</li>\n</ul>\n<hr>\n<h3>场景化建议</h3>\n<h4>场景 1：标准代码审查（最常见）</h4>\n<p><strong>触发条件</strong>：日常代码审查，需要发现系统性问题（算法/边界/并发/安全）</p>\n<table>\n<thead>\n<tr>\n<th>项目</th>\n<th>建议</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>推荐模型</strong></td>\n<td>Claude Sonnet 4.5</td>\n</tr>\n<tr>\n<td><strong>推理强度</strong></td>\n<td>medium-high</td>\n</tr>\n<tr>\n<td><strong>预期成本</strong></td>\n<td>~$0.10-0.50/轮</td>\n</tr>\n</tbody>\n</table>\n<p><strong>理由</strong>：</p>\n<ul>\n<li>Sonnet 在代码审查任务中表现出色，SWE-bench 得分 72.7%（接近 Opus）</li>\n<li>速度更快，成本更低（4-5 倍于 Haiku，显著快于 Opus）</li>\n<li><a href=\"https://alirezarezvani.medium.com/claude-opus-4-5-vs-sonnet-i-tested-both-for-90-days-in-claude-code-bb4976923e3a\">社区测试</a> 显示 Sonnet 在多数代码任务中与 Opus 质量相当</li>\n<li><a href=\"https://spartner.software/blog/claude-sonnet-vs-opus-which-one-do-you-choose\">内部测试</a> 显示 Sonnet 解决 64% 编程问题 vs Opus 38%</li>\n</ul>\n<p><strong>避免</strong>：无需升级到 Opus，除非遇到极端复杂的算法分析</p>\n<p><strong>来源</strong>：90 天对比测试 + 官方内部数据</p>\n<hr>\n<h4>场景 2：复杂算法与安全审查</h4>\n<p><strong>触发条件</strong>：</p>\n<ul>\n<li>需要深度推理的复杂算法（如分布式系统、加密算法）</li>\n<li>安全漏洞深度分析（如竞态条件、内存安全）</li>\n<li>需要多步骤抽象推理的场景</li>\n</ul>\n<table>\n<thead>\n<tr>\n<th>项目</th>\n<th>建议</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>推荐模型</strong></td>\n<td>Claude Opus 4.5</td>\n</tr>\n<tr>\n<td><strong>推理强度</strong></td>\n<td>high</td>\n</tr>\n<tr>\n<td><strong>预期成本</strong></td>\n<td>~$0.30-1.50/轮</td>\n</tr>\n</tbody>\n</table>\n<p><strong>理由</strong>：</p>\n<ul>\n<li>Opus 在复杂推理任务中表现更优，<a href=\"https://www.reddit.com/r/ClaudeAI/comments/1por062/claude_opus_45_is_insane_and_it_ruined_other/\">社区反馈</a> 称其为\"复杂推理的巨大飞跃\"</li>\n<li><a href=\"https://www.reddit.com/r/ClaudeAI/comments/1lqnqn6/anyone_else_in_the_mindset_of_its_opus_or_nothing/\">用户报告</a> 显示 Opus 在\"规划、分析和创建上下文定义\"方面更强</li>\n<li><a href=\"https://alirezarezvani.medium.com/claude-opus-4-5-vs-sonnet-i-tested-both-for-90-days-in-claude-code-bb4976923e3a\">90 天测试</a> 显示 Opus 在中等投入下成本与 Sonnet 相当</li>\n</ul>\n<p><strong>避免</strong>：简单代码审查不需要 Opus，用 Sonnet 即可</p>\n<p><strong>来源</strong>：Reddit 社区讨论 + 90 天对比测试</p>\n<hr>\n<h4>场景 3：快速批量检查</h4>\n<p><strong>触发条件</strong>：</p>\n<ul>\n<li>需要快速审查多个文件/模块</li>\n<li>成本敏感，需要高性价比</li>\n<li>不需要深度推理，主要发现明显问题</li>\n</ul>\n<table>\n<thead>\n<tr>\n<th>项目</th>\n<th>建议</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>推荐模型</strong></td>\n<td>Claude Haiku 4.5 或 Sonnet 4.5</td>\n</tr>\n<tr>\n<td><strong>推理强度</strong></td>\n<td>low-medium</td>\n</tr>\n<tr>\n<td><strong>预期成本</strong></td>\n<td>~$0.02-0.20/轮</td>\n</tr>\n</tbody>\n</table>\n<p><strong>理由</strong>：</p>\n<ul>\n<li>Haiku 成本最低，适合快速批量检查</li>\n<li>但对于批判性思维驱动的代码审查，Haiku 可能无法发现深层系统性问题</li>\n<li><a href=\"https://www.reddit.com/r/ClaudeAI/comments/1o856eb/tested_haiku_45_it_is_fast_but_cant_complete/\">社区反馈</a> 显示 Haiku 在复杂任务中可能力不从心</li>\n<li><strong>推荐</strong>：快速检查用 Haiku，但质量要求高时用 Sonnet</li>\n</ul>\n<p><strong>避免</strong>：需要发现系统性问题（算法/边界/并发）时，不要只用 Haiku</p>\n<p><strong>来源</strong>：社区反馈 + 官方文档</p>\n<hr>\n<h3>对比总结</h3>\n<table>\n<thead>\n<tr>\n<th>模型</th>\n<th>最适合</th>\n<th>最不适合</th>\n<th>相对成本</th>\n<th>相对速度</th>\n<th>推荐度</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>Sonnet 4.5</strong></td>\n<td>标准代码审查（95% 场景）</td>\n<td>极端复杂的算法推理</td>\n<td>$$$</td>\n<td>⭐⭐⭐⭐</td>\n<td>⭐⭐⭐⭐⭐</td>\n</tr>\n<tr>\n<td><strong>Opus 4.5</strong></td>\n<td>复杂算法/安全深度分析</td>\n<td>简单代码审查（浪费）</td>\n<td><span>\\($\\)</span></td>\n<td>⭐⭐</td>\n<td>⭐⭐⭐</td>\n</tr>\n<tr>\n<td><strong>Haiku 4.5</strong></td>\n<td>快速批量检查</td>\n<td>批判性思维审查（深层问题）</td>\n<td>$</td>\n<td>⭐⭐⭐⭐⭐</td>\n<td>⭐⭐</td>\n</tr>\n</tbody>\n</table>\n<p><strong>说明</strong>：</p>\n<ul>\n<li><strong>Sonnet 覆盖 95% 的代码审查场景</strong>：大多数情况下 Sonnet 性价比最高</li>\n<li><strong>Opus 用于极端复杂场景</strong>：分布式系统、加密算法、深层安全分析</li>\n<li><strong>Haiku 用于快速检查</strong>：但不推荐用于需要批判性思维的系统性问题发现</li>\n</ul>\n<hr>\n<h3>通用原则</h3>\n<ol>\n<li><strong>默认从 Sonnet 开始</strong>：95% 的代码审查任务 Sonnet 足够，无需 Opus</li>\n<li><strong>批判性思维需要强推理</strong>：auto-test-code 的核心是发现系统性问题（算法/边界/并发/安全），需要比简单工具调用更强的推理能力</li>\n<li><strong>成本敏感但质量优先</strong>：代码审查是质量问题，不能只追求低成本而牺牲审查深度</li>\n<li><strong>多轮迭代优化成本</strong>：如果需要进行多轮 A 轮审查，可考虑第 1-2 轮用 Sonnet，发现问题后用 Opus 深度分析关键问题</li>\n<li><strong>Haiku 的局限性</strong>：虽然 Haiku 速度快、成本低，但 <a href=\"https://www.reddit.com/r/ClaudeAI/comments/1o856eb/tested_haiku_45_it_is_fast-but-cant-complete/\">社区反馈</a> 显示它在完成基本任务时可能遇到困难</li>\n</ol>\n<hr>\n<h3>⚠️ 争议点</h3>\n<h4>Sonnet vs Opus：代码审查应该用哪个？</h4>\n<table>\n<thead>\n<tr>\n<th>观点</th>\n<th>支持者</th>\n<th>理由</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>Sonnet 够用</strong></td>\n<td>社区多数意见</td>\n<td>Sonnet 在代码审查中表现接近 Opus，但速度快、成本低</td>\n</tr>\n<tr>\n<td><strong>Opus 必要</strong></td>\n<td>部分开发者</td>\n<td>Opus 在复杂推理和深层问题发现上仍有优势</td>\n</tr>\n</tbody>\n</table>\n<p><strong>数据支持</strong>：</p>\n<ul>\n<li><a href=\"https://alirezarezvani.medium.com/claude-opus-4-5-vs-sonnet-i-tested-both-for-90-days-in-claude-code-bb4976923e3a\">90 天对比测试</a>：Opus 在中等投入下成本与 Sonnet 相当</li>\n<li><a href=\"https://spartner.software/blog/claude-sonnet-vs-opus-which-one-do-you-choose\">官方内部测试</a>：Sonnet 解决 64% 编程问题 vs Opus 38%（实际场景）</li>\n<li><a href=\"https://labs.adaline.ai/p/claude-4\">SWE-bench 得分</a>：Sonnet 72.7%，接近 Opus 水平</li>\n</ul>\n<p><strong>建议</strong>：</p>\n<ul>\n<li><strong>默认使用 Sonnet</strong>：性价比最高，覆盖 95% 代码审查场景</li>\n<li><strong>仅在以下情况升级 Opus</strong>：\n<ul>\n<li>需要分析复杂算法（如分布式系统、加密算法）</li>\n<li>需要深度安全分析（如竞态条件、内存安全）</li>\n<li>Sonnet 无法发现的深层系统性问题</li>\n<li>关键项目上线前的最终审查</li>\n</ul>\n</li>\n</ul>\n<hr>\n<h3>更新记录</h3>\n<ul>\n<li>2026-01-25：首次调研，覆盖 Anthropic/OpenAI</li>\n<li>建议：2026-07 重新调研（6 个月后）</li>\n</ul>\n<hr>\n<h3>来源链接</h3>\n<p><strong>官方文档</strong>：</p>\n<ul>\n<li><a href=\"https://platform.claude.com/docs/en/about-claude/models/choosing-a-model\">Choosing the right model</a></li>\n<li><a href=\"https://www.datastudios.org/post/claude-opus-4-5-vs-claude-sonnet-4-5-full-report-and-comparison-of-features-performance-pricing-a\">Claude Opus 4.5 vs Sonnet 4.5: Full Report</a></li>\n</ul>\n<p><strong>社区讨论</strong>：</p>\n<ul>\n<li><a href=\"https://www.reddit.com/r/ClaudeAI/comments/1por062/claude_opus_45_is_insane_and_it_ruined_other/\">Claude Opus 4.5 is insane (Reddit)</a></li>\n<li><a href=\"https://www.reddit.com/r/ClaudeAI/comments/1lqnqn6/anyone_else_in_the_mindset_of_its_opus_or_nothing/\">Opus or nothing for 90% of tasks (Reddit)</a></li>\n<li><a href=\"https://www.reddit.com/r/ClaudeAI/comments/1pd83la/tested_gpt51_gemini_3_and_claude_opus_45_on/\">Tested GPT-5.1, Gemini 3, and Claude Opus 4.5 (Reddit)</a></li>\n</ul>\n<p><strong>对比测试</strong>：</p>\n<ul>\n<li><a href=\"https://alirezarezvani.medium.com/claude-opus-4-5-vs-sonnet-i-tested-both-for-90-days-in-claude-code-bb4976923e3a\">90-Day Claude Code Decision Framework</a></li>\n<li><a href=\"https://labs.adaline.ai/p/claude-4\">Claude Sonnet 4 Vs Opus 4.1: Which Model To Use For Coding</a></li>\n<li><a href=\"https://spartner.software/blog/claude-sonnet-vs-opus-which-one-do-you-choose\">Claude 3.5 Sonnet vs. Opus: the fastest sprinter or the deepest thinker?</a></li>\n</ul>\n<p><strong>学术研究</strong>：</p>\n<ul>\n<li><a href=\"https://www.mdpi.com/2079-9292/13/13/2657\">Enhancing Software Code Vulnerability Detection Using GPT-4o and Claude-3.5 Sonnet</a></li>\n<li><a href=\"https://arxiv.org/html/2508.14727v1\">Assessing the Quality and Security of AI-Generated Code</a></li>\n</ul>\n<hr>\n<h2>更多文档</h2>\n<ul>\n<li><code>SKILL.md</code> — 技能执行指令与硬性规范</li>\n<li><code>config.yaml</code> — 可配置参数</li>\n<li><code>references/</code> — 详细策略与参考文档\n<ul>\n<li><code>CRITICAL_THINKING_FOR_CODE.md</code> — 批判性思维框架（核心）</li>\n<li><code>A_ROUND_REVIEW_TEMPLATE.md</code> — A 轮审查报告结构</li>\n<li><code>CODE_SMELLS.md</code> — 代码异味识别指南</li>\n<li><code>SECURITY_PATTERNS.md</code> — 安全漏洞模式库</li>\n<li><code>SECURITY_TAXONOMY.md</code> — 安全漏洞分类审查体系</li>\n<li><code>BOUNDARY_CHECKLIST.md</code> — 边界条件检查清单</li>\n</ul>\n</li>\n</ul>\n","files":[{"path":"CHANGELOG.md","sizeBytes":4331,"isText":true},{"path":"config.yaml","sizeBytes":6811,"isText":true},{"path":"README.md","sizeBytes":19947,"isText":true},{"path":"references/A_ROUND_REVIEW_TEMPLATE.md","sizeBytes":4531,"isText":true},{"path":"references/BOUNDARY_CHECKLIST.md","sizeBytes":6261,"isText":true},{"path":"references/CODE_SMELLS.md","sizeBytes":5637,"isText":true},{"path":"references/CRITICAL_THINKING_FOR_CODE.md","sizeBytes":16128,"isText":true},{"path":"references/DESIGN_ANTI_PATTERNS.md","sizeBytes":11269,"isText":true},{"path":"references/SECURITY_PATTERNS.md","sizeBytes":6285,"isText":true},{"path":"references/SECURITY_TAXONOMY.md","sizeBytes":9637,"isText":true},{"path":"scripts/create_session.py","sizeBytes":19032,"isText":true},{"path":"scripts/verify_session.py","sizeBytes":13754,"isText":true},{"path":"SKILL.md","sizeBytes":16894,"isText":true},{"path":"templates/B_ROUND_CODE_QUALITY_TEMPLATE.md","sizeBytes":12391,"isText":true},{"path":"templates/CODE_REVIEW_TEMPLATE.md","sizeBytes":3112,"isText":true},{"path":"templates/SESSION_TEST_PLAN_TEMPLATE.md","sizeBytes":955,"isText":true},{"path":"templates/SESSION_TEST_REPORT_TEMPLATE.md","sizeBytes":1118,"isText":true},{"path":"templates/SESSION_TEST_RUN_TEMPLATE.md","sizeBytes":667,"isText":true}],"reviewScore":null,"reviewSummary":null,"trust":{"provenance":"trusted-source-unreviewed","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow.","bodySource":null},"bodyLocked":false,"purchaseUrl":null,"sourceUrl":null,"report":{"provenance":"trusted-source-unreviewed","screen":{"ran":true,"outcome":"notes-only","suspicious":0,"notes":2,"hiddenCharacters":false},"virusScan":{"engine":"clamav","status":"clean","scannedAt":"2026-09-08T11:57:23.456069Z","sha256":"5D85F5E9306CC3EA84BA1C44DEDB86609774B7BEB856F6870EC3EA149E9FFAA3","sizeBytes":65083},"review":null,"source":{"repositoryUrl":"https://github.com/huangwb8/skills","path":"skills/alpha/auto-test-code","license":"MIT","commit":"9cba9fd64cd22f38af2c2503a11d8247be2090cd","subtreeSha":"C20E5AC8341ED489F94DA58D7A92C9A9C98D874962F147C88BCE5655261A4136","lastSyncedAt":"2026-09-25T07:37:25.617865Z"},"reviewedAt":"2026-09-08T12:07:23.465816Z","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow."},"install":[{"target":"skills-cli","command":"npx skills add https://github.com/huangwb8/skills/tree/main/skills/alpha/auto-test-code"},{"target":"claude-code","command":"claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install huangwb8-skills@llmmart"},{"target":"git","command":"git clone https://github.com/huangwb8/skills.git"}]}