多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

autoresearch:fix — 面向 Claude Code 的自主错误清除器:从零错误基线到逐迭代修复协议

autoresearch:fix — 面向 Claude Code 的自主错误清除器:从零错误基线到逐迭代修复协议 AI 技能人工智能AI 评测开发工具【免费下载链接】autoresearchClaude Autoresearch Skill — Autonomous goal-directed iteration for Claude Code. Inspired by Karpathys autoresearch. Modify → Verify → Keep/Discard → Repeat forever.项目地址https://gitcode.com/gh_mirrors/auto/autoresearch点击查看免费下载Autoresearch 项目的fix子命令是一套面向 Claude Code 的自主目标导向迭代协议它把修好一个坏掉的项目转化为一个可度量、可回滚、可审计的循环——每次迭代只修一个错误、提交一次、验证一次错误计数下降且安全命令通过才保留改动否则自动 revert。本篇文章以 fix 协议原文档 为核心结合仓库内 SKILL 总协议、命令注册文件、使用指南 与 README 说明 展开帮助你掌握如何用一条指令让 Agent 自动完成测试、类型、lint、构建的全量修复如何通过Guard/--category/--from-debug/--evals/--chain精确控制修复边界以及底层 8 阶段迭代循环与 handoff 链式交接的完整机制。一、fix 在 Autoresearch 中的定位Autoresearch 是一套自治目标导向迭代技能集合其核心信条是Modify → Verify → Keep/Discard → Repeat forever每次改动都围绕一个可度量的指标metric进行改动要么被保留keep要么被回滚discard循环直到目标达成或达到迭代上限。fix是该体系中最收尾性质的一个子命令debug负责用科学方法假设 → 验证 → 证伪找到 bugfix则负责把已知的错误逐一碾平直至归零。从 SKILL 总表 看它的官方描述是Crush errors one-by-one until zero remain: tests, types, lint, build默认 20 次迭代默认值在所有子命令中位列前茅仅次于核心循环的 25 次且与 debug 天然串联/autoresearch:debug --fix是先猎 bug、再自动修复的快捷方式。fix 与整个技能体系共享以下安全不变量SKILL.md默认有界bounded只有显式传Iterations: unlimited才进入无界模式绝不未经用户明确批准就 push / publish / deploy所有结果统一落到autoresearch/fix-{YYMMDD}-{HHMM}/输出目录便于追溯通过handoff.json实现子命令间链式交接evals则消费各子命令产出的*-results.tsv。二、参数解析一次调用能控制什么fix 从$ARGUMENTS中提取的参数原文档可以分成核心三件套与行为开关两组参数写法含义默认值TargetTarget: cmd或--target cmd暴露错误的验证命令例如npm test、tsc --noEmit缺失时自动探测ScopeScope: glob或--scope glob允许修改的文件 glob缺失时自动建议GuardGuard: cmd或--guard cmd必须始终通过的安全命令无IterationsIterations: N或--iterations N迭代上限20无界Iterations: unlimited关闭有界限制—from-debug--from-debug读取上一次 debug 运行产出的 handoff.json含 Scope 与 findings关category--category type只修指定类别test/type/lint/build全部evals--evals启用循环中检查点 结束时完整评估关evals-interval--evals-interval N覆盖检查点频率floor(max/3)至少 1chain--chain targets完成后依次调用下游子命令无为什么 Target 是核心Target 命令的输出决定了整个循环的度量方式——错误计数metric error count且方向固定为lower_is_better越少越好。这意味着 fix 每次迭代的好坏判断完全由 Target 的输出驱动错误数下降 → keep不变或上升 → discard。这也是与核心循环autoresearch.md最大的区别核心循环的度量命令叫Verify输出一个数字而 fix 的度量命令叫Target输出错误列表计数即度量二者共享同一套 keep/discard 决策骨架。三、Setup缺参数时的交互引导如果Target和Scope都缺失fix 不会直接瞎猜而是先做自动探测再一次性批量提问原文档自动探测失败面依次跑测试套件、类型检查器、linter、构建统计出 N 个测试失败、M 个类型错误、K 个 lint 错误单次批量提问request_user_input / AskUserQuestion四个问题一次问完问题选项Q1 (Fix What)everything / only tests / only types / only lintQ2 (Guard)npm test / tsc / npm run build / skipQ3 (Scope)根据错误位置建议的 glob allQ4 (Launch)fix until zero / fix with limit / cancel若所有参数都内联提供则跳过 Setup 直接执行若带了--from-debug则从 debug 的 handoff.json 中读取 Scope 和 findings不再提问。这个设计体现了整个 Autoresearch 体系的一贯原则能自动探测的绝不追问需要人类决策的绝不替用户做主——所有交互都以单次批量调用收束避免多轮打断。四、前置检查与基线建立Iteration 0进入迭代循环前fix 先做快速失败式的前置检查原文档git 仓库存在git rev-parse --git-dir工作区干净git status --porcelain脏则警告无陈旧锁文件、无 detached HEAD若配置了 Guard先跑一次建立 guard 基线。随后建立基线Iteration 0运行 Target 命令 → 统计错误总数把基线写入 TSV创建输出目录autoresearch/fix-{YYMMDD}-{HHMM}/写入 TSV 表头方向注释 列定义# metric_direction: lower_is_better iteration timestamp error_type error_fixed commit metric delta guard status description注意这里的列定义比核心循环autoresearch.md更细多了error_type本次修的错误类别与error_fixed具体修了哪个错误两列这正是按错误计数度量场景下需要留痕的关键字段。这些 TSV 会被--evals检查点实时消费也会在最后被 evals 子命令 的列驱动分析复用例如error_type列 → 错误类别分布与各类别修复率分析。五、迭代循环8 阶段协议详解fix 的每次迭代由 8 个阶段组成原文档对应 README 中修一个 → 提交 → 验证 → Guard → 保留/回滚 → 记录的简明描述README.md。Phase 1: Review复盘读取结果 TSV 与git log再跑一次 Target 获取当前错误列表。如果错误计数已经为 0 → 立即退出循环标记 SUCCESS——这是 fix 的自动停止机制即使是无界模式也会在归零时主动收敛guide 文档 也强调这一点。Phase 2: Prioritize优先级排序修复顺序是类别优先、同类内难度优先类别顺序crash/fatal → test failures → type errors → lint → warnings同类之内先修单文件可解决的再修跨文件联动的。先修构建错误的理由很实际很多类型错误与测试失败其实是构建挂了的级联效应cascade failures编译通过后一批错误会自动消失guide 文档。Phase 3: Fix ONE Thing单原子修复选取最高优先级的一个错误做恰好一个聚焦修复——原子性意味着这个改动只针对这一个错误不夹带任何其他行为。同时记录 error_type 与修复目标。这是整个协议的核心纪律一次迭代一个错误保证错误计数变化 ↔ 具体改动一一对应评估才可信。Phase 4: Commit提交暂存并提交提交信息格式固定为experiment: fix {error_type} — {description}沿用核心循环的experiment:前缀约定让每次实验性改动在git log里可批量检索autoresearch.md。Phase 5: Verify验证重跑 Target → 重新计数 → 计算 delta。期望值是错误计数减少 1 个或更多。Phase 6: Guard安全闸若设置了 Guard则运行它。Guard 失败 → 无论度量是否改善一律回滚。这是防止修好 A 弄坏 B的关键防线例如只修类型错误时用Guard: npm test兜底guide 文档。Phase 7: Decide决策根据验证结果做出状态判定原文档状态条件动作keep错误计数下降 且 Guard 通过保留提交keep (reworked)修复需调整、二次尝试成功保留记录调整discard错误计数不变或上升git revert HEAD --no-editcrashTarget / Guard 命令执行失败reverthook-blockedgit hook 阻止了提交记录不硬闯metric-errorTarget 输出无法解析revert可以看到决策只认错误计数 Guard 命令可执行性三样东西容不得半点模糊地带除了 hook-blocked 外所有失败路径都归结为回滚保证工作区始终回到最后一个可信状态。Phase 8: Log记录向 TSV 追加一行iteration、timestamp、error_type、error_fixed、commit/-、metric错误计数、delta、guard、status、description。Eval Checkpoint 与有界检查若--evals开启current_iteration % interval 0时暂停做检查点分析有界模式下current_iteration max_iterations时退出循环并打印汇总。六、Summary 与 --evals 检查点协议循环结束后Summary 打印四类数据总修复错误数、剩余错误数、错误类型分布、修复成功率原文档。若--evals开启检查点协议由 evals 文档 统一定义fix 只是消费者之一自适应间隔floor(max_iterations / 3)最小 1无界模式固定为 10可用--evals-interval N覆盖。fix 默认 20 次迭代 → 间隔 6 → 检查点落在 6、12、18、最终evals 文档 的示例表里 fix/scenario 一行正是如此检查点输出最多 5 行--- Eval Checkpoint (iterations {X}-{Y}) --- Errors: {start} → {end} ({delta}) | Kept: {n}/{total} | Trend: {up/flat/down} {one-line recommendation} ---早期停止建议连续 3 个检查点无进展plateau→ 建议提前终止最终总结循环结束时把完整评估报告写到输出目录的evals-summary.md。这套度量驱动的检查点让长时间自治运行不再是黑盒——每 6 次迭代就能看到错误数轨迹、保留率与趋势方向方便人工在运行中途介入或叫停。七、Chain Handofffix 的接力棒交接fix 完成后会向输出目录写入handoff.json原文档字段如下version: 2.1.0source: fix标识产出方evals / ship 等下游可据此解析timestampstatus:COMPLETE|USER_INTERRUPT|BOUNDED|ERROR有界模式跑满即 BOUNDED即使还有错误没修完results_tsv: 结果 TSV 路径findings: 未修复的错误清单供下游继续处理config:{target, scope, guard}完整配置快照。然后按--chain指定顺序调用下一个子命令并把--evals标志向下游传播。这一机制让debug → fix → ship这类复合流程可以一条指令走完且每个环节的状态都是结构化、可被下游读取的SKILL.md 明确 handoff 是链式交接的统一桥梁。从 orchestrate.sh 的路由逻辑可以印证 fix 在自治编排中的角色目标文本含fix|bug|broken即归类为fix-broken原型随后next-hop路由按 errors → regression → untested gaps → ship/DONE 的优先级决定是否派发到 fix 子命令。也就是说fix 既可以由用户显式调用也可以是 Orchestrator 在检测到错误时自动选中的修错节点。八、完整命令行示例与实战用法以下示例来自 guide/autoresearch-fix.md全部可以在 Claude Code 中直接调用自动探测并修复一切/autoresearch:fix只修测试失败/autoresearch:fix --category test Iterations: 20只修类型错误/autoresearch:fix --category type Iterations: 25只修 lint/autoresearch:fix --category lint Iterations: 15从 debug 发现接续修复含快捷方式/autoresearch:debug Scope: src/**/*.ts Iterations: 15 /autoresearch:fix --from-debug Guard: npm test Iterations: 30 # Shortcut: /autoresearch:debug --fix带 Guard 修复/autoresearch:fix Target: tsc --noEmit Guard: npm testPython — mypy strict/autoresearch:fix --target mypy app/ --strict Guard: pytest Iterations: 25Go — vet staticcheck/autoresearch:fix --target go vet ./... staticcheck ./... Guard: go test ./... Iterations: 15Rust — clippy/autoresearch:fix --target cargo clippy -- -D warnings Guard: cargo test Iterations: 20CI/CD pipeline 失败/autoresearch:fix Target: gh run view --log-failed Scope: .github/workflows/*.yml链式组合security → fix → re-audit → ship/autoresearch:security Iterations: 15 /autoresearch:fix --from-debug Guard: npm test Iterations: 20 /autoresearch:security --diff Iterations: 10 /autoresearch:ship --type code-release九、fix 永远不做的反模式修复质量是协议的红线以下反模式被 guide 文档 明确列为禁止score-debug-fix.sh 的评分规则也把其中多数作为扣分/失分项如ts-ignore、eslint-disable、never.*any、never.*delete.*test、ONE fix、suppress绝不添加ts-ignore或eslint-disable注释来压掉错误绝不用any绕过类型错误绝不删除失败的测试来让套件变绿绝不给测试加.skip/.todo绝不用空的catch块吞掉错误绝不调低严格度阈值tsconfig、lint 规则。如果某个错误无法干净地修复该迭代直接回滚并把问题记入blocked.md交人工审查。这类条目通常是循环依赖、需要装依赖才能补的类型定义、或需要架构决策的问题guide 文档 建议把它们路由给/autoresearch:debug继续深挖。十、输出结构fix 运行结束后输出目录结构如下guide 文档autoresearch/fix-{YYMMDD}-{HHMM}/ ├── fix-results.tsv 迭代日志error_type、delta、statusKEEP/DISCARD ├── summary.md 基线 vs 最终错误数、统计 ├── blocked.md 无法干净修复、留待人工处理的问题 ├── evals-summary.md --evals 时完整评估报告 └── handoff.json 链式交接数据其中blocked.md是人工介入的入口——它记录的不只是修不动更是架构级信号的线索。十一、一个完整的运行示例guide 文档 给出了典型的会话输出直观展示了 keep/discard 决策与自动停止[Phase 1] Detected: 47 test failures, 12 type errors, 3 lint errors [Phase 2] Priority: types first (may cascade-fix test failures) [Iteration 1] Fix: auth.ts:42 — add return type annotation delta: -2 errors | guard: pass | STATUS: KEEP [Iteration 2] Fix: db.ts:15 — handle nullable column delta: -1 error | guard: pass | STATUS: KEEP [Iteration 3] Fix: api.test.ts — wrong approach delta: 0 errors | guard: - | STATUS: DISCARD (reverted) Fix Complete (23 iterations) Baseline: 62 errors → Final: 3 errors (-95.2%) Keeps: 19 | Discards: 3 | Reworks: 1 Blocked: 1 (circular dependency — see blocked.md)注意 Iteration 1 一次修复就带来delta: -2——因为类型修复的级联效应让关联测试错误也消失了这与 Phase 2 的优先级策略互为印证。十二、实践建议与适用边界guide 文档 的 Tips 可直接落地陌生代码库建议从无界开始Iterations: unlimitedGuard因为 fix 会在错误归零时自动停止无界不会失控赶 deadline 用--categoryPR 前只要测试绿--category test会忽略类型噪音只处理测试先单独修构建错误编译成功会让大量测试/类型错误自动消失Guard 是安全网修类型或 lint 时永远配上Guard: npm test每次运行后检查 blocked.md里面的条目通常指向更深层的架构问题。需要说明的适用前提与边界基于本仓库实际内容fix 是协议而非工具链——它编排的是项目自己的测试/类型/lint/构建命令因此要求这些命令能输出可解析的错误列表迭代决策严格依赖错误计数与 Guard 结果若 Target 输出不可解析metric-error则会回滚--evals检查点与 handoff.json 是 v2.x 体系的统一约定跨版本消费需注意 TSV 列兼容evals 文档 说明 v2.0.03 旧文件仍受支持。十三、相关文档导航fix 协议原文档本篇文章的权威来源Autoresearch SKILL 总协议子命令全表、通用标志、安全不变量debug 子命令fix 的前置科学方法猎 bugevals 子命令检查点协议与 TSV 列驱动分析fix 使用指南全部示例与反模式清单命令注册文件Claude Code 侧的同一协议README 中的 fix 章节速览与链式组合示例Orchestrator 路由脚本fix-broken原型分类与 next-hop 路由赞分享AI 技能人工智能AI 评测开发工具【免费下载链接】autoresearchClaude Autoresearch Skill — Autonomous goal-directed iteration for Claude Code. Inspired by Karpathys autoresearch. Modify → Verify → Keep/Discard → Repeat forever.项目地址https://gitcode.com/gh_mirrors/auto/autoresearch点击查看免费下载相关推荐CANN/geRelu前移Concat融合PassMoveReluBeforeConcatPass Python 样例使用指导 本目录提供 graph_base_pass/2_move_relu_before_人工智能深度学习模型编译模型优化编译器Ascend让AMD 780M核显在Windows上跑满ROCm三套立即可用的提速方案让AMD 780M核显在Windows上跑满ROCm三套立即可用的提速方案 凌晨一点你终于把70亿参数的大模型下载完满怀期待地点开LM Studio准备人工智能本地部署算子库终极指南Flow自动修复功能如何智能解决JavaScript类型错误终极指南Flow自动修复功能如何智能解决JavaScript类型错误 Flow是一个为JavaScript添加静态类型检查的工具旨在提高开发效率和代码质量。开发工具静态分析代码质量上一篇Security-101 课程精讲安全实践与文档——安全策略、标准、基线、指南、程序与法规全解析下一篇FastStream 基准测试指南基于 Docker 对 Kafka、RabbitMQ、NATS、Redis 与 Confluent 进行吞吐量压测创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表