如何配置 Symphony Agent 以自动修复 GitHub Issue
May 9, 2026
0
Computing/SoftwareRelated Video
6:20为什么 OpenAI 开发了 Symphony 并免费开源
Better Stack
Comments (0)
Log in to leave a comment
No posts yet
6:20Better Stack
Log in to leave a comment
No posts yet
要让 Agent 直接处理堆积在 Issue Tracker 中的工单,首先必须在项目根目录中放入 WORKFLOW.md。Symphony 的架构能够感应项目管理看板的状态变化,并为其分配隔离的工作区。事实上,当 OpenAI 内部团队采用这种方式时,最终合并的 Pull Request 数量在 3 周内飙升了 500%。虽然这个数字看起来有些夸张,但它意味着由于 Agent 自动处理了环境设置和任务分配,开发人员只需专注于代码本身。
首先,在 YAML 配置中写入 GitHub 仓库路径和类似 ai-fix 的触发标签。然后,启动用 Rust 编写的 broomva/symphony 或 Go 版本的 itervox/symphony-go 守护进程,使其每 30 秒监控一次 Issue。完成这些设置后,你就不再需要为了考虑把活儿交给谁而翻遍即时通讯软件了。
把工作交给 Agent 后,它有时会写出荒唐的代码并理直气壮地提交。比如泄露安全密钥或无视团队规范。Symphony 的 hooks.after_run 是在 Agent 生成的结果记录到仓库之前运行的“检查站”。如果这里执行的脚本抛出错误,Symphony 会立即停止工作,防止垃圾代码混入。
在 after_run 阶段只需添加三行代码:通过 npx prettier --write 调整格式,通过 npx eslint --fix 修正语法,最后通过 npx tsc --noEmit 完成类型检查。运行这个自动验证循环,可以使人工二次修改 Agent 代码的工作量减少一半。如果你想避免把时间都花在帮 Agent “擦屁股”上,这是必不可少的配置。
同时运行多个 Agent 时,本地机器难免会发出“哀鸣”。可能会出现因占用全部 CPU 导致鼠标卡顿,或因文件系统冲突导致代码被覆盖的事故。虽然 Symphony Orchestrator 内部使用 filepath.EvalSymlinks 函数分析路径以阻止目录穿越尝试,但资源分配仍需手动配置。
为了稳定运行 5 个以上的会话,请将 Docker 容器作为插槽使用。使用 --memory="2g" 和 --cpu-shares=100 选项限制资源,并使用 --network=none 断开外部通信,这样更安全。如果你不想看到 Agent 向网络某处发送数据或导致系统瘫痪,这种程度的隔离是理所当然的措施。
让 Agent 直接向主分支(Main Branch)提交代码无异于自杀。无论 AI 性能变得多么强大,未经人工最终批准,一行代码也不应合并。工作结果必须推送到带有 staging/ai-patch- 等前缀的临时分支中。
请在流水线的最后加入 GitHub CLI (gh) 命令。以非交互模式执行 gh pr create,将自己设为审阅者(Reviewer),并向 Slack 发送通知。扫视一遍代码确认没问题后,只需通过 gh pr merge --squash 进行合并即可。由机器起草、人工盖章的结构是最快且最安全的。