Symphony支持5大项目管理工具:Linear、GitHub Issues、Jira、Asana、GitLab集成详解
【免费下载链接】symphonySymphony turns project work into isolated, autonomous implementation runs, allowing teams to manage work instead of supervising coding agents.项目地址: https://gitcode.com/gh_mirrors/symphony7/symphony
Symphony 是一款 AI 智能体编排引擎,它支持 Linear、GitHub Issues、Jira、Asana、GitLab 五大项目管理工具集成,能把看板中的任务自动转化为隔离、自主的执行运行(run),让团队从"盯着编码智能体干活"升级为"只管理工作项"。本文带你快速搞懂每种集成的配置要点、内置 Agent 工具和安全设计。
Symphony 是什么:从"看管智能体"到"管理工作"
Symphony 的工作逻辑非常直白,共四步:
- 📡轮询配置好的 Issue 追踪工具(即本项目说的"轨道"),拉取处于活跃状态的工作项
- 📁为每个工作项创建独立工作区,智能体只能在自己的目录里活动
- 🤖在工作区内启动编码智能体(Codex App Server 模式),下发来自
WORKFLOW.md的工作流提示词 - 🔁持续跟进直到任务到达交接状态(如
Human Review),期间失败会指数退避重试
上图是 Symphony 运行时的状态面板:顶部显示并发智能体数量、Token 吞吐量和限流状态,下方列出每个 Issue 所处阶段(Todo、In Progress、Rework)与最近事件,让多任务并发运行完全可观测。
五大轨道集成速览对比表
Symphony 通过统一的适配器边界(见 tracker.ex)支持五种追踪工具,只需在配置中切换tracker.kind即可换轨道:
| 项目管理工具 | tracker.kind | 默认状态语义 | 内置 Agent 工具 | 默认凭据环境变量 |
|---|---|---|---|---|
| 🏆 Linear | linear | 自定义(Todo / In Progress / Rework…) | linear_graphql | LINEAR_API_KEY |
| 🐙 GitHub Issues | github | open→closed | github_api | GITHUB_TOKEN |
| 🎫 Jira Cloud | jira | 自定义 Jira 状态名 | jira_rest | JIRA_BASE_URL、JIRA_EMAIL、JIRA_API_TOKEN |
| ✅ Asana | asana | 项目分区(Section)名即状态 | asana_api | ASANA_PAT |
| 🔶 GitLab | gitlab | opened→closed | gitlab_api | GITLAB_PAT |
所有适配器都会把各自平台的原始数据(标题、描述、优先级、标签、阻塞关系等)归一化为统一的 Issue 模型(issue.ex),调度器不感知平台差异——这就是"换一行配置就能换工具"的原因。
Linear 集成:全流程状态协作
Linear 是 Symphony 的"原生主场",仓库自带的 WORKFLOW.md 就是基于 Linear 编写的完整工作流示例。
配置要点(源码见 linear/adapter.ex):
- 必填
project_slug:在项目页面右键复制 URL 即可获得 - API Key 默认读取
LINEAR_API_KEY环境变量,也支持$VAR引用 - 可选
assignee按负责人过滤任务;Todo状态的任务若存在未完成的阻塞项,适配器会自动判定为"不可派发"
工作流示例:Symphony 的参考工作流把任务状态设计为Todo → In Progress → Human Review → Merging → Done的完整闭环,智能体还内置了一条持久化"工作台评论"(Codex Workpad)作为进度真相源。智能体通过linear_graphql工具直接在宿主机侧执行 Linear GraphQL 操作(改状态、写评论、贴 PR 链接),无需二次登录。
GitHub Issues 集成:把仓库 Issue 变成自主开发
GitHub 集成适合"代码和 Issue 都在 GitHub"的团队(源码见 github/adapter.ex):
- 必填
tracker.provider.repo,格式为owner/repo - 活跃状态只能写
open,终态写closed,调度器会严格校验 - Issue 号会被规范化为
GH-<编号>的工作区标识 - PR 不会被当作 Issue 派发,避免了"任务卡"和"代码评审"两种对象的混淆
github_api工具允许智能体携带相对路径的 REST 请求在宿主机侧执行,Token 权限边界由你配置的 GitHub Token 本身决定。
Jira Cloud 集成:企业级状态与阻塞感知
Jira 集成面向企业团队(源码见 jira/adapter.ex):
- 必填
project_key,并配合base_url、email、api_token三项认证(均有默认环境变量) active_states/terminal_states必须显式写出你项目里真实的 Jira 状态名- 阻塞感知是亮点:Jira 的
Blocks链接会填充到 Issue 的blocked_by字段;处于new状态分类的任务会等待所有阻塞项进入终态后才被派发,进行中的任务则继续运行
jira_rest工具以 Basic Auth 转发/rest/api/3/请求,智能体可以完成状态流转、写评论、读字段等全套操作。
Asana 集成:用分区名当作任务状态
Asana 没有"状态机"概念,Symphony 的巧妙处理是:把项目的分区(Section)名当作状态(源码见 asana/adapter.ex):
- 必填
project_gid指定项目 - 你在 Asana 里建几个分区(比如
Todo、In Progress、Done),就把分区名填进active_states和terminal_states ASANA_PAT提供个人访问令牌,asana_api工具执行 Asana REST 请求
刷新任务时,被删除或移出项目的任务会被自动忽略,不会造成调度异常。
GitLab 集成:自建团队的可靠选择
GitLab 集成适合代码托管在自托管 GitLab 的团队(源码见 gitlab/adapter.ex):
- 必填
project_path,api_url指向你的 GitLab 实例(默认官方地址,可改成自建) - 状态固定为
opened→closed,Issue 标识规范化为GL-<IID> GITLAB_PAT令牌默认从环境变量读取
gitlab_api工具转发原始 GitLab REST 请求,同样支持宿主机侧认证。
如何切换轨道:WORKFLOW.md 里的一行配置
切换项目管理工具的核心就是改 WORKFLOW.md 的 YAML front matter 中的tracker段。以 Linear 为例:
tracker: kind: linear # 改成 github / jira / asana / gitlab 即可换轨道 provider: project_slug: "your-project" active_states: - Todo - In Progress terminal_states: - Done - Canceled三个实用细节:
- 🔄热加载:
WORKFLOW.md被修改后 Symphony 会自动重新加载,无需重启服务;加载失败时会保留上一份可用配置继续运行 - 🔐密钥用
$VAR引用:例如api_key: $LINEAR_API_KEY,这样令牌既不出现在仓库文件里,也不会泄露给智能体子进程 - 📏标签过滤:
required_labels可要求任务必须带某些标签才会被派发,方便"只让 Symphony 处理特定任务"
安全设计:智能体看不到追踪工具令牌
这是五大集成共有的安全模型,值得单独强调:
- 追踪工具的凭据保留在 Symphony 宿主机进程内
- 智能体要写 Issue(改状态、评论、贴 PR)时,调用的是各适配器暴露的原生工具(
linear_graphql、github_api、jira_rest、asana_api、gitlab_api),由 Symphony 代为执行 - 启动 Codex 子进程前,Symphony 会摘除声明的令牌环境变量——智能体不需要、也拿不到第二个追踪工具登录
换句话说:读数据走适配器,写数据走托管工具,令牌全程不出宿主机。
快速上手三步走
第一步:获取代码
git clone https://gitcode.com/gh_mirrors/symphony7/symphony cd symphony/elixir第二步:准备工作流文件
把仓库里的 WORKFLOW.md 复制到你自己的代码库,按上表修改tracker.kind和tracker.provider配置,并在工作区after_create钩子里git clone你的项目。
第三步:配置令牌并启动
以 Linear 为例,设置LINEAR_API_KEY环境变量后:
mise install mise exec -- mix setup mise exec -- mix build mise exec -- ./bin/symphony ./WORKFLOW.md加上--port参数还能开启 LiveView 仪表盘和 JSON API,实时查看每个 Issue 的运行状态(截图见文首状态面板)。
常见问题
Q:一次能同时接入多个项目管理工具吗?不能。tracker.kind一次只选择一个适配器,但热加载机制让你随时切换。
Q:我团队用哪一套工作流状态?GitHub / GitLab 只有开/关两态,流程简单;Linear / Jira / Asana 支持自定义状态,推荐复刻参考工作流的Todo → In Progress → Human Review → Merging → Done五段式,人工只在Human Review和Merging两个节点介入。
Q:令牌泄露了怎么办?因为令牌只存在于宿主机环境变量、且以$VAR间接引用,轮换令牌只需更新环境变量并重启 Symphony,不需要改任何仓库文件。
总结
Symphony 的五大项目管理工具集成遵循统一的设计哲学:归一化的 Issue 模型 + 适配器专属工具 + 宿主机侧认证。无论你是 Linear 重度用户、GitHub 一体化团队、Jira 企业、Asana 协作小组,还是自托管 GitLab 团队,只需换一行tracker.kind配置,就能让 AI 智能体在你的看板里自动开工。团队真正要做的,只剩下定义工作流和验收结果。
【免费下载链接】symphonySymphony turns project work into isolated, autonomous implementation runs, allowing teams to manage work instead of supervising coding agents.项目地址: https://gitcode.com/gh_mirrors/symphony7/symphony
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考