吴恩达(Andrew NG):一项关键的 AI 工程技能,就是会使用编码智能体(coding agents)。
你越擅长指挥它们 —— 无论是写代码,还是分析数据、管理系统这类非代码的活 —— 能干成的事就越多。
编码智能体更新换代很快,所以这项技能本身也日新月异,迭代速度比大多数顶级 AI 工程技能都要快。专有智能体(如 Claude Code、Codex、Cursor)和开源智能体(如 OpenCode、Pi)在框架和模型两个层面都在大步前进。想跟得上它们的使用方法,就得不断地实验、动手搭建、持续学习。
我们采访了几十位顶级 AI 工程师,也复盘了自己团队用编码智能体的经验,发现用它们开发软件有一套一致的高层工作流,关键环节如下:
1. 规划。 这一步包括:(i)头脑风暴 —— 可能要查资料、做实验、摸清现有代码库(如果有的话);(ii)写一份规格说明,把需求、技术设计和架构都写清楚,再据此生成执行计划。写完后你可能还要回头审视计划,追问关键假设是否成立,检查有没有安全隐患、过度设计之类的问题。
2. 执行。 这一步负责构建、测试和验证,关键是在智能体自主和人工把关之间找到平衡。具体来说:(i)让智能体去写代码,同时给它设定合适的自主程度;(ii)通过自动化测试和 / 或人工检查来验证产出。
3. 部署与监控。 这一步(i)把产品部署上线,必要时用 CI/CD 流水线或额外的人工关卡做门控;(ii)用智能体盯日志、排查问题,提出并执行改进。
这套高层工作流,和编码智能体出现之前写软件的方式大同小异。不同的是,现在的重心已经从写代码转移到了:决定做什么、设计架构、写规格说明、验证产出。
各环节要花多长时间,不同项目差别很大,有些环节甚至可以跳过。比如,从零起步(greenfield)的原型项目,规格说明可能就在一段快速写就的提示词里草草带过;而一个用户众多、已有存量代码(brownfield)的项目,规格说明就得花大力气去写、去验证。另外,这套工作流高度迭代,熟练的开发者懂得什么时候该根据后一环节的反馈,回到前面的环节重来。比如验证失败了,他们知道怎么引导智能体重写、修错;监控发现问题了,他们知道怎么让智能体更新系统、重新上线。
要在这样的工作流里用好编码智能体,需要掌握五项关键技能:- 指挥工作流—— 知道怎么推进每个环节;- 放权给智能体—— 让它有恰当的自主性;- 审查产出—— 把好质量关;- 定制智能体与环境—— 为它配好工具和上下文;- 吃透编码智能体的底层原理—— 知己知彼。
1. 指挥工作流。 你要熟悉上面每个环节该怎么走,还要决定每个环节投入多少人力、多少智能体工作量,以及什么时候回到前面的环节迭代。这要求你吃透速度、成本、技术风险和人力投入之间的权衡,才能定下来:前期调研和规划做多深;哪些关键工作必须由人把关;架构怎么选;规格说明这类规划文档写到多细;以及怎么把任务拆成一个个可验证的步骤。
2. 放权给智能体。 把智能体用到工作流的各个步骤时,你要选择它的自主程度:是全程盯着、交互式地来回调整,还是把一大块工作直接交给它?什么时候该定下一个明确目标,让它自己循环直到搞定?此外,你得替它管好上下文:随着构建进入不同阶段,你要判断什么时候把关键的学习心得、用户反馈和假设 —— 包括构建途中改变过的假设 —— 记录下来,供智能体后续使用。你还要决定什么时候同时拉起多个智能体,把任务拆开并行跑 —— 由人来做总指挥,还是让更高层的智能体来编排 —— 以及如何在多个并行智能体会话之间分配自己的注意力。你也要懂得怎么安全地运行智能体:设置好权限、给操作加门控,既让开发跑得快,又把泄密、丢数据、搞坏东西的风险压到最低。
3. 审查产出。 编码智能体的输出是不确定的:它可能想出不错的主意,也可能埋下各种 bug,这些事先都猜不到。所以审查和验证输出,是保证结果符合预期、不符合时及时纠偏的关键一步。你要设计跟任务匹配的测试和验证手段,行为层面和功能层面都要兼顾。你也可以走一遍用户流程来测试,比如让智能体截图,作为成功或失败的证据。定性 / 行为类的评估,则可以用评估集,必要时引入 "LLM 当裁判"(LLM-as-a-judge)。
你还要决定测试自动化到什么程度。有些工作流把测试和验证全部自动化,让智能体自己检查成果、自己判断任务是否完成。你要评估这些测试是否真能对上你的目标,对不上就迭代改进。此外,你还可以用智能体做代码审查,跑 AI 驱动的安全和架构审计。当 AI 审查不够用时,要有判断力地插入人工审查 —— 重点看代码行为(偶尔也直接看代码)—— 同时继续探索怎么把这一步也自动化。最后,部署要验证,监控和故障处理也可以交给智能体来运营化。
4. 定制智能体与环境。 你会调智能体,也会调它工作的环境,这样它才能高效拿到上下文、用上该用的工具,把活干得又快又对。你知道怎么接入智能体技能、插件和 MCP 服务器;过时了(比如新模型让某个旧技能没了用处)也会果断裁掉。你可以用钩子(hooks)把开发里那些重复动作自动化,比如自动触发代码审查或 CI/CD 流水线。你还会维护智能体的工作环境:把代码库概况、关键架构假设、代码风格、数据访问方式写进常驻上下文(如 AGENTS.md 或 CLAUDE.md)。你懂得跨会话、跨并行智能体保留状态,也懂得把智能体的学习成果一点一点攒下来 —— 比如跑完一轮后做复盘(post-run retrospective),记下哪些有效、哪些无效。你会建立统一的约定和结构,让智能体在代码库里不迷路;也会定期清理智能体留下的一些技术债。在团队里工作时,你还会考虑怎么协调不同开发者各自的智能体之间的上下文。
5. 吃透编码智能体的底层原理。 最后,要想在每个环节都做出正确判断,你得搞清楚编码智能体是怎么工作的:它们怎么做代码库搜索 / 检索、怎么管理上下文窗口、加工具调用和 MCP 服务器这类操作会如何占用上下文、智能体和子智能体怎么协作,以及它本质上就是 "在 LLM 外面套一层框架(harness)"。明白了这些,智能体对你就不再是黑盒,你也能认出它的各种失败模式 —— 比如把简单问题过度设计、因为缺一套显式的验证流程而失了严谨、离目标还差一步就收手,或者一个操作下去可能毁掉文件、搞坏生产数据。这些认知还能帮你判断智能体当前的状态,通过给出恰当的指令或上下文来引导它;监控运行的时候,你也能更快察觉它跑偏了、需要你出手。
我觉得社交媒体上对 "怎么用编码智能体" 的讲法常常过于简单化。比如,有时候让智能体自己跑上几个小时、烧掉几百万甚至几千万个 token,确实有用;但就目前来看,超长时域任务(very long-horizon tasks)的实际价值 —— 尤其是相对它的成本而言 —— 被吹得过头了。真正高效的编码智能体用法,是一个复杂、高度迭代的过程;能在关键时刻用高水平的判断插上一手,效果会好得多。
会用编码智能体,你就能成为一个高效的构建者,也更有能力把握整个构建的方向。
how i ai程序员
