Agentic 编程:让 AI 自主写代码
补全和对话式 AI 还在”你写一句、它答一句”的节奏里;Agentic 编程则更进一步:你给一个目标,AI 自己读代码、建文件、跑命令、看报错、反复修改,直到任务完成。本文讲清楚这种自主编码 Agent 是怎么运转的、如何给它好的上下文与”护栏”、你又该在哪些节点介入。
什么是 Agentic 编程
在 Anthropic 的定义里,“Agent”指由大模型动态主导自身流程与工具使用的系统;相对的是”Workflow”——执行路径由你预先写死的代码编排(Anthropic, Building effective agents)。放到编码场景:
- Workflow 式编码:你写一个脚本,按固定步骤调 LLM(先生成大纲、再写正文)。
- Agent 式编码:你说出目标,模型自己决定先看哪些文件、改哪些、怎么验证,循环多轮直到做完。
Claude Code、OpenAI Codex 这类工具就是典型的编码 Agent。它们直接拿到你的终端与文件系统,像程序员一样”找文件—编辑—运行—调试”,并非只能聊天。
自主编码 Agent 的工作循环
Anthropic 在 Agent SDK 文档里把核心循环概括为:采集上下文 → 采取行动 → 验证结果 → 重复(gather context → take action → verify work → repeat)。落到编码上,一个典型回合是:
- 理解:读取相关文件、跑 grep、看报错、查 git 历史,建立对任务空间的认知。
- 规划:拆解子任务,决定先改哪里、用什么方案(好的工具会先进入 plan mode 只研究不落地)。
- 编辑:创建/修改文件,调用 API、写函数、补配置。
- 运行:跑测试、构建、linter,或启动服务截图核对 UI。
- 读结果:读取命令输出与报错,判断”通过”还是”失败”。
- 修复:根据反馈回到第 3 步,直到校验通过或达到停止条件。
这个”自己跑校验、自己读结果、自己修”的闭环,是 Agent 区别于一次性生成的关键。Anthropic 反复强调:一定要给 Agent 一个它能独立运行的”检查”(测试/构建/linter/截图对比),否则它只能靠”看起来完成”来自行停止,你又变回唯一的验证者。
一句话:Agent 的价值不在”一次生成”,而在”带反馈的循环”。你提供的校验门槛,决定了它能不能在没人盯着时把事做对。
Claude Code 与 Codex 类工具用法思路
两者思路相通,但形态有别:
- Claude Code:命令行里的 Agent,低层、可脚本化、可接入 CI。官方建议配合
CLAUDE.md(项目约定)、/init生成初始上下文、plan mode 先调研后实现、/clear在不相干任务间重置上下文。它还支持 subagent(独立上下文做调研/审查)、hooks(每次改文件后自动跑 eslint)、skills(可复用工作流),以及非交互模式claude -p接入自动化流水线。 - OpenAI Codex:云端编码 Agent,可在 ChatGPT、编辑器、终端使用,用 worktree 与云环境让多个 Agent 并行处理不同任务,也支持”技能(Skills)“把团队规范教给 Agent,并能在后台按计划做 issue 分流、监控告警、CI/CD 等常驻工作。
无论哪种,通用用法骨架都是:
1. 写好上下文:CLAUDE.md / 项目 README / 明确的验收标准
2. 进入规划:让 Agent 先调研并给出方案(不急着改)
3. 给出目标与护栏:要做什么、不许做什么、完成的标准是什么
4. 启动执行:Agent 循环编辑—运行—修复
5. 审查交付:看 diff、看测试证据、必要时让 subagent 做对抗式复查
如何给 Agent 提供好的上下文与”护栏”
Agent 的成败,很大程度取决于你给的上下文质量和边界清晰度。来自 Claude Code 最佳实践与 OpenAI Agent 指南的要点:
提供具体上下文
- 指名道姓:引用具体文件、函数、报错原文,而不是”优化下性能”。
- 给验收样例:例如”写
validateEmail,用例 user@example.com 为真、user@.com 为假,实现后跑测试”。 - 提供富内容:用
@引用文件、粘贴截图、给出文档 URL,让 Agent 自己 fetch 所需上下文。
设置明确的”护栏”
护栏(guardrails)是约束 Agent 行为边界的规则,既可用自然语言写进 CLAUDE.md,也可用 hooks/权限做硬性拦截:
- 明确范围:只改哪些模块、不动哪些公共接口、不引入新依赖。
- 禁止项:禁止
--force推送、禁止改迁移文件夹、禁止访问生产密钥。 - 测试门槛:必须通过的类型检查、必须绿掉的测试套件、必须通过的 lint。
- 权限最小化:默认对会改系统的操作请求确认;对可逆且安全的命令(如
git commit、npm run lint)才加入允许列表;危险操作放沙箱。 - 停止条件:达到目标就停;卡住若干轮后自动结束,避免空转烧 tokens。
OpenAI 的《A practical guide to building agents》也把”护栏”列为可靠 Agent 的三要素之一:用相关性分类器、PII 过滤、工具安全评估、基于规则的防护,以及人在回路(human-in-the-loop)作为早期部署的关键保障。
人类应在哪些节点 review
Agent 能跑能改,但责任仍在人。建议在这些节点强制介入:
- 规划后、动手前:确认方案方向对,避免”做错的事做得很快”。
- 跨多文件/公共 API 变更:影响面大,先审设计再放行。
- 涉及安全与权限:鉴权、注入、密钥处理、对外暴露的接口,必须人审。
- 交付前的对抗式复查:用独立 subagent 或另一个会话只审 diff,针对正确性、竞态、与既有约定的一致性提问题(Writer/Reviewer 模式)。
- 合并前:把”证据”(测试输出、命令返回、截图)当作 PR 描述的一部分,人据此做最终判断。
经验法则:Agent 越自治,越需要在”开始”和”结束”两处把关;中间的执行可以放手,但停止门槛要硬。
适合与不适合的任务清单
| 适合交给 Agent | 不适合交给 Agent |
|---|---|
| 明确、可验证的编码任务(修 bug、加单测、写脚本) | 模糊或频繁变动的需求 |
| 大规模但模式清晰的重构、迁移 | 需要深度领域判断的架构决策 |
| 重复性 chores(issue 分流、lint 修复、告警处理) | 涉及安全敏感数据的改动(需人审+护栏) |
| 跨文件但边界清晰的改动 | 你完全不了解、也无法验证结果的系统 |
| 有现成测试可当验收门槛的功能 | 没有校验手段、只能”看着像”的任务 |
判别标准其实很朴素:任务能否被客观验证 + 失败后果是否可控。能验证、后果可控,就放心交给循环;不能验证或后果严重,就要么先补测试门槛,要么退回到人类主导。
小结
- Agentic 编程让 AI 自主完成”理解—规划—编辑—运行—读错—修复”的循环,区别于一次性生成。
- 核心循环是”采集上下文 → 行动 → 验证 → 重复”;给 Agent 一个可独立运行的校验门槛,是它能否无人值守做对的关键。
- Claude Code 偏命令行、可脚本化、可进 CI;Codex 偏云端、支持多 Agent 并行与常驻后台任务;用法骨架一致。
- 护栏 = 明确范围 + 禁止项 + 测试门槛 + 最小权限 + 停止条件;上下文越具体,产出越可用。
- 人应在”规划后、跨文件/安全变更、交付前复查、合并前”四个节点把关,责任不随自主度转移。
- 适用判据:可客观验证 + 失败可控;模糊需求、深度架构、安全敏感、无法验证的任务应谨慎或退回人工。
参考来源
- Anthropic,《Building effective agents》(Workflow 与 Agent 的区分、从简起步):https://www.anthropic.com/engineering/building-effective-agents
- Anthropic,Claude Code 官方最佳实践(验证、CLAUDE.md、subagent、hooks、上下文管理):https://code.claude.com/docs/en/best-practices
- Anthropic,《Building agents with the Claude Agent SDK》(agent 循环:采集→行动→验证→重复):https://www.anthropic.com/engineering/building-agents-with-the-claude-agent-sdk/
- OpenAI,Codex 产品页(云端编码 Agent、并行 worktree、Skills、后台任务):https://openai.com/codex/
- OpenAI,《A practical guide to building agents》(护栏、人在回路、编排模式):https://cdn.openai.com/business-guides-and-resources/a-practical-guide-to-building-agents.pdf
- METR,《Measuring AI Ability to Complete Long Software Tasks》(任务时长跨度约每 7 个月翻倍,说明自主能力在快速上升):https://metr.org/blog/2025-03-19-measuring-ai-ability-to-complete-long-tasks/