OpenSymphony 3.0.0 增加了两个相互独立的路由选择。Project set 路由决定 issue 进入哪个仓库,ACP 路由决定哪个本地 agent 在该 issue 的 checkout 中执行。现有单仓库 workflow 以及 OpenHands 和 Codex harness 仍然受支持。
一个项目,多个仓库
一个中央 project set 可以把同一个 Linear 项目连接到多个源码仓库。每个终端子 issue 必须且只能带有一个 repo:<alias> 标签。父 issue 不绑定仓库,它会等待子 issue 的变更合并,然后在独立的集成工作区中检查组合结果。
OpenSymphony 会先解析仓库绑定,再创建工作区。子 issue 获得所选仓库中经过验证的 checkout,运行记录配置和仓库清单的 generation。因此,除非绑定被明确修改,恢复过程不会把执行中的 issue 移到另一个仓库。
子 issue 的 pull request 经提供方确认合并后,父 issue 会使用保留的子 generation 准备受控 worktree。它执行 project set 的集成检查;如果需要修复,可以在一个受影响的仓库中创建 repair pull request,然后再次检查组合结果。桌面端和 Web 端任务图会显示仓库绑定及父 issue 的阻塞条件,运行详情则显示 checkout generation、集成状态和修复证据。
ACP 成为生产级 harness
OpenSymphony 现在可以通过具名 stdio profile 启动实现 Agent Client Protocol v1 的本地 agent:
routing:
harness: acp
harness_profile: cursor
Agent 进程在 issue 工作区中运行。OpenSymphony 继续负责调度、工作区生命周期、重试和操作员决策。ACP session host 会协商实时能力,为后续 turn 保留兼容的空闲会话,把权限请求路由到 TUI、Web 或桌面客户端,并持久化安全恢复所需的状态。
只有当 agent 公布相应方法时,恢复才会使用 session/load 或 session/resume。如果断开连接前 prompt 可能已经提交,OpenSymphony 会隔离该运行并等待对账,不会盲目重发。可选的模型、模式、方法和厂商扩展来自实际协商的会话,而不是根据 profile 名称推断。
ACP 与多仓库路由可以组合使用,但彼此不构成依赖。ACP profile 可以运行单仓库 issue,也可以运行已绑定仓库的子 issue;多仓库项目也可以继续使用 OpenHands 或 Codex。
通过明确的路由升级
OpenSymphony 3.0.0 要求 Rust 1.97.1 或更高版本。现有安装可以保留 legacy_single 路由和当前 harness。准备中央配置时,先执行只读的迁移预检,再应用迁移:
opensymphony migrate preflight --repo /path/to/target-repo \
--output /absolute/path/to/config.yaml
opensymphony migrate apply --repo /path/to/target-repo \
--output /absolute/path/to/config.yaml
迁移后的初始配置仍使用兼容的单仓库路由。请先准备好仓库清单、project set、issue 标签、凭据、审查 profile 和集成说明,再启用 project_set。
详细信息请参阅 3.0.0 升级指南 、多仓库指南 和 ACP harness 指南 。源代码位于 v3.0.0 tag ,软件包已发布到 crates.io 。