Agent 工程化范式对比

基于 Anthropic 与 OpenAI 内部工程实践的分析

核心差异摘要:
Anthropic 的文章关注“接力赛”——如何让不同的 Agent 跨越遗忘(上下文窗口)完成同一个长任务。
OpenAI 的文章关注“无人驾驶”——如何构建一个环境,使得人类只需掌握方向盘(Prompt),而由 Agent 编写每一行代码。

1. 共同点:Agent 开发的共识

尽管侧重点不同,两家顶尖 AI 实验室在通过 Agent 进行软件开发时,达成了一些惊人的一致:

2. 各自策略的特点

Anthropic:结构化交接 (Structured Handoff)

核心隐喻:轮班工作。 就像早班和晚班的工程师交接一样,上一个 Agent 必须留下清晰的文档给下一个 Agent。

OpenAI:Agent 原生环境 (Agent-Native Environment)

核心隐喻:平台工程。 打造一个专为机器而非人类优化的工厂,所有的文档和工具都是为了让机器能读懂。

3. 深度对比与设计原因

维度 Anthropic (Long-running Agents) OpenAI (Agent-first World)
核心痛点 遗忘与幻觉: Agent 在长任务中耗尽上下文,或在中途迷失方向,导致项目烂尾。 速度与规模: 人类编写代码速度太慢。目标是将工程速度提高几个数量级。
上下文管理策略 “接力棒”模式: 通过极其精简的 claude-progress.txt 和 JSON 状态文件,在不同会话间传递关键信息。 “图书馆”模式: 建立分层文档系统(docs/),Agent 按需检索。强调如果 Agent 在仓库里看不到,这个知识就不存在。
对代码质量的控制 测试驱动: 依赖端到端测试(Puppeteer)来验证功能是否真的完成,防止 Agent 欺骗性地标记“完成”。 Linter 驱动: 依赖自定义的 Linter 和架构规则来强制执行代码风格和依赖关系,防止代码结构随时间“漂移”。
设计原因 (Why?) 为了解决可靠性问题。如果不强制分步和状态检查,Agent 会产生看似完成实则破碎的代码。这种设计是为了让目前的模型能“跑完马拉松”。 为了解决可维护性问题。在全自动生成的代码库中,如果不通过机械化手段强制执行架构规则(Golden Principles),代码库会迅速变成不可维护的“垃圾山”。
交互模式 初始化 -> 循环执行: 用户设定目标,初始化 Agent 拆解,编程 Agent 循环执行直到完成。 人机回环 (Ralph Wiggum Loop): 人类提示 -> Agent 编码 -> Agent 自我审查 -> Agent 修正 -> 合并。

4. 总结与启示

这两篇文章实际上是在解决 Agent 软件开发的两个不同阶段的问题:

Anthropic 展示了“如何开始”: 当你需要让 Agent 处理一个超出单次对话窗口的任务时,你需要明确的状态管理任务交接协议。JSON 状态列表和进度文件是最简单有效的“外部记忆体”。

OpenAI 展示了“如何规模化”: 当 Agent 编写的代码量达到百万行级别,且不再有人类手动维护时,你需要架构约束可观测性。代码库必须变得对 Agent “可读(Legible)”,这意味着所有的隐性知识(Slack 讨论、口头约定)都必须显性化为仓库里的 Markdown 文档和 Linter 规则。

未来的方向: 结合两者可能是最佳实践。使用 Anthropic 的初始化/执行双 Agent 模式来管理具体的编码任务,同时运行在 OpenAI 提倡的Agent 原生架构环境中,通过强制的 Linter 和详细的文档索引来保证长期的代码健康度。

原文

源链接