模型 / 数据集
Onelevenvy/flock avatar
Onelevenvy/flock

Flock:用 Rust 与 Tauri 把多智能体编排搬进桌面

A desktop multi-agent harness built with Rust, Tauri, and React, powered by langgraph-rust.

1,109 个 Star143 个 ForkRustApache-2.0
GitHub

秒懂

它是什么?
Flock 是一个基于 Rust、Tauri 和 React 的桌面多智能体执行框架,底层由作者自研的 langgraph-rust 驱动。它把可视化工作流、沙箱执行和人工审批放进同一个本地应用,本文梳理它的模块边界、启动方式、能力上限,以及它不适合谁。
适合谁用?
如果你的场景是本地桌面上的多步自动化,需要人工审批、沙箱隔离和可视化编排,Flock 的模块划分与 Apache-2.0 许可值得你花时间跑一遍构建。如果你只是要一个问答式聊天客户端,或者团队无法接受 Rust 工具链与容器运行时带来的构建和维护负担,它就不是合适的选择。
能商用吗?
可以。Apache-2.0 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
还在维护吗?
在维护。仓库最近一次提交在 71 天前。
用什么语言写的?
主要是 Rust(依据 GitHub 的语言统计)。

以上回答依据项目的 GitHub 数据(最近同步于 2026年9月15日)和我们的分析,不构成法律意见。

开源项目深度解析

它替谁收拾多智能体的烂摊子

多数人第一次搭多智能体,是在脚本里把几个模型调用串起来,再手动接上文件读写和命令执行。跑通一次不难,难的是过程不可见:模型改了哪个文件、为什么走到某个分支、出错时状态停在哪一步,都散在日志里。Flock 针对的就是这段混乱。README 把它定位为 multi-agent harness,也就是承载智能体运行的框架层,而不只是聊天前端。目标读者是需要在本地把多步任务交给模型执行、同时保留审批和回滚余地的人。它内置 agent,README 写明无需另装外部 CLI,粘贴 API Key 即可开始,支持的提供方包括 OpenAI、Gemini、Anthropic Claude、AWS Bedrock 以及 Ollama 本地模型。这个零配置的取向决定了它服务的是想快速验证编排思路的人,而不是已经在自建调度系统上投入很多的团队。

从 Tauri 命令到 LangGraph 状态机的数据流

README 的架构图给出了一条清晰的链路。最上层是 Tauri 桌面 UI,用 React 和 Mantine 写成,通过 IPC 与 Tauri 命令调用 src-tauri 核心。src-tauri 再通过 IPC 接口和 JSON 协议与 flock-agent 通信,后者是 LangGraph 核心,内部跑 langgraph-rust 的状态机,并用 SQLite checkpointer 保存图状态。工具执行走 flock-tools 的工具注册表,向下分三条路:本地主机上的内置工具(bash、文件、grep)、通过 Model Context Protocol 连接的 MCP 服务器、以及隔离容器中的沙箱客户端。沙箱一侧再通过 X11 与 VNC 服务器,经 x11vnc 加 websockify 以 WebSocket 推流回 UI。仓库按 crate 拆成 flock-core、flock-agent、flock-workflow、flock-tools、flock-skills 五个模块,分别管共享配置与数据库模型、执行循环与检查点、工作流节点与 JSON 到 LangGraph 的 AST 编译、工具与沙箱管理、以及系统提示词加载。这种分层的好处是状态持久化与工具执行分离,代价是跨 IPC 的 JSON 协议成为关键路径,任何字段变更都要同时改两端。

可视化编排实际提供了哪些节点

工作流编辑器基于 ReactFlow,README 列出随版本发布的 10 种节点:start 与 answer 定义输入和最终交付参数,llm 与 agent 分别对应纯推理和带工具的 LangGraph 智能体,classifier 与 ifelse 负责语义路由和条件分支,code 节点可运行自定义 JS 或 Python 代码做转换,human 节点在流程中插入人工反馈,plugin 与 parameter_extractor 用来暴露自定义工具和抽取结构化数据。仓库还提到工作流支持多版本管理与执行历史,便于逐步调试状态。这里值得留意的是 code 节点允许执行任意脚本,而 README 同时说明沙箱用于隔离有风险的 shell 与代码执行,两者是否都默认走沙箱,材料没有写清楚,需要自己在源码里确认。另外,节点数量固定为 10 种,意味着复杂控制流要靠在图上拼接实现,而不是靠节点内部逻辑。

人工审批、VNC 接管与它们的代价

