Symphony

6个月前发布 229 00

Symphony 是 OpenAI 推出的一个开源工程预览项目,将项目工作转化为隔离的自主实施运行。它监控 Linear 看板上的任务,自动调度 Codex 代理在独立的工作区中完成编码、测试、生成演示视频甚至提交 PR。工程师的角色从“代码监督者”转变为“工作管理者”,只需在更高层次上验收成果。

所在地:
美国
收录时间:
2026-04-30
SymphonySymphony

在 AI 辅助编程日益普及的今天,我们往往陷入一种新的困境:花费大量时间审查、调试和监督 AI 生成的代码。Symphony 是 OpenAI 推出的一个开源工程预览项目,旨在彻底改变这一现状。

Symphony 将项目工作转化为隔离的自主实施运行。它监控 Linear 看板上的任务,自动调度 Codex 代理在独立的工作区中完成编码、测试、生成演示视频甚至提交 PR。工程师的角色从“代码监督者”转变为“工作管理者”,只需在更高层次上验收成果。

Symphony

⚠️ 警告:Symphony 目前处于低调的工程预览阶段,仅供在受信任的环境中进行测试和探索。

核心理念:管理作品,而非监督代理

传统模式下,开发者需要时刻盯着 AI 的输出。Symphony 引入了**“应用服务器模式”**:

  1. 监听任务:Symphony 轮询 Linear,获取待处理的工作项。
  2. 隔离环境:为每个问题创建独立的工作区(Workspace),确保互不干扰。
  3. 自主执行:在工作区内启动 Codex 应用服务器,发送工作流提示。
  4. 闭环交付:代理持续工作直到任务完成,提供 CI 状态、PR 审查反馈、复杂度分析及演示视频作为“工作证明”。
  5. 安全合并:当人类管理者接受成果后,代理安全地合并 PR。

这种模式让团队能够规模化地利用 AI 代理,而无需线性增加人力监督成本。

工作原理:基于 Elixir 的高并发编排

Symphony 选择 Elixir 作为实现语言,得益于 Erlang/BEAM/OTP 在监督长时间运行进程和高并发场景下的卓越表现。

  • 轮询与分发:Symphony 持续监听 Linear API,一旦有新任务或状态变更,立即触发相应逻辑。
  • 工作区隔离:每个任务拥有独立的文件系统环境和 Git 仓库副本,通过 hooks.after_create 自动初始化。
  • Codex 集成:通过 codex app-server 模式运行,支持多轮对话和工具调用。Symphony 还注入了 linear_graphql 工具,允许代理直接操作 Linear(如评论、更新状态)。
  • 生命周期管理:如果 Linear 中的问题被终止或关闭,Symphony 会自动停止对应代理并清理资源。

快速开始:如何运行 Symphony?

前置要求

  • Linear 账户:用于任务追踪。
  • Codex 访问权限:用于代码生成。
  • Elixir/Erlang 环境:推荐使用 mise 进行版本管理。

步骤一:准备环境

git clone https://github.com/openai/symphony
cd symphony/elixir
mise trust
mise install
mise exec -- mix setup
mise exec -- mix build

步骤二:配置工作流

在项目根目录创建或修改 WORKFLOW.md。这是一个包含 YAML Front Matter 和 Markdown 提示词的配置文件。

最小配置示例:

tracker:
  kind: linear
  project_slug: "your-project-slug" # 从 Linear 项目 URL 获取
workspace:
  root: ~/code/workspaces
hooks:
  after_create: |
    git clone git@github.com:your-org/your-repo.git .
    # 可选:安装依赖,如 mise exec -- npm install
agent:
  max_concurrent_agents: 10 # 最大并发代理数
  max_turns: 20             # 单任务最大交互轮数
codex:
  command: codex app-server
---
# Markdown 主体作为系统提示词
You are working on a Linear issue {{ issue.identifier }}.
Title: {{ issue.title }}
Body: {{ issue.description }}

步骤三:设置环境变量

获取 Linear 个人 API 密钥,并设置为环境变量:

export LINEAR_API_KEY=your_linear_api_key

步骤四:启动服务

mise exec -- ./bin/symphony ./WORKFLOW.md

启动后,Symphony 将开始监听 Linear。你可以通过访问本地 Phoenix LiveView 仪表板(默认启用时需配置端口)查看实时日志和代理状态。

关键配置说明

1. 工作流定义 (WORKFLOW.md)

  • YAML Front Matter:定义跟踪器、工作区路径、钩子、代理限制等。
  • Markdown Body:作为发送给 Codex 的系统提示词,支持模板变量如 {{ issue.title }}。
  • Hooks:after_create 钩子用于初始化工作区(如 Clone 代码、安装依赖)。

2. 安全策略

  • 沙箱模式:支持 read-only、workspace-write、danger-full-access 等不同级别的 Codex 线程沙箱。
  • 审批策略:可配置 Codex 的自动审批策略,确保高风险操作需人工介入。

3. 可观测性

  • LiveView 仪表板:位于 /,实时展示代理活动、日志和状态。
  • JSON API:位于 /api/v1/*,便于集成到其他监控系统。

为什么选择 Elixir?

OpenAI 团队解释称,Elixir 构建在 Erlang VM 之上,天生适合构建高容错、高并发、长运行的监督树系统。其热代码重载能力允许在不中断正在运行的代理的情况下更新逻辑,这对于开发调试阶段的 Symphony 至关重要。

测试与验证

Symphony 提供了完善的测试套件:

  • 单元测试:make all 运行 ExUnit 覆盖测试。
  • 端到端测试:make e2e 模拟真实场景,包括创建临时 Linear 项目、启动真实 Codex 会话、验证文件变更及 Linear 状态更新。支持本地 Worker 和 SSH Remote Worker 两种模式。

相关导航