phodal/routa
GitHub: phodal/routa
Routa 是一个以工作空间为先的多 Agent 协调平台,通过看板泳道和专家 prompt 契约为 AI 驱动的软件交付提供从需求拆解到代码审查的完整编排能力。
Stars: 1752 | Forks: 244

# Routa
**以工作空间为先的多 agent 协调平台,专为软件交付设计**
[](https://www.typescriptlang.org/)
[](https://nextjs.org/)
[](https://github.com/tokio-rs/axum)
[](LICENSE)
[](https://join.slack.com/t/routa-group/shared_invite/zt-3txzzfxm8-tnRFwNpPvdfjAVoSD6MTJg)
[](https://www.npmjs.com/package/routa-cli)
[](https://crates.io/crates/routa-cli)
[演示](#demo) • [架构](#architecture) • [工作原理](#how-it-works) • [为什么选择 Routa](#why-routa) • [快速开始](#quick-start) • [文档](#docs) • [中文](README.zh-CN.md)
Routa 是一个以工作空间为先的多 agent 协调平台,专为软件交付设计。它将目标、任务、会话、trace、证据和审查状态展示在看板上,而不是将它们掩埋在单个聊天线程中。
[发布](https://github.com/phodal/routa/releases) · [架构](docs/ARCHITECTURE.md) · [功能树](docs/product-specs/FEATURE_TREE.md) · [快速开始](docs/quick-start.md) · [文档站点](https://phodal.github.io/routa/) · [Slack](https://join.slack.com/t/routa-group/shared_invite/zt-3txzzfxm8-tnRFwNpPvdfjAVoSD6MTJg) · [贡献](CONTRIBUTING.md)
## 演示
- [Bilibili 演示](https://www.bilibili.com/video/BV16CwyzUED5/)
- [YouTube 演示](https://www.youtube.com/watch?v=spjmr_1AQLM)

## 架构
### 系统架构

当前的实现是有意采用双后端设计,而不是两个独立的产品。
- Web:`src/` 中的 Next.js 页面和路由处理器
- 桌面端:`apps/desktop/` 中的 Tauri shell,由 `crates/routa-server/` 中的 Axum 服务器提供支持
- 共享边界:两个 runtime 都保持由 `api-contract.yaml` 定义的相同工作空间、会话、任务、trace、代码库、worktree 和审查语义
- 集成接口:ACP、MCP、A2A、AG-UI、A2UI、REST 和 SSE
### 审查门架构

交付门是一个堆叠的决策路径,而不是单一的审查者角色。
- Harness Monitor 通过展示 trace、更改的文件、命令、git 状态和归属来回答发生了什么
- Entrix Fitness 通过强制执行硬性门禁、证据要求以及文件预算或策略检查来回答什么应该是真实的
- Gate Specialist 通过验证验收标准并路由到 Done、Dev 或人工升级来回答卡片是否可以流转
## 工作原理
```
You: "Build a user auth system with login, registration, and password reset"
↓
Workspace + Kanban Board
↓
Backlog Todo Dev Review Done
Backlog Refiner -> Todo Orchestrator -> Dev Crafter -> Review Guard -> Done Reporter
↘
Blocked Resolver
```
Routa 将看板视为规划面和协调总线的结合体。重要的细节是,每个泳道都由不同的专家 prompt 提供支持,并且每个下游泳道都比前一个更加严格。
在宏观层面上,有两个专家层协同工作:
- 核心角色:ROUTA 负责协调,CRAFTER 负责实现,GATE 负责验证
- 看板泳道专家:每一列都应用了具体的 prompt 契约和具体的证据契约
### 端到端示例
1. 你用自然语言描述一个目标。
2. ROUTA 或看板自动化将该目标转化为一张工作空间作用域内的卡片。
3. Backlog Refiner 将粗略的请求重写为规范的 YAML 故事,包含验收标准、约束、依赖项和 INVEST 快照。
4. Todo Orchestrator 不信任上游的卡片,重新解析 YAML,拒绝薄弱的故事,并追加一份准备好执行的简报。
5. Dev Crafter 再次不信任该计划,除非故事可执行否则拒绝编写代码,仅实现作用域内的更改,运行验证,提交工作,并追加开发证据。
6. Review Guard 不信任开发人员的自我评估,独立检查每个验收标准,要求有测试和干净的 git 状态,要么拒绝打回给 Dev,要么批准流转至 Done。
7. Done Reporter 追加一份简短的完成摘要,说明交付了什么内容以及是什么证据证明了完成。
8. 如果工作被环境、依赖项或模糊性阻碍,Blocked Resolver 会记录下阻碍因素,并将卡片路由回正确的泳道,而不是让问题保持隐性。
### 泳道契约
| 泳道 | 专家 | prompt 强制执行的内容 | 写入卡片的内容 | 典型的移交条件 |
| --- | --- | --- | --- | --- |
| Backlog | Backlog Refiner | 澄清范围,不编写代码,并且除非卡片中恰好包含一个规范的 YAML 故事块,否则不继续推进 | 规范的 YAML 故事,包含问题描述、验收标准、约束、依赖项、范围外项目和 INVEST 检查 | 仅当故事解析通过且可独立执行时才移至 Todo |
| Todo | Todo Orchestrator | 重新验证 Backlog 输出,拒绝格式错误或模糊的卡片,并将有效的故事转化为准备好执行的简报 | 执行计划、关键文件和入口点、依赖计划、风险提示 | 仅当实现可以在几分钟内开始时才移至 Dev |
| Dev | Dev Crafter | 再次检查卡片是否可执行,仅实现作用域内的更改,运行验证,提交工作,并保持 git 整洁 | 包含更改的文件、工作摘要、已运行测试、各验收标准验证和注意事项的开发证据 | 仅在存在 commit 且 worktree 干净后才移至 Review |
| Review | Review Guard | 独立验证每个验收标准,拒绝缺失证据、拒绝范围蔓延、拒绝脏的 git 状态、拒绝损坏的 lint 或类型检查 | 包含裁决、各验收标准状态、发现的问题、审查者备注的审查结论 | 仅在获得 APPROVED 裁决时才移至 Done |
| Done | Done Reporter | 将 Done 视为终点,不再进一步推进,并留下简洁的完成记录 | 包含交付内容、关键证据和完成日期的完成摘要 | 保留在 Done |
| Blocked | Blocked Resolver | 对阻碍因素进行分类,解释根本原因,并且仅在存在具体下一步时才路由回原处 | 包含阻碍类型、根本原因、解决方案和路由决策的阻碍分析 | 返回 Backlog、Todo、Dev、Review,或保留在 Blocked |
### 卡片工件随着工作的推进而增长
同一张卡片随着时间的推移变得更加严格:
- Backlog 生成规范的 YAML 故事
- Todo 添加执行简报
- Dev 添加实现和验证的证据
- Review 添加正式的裁决和结论
- Done 添加完成摘要
这就是为什么看板不仅仅是视觉状态的原因。每一列都改变了下一个专家被允许信任的内容。
### 看板下的核心专家 prompt
- ROUTA Coordinator:优先制定计划,从不直接编辑文件,编写规范,等待批准,分批次委派工作,并在实现后调用 GATE 进行验证。
- CRAFTER Implementor:保持在任务范围内,避免重构和范围蔓延,当文件重叠时与其他 agent 协调,运行指定的验证步骤,并以小单元进行提交。
- GATE Verifier:仅根据验收标准进行验证,将证据视为强制性要求,不允许部分批准,并报告明确的裁决而不是模糊的信心。
内置的泳道 prompt 位于 `resources/specialists/workflows/kanban/*.yaml` 下,核心角色 prompt 位于 `resources/specialists/core/{routa,crafter,gate}.yaml` 下。
## 为什么选择 Routa
单 agent 聊天适用于孤立的任务。当同一个线程必须执行分解、实现、审查、证据收集和发布决策时,它就会崩溃。
Routa 让这些责任变得明确:
- 工作从工作空间开始,而不是隐藏的全局仓库状态
- 看板泳道在专家之间路由工作,而不是将每个角色混合到一个 prompt 中
- 会话、trace、笔记、工件、代码库和 worktree 是持久存在的对象
- Provider runtime 通过 adapter 进行规范化,而不是将特定于 provider 的行为泄漏到产品中
- 审查边界是一个真正的门禁,而不仅仅是另一个自以为是的审查者
## 你今天可以做什么
- 创建工作空间作用域内的概览、看板、会话、团队视图和代码库视图
- 运行包含创建、prompt、取消、重新连接、流式传输和 trace 检查流程的 agent 会话
- 通过排队和单板自动化跨专家泳道路由工作
- 管理本地仓库、worktree、文件搜索、Git 引用和提交检查
- 将 GitHub 仓库导入为虚拟工作空间,并浏览树、文件、issue、PR 和评论
- 添加 MCP 工具和自定义 MCP 服务器
- 使用计划任务、webhook、后台任务和工作流运行来实现超越一次性 prompt 的自动化
- 结合结论、严重性、trace、harness 信号和适应度报告来审查变更
- 以本地优先的桌面模式或自托管的 Web 模式运行产品
## 快速开始
选择最符合你想如何使用 Routa 的最短路径。
| 界面 | 最适合 | 开始方式 |
| --- | --- | --- |
| 桌面端 | 完整的产品体验、可视化工作流、本地优先的使用 | 从 [GitHub Releases](https://github.com/phodal/routa/releases) 下载 |
| CLI | 终端优先的工作流和脚本编写 | `npm install -g routa-cli` |
| Web | 自托管或浏览器优先的访问 | 从源码运行 |
### 桌面端
1. 从 [GitHub Releases](https://github.com/phodal/routa/releases) 下载 Routa Desktop。
2. 创建一个工作空间。
3. 启用一个 provider。
4. 附加一个仓库。
5. 从会话(Session)开始进行临时工作,或从看板(Kanban)开始进行路由交付。
### CLI
```
npm install -g routa-cli
routa --help
routa -p "Explain the architecture of this repository"
routa acp list
routa workspace list
```
### Web
```
npm install --legacy-peer-deps
npm run dev
```
打开 `http://localhost:3000`。
## 从源码开发
### Web 运行时
```
npm install --legacy-peer-deps
npm run dev
```
### 桌面端 runtime
```
npm install --legacy-peer-deps
npm --prefix apps/desktop install
npm run tauri:dev
```
### Docker
```
docker compose up --build
docker compose --profile postgres up --build
```
Tauri 冒烟测试路径在桌面 shell 后面使用 `http://127.0.0.1:3210/`。
## 验证
使用 [docs/fitness/README.md](docs/fitness/README.md) 作为规范的验证规则手册。
```
cargo build -p entrix
entrix run --dry-run
entrix run --tier fast
entrix run --tier normal
npm run test
npm run test:e2e
npm run api:test
npm run lint
```
## 仓库地图
| 路径 | 用途 |
| --- | --- |
| `src/app/` | Next.js App Router 页面和 API 路由 |
| `src/client/` | 客户端组件、hooks、视图模型和 UI 协议助手 |
| `src/core/` | 用于 ACP/MCP、看板、工作流、trace、审查、harness 和存储的 TypeScript 领域服务 |
| `apps/desktop/` | Tauri shell 和桌面端打包 |
| `crates/routa-core/` | 共享的 Rust runtime 基础 |
| `crates/routa-server/` | 桌面端和本地服务器模式使用的 Axum 后端 |
| `crates/routa-cli/` | CLI 入口点和 ACP 服务命令 |
| `crates/harness-monitor/` | 运行观察、评估和面向操作员的 harness 监控器 |
| `docs/ARCHITECTURE.md` | 规范的架构边界和不变性 |
| `docs/adr/` | 架构决策记录 |
| `docs/product-specs/FEATURE_TREE.md` | 生成的路由和端点清单 |
| `docs/fitness/` | 验证和质量门禁 |
## 文档
- [架构](docs/ARCHITECTURE.md)
- [ADR 索引](docs/adr/README.md)
- [快速开始](docs/quick-start.md)
- [功能树](docs/product-specs/FEATURE_TREE.md)
- [适应度规则](docs/fitness/README.md)
- [Harness Monitor 架构](docs/harness/harness-monitor-run-centric-operator-model.md)
- [贡献](CONTRIBUTING.md)
- [安全](SECURITY.md)
## 许可证
MIT。详见 [LICENSE](LICENSE)。
标签:AI开发, Rust, TypeScript, 可视化界面, 多智能体协调, 安全插件, 工作流编排, 测试用例, 看板, 网络流量审计, 自动化攻击, 请求拦截, 软件交付