OpenAI 最近(20260427)开源了他们的Symphony框架,为AI编程在实际软件工程中的项目实践提供了非常不错的经验和机制。他们内部团队用 Codex 实现了”零人类代码”的开发流程后,发现新瓶颈不是 agent 能力,而是人类在多个交互式 Codex 会话间切换的认知成本。于是他们把 Linear(任务管理工具)直接改造为 agent 编排器:每个 open issue 对应一个独立 workspace,agent 持续运行、失败自动重启、新任务自动拾取。
结果:部分团队的 PR 产出提升 500%。
这是目前为止,在正确的使用AI编程上,看起来是最有效的 规格驱动开发 1 的理论和实践。 或者说是 规格驱动开发 的升级。 和本站 srs.pub 提倡的 以知识为核心的 反氛围编程思想比较接近。 尤其是 symphone 是一个基于实际项目运作经验的可以运行的开源产品,对于项目和产品的开发,非常的有意义。
本文在OpenAI的symphony的基础上,整理agent相关的协议,一并做解读和分析。揭示它们如何在工具层、协作层、编排层形成互补架构,并分析互操作性挑战、未来收敛方向及对软件工程需求实践的深刻启发。
1 概述与背景
1.1 2026年Agent协议生态的爆发式增长
2026年是AI Agent从「单体智能」向「多体协作」跨越的关键年份。根据行业数据,Agent市场规模从2024年的50亿美元增长到2026年的500亿美元,预计2030年将突破2000亿美元。这一爆发式增长背后,是Agent协议标准化的迫切需求——当Agent需要协同工作、访问外部工具、与人类交互时,没有统一协议就像互联网没有TCP/IP协议一样混乱。
当前的Agent交互协议生态呈现出明显的三层架构共识:
| 层次 | 协议/技术 | 解决的问题 |
|---|---|---|
| 工具层 | MCP (Model Context Protocol) | Agent如何访问外部资源和工具 |
| 协作层 | A2A (Agent-to-Agent Protocol) | Agent之间如何通信和委托任务 |
| 编排层 | Symphony (OpenAI) | 如何调度和管理多个Agent协同工作 |
这三层协议并非竞争关系,而是互补关系。它们分别解决不同层次的交互问题,共同构成了完整的Agent协作基础设施。
1.2 为什么协议标准化是当务之急
协议标准化的紧迫性源于三个核心矛盾:
矛盾一:Agent数量爆炸 vs 管理能力瓶颈 人类工程师同时管理3-5个Agent session就到了注意力的极限。当项目规模扩大,需要数十个Agent并行工作时,如何高效调度、避免重复劳动、处理Agent崩溃恢复,成为必须解决的问题。
矛盾二:工具孤岛 vs 统一访问需求 每个平台(GitHub、Slack、Linear、数据库等)都有自己独特的API。当Agent需要跨平台操作时,每次集成都是一次定制开发。统一的协议可以大幅降低集成成本。
矛盾三:单Agent能力有限 vs 复杂任务需求 复杂任务需要多个具有不同专长的Agent协作。如何让它们有效通信、分工、传递上下文,避免「鸡同鸭讲」,需要标准化的协作协议。
正是在这样的背景下,MCP、A2A和Symphony分别从不同角度回应了这些挑战,共同推动Agent生态走向标准化。
2 OpenAI Symphony 深度分析
2.1 从「管Agent」到「管工作」:Symphony的设计哲学
Symphony(发布于2026年4月27日,Apache-2.0许可证)是OpenAI开源的一个编码Agent编排器。其核心理念极具颠覆性:不是管理Agent本身,而是管理工作区。
传统思维:工程师直接与Agent对话,告诉它「做什么」。 Symphony思维:每个工作项(Issue)对应一个隔离的工作区,Agent在工作区中自主运行。
这种范式转移解决了三个核心问题:
- 注意力天花板问题:工程师不再需要同时监视多个Agent session,只需关注工作区状态(如Linear中的Issue状态)
- 上下文切换成本:每个工作区是隔离的,Agent的工作不会相互干扰
- Agent稳定性问题:Agent崩溃自动重启,新任务自动派发,工程师从「救火队员」变为「验收者」
2.2 六层架构详解
Symphony采用六层架构,每层职责清晰,层与层之间通过接口通信:
┌─────────────────────────────────────────────────────────────┐
│ 1. Policy Layer (WORKFLOW.md) │
│ 仓库定义的策略:任务分类、验收标准、行为规范 │
├─────────────────────────────────────────────────────────────┤
│ 2. Configuration Layer │
│ 类型化配置获取:模型选择、超时设置、并发限制 │
├─────────────────────────────────────────────────────────────┤
│ 3. Coordination Layer (Orchestrator) │
│ 轮询、资格判断、并发控制、重试策略、对账机制 │
├─────────────────────────────────────────────────────────────┤
│ 4. Execution Layer │
│ 工作区生命周期管理 + Agent子进程管理 │
├─────────────────────────────────────────────────────────────┤
│ 5. Integration Layer (Linear适配器) │
│ 追踪器API调用与归一化 │
├─────────────────────────────────────────────────────────────┤
│ 6. Observability Layer │
│ 日志记录 + 可选状态界面 │
└─────────────────────────────────────────────────────────────┘
第一层:Policy Layer
这是Symphony最独特的设计——通过WORKFLOW.md文件定义策略。WORKFLOW.md采用YAML前置配置 + Markdown提示模板的格式,随代码仓库版本控制。这意味着团队的编码规范、验收标准 2、Agent行为准则都沉淀在代码仓库中,新成员加入时可以快速理解团队规范。
第三层:Coordination Layer(编排器) 这是Symphony的核心引擎,负责: - 轮询:定期检查tracker(如Linear)获取新任务 - 资格判断:判断任务是否适合Agent处理(区分「适合自动化」和「需要人工介入」) - 并发控制:管理同时运行的Agent数量,避免资源过载 - 重试策略:Agent失败时自动重试,支持指数退避 - 对账机制:确保所有任务都被正确处理,没有遗漏
第四层:Execution Layer - 为每个Issue创建隔离的工作区目录 - 启动Agent子进程(如Codex App Server) - 管理Agent生命周期(启动、监控、重启、终止)
2.3 WORKFLOW.md合约机制
WORKFLOW.md是Symphony的灵魂文件,它定义了Agent与系统之间的「合约」:
# WORKFLOW.md 前置配置示例
version: "1.0"
orchestrator:
model: "o4-mini"
max_concurrent: 3
retry_policy:
max_attempts: 3
backoff: "exponential"
task_policies:
bug_fix:
priority: "high"
auto_assign: true
feature:
priority: "medium"
auto_assign: false # 需要人工确认
refactor:
priority: "low"
require_tests: trueWORKFLOW.md的价值在于: 1. 版本控制:策略变更有迹可循,可回滚 2. 团队一致性:所有成员遵循相同规范 3. 渐进式采用:可以从简单配置开始,逐步增加复杂度 4. 可测试性:策略变更可以通过历史任务验证效果
2.4 与Codex App Server的关系
Symphony明确设计为与OpenAI的Codex App Server配合使用。Codex App Server通过JSON-RPC over stdio与Symphony通信,实现了: - 标准化接口:所有Agent调用通过统一协议 - 沙箱隔离:Agent运行在受限环境中 - 可观测性:所有操作都有日志记录
值得注意的是,Symphony通过Dynamic Tool Calls暴露linear_graphql工具,而非依赖MCP。这表明Symphony在工具层选择了更直接的集成方式,而非依赖通用协议。这种设计权衡是:在编排层获得更强的控制力,代价是更紧密的耦合。
2.5 实际效果:500% PR增长
OpenAI内部团队使用Symphony后,PR(Pull Request)着陆量增长了500%。这一惊人的数字背后有几个关键因素:
- 任务自动流转:PM和设计师可以直接从Linear提交feature request,无需通过工程师中转
- Agent自动接单:符合条件的任务自动派发给空闲Agent,无需人工干预
- 失败自动重试:偶发的Agent错误不会导致任务遗漏
- 手机端支持:从手机Linear App也能提交任务,进一步降低门槛
2.6 局限性与争议
Symphony并非银弹,其局限性需要正视:
| 局限性 | 具体表现 |
|---|---|
| 平台锁定 | 仅支持Linear作为tracker,对其他项目管理工具(Jira、Asana等)不兼容 |
| Agent锁定 | 仅面向Codex App Server,不支持其他Agent实现 |
| 任务类型限制 | 不适合模糊、需要强判断的任务,更适合结构化的编码任务 |
| 安全假设 | 高信任环境假设,安全模型需要实现者自行定义 |
| 非产品承诺 | OpenAI明确表示不会作为独立产品维护,只是参考实现 |
争议焦点:Symphony能否成为行业标准?
乐观派认为:Symphony的「工作区隔离 + 状态机驱动」模式具有普适性,可以扩展到Linear以外的tracker和Agent以外的runtime。
悲观派认为:Symphony目前过于绑定Linear和Codex,缺乏通用性。更重要的是,OpenAI明确表示不会维护它作为产品,这意味着社区需要承担起推广和标准化的责任,而这需要大量资源和协调。
3 MCP(Model Context Protocol)分析
3.1 定位:Agent的「万能插头」
MCP由Anthropic主导,于2026年4月1日发布1.0版本,并移交Linux Foundation托管。其核心定位是:统一的工具调用和数据访问协议。
如果说Symphony解决的是「如何让多个Agent协同工作」,MCP解决的则是「Agent如何访问外部世界」。
3.2 核心架构
MCP采用经典的client-server架构:
┌─────────────────┐ MCP Protocol ┌─────────────────┐
│ MCP Client │◄─────────────────►│ MCP Server │
│ (Agent侧) │ │ (工具/数据源侧) │
└─────────────────┘ └─────────────────┘
MCP Server提供三类资源: - Resources:数据资源(如文件、数据库记录) - Tools:可执行操作(如发送邮件、查询API) - Prompts:提示词模板(可复用的提示模式)
MCP 1.0新特性: - 统一注册表:工具发现更标准化 - 会话恢复:连接中断后可恢复状态 - 安全增强:更严格的权限控制 - Linux Foundation托管:确保协议的中立性和长期演进
3.3 生态现状
MCP已成为工具调用的事实标准: - GitHub上MCP相关项目超过10,000个 - 常用MCP Server超过500个 - 已有30+平台支持MCP协议
3.4 优势
- 简单直接的模型:client-server模式清晰,容易理解和实现
- 生态成熟:10,000+项目验证了协议的有效性
- 强控制力:单一orchestrator可以精细控制工具选择、调用、过滤、推理和综合
- 平台无关:不绑定特定Agent实现,通用性强
3.5 不足
- 多模态支持有限:MCP本身不处理多模态,需要Host单独实现
- 能力协商弱:新功能/模态需要客户端更新,协议演进成本高
- 上下文管理复杂:多轮交互中上下文管理在Host侧,增加了实现复杂度
- 更适合「控制」而非「协作」:MCP更适合Agent调用工具的场景,而非Agent之间互相通信的场景
4 A2A(Agent-to-Agent Protocol)分析
4.1 定位:Agent之间的「社交语言」
A2A由Google主导,已移交Linux Foundation托管,v0.3.0持续迭代中。其核心定位是:跨平台Agent间通信和任务委托协议。
如果说MCP解决的是「Agent如何调用工具」,A2A解决的则是「Agent如何与另一个Agent对话」。
4.2 核心架构
A2A的核心是Agent Card机制——每个Agent通过发布Agent Card(.well-known/agent.json)来宣告自己的能力和位置:
{
"name": "code-review-agent",
"description": "专门进行代码审查的Agent",
"capabilities": ["静态分析", "安全扫描", "风格检查"],
"endpoint": "https://agent.example.com/review",
"authentication": "Bearer token"
}A2A四大核心能力: 1. 服务发现:Agent发布Agent Card,其他Agent可以查询找到合适的协作者 2. 任务委托:Agent A可以将子任务委托给Agent B,并跟踪执行状态 3. 流式通信:通过Server-Sent Events实现实时进度更新 4. 异步协作:支持长时间运行的任务,无需保持连接
4.3 实际部署案例
A2A已被多个企业采用: - Salesforce Agentforce:自定义Agent作为A2A端点 - SAP Joule:跨S/4HANA委派子任务 - ServiceNow Now Assist:A2A Agent注册为技能 - 金融机构:40+ A2A Agent处理交易对账、KYC、监管报告
4.4 优势
- 天然支持跨组织协作:不同组织的Agent可以通过A2A互联,无需共享技术栈
- 对彼此不透明:适合不同技术团队拥有不同Agent的场景
- 动态协商能力强:服务更新时减少对客户端代码的依赖
- 多模态支持更原生:协议设计考虑了多模态交互需求
4.5 不足
- 仍在快速迭代:v1.0尚未发布,协议可能还有重大变化
- 生态较小:相比MCP的10,000+项目,A2A生态还在早期
- 复杂度更高:Agent Card、服务发现、任务委托等机制比MCP更复杂
- 对orchestrator要求更高:需要更智能的任务分解和委托逻辑
5 横向对比:三层协议的关系
5.1 层次定位对比
| 维度 | Symphony | MCP | A2A |
|---|---|---|---|
| 解决问题 | 如何调度Agent干活 | 如何访问外部工具 | 如何与其他Agent通信 |
| 主导方 | OpenAI | Anthropic | |
| 协议层级 | 编排层 | 工具层 | 协作层 |
| GitHub Stars | 15K+ | 10,000+项目 | 150+组织生产使用 |
| 成熟度 | 早期(参考实现) | 成熟(1.0已发布) | 成长期(v0.3.0) |
| 平台绑定 | 强(Linear+Codex) | 无 | 无 |
| 维护主体 | 社区 | Linux Foundation | Linux Foundation |
5.2 它们解决的是不同层次的问题
用建筑比喻来理解三层协议的关系:
┌──────────────────────────────────────────────┐
│ 用户/产品层 │
├──────────────────────────────────────────────┤
│ Symphony (编排层) │
│ "谁来干这个活?多个Agent如何分工?" │
├──────────────────────────────────────────────┤
│ A2A (协作层) │
│ "Agent之间怎么对话?怎么委托任务?" │
├──────────────────────────────────────────────┤
│ MCP (工具层) │
│ "Agent怎么调用工具?怎么访问数据?" │
└──────────────────────────────────────────────┘
一个典型的工作流: 1. 用户提出需求 → Symphony将需求拆分为任务 2. Symphony判断某个任务需要专门的代码审查Agent → 通过A2A与代码审查Agent通信 3. 代码审查Agent需要查询代码仓库 → 通过MCP访问GitHub API
5.3 三者互补而非竞争
关键认识:Symphony、MCP、A2A解决的是不同层次的问题,它们是互补关系,而非竞争关系。
- Symphony + MCP:Symphony的Execution Layer调用Agent,Agent通过MCP访问工具
- Symphony + A2A:Symphony作为编排器,通过A2A与其他Agent协作
- MCP + A2A:A2A处理Agent间通信,通信过程中可能通过MCP调用工具
6 其他相关技术:框架层的角色
6.1 框架与协议的关系
协议层(协议本身)定义了Agent交互的「语法」,而框架层则提供了实现这些协议的「工具库」。
| 框架 | GitHub Stars | 特点 |
|---|---|---|
| LangGraph | 90K+ | 生产就绪度最高,支持复杂状态机 |
| CrewAI | 45K+ | 强调Agent角色 3定义和任务分配 |
| AutoGen | 40K+ | 微软出品,强调多Agent对话 |
| Google ADK | - | Python/Go/Java/TypeScript四语言GA |
6.2 框架如何适配协议
这些框架正在逐步支持MCP和A2A:
- LangGraph:通过自定义节点实现MCP Server调用,支持A2A风格的任务委托
- CrewAI:支持MCP作为工具来源,A2A作为多Agent协作方式
- Google ADK:原生支持A2A,作为Google Agent生态的核心编排框架
框架层的重要性在于:它们降低了开发者使用协议的成本,提供了更高层次的抽象。
6.3 三层协议的「框架实现」
如果我们把协议层和框架层结合起来看:
| 协议层 | 可能的框架实现 |
|---|---|
| 编排层(Symphony) | Symphony本身可视为编排层的参考实现 |
| 协作层(A2A) | Google ADK、LangGraph |
| 工具层(MCP) | 各MCP Server实现(GitHub MCP Server等) |
7 发展前景与关键问题
7.1 互操作性挑战
当前最大的挑战是:三层协议之间缺乏标准化桥接。
问题场景: - 如何让使用Symphony编排的Agent,通过A2A与其他Agent通信? - 如何让A2A协作中的Agent,通过MCP调用工具? - 不同编排框架如何共享同一个MCP Server池?
可能的解决方向: 1. 协议桥接层:开发专门的桥接组件,让不同协议可以互相调用 2. 统一抽象层:在框架层提供统一抽象,隐藏协议差异 3. 标准化接口:推动三层协议之间的接口标准化
7.2 Symphony能否成为行业标准?
这是一个复杂的判断。从积极面看: - 500%的PR增长证明了概念的可行性 - 「工作区隔离 + 状态机驱动」的模式具有通用性 - 开源 + Apache-2.0许可有利于社区采用
但从消极面看: - 平台锁定:目前仅支持Linear + Codex,扩展需要大量工作 - 维护缺失:OpenAI明确表示不会作为产品维护 - 竞争压力:Google ADK、LangGraph等已有成熟生态
我的判断:Symphony更可能作为参考架构被借鉴,而非直接成为行业标准。它的核心价值在于验证了「工作区隔离」这一范式的可行性,这可能会被其他编排框架吸收采用。
7.3 MCP + A2A是否已构成「够用」的双层标准?
当前Agent生态似乎正在向「MCP(工具层)+ A2A(协作层)」的双层标准收敛:
支持「够用」的论据: 1. Linux Foundation同时托管MCP和A2A,表明它们被视为主流标准 2. 150+组织在生产中使用A2A,500+ MCP Server,生态已具规模 3. 两者互补,覆盖了工具调用和Agent通信两大核心需求
支持「还不够」的论据: 1. 缺乏统一的编排层标准,Symphony的尝试尚未被广泛采纳 2. 三层协议之间缺乏标准化桥接 3. 安全、权限、审计等横切关注点缺乏统一规范
7.4 未来可能的统一方向
展望未来,Agent协议标准化的可能路径:
路径一:渐进收敛 MCP和A2A继续演进,逐渐被更多平台采纳;编排层标准(如类Symphony方案)由市场自然选择出现。
路径二:协议融合 某个大厂(如Google、Microsoft)推出整合三层协议的完整方案,一统天下。
路径三:分层标准化 Linux Foundation推动三层协议的标准化接口,但每层允许多个实现竞争(如HTTP/1.1, HTTP/2, HTTP/3并存)。
路径四:框架主导 LangGraph等框架通过提供统一抽象,成为事实上的标准,协议退居底层细节。
8 对软件工程需求分析的启发
8.1 需求文档的Agent化
Symphony的出现启发我们:需求文档 4可能是Agent编排的最佳切入点。
传统模式:
需求文档 → 工程师理解 → 编码 → 测试 → 部署
Symphony模式:
需求文档(Issue)→ Symphony自动派发 → Agent处理 → 验收
这意味着: - 需求文档需要更结构化(如支持YAML前置配置) - 验收标准需要更明确(因为Agent需要「看懂」) - 任务分类需要更规范(以支持自动派发)
8.2 需求与实现的解耦
Symphony的WORKFLOW.md机制启发我们:需求策略可以版本化、与代码同仓库。
好处: - 策略变更有迹可循 - 可以通过历史数据验证策略效果 - 新成员可以快速理解团队规范
8.3 自动化测试的重新定位
当Agent可以自动处理任务时,测试的角色发生变化: - 传统:测试是质量的守门人 - Agent时代:测试可能是Agent理解验收标准的文档
这要求测试用例不仅要「可执行」,还要「可理解」——能被Agent正确解读。
8.4 人机协作的边界
Symphony揭示了一个重要边界:什么任务适合Agent自动处理?什么任务需要人工介入?
适合Agent处理: - 结构化、明确的编码任务 - 有明确验收标准的修复任务 - 可以自动化的工作(如CI/CD)
需要人工介入: - 模糊的、需要判断的需求 - 涉及业务决策的权衡 - 跨团队协调的沟通
这一边界的界定,本身就是重要的软件工程需求。
9 建议和启示
2026年的AI Agent协议生态正在经历从「野蛮生长」到「标准化收敛」的关键转型期。Symphony、MCP、A2A分别从编排层、工具层、协作层回应了Agent大规模协作的核心挑战,它们互补而非竞争。
对实践者的建议: 1. 工具层:优先采用MCP,已有成熟生态 2. 协作层:关注A2A发展,150+组织的生产验证值得信赖 3. 编排层:参考Symphony的「工作区隔离」思路,但不必急于选型
对研究者的启示: - 三层协议的互操作性是核心开放问题 - 安全、权限、审计等横切关注点缺乏统一规范 - Agent时代的软件工程方法论正在被重写
对行业的期待: 希望Linux Foundation能够推动三层协议之间的标准化接口,让MCP + A2A的双层标准能够与Symphony式的编排实践无缝集成,共同构建完整的Agent协作基础设施。
10 参考来源链接
规格驱动开发已成趋势. https://srs.pub/thinking/spec-driven-coding.html↩︎
商业分析中的五十种分析方法和技巧之1-验收标准. https://srs.pub/babok/jieshou-yu-pingjia-biaozhun.html↩︎
商业分析中的五十种分析方法和技巧之39-角色与权限矩阵. https://srs.pub/babok/juese-yu-quanxian-juzhen.html↩︎
需求文档的编写. https://srs.pub/theory/xu-qiu-wen-dang-de-bian-xie.html↩︎