没有Redis、Kafka和Docker:Antfarm如何用YAML+SQLite+cron编排多智能体系统
【免费下载链接】antfarmBuild your agent team in OpenClaw with one command.项目地址: https://gitcode.com/gh_mirrors/antf/antfarm
Antfarm 是一款零基础设施的多智能体编排工具:用一个 YAML 文件定义"规划者、开发者、验证者、测试员"组成的智能体团队,靠一个 SQLite 文件记录全部状态,靠系统自带的 cron 定时轮询驱动流程——一条命令安装,无需任何队列、容器或外部服务。
为什么多智能体编排不需要重型基础设施?
大多数多智能体系统的依赖清单长得吓人:Redis 做分布式锁、Kafka 做任务队列、Docker 做环境隔离,上面再架一层编排框架。但"智能体"本身就跑在你的机器上,这些基础设施只是在给单机场景增加运维负担。
Antfarm 的哲学很简单:能用一个文件、一张表、一个定时器解决的,就不引入新服务。🐜
| 传统多智能体方案 | Antfarm 的替代 |
|---|---|
| Redis 分布式锁 | SQLite 单文件 + 条件更新 |
| Kafka 任务队列 | steps表 + cron 轮询 |
| Docker 环境隔离 | 独立 agent 会话 + 角色权限 |
| 重型编排框架 | 一个 YAML 文件 |
三者各司其职:
- 🗂️YAML—— 定义智能体团队、步骤顺序与重试规则
- 💾SQLite—— 一个文件承载所有运行状态
- ⏰cron—— 定时器让每个智能体"自己找活干"
支柱一:用 YAML 把"智能体团队"写成配置文件
在 Antfarm 中,一个工作流就是一个目录:workflow.yml描述流水线,agents/目录里每个子目录存一个智能体的提示词文件(AGENTS.md 指令、SOUL.md 人格、IDENTITY.md 身份)。以 bug 修复流水线为例,六个智能体按顺序交接:
triage → investigate → setup → fix → verify → PR步骤之间的通信靠模板变量 +KEY: value输出约定。上一步返回REPO: /path/to/repo,下一步就能用{{repo}}引用——上下文就是这样在智能体之间"传接力棒"的。
两个值得新手注意的设计:
- 角色即权限:
verification角色的验证者只能读和执行、不能写文件,从机制上杜绝"自己批改自己的作业"; - 验证环(verify loop):验证失败可自动
retry_step回退到上一步重做,重试耗尽才升级到人工——失败不会悄悄消失。
完整定义规则见 docs/creating-workflows.md,可直接阅读的示例在 workflows/bug-fix/workflow.yml 和 workflows/feature-dev/workflow.yml。
支柱二:SQLite 单文件承载全部状态
没有外部数据库,状态就存在一个文件里:~/.openclaw/antfarm/antfarm.db。
src/db.ts 用 Node.js 22 内置的node:sqlite模块打开它,开启 WAL 模式和外键约束,并内置了轻量迁移逻辑。核心就三张表:
| 表 | 作用 |
|---|---|
runs | 一次工作流运行(任务原文、状态、上下文) |
steps | 流水线中的每个步骤(状态、输出、重试计数) |
stories | 规划者拆出的需求故事(标题、验收标准、进度) |
这就是整个系统的"记忆"——一个文件,git一样容易备份,删除它等于完整卸载。
支柱三:cron 轮询,让智能体自己找活干
没有消息队列,那"派活"靠什么?答案是每个智能体一个 cron 定时器。
安装时,src/installer/agent-cron.ts 会为工作流里的每个智能体注册一个 cron 任务,默认每 5 分钟醒来一次,多个智能体之间错峰 1 分钟错开启动。每次醒来的流程分两阶段:
- 轻查(peek):用便宜快速的模型先问一句"有活吗?"——没有就回一句心跳,立即结束,成本几乎为零;
- 认领(claim)+ 派活:有活才真正认领,并通过
sessions_spawn把一个干净的新会话交给干活模型去执行。
更妙的是 cron 的生命周期跟着运行走:工作流启动时自动拉起定时器,运行结束且无其他活跃任务时自动拆除——空闲时不烧一毛钱。
一行 SQL 当"分布式锁"
多个 cron 可能同时醒来,谁来保证一个步骤不会被两个会话抢走?Antfarm 的答案不是锁服务,而是 SQLite 的一条条件更新(见 src/installer/step-ops.ts#L645):
UPDATE steps SET status = 'running' WHERE id = ? AND status = 'pending'只有真正把状态从pending抢成running的那个会话才拿到了任务——SQLite 的事务保证同一时刻只有一个成功。完成时智能体必须调用step complete(成功)或step fail(失败)回报,否则流水线会卡住并告警,没有任何静默失败。
新鲜上下文:每个智能体都从"失忆"开始
Antfarm 遵循 Ralph 循环模式:每个步骤都是全新会话、干净上下文,没有 50 条消息之后越来越"飘"的幻觉状态。跨会话的记忆不靠上下文窗口,而是靠git 提交历史 + 工作区进度文件——代码本身就是最可靠的"长期记忆"。
仪表盘:一眼看清整条流水线
命令行之外,Antfarm 自带 Web 仪表盘(antfarm dashboard,默认 3333 端口),按流水线步骤分列展示每一次运行的实时状态:
点开任意一次运行,能看到每个步骤的负责智能体、Stories 进度与验收标准明细,失败的步骤会标红并显示重试次数:
三步上手
- 获取项目(要求 Node.js ≥ 22 与 OpenClaw):
git clone https://gitcode.com/gh_mirrors/antf/antfarm cd antfarm && bash scripts/install.sh- 查看并安装内置工作流:
antfarm workflow list antfarm workflow install feature-dev- 跑起来:
antfarm workflow run feature-dev "Add user authentication with OAuth"然后交给它——规划、实现、验证、测试、提 PR 自动推进,中途随时antfarm workflow status查看进度。
写在最后
Antfarm 证明了一件事:编排多智能体系统不一定要上"重型军火"。YAML 定义流程、SQLite 记录状态、cron 驱动循环——三样你机器上本来就有的东西,就能搭出一支会协作、会自检、会重试的 AI 开发团队。能少一个服务,就少一份运维;这大概就是"极简主义"在智能体工程里的最佳实践。 🍃
【免费下载链接】antfarmBuild your agent team in OpenClaw with one command.项目地址: https://gitcode.com/gh_mirrors/antf/antfarm
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考