AI工程技能图谱:使用编码智能体
**使用编码代理**是关键的AI工程技能,其核心在于**引导高层工作流**(规划→执行→部署监控),并掌握**引导、赋权、审查、定制、基础**五大技能,以高技能

一项关键的AI工程技能是使用编码代理。你驾驭它们编写代码以及执行非代码任务(如数据分析或系统运维管理)的能力,使你能够完成更多工作。
编码代理的快速演进意味着这项技能也在迅速变化——比其他顶级AI工程技能发展得更快。专有代理(如Claude Code、Codex和Cursor)和开源代理(如OpenCode和Pi)通过工具链和模型的改进而大步前进。因此,跟上编码代理的使用方法需要持续的实验、构建和学习过程。
在采访了数十位顶尖AI工程师并反思我们团队自身对编码代理的使用后,我们发现了一个一致的高层工作流程,用于使用它们构建软件。关键步骤包括:
- 规划。 这包括(i)头脑风暴,可能涉及研究、实验和理解现有代码库(如果有的话),以及(ii)编写一份涵盖需求、技术设计和架构的规格说明,随后生成执行计划。你还可能审查计划,以质疑关键假设,并检查安全性、过度工程化及其他缺口。
- 执行,在此阶段你进行构建、测试和验证,并在代理自主性与人工监督之间取得适当平衡。这涉及(i)让代理构建软件,并设定校准过的代理自主水平,以及(ii)通过自动化和/或人工检查来验证其输出。
- 部署与监控,在此阶段你(i)部署,可能通过CI/CD流水线或额外的人工门控来把关,以及(ii)使用代理监控日志、发现问题,并提出和执行改进措施。
这个高级工作流程与在编码代理出现前通常用于构建软件的方式相似。如今,我们较少关注代码本身,而是更侧重于决定构建什么、设计架构、编写规格说明以及验证输出结果。
每个步骤的持续时间在不同项目间可能差异显著,且某些步骤可以被省略。例如,对于一个绿地项目(即从零开始构建)的原型,其规格说明可能仅通过快速编写的提示词粗略描述;而对于一个拥有众多用户的棕地项目(即已有系统),其规格说明的编写和验证可能需要投入更多精力。此外,该工作流程高度迭代,熟练的开发者知道何时后期步骤的反馈应引导他们回到更早的阶段。例如,如果验证失败,他们知道如何引导代理重新构建并修复错误;或者如果监控发现问题,他们知道如何让代理更新系统并重新部署。
为了在此工作流程中有效利用编码代理,关键技能包括:
- 引导工作流程
- 赋予代理自主性
- 审查工作成果
- 定制代理及其环境
- 编码代理基础
引导工作流程。你需知晓如何驾驭上述工作流程的每一步。这涉及决定在每个环节投入多少人力与代理精力,以及何时返回更早阶段进行迭代。这要求你深刻理解速度、成本、技术风险与人力投入之间的权衡,以便决定前期应进行多少调研与规划,何时将关键工作交由人工负责,如何选择架构,在规划文档(如规格说明)中写入多少细节,以及如何将工作分解为可验证的步骤。
赋予智能体自主性。在将编码智能体应用于工作流各步骤时,你需要选择自主程度:是全程观察并与之交互式往返,还是将更大块的任务委派给它?何时设定明确目标并让其循环直至成功?此外,你还需谨慎管理智能体的上下文。随着构建过程历经不同阶段,你会校准时机,确保关键学习成果、用户反馈和假设——包括在构建中途发生变化的假设——被捕获以供智能体后续使用。同时,你还会决定何时将任务分解并设置多个智能体并行运行——无论是通过人类还是更高级别的智能体来协调这些其他智能体——以及如何在并发智能体会话中管理人类注意力。你还需知晓如何安全运行智能体,恰当设置权限和操作门控,以促进开发快速推进,同时降低泄露、数据丢失或其他损害的风险。
审查工作成果。编码智能体的输出具有不确定性。我们无法预先知晓它可能提出哪些好点子,又会实现哪些缺陷。审查和验证输出是确保获得预期结果的关键步骤,若未达预期则需引导智能体调整方向。你将设计与任务相匹配的测试和验证,视需要应用行为验证和功能验证。你可能还会测试用户流程,或许让智能体提供截图作为成功或失败的证据。对于定性/行为评估,可采用评估集,或许借助LLM作为评判者。
你还需要决定这些测试中有多少应该自动化。某些工作流程会将所有测试和验证完全自动化,以便代理能够检查自己的工作,并知道何时成功完成任务。你必须评估测试,确保它们与你的目标一致,如果不一致,则需对其进行改进。此外,你还会利用代理式代码审查,并运行AI驱动的安全性和架构审计。当AI审查不够充分时,你会明智地插入人工审查代码行为(偶尔也审查代码本身),同时探索如何进一步自动化这一审查过程。最后,你验证部署,并能通过代理实现监控和事件管理的操作化。
定制代理及其环境。你能够更新代理及其工作环境,这使得你的代理能高效获取所需上下文、访问工具,并正确高效地构建。你懂得如何集成代理技能、插件和MCP服务器。偶尔,当它们不再必要(例如新模型取代旧技能)时,你会进行精简。你可以使用钩子来自动化开发过程中可重复的部分,如触发自动化代码审查或CI/CD流水线。你还可以维护代理工作的环境:更新常驻上下文(如AGENTS.md或CLAUDE.md),包含代码库信息、关键架构假设、代码风格和数据访问模式。你懂得如何在多个会话和并行代理之间保持状态,并随时间积累代理学习成果,或许通过运行事后回顾来捕捉哪些有效、哪些无效。你还知道如何建立一致的约定和结构,使代码库对代理易于导航,并如何偶尔清理代理产生的技术债务。在团队中工作时,你会考虑如何协调不同开发者代理之间的上下文。
编码代理基础。最后,为了在整个过程中做出明智的决策,你需要深入理解编码代理的工作方式:它们如何执行代码库搜索/检索,如何管理上下文窗口,不同操作(如添加工具调用、MCP服务器等)如何影响上下文,代理与子代理如何交互,以及代理是如何通过将LLM封装在框架中构建的。这使代理不再是一个黑盒,并帮助你识别失败模式,例如过度设计简单解决方案、因代理缺乏显式验证过程而失去严谨性、未达目标即止步,或代理行为可能危及文件或生产数据。这也有助于你推理代理的状态,并通过提供正确的指令或上下文来引导它。在监控运行过程中,这种理解使你更能及时发现代理偏离轨道并需要你干预的时刻。
我发现社交媒体常常对编码代理的使用给出过于简化的描述。例如,有时让代理自主运行数小时并消耗数百万或数千万个token是有用的。但目前,超长周期任务的实用价值——尤其是相对于其成本而言——被夸大了。相反,最有效的编码代理使用是一个复杂、高度迭代的过程,而能够以高技能判断进行干预会带来更好的结果。
你对编码代理的熟练使用将使你成为高效的构建者。这使你也能引导整体构建。我将在未来的文章中进一步阐述这一点。