
在 AI 辅助编程日益普及的今天,我们往往陷入一种新的困境:花费大量时间审查、调试和监督 AI 生成的代码。Symphony 是 OpenAI 推出的一个开源工程预览项目,旨在彻底改变这一现状。
Symphony 将项目工作转化为隔离的自主实施运行。它监控 Linear 看板上的任务,自动调度 Codex 代理在独立的工作区中完成编码、测试、生成演示视频甚至提交 PR。工程师的角色从“代码监督者”转变为“工作管理者”,只需在更高层次上验收成果。

⚠️ 警告:Symphony 目前处于低调的工程预览阶段,仅供在受信任的环境中进行测试和探索。
核心理念:管理作品,而非监督代理
传统模式下,开发者需要时刻盯着 AI 的输出。Symphony 引入了**“应用服务器模式”**:
- 监听任务:Symphony 轮询 Linear,获取待处理的工作项。
- 隔离环境:为每个问题创建独立的工作区(Workspace),确保互不干扰。
- 自主执行:在工作区内启动 Codex 应用服务器,发送工作流提示。
- 闭环交付:代理持续工作直到任务完成,提供 CI 状态、PR 审查反馈、复杂度分析及演示视频作为“工作证明”。
- 安全合并:当人类管理者接受成果后,代理安全地合并 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 两种模式。
相关导航


Pruna AI

NVIDIA Personal AI Router (PAIR)

DataClaw

Tinker

OpenSkills

Bumblebee






