章节 01
导读 / 主楼:Composer:macOS原生控制面板,以看板工作流编排代码智能体
Swift开发的macOS原生应用,提供Symphony风格的智能体编排控制平面,支持本地优先的看板工作流管理,兼容多种代码智能体。
正文
Swift开发的macOS原生应用,提供Symphony风格的智能体编排控制平面,支持本地优先的看板工作流管理,兼容多种代码智能体。
章节 01
Swift开发的macOS原生应用,提供Symphony风格的智能体编排控制平面,支持本地优先的看板工作流管理,兼容多种代码智能体。
章节 02
随着Claude Code、Codex、OpenCode等AI编程智能体的普及,开发者面临一个新的管理挑战:如何在多个项目、多个智能体之间协调工作?现有的解决方案要么完全依赖命令行,要么将数据存储在云端,缺乏一个本地优先、可视化的控制界面。
Composer正是为解决这一问题而生。它是一个原生macOS应用,为Symphony风格的智能体编排提供了图形化控制平面。
章节 03
Composer采用了清晰的分层架构,确保核心逻辑与具体实现解耦:
SymphonyCore(核心领域模型)
定义了与提供商无关的领域模型,包括项目(Project)、工作项(Work Item)、运行记录(Run)、智能体(Agent)和运行时事件(Runtime Event)。这层完全抽象,不依赖任何具体存储或智能体实现。
SymphonyInterfaces(协议边界)
定义了存储、追踪器、工作流加载器、工作空间、智能体运行器、同步和事件接收器的协议接口。这些接口构成了系统的扩展点,允许不同的后端实现接入。
SymphonyLocalStore(本地存储实现)
初始版本采用JSON文件作为本地存储后端。由于存储层通过协议接口与上层交互,未来可以无缝替换为SQLite或其他数据库,而无需修改上层代码。
SymphonyRuntime(编排状态机)
核心编排逻辑的状态机骨架。它只依赖接口,不依赖具体的存储实现或智能体类型,确保业务逻辑的纯粹性。
ComposerApp(SwiftUI界面)
原生macOS看板界面和检查器视图,为上述各层提供用户交互入口。
章节 04
Composer的核心交互模式是看板(Kanban)工作流。用户可以:
所有数据默认存储在本地,开发者对自己的数据拥有完全控制权。这种本地优先的设计既保护了代码隐私,也确保了离线可用性。
章节 05
除了图形界面,Composer还提供了功能完整的命令行工具composerctl,支持:
composerctl project add --name Composer --repo /path/to/repo --agent codex
composerctl task add --project Composer --title "Add workflow loader" --state ready --priority high
composerctl task list --project Composer
composerctl task move --task LOCAL-1 --state human-review --project Composer
CLI与GUI共享相同的底层存储和协议,用户可以根据场景灵活选择交互方式。
章节 06
Composer的设计目标是不绑定任何单一智能体。通过SymphonyInterfaces定义的协议边界,理论上可以接入:
这种开放性确保Composer不会随着某个特定智能体的兴衰而变得过时。
章节 07
Composer使用Swift和SwiftUI开发,充分利用了macOS的原生能力。项目采用现代Swift包管理器(SPM)构建,支持以下命令:
运行测试
env CLANG_MODULE_CACHE_PATH="$PWD/.build/clang-module-cache" \
swift test --disable-sandbox --cache-path "$PWD/.build/swiftpm-cache"
运行应用
env CLANG_MODULE_CACHE_PATH="$PWD/.build/clang-module-cache" \
swift run --disable-sandbox --cache-path "$PWD/.build/swiftpm-cache" Composer
章节 08
| 特性 | Composer | 纯CLI工具 | 云端IDE |
|---|---|---|---|
| 本地优先 | ✅ | ✅ | ❌ |
| 可视化看板 | ✅ | ❌ | 部分 |
| 多智能体支持 | ✅ | 有限 | 有限 |
| 数据隐私 | 完全控制 | 完全控制 | 依赖服务商 |
| 离线可用 | ✅ | ✅ | ❌ |