代理上线实践:先验真,再执行,留日志
作者结合 WhatsApp 机器人和任务应用经验,提出草稿暂存、隔离环境验证、明确授权后提交或发布等规则。验证应复现真实设备、视口和账号状态,不能仅凭构建成功、HTTP 200 或截图下结论。
AI 深度解读
让 Agent 接触真实用户,难点往往在模型之外:它能不能擅自提交代码,凭什么认定问题已经修好,出了错以后会不会再犯。作者从一个拥有数十条命令的 WhatsApp bot,以及带有服务端任务验证的应用中,提炼了六条工作规则。
核心结论很直接:先约束行动,再验证结果,并把每次失败变成长期检查。这些规则值得借鉴,但原文提供的是个人项目经验,没有给出效果对照数据。
Agent 能执行,不代表可以直接提交
作者遇到过一次真实事故:bot 命令未经批准,就把修改 commit 并 push 了。那次修改最终保留,但工作规则被重写了。
此后,Agent 不能自行发送、提交、推送或发布作者没看过的内容,除非作者明确要求执行那个具体动作。草稿先进入暂存区;涉及线上代码的操作,要先在可以丢弃的副本里通过检查。
这里有两道不同的门。暂存区解决「内容还没看过」的问题,临时副本解决「操作可能影响真实环境」的问题。检查通过,并不自动等于获得发布授权。
把生成结果和执行动作分开,是这套规则最有用的部分。
对 AI 编程来说,生成补丁、运行检查和 push 到远程仓库,应该是三个可区分的步骤。作者也没有要求所有动作都重复确认:用户已经明确下达的具体操作,可以按授权执行。
构建通过和 HTTP 200,都不能证明用户能用
作者要求亲自核实会影响交付结论的关键说法。例如,其他研究者报告某个网站坏了、某条信息失效了,或者某个价格真实存在,都还不能直接当作证据交给客户。
同样,构建成功或拿到 HTTP 200,也不足以证明功能正常。前者说明代码通过了构建流程,后者说明请求得到了成功响应;用户能否完成操作,还取决于设备、视口和账号状态。
截图也有边界。它能记录一个画面,却不能单独证明故障原因。诊断还要查看当前会话、账号以及平台状态。
作者主要在桌面开发,但大多数用户使用手机,因此把真实手机作为视觉和交互交付的最后一道检查。如果现有设备无法复现使用条件,他会在交付前说明,并把第一次真实运行当作测试。
修复在手机上失败后,下一步也必须改变:先把那个具体手机场景复现到测试里,再继续修改。原文举出的检查条件包括手机视口,以及带抖动的触摸操作。
这对前端很实用。一个按钮在桌面上能点击,并不能说明手指触摸时也稳定;但作者没有提供具体测试代码,也没说明如何模拟触摸抖动,落地时仍需团队自己补齐。
出错之后,要留下检查,而不是只留下记忆
作者认为,修完就忘的 bug 还会回来。每类失败都应产生一条长期有效的检查,让同类问题尽量无法发生,或至少提前暴露。
他给了三个具体例子:
- 交互验证要覆盖手机视口和带抖动的触摸,不能只验证桌面操作。
- watchdog,也就是监测服务是否正常的看门狗,应检查端口和状态端点,不能依赖几个月前就改过的进程名。
- commit 的作者账号必须符合部署目标的账号要求,否则部署会被阻止。
最后一条显然依赖作者的部署环境,不能直接推广成所有平台的通用规则。
长期运行还涉及信息管理。作者的 watcher 会静默记录常规事件,只在赢得工单、需要人工介入或 watcher 自身故障时通知。他也倾向于让 Agent 最后提交一份完整报告,减少零碎更新。
凭据则放进 vault 或指定的 env 文件,不进入普通文件、聊天、仓库或 Agent 记忆。通过聊天交付的凭据会被视为已经暴露,并在下次登录时轮换。这里的「记忆」应放在 Agent 工作上下文中理解;程序运行时如何读取和使用凭据,原文没有展开。
我的判断
我认同作者把验证条件放在交付结论前面。相比只看构建日志、状态码或截图,这更接近用户真正遇到的问题。把事故转成长期检查,也比单纯要求 Agent「下次小心」更容易执行。
但这些仍是经验之谈。作者没有提供事故率、维护成本或交付效率的对照数据,不能据此断言这套流程适合所有团队。
真实手机检查和自动化测试也各有作用:前者补足真实设备条件,后者方便持续检查已知场景。原文没有给出设备覆盖范围,不能把「一台手机通过」理解成所有移动端都通过。
「最后只交一份报告」同样需要取舍。常规日志可以静默,但执行时间很长、任务遇到阻塞,或者需要人工决策时,及时反馈仍然有价值。减少噪声的关键,是区分哪些信息只需留档,哪些信息会改变人的下一步行动。
能拿来做什么
- 给 AI 编程流程明确划分生成、检查和提交三个步骤,让 commit、push、发布分别对应清楚的授权。
- 修复移动端交互问题时,记录出错设备、视口、账号状态和操作方式,并先用这些条件复现问题。
- 每次修复后增加针对失败原因的长期检查,例如让 Node 服务的 watchdog 检查端口和状态端点,并明确哪些故障需要通知人。
- 将 Agent 使用的凭据集中放入 vault 或指定 env 文件;聊天中出现过的凭据按已暴露处理,安排轮换。