最近在尝试实现一版简洁版本的 OpenClaw,实践了很多用 OpenClaw 直接实现代码生成的工程任务,发现不符合预期,最后经过多轮调试和思考方法论,总结了这篇文章的方法。
代码生成类 Agent 最大的问题从来不是”写不出来”,而是写出来的东西很难稳定地跑通。
尤其在多步任务里:早期一个小错误没被及时发现,后面步骤就会在错误前提上越走越远,最后只能靠人工兜底。
这篇文章整理一种偏工程化的执行方法:Veri-ReActAgent,它并不追求更“聪明”的自省,而是把测试驱动开发(TDD)的约束,** ReAct(Reasoning + Acting)的闭环里,让每一步都有可执行的验收。
- 观察不等于验证:很多 Agent 的“观察”只是“文件写入成功”“命令执行了”,并不等于功能正确。
- 错误传播:例如 没有正确更新数据结构,后面的 、淘汰策略、并发控制都会在错误假设上继续推进。
- 环境噪声:缺依赖、运行态污染、状态残留,会让 Agent 把环境问题误判成逻辑问题,反复重试。
用一句话概括:Agent 缺的是客观、可执行、可重复的最小验证。
Veri-ReActAgent 的做法很直接:把“写测试”变成每一步的硬门槛。
它把一个任务拆成原子步骤,并为每个步骤绑定一个最小测试脚本()。执行产物必须通过该测试,才允许进入下一步。
- 规划智能体(Architect) :把大任务拆解成“步骤 + 验收”。
- 执行智能体(Coder) :只负责实现当前步骤。
- 验证智能体(Verifier) :在隔离环境中运行最小测试,只依据结果给出通过/失败与错误日志。
- 循环控制器(Controller) :驱动流程、做失败分流与计划修剪。
传统计划往往是“先实现 A,再实现 B”,但缺少“怎么证明 A 已经做对了”。
Veri-ReActAgent 要求规划阶段输出结构化条目,每条都包含:
- :要实现什么
- :验收点是什么
- :能独立运行的最小测试
示例(以 LRU 缓存为例):
这里的关键不是“测试写得多完整”,而是:每步至少有一个可执行的客观门槛。
把验证交给独立 Verifier,有两个工程价值:
- 避免自我欺骗:同一个模型既写代码又判对错,容易被“自洽”的幻觉说服。
- 把失败变成可诊断信号:测试失败是明确的日志与堆栈,不是泛泛的“反思”。
验证环境建议隔离(例如 Docker/沙箱/一次性工作目录),以减少:
- 依赖污染
- 缓存/临时文件导致的假通过
- 隐式全局状态导致的偶现问题
Veri-ReActAgent 的失败处理不是简单让 Coder 再写一遍,而是先回答一个问题:失败属于哪一类?
- 语法/运行错误:如 、、
- 逻辑错误:如 (测试期望不满足)
- 环境错误:如 、系统依赖缺失、权限问题
- 逻辑错误:只修当前步骤,直到最小测试通过。
- 环境错误:在当前步骤之前插入“环境准备步骤”(装依赖、写 stub、修 import 路径等),再回到原步骤。
- 计划错误:如果验收点本身不合理(例如验证依赖外部服务但未明确),需要回退到规划侧重写后续条目。
动态修剪的目标是:把修复发生在错误源头,而不是把错误带到下一步。

Veri-ReActAgent 更像工程流水线,适用于:
- 任务可拆解:能拆成若干可验收步骤(编码、数据处理、运维脚本等)。
- 每一步能写最小验证:哪怕只是“能 import”,“能跑通一条 happy path”。
- 对可靠性敏感:例如交付型任务、需要持续集成的项目。
反过来,如果任务本身无法明确验收(纯创意写作、开放式探索),强行 TDD 化会降低效率。
- 优先写冒烟测试(smoke test) :先保证能跑通,再逐步增加断言。
- 测试脚本要独立:避免依赖外部服务;如果必须依赖,写清楚 mock 或启动方式。
- 一条测试只验证一个点:否则失败原因不清晰,反而增加修复成本。
- 把环境准备显式化:依赖安装、路径配置、数据下载,尽量变成可重复执行的步骤。
- 测试生成质量:如果 太弱,可能放过错误;太强则会拖慢迭代。
- 隔离环境成本:Docker/沙箱启动有开销,需要做缓存与复用策略。
- 计划颗粒度:步骤太粗,定位困难;太细,管理成本变高。
可预期的演进方向包括:
- 更智能的最小测试生成(覆盖边界条件、随机化、属性测试)
- 经验库(常见失败类型 → 修复策略模板)
- 多验证者交叉评审(同一实现用不同测试角度验证)
ReAct Loop 和 VeriReAct Loop 运行对比:
==ReAct Loop ==

==VeriReAct Loop ==

Veri-ReActAgent 的价值不在于“更会反思”,而在于把编码任务从“靠自洽推理”拉回到工程世界:
- 每一步都有可执行的验收
- 验证与生成分离
- 失败后按类型修复,并动态调整计划
- API 使用硅基流动的,平台地址:cloud.siliconflow.cn/i/RKNWP9gN
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/230544.html