phodal/routa

GitHub: phodal/routa

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

Stars: 1752 | Forks: 244

Routa # Routa **以工作空间为先的多 agent 协调平台,专为软件交付设计** [![TypeScript](https://img.shields.io/badge/TypeScript-5.9-blue.svg)](https://www.typescriptlang.org/) [![Next.js](https://img.shields.io/badge/Next.js-16.2-black.svg)](https://nextjs.org/) [![Rust](https://img.shields.io/badge/Rust-Axum-orange.svg)](https://github.com/tokio-rs/axum) [![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE) [![Join Slack](https://img.shields.io/badge/Slack-Join%20Community-4A154B?logo=slack&logoColor=white)](https://join.slack.com/t/routa-group/shared_invite/zt-3txzzfxm8-tnRFwNpPvdfjAVoSD6MTJg) [![npm version](https://img.shields.io/npm/v/routa-cli)](https://www.npmjs.com/package/routa-cli) [![crates.io](https://img.shields.io/crates/v/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) ![Routa 看板概览](https://github.com/user-attachments/assets/8fdf7934-f8ba-469f-a8b8-70e215637a45) ## 架构 ### 系统架构 ![Routa 架构](https://raw.githubusercontent.com/phodal/routa/main/docs/architecture.svg) 当前的实现是有意采用双后端设计,而不是两个独立的产品。 - 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 ### 审查门架构 ![Routa 审查门](https://raw.githubusercontent.com/phodal/routa/main/docs/review-gate.svg) 交付门是一个堆叠的决策路径,而不是单一的审查者角色。 - 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, 可视化界面, 多智能体协调, 安全插件, 工作流编排, 测试用例, 看板, 网络流量审计, 自动化攻击, 请求拦截, 软件交付