Flock 把 human-in-the-loop 做成了两层。第一层是工具审批:写文件、跑 bash、改配置这类动作在执行前需要用户明确同意,可以查看计划再决定批准或拒绝。第二层是 VNC 屏幕接管,当智能体卡在验证码之类的环节,用户可以直接接管沙箱里的鼠标和键盘。浏览器自动化由 Playwright 承担,computer use 则通过 xdotool 这类 OS 级命令操作虚拟桌面,智能体读取帧缓冲画面来感知屏幕。这套设计的直接代价是依赖链变长:README 的架构图显示 VNC 推流依赖 x11vnc 与 websockify,浏览器与桌面控制依赖 Playwright 和 xdotool。也就是说,沙箱能力不是纯 Rust 实现,而是把若干外部组件编排进容器。想用完整功能,就得接受这些运行时依赖,以及它们在 CI 或无图形环境中的部署复杂度。

安装与构建:README 给出的路径

README 的 Quick Start 章节在提供的材料中被截断,因此这里只能说明可以确认的部分,不臆造命令。可以确认的是:这是一个 Tauri 应用,UI 用 React 加 Mantine,核心是 Rust crate 工作区,模块位于 crates/ 下的 flock-core、flock-agent、flock-workflow、flock-tools、flock-skills。按 Tauri 的常规形态,构建需要 Rust 工具链与前端包管理器,但具体命令请以仓库 Quick Start 章节为准。运行前的配置项在 README 里明确提到的只有 API Key:粘贴 OpenAI、Gemini、Anthropic Claude、AWS Bedrock 或 Ollama 的密钥即可开始,不需要额外下载 CLI 工具。技能扩展通过带 YAML frontmatter 的提示词文件实现,README 说明支持文件变更时的热重载。工作流定时执行使用标准 cron 语法。除此之外的配置键名,材料没有给出,不应假设。

它做不了什么,以及什么时候不该选它

最直接的限制来自项目自身的说明:Flock 建立在 langgraph-rust 之上,README 称其为作者个人的 Rust 版 LangGraph 实现。个人实现意味着 API 稳定性、文档深度和边界情况处理都要由一个人维护,而 Flock 的全部编排能力都压在这层之上。第二个限制是功能与运行时的绑定:沙箱、VNC、浏览器自动化和 computer use 都依赖容器与 X11 相关组件,如果部署环境没有图形栈或不允许跑容器,这些能力就用不上,剩下的是一个本地聊天加工作流编辑器。第三,README 描述的审批机制意味着自主性是有上限的,需要 24/7 无人值守时,审批提示本身就成了障碍,除非把相关工具配置成免审批。最后,仓库主页一栏为空,没有独立的文档站点,遇到问题只能读源码或看仓库文件。

和直接用 LangGraph 搭服务相比差在哪

一个现实的替代路径是直接用 Python 版 LangGraph 加 FastAPI 自建后端,再配一个前端。Flock 的前身正是这套组合,README 的 Refactoring History 写明原版是 Python 应用,使用 LangGraph、LangChain 和 FastAPI,旧代码保留在 legacy/python 分支。两者差别在交付形态:自建服务是进程加接口,部署在服务器上,客户端可以是浏览器或任何 HTTP 调用方;Flock 是本地桌面应用,状态存在本机 SQLite,文件与命令操作发生在用户机器或本地容器里,VNC 画面直接推给本机窗口。如果你的任务需要多人共享同一个执行环境、需要服务端统一审计,自建服务更顺;如果你要的是单机、可看见每一步、能随时接管鼠标键盘的体验,Flock 的形态更贴合。这个选择不是性能问题,而是执行边界放在哪里。

维护成本、许可与升级时要看的东西

仓库采用 Apache-2.0 许可,允许商用与修改,附带专利授权条款,具体义务请以仓库中的 LICENSE 文件为准,这里不构成法律意见。维护成本主要来自三处。一是 Rust 与 Tauri 的构建链,跨平台打包各自需要对应平台的原生依赖。二是沙箱与 VNC 相关的外部组件,它们的版本升级可能影响推流与桌面控制。三是 langgraph-rust 这一底层依赖,由于它是作者个人项目,Flock 的升级节奏很难与它解耦。从发布记录看,v0.2.9 到 v0.3.1 集中在 2026 年 6 月,迭代节奏偏快,版本号仍在 0.x,升级前建议先看 release notes 里对工作流 JSON 格式和数据库结构的变更说明,因为 SQLite checkpointer 保存的图状态一旦格式变动,历史执行记录能否继续读取是需要验证的点。

编辑结论

如果你的场景是本地桌面上的多步自动化,需要人工审批、沙箱隔离和可视化编排,Flock 的模块划分与 Apache-2.0 许可值得你花时间跑一遍构建。如果你只是要一个问答式聊天客户端,或者团队无法接受 Rust 工具链与容器运行时带来的构建和维护负担,它就不是合适的选择。上手前先确认三件事:本机能否完成 Tauri 的 Rust 构建;沙箱依赖的容器运行时和 VNC 组件是否可用;以及 langgraph-rust 的文档与测试覆盖是否跟得上你的工作流复杂度。

官方来源

  1. Issues
  2. License: Apache-2.0
  3. Onelevenvy/flock on GitHub
  4. README
  5. Releases
社区笔记

社区笔记