fabro-sh/fabro
GitHub: fabro-sh/fabro
Fabro 是一个开源的 AI 编码 Agent 工作流编排引擎,允许工程师以图的方式定义、调度和监控多模型协作的自动化编码流水线。
Stars: 1336 | Forks: 140
## 面向资深工程师的开源暗黑软件工厂
AI 编码 agent 功能强大但难以预测。你要么寸步不离地盯着每一步,要么去审查一个你并不信任的 50 个文件的 diff。Fabro 为你提供了折中的方案:将流程定义为 graph,让 agent 去执行它,你只需在关键环节进行干预。[为什么选择 Fabro?](https://docs.fabro.sh/getting-started/why-fabro)
[](https://github.com/fabro-sh/fabro/actions/workflows/rust.yml)
[](LICENSE.md)
[](https://docs.fabro.sh)

```
# 使用 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 向导,并在向导完成后退出,下次运行时将以配置好的模式启动。
## 使用场景
- **延长脱机时间** — 不再时刻盯防 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 编写代码前审查计划:
```
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 镜像的一键式托管替代方案:
[](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)。
## 使用场景
- **延长脱机时间** — 不再时刻盯防 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 编写代码前审查计划:
标签:AI编程助手, Rust, SOC Prime, 任务编排, 可视化界面, 工作流引擎, 开发工具, 网络流量审计, 网络调试, 自动化, 请求拦截, 通知系统