fabro-sh/fabro

GitHub: fabro-sh/fabro

Fabro 是一个开源的 AI 编码 Agent 工作流编排引擎,允许工程师以图的方式定义、调度和监控多模型协作的自动化编码流水线。

Stars: 1336 | Forks: 140

Fabro
## 面向资深工程师的开源暗黑软件工厂 AI 编码 agent 功能强大但难以预测。你要么寸步不离地盯着每一步,要么去审查一个你并不信任的 50 个文件的 diff。Fabro 为你提供了折中的方案:将流程定义为 graph,让 agent 去执行它,你只需在关键环节进行干预。[为什么选择 Fabro?](https://docs.fabro.sh/getting-started/why-fabro) [![Rust](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/c62125e61e104911.svg)](https://github.com/fabro-sh/fabro/actions/workflows/rust.yml) [![License: MIT](https://img.shields.io/badge/license-MIT-blue)](LICENSE.md) [![docs](https://img.shields.io/badge/docs-fabro.sh-357F9E)](https://docs.fabro.sh) ![Discord](https://img.shields.io/discord/1256822430505373696) ``` # 使用 Claude Code curl -fsSL https://fabro.sh/install.md | claude # 使用 Codex codex "$(curl -fsSL https://fabro.sh/install.md)" # 使用 Homebrew brew install fabro-sh/tap/fabro-nightly # 使用 Bash curl -fsSL https://fabro.sh/install.sh | bash ``` 然后运行 `fabro server start` 在浏览器中完成设置。server 会打开一个 Web 向导,并在向导完成后退出,下次运行时将以配置好的模式启动。 Fabro Runs board showing workflows across Working, Pending, Verify, and Merge stages ## 使用场景 - **延长脱机时间** — 不再时刻盯防 agent REPL。定义带有验证关卡的工作流然后放手——Fabro 会让你不在场也能保证流程顺利进行。 - **利用集成智能** — 无缝结合不同供应商的模型。使用一个模型进行实现,另一个进行交叉批判,第三个负责总结——所有这些都在单一工作流中完成。 - **在团队中分享最佳实践** — 协作使用受版本控制的工作流,将你的软件流程编写为代码。像对待其他源文件一样审查、迭代和重用它们。 - **降低 token 开销** — 将廉价任务分配给快速、低成本的模型,将 frontier 模型预留给需要它们的步骤。类似 CSS 的样式表只需一行修改即可搞定。 - **提升 agent 安全性** — 在具有完整网络和文件系统隔离的云端 sandbox 中运行 agent。让不受信任的代码远离你的笔记本电脑和生产环境。 - **全天候运行 agent** — Fabro 的 API server 会持续排队并执行运行任务。合上你的笔记本电脑——工作流会继续运行,等你回来时结果就在那里等着你。 - **无限扩展** — 将执行任务从你的笔记本电脑转移到云端 sandbox。根据基础设施的能力,并发运行任意数量的工作流。 - **保障代码质量** — 将确定性验证——测试套件、linter、类型检查器、LLM-as-judge——分层整合到你的工作流 graph 中。失败会自动触发修复循环。 - **检查每一次运行** — 查询持久的事件流、checkpoint、结论和阶段输出,以了解发生了什么并改进工作流。 - **使用自然语言进行定义** — 将需求定义为自然语言规格说明,让 Fabro 生成——并重新生成——符合这些要求的实现。 ## 核心功能 | | 功能 | 描述 | | --- | ------------------------------ | ----------------------------------------------------------------------------------------------------- | | 🔀 | 确定性工作流 graph | 使用 Graphviz DOT 定义 pipeline,支持分支、循环、并行处理和人工关卡。支持 diff、审查和版本控制 | | 🙋 | Human-in-the-loop | 审批关卡会暂停以等待人工决策。在执行中途引导运行中的 agent。访谈步骤收集结构化输入 | | 🎨 | 多模型路由 | 类似 CSS 的样式表将每个节点路由到合适的模型和提供商,并带有自动回退链 | | ☁️ | 云端 sandbox | 在隔离的 Daytona 云 VM 中运行 agent,具备基于 snapshot 的设置、网络控制和自动清理 | | 🔌 | SSH 访问和预览链接 | 使用 `fabro sandbox ssh` 连入正在运行的 sandbox,并通过 `fabro sandbox preview` 暴露端口以进行实时调试 | | 🌲 | Git checkpointing | 每个阶段都会将代码更改和执行元数据提交到 Git 分支。可以恢复、撤销或追踪任何更改 | | 📊 | 运行可观测性 | 持久的事件、checkpoint、结论和阶段输出让每一次运行都可检查并可导出 | | ⚡ | 全面的 API | 带有 SSE 事件流和 React Web UI 的 REST API。以编程方式或作为服务运行工作流 | | 🦀 | 单一二进制文件,无 runtime | 一个编译好的 Rust 可执行文件,零依赖。无需 Python、Node 或 Docker | | ⚖️ | 开源 (MIT) | 完整源代码,无供应商锁定。可自行托管、fork 或扩展以适应你的工作流 | ## 示例工作流 这是一个“规划-审批-实现”的工作流,由人工在 agent 编写代码前审查计划: Plan-Implement workflow graph showing Start → Plan → Approve Plan → Implement → Simplify → Exit with a Revise loop ``` digraph PlanImplement { graph [ goal="Plan, approve, implement, and simplify a change" model_stylesheet=" * { model: claude-haiku-4-5; reasoning_effort: low; } .coding { model: claude-sonnet-4-5; reasoning_effort: high; } " ] start [shape=Mdiamond, label="Start"] exit [shape=Msquare, label="Exit"] plan [label="Plan", prompt="Analyze the goal and codebase. Write a step-by-step plan.", reasoning_effort="high"] approve [shape=hexagon, label="Approve Plan"] implement [label="Implement", class="coding", prompt="Read plan.md and implement every step."] simplify [label="Simplify", class="coding", prompt="Review the changes for clarity and correctness."] start -> plan -> approve approve -> implement [label="[A] Approve"] approve -> plan [label="[R] Revise"] implement -> simplify -> exit } ``` Agent 作为具有工具访问权限的多轮 LLM 会话运行。人工关卡 (`hexagon`) 会暂停以等待审批。样式表将规划任务路由到廉价的模型,将编码任务路由到 frontier 模型。有关完整语法,请参阅 [Graphviz DOT 语言参考](https://docs.fabro.sh/reference/dot-language)。 ## 📖 文档 Fabro 附带[详尽的文档](https://docs.fabro.sh),深入介绍了每一项功能: - [**入门指南**](https://docs.fabro.sh/getting-started/introduction) -- 安装、第一个工作流以及 Fabro 诞生的原因 - [**定义工作流**](https://docs.fabro.sh/workflows/stages-and-nodes) -- 节点类型、状态转换、变量、样式表和人工关卡 - [**执行工作流**](https://docs.fabro.sh/execution/run-configuration) -- 运行配置、sandbox、checkpoint、可观测性和失败处理 - [**教程**](https://docs.fabro.sh/tutorials/hello-world) -- 从 hello world 到并行多模型集成的分步指南 - [**API 参考**](https://docs.fabro.sh/api-reference/overview) -- 包含身份验证、SSE 事件和客户端 SDK 的完整 OpenAPI 规范 ## 快速开始 ### 安装 ``` # 使用 Claude Code curl -fsSL https://fabro.sh/install.md | claude # 使用 Codex codex "$(curl -fsSL https://fabro.sh/install.md)" # 使用 Homebrew brew install fabro-sh/tap/fabro-nightly # 使用 Bash curl -fsSL https://fabro.sh/install.sh | bash ``` 发布的二进制文件和多架构 Docker 镜像附带了 SLSA 构建来源证明。请参阅[验证发布版本](https://docs.fabro.sh/reference/verifying-releases)以检查 artifact 是否由我们的 GitHub Actions 工作流构建。 然后在浏览器中完成设置,并在你的项目中初始化 Fabro: ``` fabro server start # opens a web install wizard in your browser # (server exits when the wizard finishes — start it again to run Fabro) cd my-project fabro repo init # per project ``` 对于无头或脚本环境,`fabro install` 会以仅限 CLI 的向导形式运行相同的设置。 ## 运行 Fabro Fabro 作为 server 运行。你可以选择它的运行位置: - **在你的笔记本电脑上** — 安装 CLI(如上所述)并运行 `fabro server start`。当你的笔记本电脑进入休眠时,工作流会暂停。 - **在主机上(自行托管)** — 使用 `docker compose` 或任何云容器服务(ECS、Cloud Run、Kubernetes)部署 Docker 镜像。请参阅[使用 Docker 自行托管](https://docs.fabro.sh/administration/self-host-docker)。 针对相同 Docker 镜像的一键式托管替代方案: [![Deploy on Railway](https://railway.com/button.svg)](https://railway.com/deploy/UcEy5m?referralCode=E5TucU&utm_medium=integration&utm_source=template&utm_campaign=generic) 请参阅[部署概览](https://docs.fabro.sh/administration/deployment)了解全貌。 ## 帮助或反馈 - 通过 GitHub Issues 提交 [Bug 报告](https://github.com/fabro-sh/fabro/issues) - 通过 GitHub Discussions 提出 [功能请求](https://github.com/fabro-sh/fabro/discussions) - 发送邮件至 [bryan@qlty.sh](mailto:bryan@qlty.sh) 提问 - 有关构建说明和开发工作流,请参阅 [CONTRIBUTING.md](CONTRIBUTING.md) ## 许可证 Fabro 采用 [MIT 许可证](LICENSE.md)。
标签:AI编程助手, Rust, SOC Prime, 任务编排, 可视化界面, 工作流引擎, 开发工具, 网络流量审计, 网络调试, 自动化, 请求拦截, 通知系统