OpenClaw用于自动化编程时,真正有价值的并不是让一个Agent拿到服务器最高权限后“自己把项目做完”,而是把软件开发拆成可检查、可回滚的阶段:需求分析、仓库理解、方案设计、编码、单元测试、接口测试、端到端测试、代码审查、持续集成、发布和运行监控。每个阶段都有明确输入、输出与权限边界,失败后回到上一步修正。下面给出一套小团队也能直接落地的完整流程。
一、先确定自动化边界:哪些交给AI,哪些必须由人确认
适合交给OpenClaw的任务包括:读取需求、整理验收标准、定位相关代码、生成修改计划、创建分支、编辑限定范围内的文件、补充测试、运行项目命令、解释失败日志、生成变更说明和准备合并请求。需要人工确认的任务包括:更改生产数据库、读取真实用户隐私数据、修改密钥和权限、合并主分支、发布生产环境、执行不可逆迁移以及关闭安全检查。
建议把自动化分成三个等级。一级只读,Agent只能分析仓库和生成计划;二级可写,允许在独立分支或工作树中改代码并运行测试;三级可发布,但仍要求人在合并和生产部署前批准。首次接入时从一级开始,连续完成若干低风险任务后再扩大权限。
二、搭建四个角色,而不是让一个Agent包办一切
| 角色 | 主要职责 | 建议权限 | 必须产物 |
|---|---|---|---|
| 编排Agent | 接收任务、拆分阶段、分派角色、汇总状态 | 读取任务和状态,不直接改生产代码 | 任务卡、验收标准、阶段状态 |
| 开发Agent | 理解代码、实施最小修改、编写测试 | 只读仓库后进入独立工作区读写 | 代码差异、迁移说明、测试清单 |
| 审查Agent | 从正确性、安全、兼容性和可维护性审查 | 只读开发结果,不直接掩盖问题 | 按严重程度排列的审查报告 |
| 测试Agent | 运行单元、接口、集成和端到端测试 | 测试环境执行,不接触生产数据 | 测试报告、失败证据、覆盖范围 |
角色分开可以减少“自己写、自己证明正确”的偏差。编排Agent只负责状态机,不要让它在测试失败时直接宣布成功;开发Agent不能删除失败测试;审查Agent不能为了通过流程直接修改代码;测试Agent只描述事实,把修复任务退回开发阶段。
三、让仓库先变得适合Agent理解
自动化之前,项目根目录至少需要一份协作说明,写清目录地图、技术栈、启动命令、测试命令、构建命令、代码规范、禁止修改区域和发布方式。复杂项目还应提供架构文档、接口契约、数据库约束和环境变量示例。文档不是为了好看,而是减少Agent从局部代码猜测全局结构。
建议准备统一任务模板,字段包括:背景、目标、非目标、验收标准、影响页面、影响接口、数据迁移、兼容要求、测试范围、回滚方式和负责人。需求中如果没有验收标准,编排Agent应先提出待确认项,不允许直接开始改代码。
任务:用户登录失败提示优化
目标:错误提示可理解,不泄露账号是否存在
验收:密码错误、账号禁用、接口超时均有对应表现
影响:登录页、认证接口、操作日志
测试:单元测试 + 接口测试 + 浏览器登录流程
禁止:不修改用户密码算法,不读取生产用户数据
回滚:恢复原分支版本,不涉及数据库迁移
四、配置OpenClaw沙箱、工作区和命令审批
OpenClaw官方文档支持按Agent配置工作区、沙箱和工具策略。开发Agent应在隔离工作区中运行,只挂载当前仓库;审查Agent采用只读权限;来自聊天群、Webhook或外部内容触发的Agent不应拥有执行和写入能力。不要为了省事关闭沙箱,也不要把宿主机根目录、SSH密钥目录和生产配置挂载进去。
部署前运行 openclaw doctor 检查环境,再使用 openclaw sandbox explain --agent coding 查看开发Agent最终生效的沙箱、挂载和工具策略。命令权限采用拒绝或白名单优先,常用测试命令可以允许,rm、生产SSH、数据库管理和发布命令应始终询问或拒绝。权限配置要以实际生效结果为准,不能只看配置文件。
一个稳妥的思路是:编排Agent允许读取任务与发送消息;开发Agent允许读取、编辑、补丁和受控执行;审查Agent只允许读取与生成报告;测试Agent允许执行项目测试但不允许写业务代码。密钥通过CI密钥库或运行环境注入,禁止写入提示词、技能文件和仓库。
五、完整开发流水线:从需求进入到生成可审查代码
1. 需求入口与去重
任务可以来自Issue、工单或固定目录。编排Agent先检查是否已有相同任务、依赖是否完成、需求是否包含验收标准。确认可执行后生成唯一任务编号,并把状态设置为“待分析”。同一任务只能有一个开发工作区,避免多个Agent同时覆盖文件。
2. 仅读取,不修改
开发Agent第一轮只读取根文档、构建配置和相关模块,输出调用链、数据流、受影响文件、风险和测试计划。涉及接口时必须从调用方追到路由、控制器、服务、数据库和响应结构;涉及状态时必须检查初始化、更新、持久化和页面渲染。人或编排Agent确认方案后才进入写入阶段。
3. 建立独立分支或工作树
每个任务使用独立分支,例如 agent/TASK-104-login-error。开始前记录基线提交和原始测试结果,避免把仓库已有失败错误归到本次修改。工作区内只允许当前任务相关文件,检测到用户未提交改动时应立即停止,而不是覆盖或回滚。
4. 最小实现
开发Agent按照已确认计划修改,优先修根因,不新增平行接口、重复组件和临时兜底。一次任务只解决一个目标;如果发现需求依赖更大重构,应返回方案阶段重新评估。数据库迁移必须包含正向操作、兼容窗口、回滚说明和数据备份要求。
5. 自检与结构化交付
编码完成后,开发Agent输出实际修改文件、行为变化、接口变化、配置变化、风险和待验证项。不要只说“已完成”。如果测试无法运行,必须说明阻塞原因和未覆盖风险,不能把未验证包装成成功。
六、测试全过程:测试金字塔与失败回路
单元测试
优先覆盖纯函数、业务规则、权限判断、状态转换和异常分支。每个修复至少增加一个能在旧代码上失败、在新代码上通过的回归测试。测试名称应描述行为,例如“密码为空时不更新原密码”,而不是“test case 1”。
接口与集成测试
接口测试覆盖成功、参数缺失、无权限、资源不存在、重复提交和服务器异常,并检查HTTP状态码、响应结构及数据库副作用。涉及分页时要验证页码、每页数量、总数、筛选和排序均由后端生效。集成测试使用独立测试数据库,禁止连接生产库。
端到端测试
端到端测试从用户视角覆盖关键链路,例如登录、创建、编辑、搜索、分页、提交和错误提示。测试Agent应保存失败截图、控制台错误、网络请求和关键DOM状态。页面“闪一下又消失”这类问题要记录不同时间点的快照,定位是否发生二次状态覆盖。
非功能测试
根据任务补充性能、安全、兼容和可访问性测试。接口优化要比较响应时间和查询数量;权限改动要测试越权访问;上传功能要测试文件类型、大小和恶意文件名;前端页面要覆盖常见桌面与移动尺寸。
失败如何回流
测试失败后,测试Agent只提交失败步骤、期望、实际、日志和证据,把状态改为“待修复”。开发Agent根据证据修复后重新运行受影响测试和基础回归。建议限制自动修复轮次,例如最多三轮;超过后交给人处理,避免Agent在错误方向上无限消耗算力。
七、独立代码审查:不仅看代码能不能运行
审查Agent先读需求和验收标准,再看实际差异,按严重程度列出问题。重点检查行为回归、空值处理、并发、权限、数据一致性、缓存、错误处理、兼容性、日志敏感信息和测试缺口。审查结论要引用具体文件与位置,不能只给“整体不错”的评价。
涉及前后端的变更,要检查双方契约是否一致;涉及数据库字段,要检查创建、读取、更新、删除、迁移和旧数据;涉及路由权限,要检查菜单可见性、前端守卫和后端鉴权。审查通过不代表自动合并,仍需CI和负责人批准。
八、接入CI/CD:让机器执行固定规则,让Agent解释结果
CI流水线应由确定性工具控制,Agent不能通过提示词跳过。推荐顺序是依赖安装、静态检查、单元测试、接口测试、构建、端到端测试、依赖漏洞扫描和制品生成。Agent负责读取失败日志、定位原因和提出修复,但不能修改CI结果。
只有全部必要检查通过,才允许创建合并请求。合并请求必须包含任务编号、修改摘要、截图或接口示例、测试结果、数据库影响和回滚方法。生产发布采用人工批准,并先进入测试或预发布环境。高风险项目使用灰度发布,先放少量流量,指标稳定后再扩大。
九、发布、监控和自动回滚
发布前记录版本、数据库迁移、配置差异和制品校验值。发布后监控错误率、接口延迟、关键业务成功率、队列积压和资源使用。Agent可以汇总指标并报警,但回滚条件必须提前由人定义,例如五分钟内错误率超过基线两倍、支付成功率下降或关键接口连续失败。
代码回滚与数据库回滚要分开设计。不可逆数据迁移优先采用“先新增、双写或兼容、切换、最后清理”的方式,不要在一次发布中直接删除旧字段。事故发生后由Agent整理时间线、日志和影响范围,人负责最终定级和对外沟通。
十、可直接复用的OpenClaw任务指令
你是开发Agent,只在当前隔离工作区执行。
第一阶段只读:阅读仓库规则、架构文档、构建配置和任务相关代码。
先输出:调用链、受影响文件、根因、最小修改方案、测试方案和风险。
未确认方案前不要写文件。
修改时不得覆盖用户已有改动,不得删除失败测试,不得访问生产数据。
完成后运行任务指定的检查,输出真实命令、结果和未覆盖风险。
如果发现权限、数据库、接口契约或发布方式变化,停止并请求人工确认。
测试Agent可使用另一份指令:只根据验收标准验证,不修改业务代码;分别运行单元、接口和端到端测试;失败时记录可复现步骤、日志、截图和请求响应;不要因为开发Agent声称完成就降低检查范围。
十一、落地检查清单
- 仓库是否有目录地图、启动命令、测试命令和禁止区域?
- 任务是否包含明确验收标准、测试范围和回滚方案?
- 开发、审查、测试是否使用不同角色和权限?
- OpenClaw沙箱与命令策略是否通过实际解释命令确认?
- 是否使用独立分支或工作树,并记录基线测试?
- 测试是否覆盖单元、接口、端到端和关键异常路径?
- Agent是否无法绕过CI、合并审批和生产发布审批?
- 数据库迁移、密钥、个人数据和生产访问是否单独管控?
- 发布后是否有指标、告警、灰度和可执行回滚条件?
- 每次失败是否留下证据并回流,而不是继续猜测修补?
总结
OpenClaw自动化编程的正确目标,是建立一条“AI负责重复执行,人负责关键判断”的软件交付流水线。先把仓库文档、任务契约和测试体系补齐,再配置隔离工作区、最小权限和命令审批;开发、审查、测试角色相互制约;最后由确定性的CI和人工发布门槛兜底。这样才能从一次性的Vibe Coding演示,升级为可复现、可审计、可回滚的工程能力。
参考资料:OpenClaw Sandboxing、Permission modes、Exec approvals、Multi-agent sandbox and tools。本文依据官方文档重新整理,并结合完整软件工程流程进行原创扩展。