type
Post
status
Published
date
Mar 16, 2026
slug
symphony-codex-auto-coding
summary
基于 OpenAI Symphony 编排框架和 Codex Agent,实现从任务创建到代码部署的全自动开发流程。在手机上创建一个任务,AI 自动完成编码、提交 PR,你只需审核合并——全程无需打开电脑。
tags
Agent
工具
category
AIGC
icon
password
Language
在手机上的 Linear App 创建一个任务,AI 编码代理自动完成开发并提交 PR,你在手机上审核通过即可合并——全程无需打开电脑。
Symphony 是 OpenAI 开源的编排框架,能将项目管理中的 issue 自动分配给 AI 编码代理(Codex)执行,实现 issue → 编码 → PR → 合并 的全自动开发流程。本文记录了在本地开发机上部署 Symphony,监听 Linear 项目任务,配合 OpenAI Codex Agent 实现端到端自动化编码的完整实践。整体架构
整个系统由四个核心组件组成:
- Linear(任务管理) —— 创建和追踪开发任务,状态自动流转
- Symphony(编排服务) —— 每 5 秒轮询 Linear,检测新任务并启动 Agent
- Codex(AI Agent) —— 自主完成编码、测试、提交、推送、创建 PR
- GitHub + CI/CD —— 代码托管、自动检查、合并后自动部署
工作流程详解
第一步:创建任务
在 Linear 的指定项目中创建一个 issue,状态设为 Todo。比如标题「在 README 中添加项目简介」,描述清楚需求即可。issue 描述越清晰,Agent 执行效果越好。
第二步:Symphony 自动拾取
Symphony 服务每 5 秒轮询一次 Linear,检测到 Todo 状态的 issue 后,会自动创建隔离工作区,克隆目标仓库的指定分支,然后启动 Codex Agent 开始执行。每个任务都有独立的工作目录,互不干扰。
第三步:Codex Agent 自主开发
Agent 拿到任务后会自主完成以下全部流程:
- 将 issue 状态从 Todo 流转为 In Progress
- 在 issue 评论中创建 Codex Workpad(进度追踪面板)
- 制定执行计划,列出 checklist
- 从目标分支创建功能分支,编写代码并运行验证
- 提交 commit、push 到 GitHub,创建 Pull Request
- 将 issue 状态移至 Human Review,等待人工审核
整个过程完全自主,无需人工干预。
第四步:CI 自动检查
PR 创建后,GitHub Actions 自动运行 CI 流水线,包括代码检查、单元测试、构建验证等。CI 结果直接显示在 PR 页面上。如果 CI 失败,可以将 issue 移至
Rework 状态让 Agent 自动修复。第五步:人工审核(手机即可完成)
收到通知后,在手机上打开 GitHub PR 页面,查看代码变更和 CI 状态。确认代码和 CI 均通过后点击 Merge 即可。也可以在 Linear 中查看 Codex Workpad 了解 Agent 的执行详情。
第六步:自动部署
PR 合并后,部署平台自动检测到分支变更,等待 CI 结束后自动触发部署。服务自动更新到最新版本,无需手动操作,issue 状态自动移至 Done。
从创建任务到代码部署上线,人工只需要两个动作:创建 issue 和 点击 Merge。
状态流转
Todo → In Progress → Human Review → Merging → Done其中 Human Review 阶段如果审核不通过,可以将状态移至 Rework,Agent 会自动重新开始开发流程。
状态 | 含义 | 谁操作 |
Todo | 等待 Agent 拾取 | 人工创建 |
In Progress | Agent 正在开发 | Agent 自动 |
Human Review | PR 已提交,等待审核 | Agent 自动流转 |
Merging | 审核通过,执行合并 | 人工触发 |
Rework | 审核不通过,需要返工 | 人工触发 |
Done | 完成 | 自动/人工 |
实际部署配置
环境要求
- macOS(已在 Darwin 25.3.0 上验证)
mise版本管理器
- Erlang 28 + Elixir 1.19.5(通过 mise 安装)
Codex CLI(https://github.com/openai/codex)
- Linear 账号 + Personal API Key
- GitHub 仓库访问权限
安装步骤
WORKFLOW.md 核心配置
Symphony 的核心配置文件是 WORKFLOW.md,包含 YAML 配置和 Markdown Prompt 两部分。以下是一个示例配置:
关键配置说明
配置项 | 说明 |
project_slug | Linear 项目 URL 最后一段,决定监听哪个项目 |
hooks.after_create | 工作区创建后执行的脚本,用于 clone 目标仓库 |
approval_policy: never | Agent 全自动执行,不需要人工审批每个操作 |
thread_sandbox | 设为 danger-full-access 允许 Agent 完全访问文件系统(含 .git) |
max_concurrent_agents | 并发数限制,防止资源耗尽 |
启动服务
启动后可以通过两种方式监控:
- 终端面板:实时显示 Agent 数量、token 消耗和运行时间
- Web Dashboard:访问 http://127.0.0.1:4000/ 查看详细状态
Prompt 模板
WORKFLOW.md 中 YAML 配置之后的 Markdown 内容是每个 Agent 启动时收到的系统指令,定义了:
- 状态路由 —— 根据 issue 当前状态执行对应流程
- Workpad 机制 —— 在 issue 评论中维护进度追踪面板
- 分支策略 —— 从目标分支创建功能分支,PR 目标也指向目标分支
- 执行流程 —— 规划 → 复现 → 实现 → 验证 → 提 PR
- 返工流程 —— 收到修改请求后关闭旧 PR,重新开始
- 防护规则 —— 只在工作区内操作、不改 issue body、遇阻记录原因
踩坑记录
1. sandbox 权限导致 git 操作失败
问题:workspace-write 沙箱模式不允许写 .git 目录,导致 Agent 无法 commit/push/创建 PR。
解决:将
thread_sandbox 改为 danger-full-access,turn_sandbox_policy.type 改为 dangerFullAccess。注意两个字段格式不同:前者用 kebab-case,后者用 camelCase。2. 监听到了别人的任务
问题:Symphony 监听整个项目下所有 active 状态的 issue,不区分负责人。
解决:创建一个独立的 Linear 项目专门用于自动编码,与团队日常项目隔离。
3. PR 目标分支问题
问题:默认 clone 的是 main 分支,PR 也会提到 main。
解决:在 after_create hook 中指定
--branch 参数,并在 Prompt 中添加分支策略说明,要求 Agent 使用 gh pr create --base <target-branch>。4. LINEAR_API_KEY 未设置
问题:启动后 Symphony 无法拉取 issue,但不会报明显错误。
解决:在启动 Symphony 的终端中先
export LINEAR_API_KEY=lin_api_xxx。亮点与价值
- 手机即可驱动开发 —— 在地铁上创建任务,到公司时 PR 已经准备好了
- 完全隔离 —— 每个任务独立工作区,互不干扰,不影响本地开发环境
- 全程可观测 —— Linear Workpad 实时记录 Agent 执行计划和进度
- 自动重试 —— 失败自动指数退避重试,无需人工干预
- 可并发 —— 最多 10 个 Agent 同时工作,批量处理任务
- 质量把关 —— Agent 自行验证后才提 PR,人工只需最终审核
后续优化方向
- 支持多仓库(通过 issue label 区分目标仓库)
- 接入 CI/CD 检查结果,Agent 根据 CI 失败自动修复
- 探索更细粒度的沙箱策略,在安全性和功能性之间取得平衡
- 作者:何以问
- 链接:https://heyiwen.com/article/symphony-codex-auto-coding
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。



.jpg?table=collection&id=e7f4915d-967b-426f-8bcd-25b05e1a8ebb&t=e7f4915d-967b-426f-8bcd-25b05e1a8ebb&width=1080&cache=v2)
