FABULA
让编码任务以项目测试通过和可重放凭据收尾,而不是只凭模型说完成。
- Star 数
- ★ 82
- 最近更新
- 1 个月前
- License
- MIT
- 主语言
- TypeScript
- FA 评分
- 67/100 · 存在缺口
30 秒速览
- 运行形态
- 可在哪里用
- 通用 · 跨平台OpenAI API
- 费用
- 免费,无需付费服务
- 上手难度
- 中 · 需要几步配置
- 开始前需要
- 典型场景
- 希望小型本地模型修改代码后必须运行项目测试的个人开发者。
- 不适合
- 需要有统计依据的综合解决率或效果保证的团队
- 不愿配置 Git 和工具调用模型的用户
- 源码审查
- 67/100 · 存在缺口
这个 Agent 能做什么,适合哪些场景?
FABULA 是面向单机单模型的本地优先编码代理,可作为 macOS 桌面应用运行,也可在 Linux 和 Windows 上启动本地服务器并通过网页界面使用。它基于 MiMoCode 分支构建,支持 LM Studio、MLX 提供的本地模型,以及任何兼容 OpenAI 的端点。引擎会在源码修改后检查项目测试是否运行并通过,必要时让模型继续工作;重试次数有限,仍未通过时会明确标记为 NOT DONE。通过验证的运行会生成包含补丁、基准提交、验证命令和结果等信息的凭据,可在临时 worktree 中重放。项目称没有遥测,但默认会连接 GitHub 获取更新信息、从 models.dev 获取模型目录,并按需下载语言服务器。
用户在项目目录中启动 FABULA,选择支持工具调用的模型并描述编码任务。代理读取项目文件,使用工具修改代码;在有测试的项目中,运行项目自己的测试,并在源码已修改却未验证、上次测试失败、编辑未能应用或使用工具后未运行测试等情况下由引擎触发有限次数的重新进入。使用 /goal 时,判定器还会检查记录的执行轨迹。成功运行会产生 Proof-of-Done 凭据;运行 fabula receipt verify 会把补丁应用到记录的基准提交对应的临时 worktree,并再次运行验证命令。
- 希望小型本地模型修改代码后必须运行项目测试的个人开发者。
- 想在自己的 macOS 机器上使用 LM Studio 或 MLX 模型完成编码任务的开发者。
- 在 Linux 或 Windows 上需要本机网页界面和本地服务的工程师。
- 需要把补丁、基准提交和测试结果交给同事重放核查的维护者。
- 想通过 OpenAI-compatible endpoint 接入现有模型服务的团队。
如何安装或部署这个 Agent?
需要 Git,以及本机运行的模型或 OpenAI-compatible endpoint。setup.sh 会安装引擎、Bun 和四个 npm 包;可选能力如浏览器、SearXNG、Docker 和语音模型需另外选择安装。macOS 桌面版要求 Apple Silicon 和 Xcode Command Line Tools。Linux 和 Windows 支持启动本地服务与网页界面;Windows 需先安装 Git for Windows。
git clone https://github.com/sergezuber/FABULA-LLM-5 && cd FABULA-LLM-5
./setup.sh
open FABULA-LLM-5.appLinux 安装与启动:
git clone https://github.com/sergezuber/FABULA-LLM-5 && cd FABULA-LLM-5
./setup.sh
bin/fabula serve --port 4096然后打开 http://127.0.0.1:4096。
如何使用这个 Agent?
打开 LM Studio,加载支持工具调用的模型并启动服务器;安装配置已指向本地适配器。然后在 FABULA 中选择模型,并把项目作为工作目录打开。README 提供的演示任务是修复导出在结束日期当天漏掉行的问题,并要求验证。
Fix the export bug: the nightly export silently drops rows dated exactly on the end date. Prove it.要重放已记录的收据:
cd demo && fabula receipt verify要使用其他 OpenAI-compatible endpoint,先在 .env 设置密钥,再在 fabula.config.json 配置 provider、baseURL、模型 ID 及 context/output 限额;模型必须支持工具调用。
这个 Agent 有哪些优点和局限?
- 编辑后测试未运行或失败时,引擎会有限次地把任务送回处理,并在仍未验证时明确结束为 NOT DONE。
- Proof-of-Done 收据记录补丁、基准提交和验证命令,可在临时 worktree 中重放。
- 支持 LM Studio、MLX 本地模型和 OpenAI-compatible endpoint,且可选择桌面应用或本地网页服务。
- README 明确说明没有遥测,并称本地 provider 配置下提示、文件和聊天留在本机。
- 项目尚未测量完成保护机制是否改善任务结果,也没有公布综合解决率;公开的 SWE-bench Pro 成功案例为 n=1。
- 安装需要 Git 和支持工具调用的模型;首次配置还涉及模型服务与本地适配器。
- setup.sh 会安装引擎、Bun 和 npm 包,部分功能需要额外下载浏览器、Docker 或语音模型。
- 桌面应用仅记录为 macOS 方案;Linux 与 Windows 的主要用法是本地服务器网页界面。
这个 Agent 与同类方案有什么区别?
FABULA 基于 MiMoCode(本身是 OpenCode 分支)。README 将其与未加此 harness 的同一模型作为待进行的实验比较,但该实验尚未运行,因此不能据此判断 FABULA 更优。
与相关度最高的同类 agent 并排比较关键指标。
| Agent | 源码审查 | 形态 / 费用 | Star | 最近更新 | 主语言 | 完整支持的平台 |
|---|---|---|---|---|---|---|
| FABULA 当前 | 67 · 存在缺口 | 桌面应用免费 | ★ 82 | 1 个月前 | TypeScript | OpenAI API |
| Compartment | 76 · 表现良好 | 命令行工具免费 | ★ 580 | 15 天前 | Python | Codex · Claude Code |
| Recall — Claude Code 本地项目记忆插件 | 66 · 存在缺口 | Agent 插件 / 技能免费 | ★ 764 | 1 个月前 | Python | Claude Code |
| Screenpipe | 49 · 缺口较多 | 桌面应用免费版 + 付费版 | ★ 22k | 今天 | Rust | ChatGPT · Claude Code |
FollowAgents 如何评估这个 Agent?
查看各维度的扣分理由
安全说明承认 shell、文件和浏览器能力强,并列出工具、shell 与代码执行三道规则、SSRF 防护、密钥脱敏及注入内容包装;但可见证据主要是说明性描述,权限范围仍广,且未提供确认、恢复与依赖风险处理的充分细节,因此未给高分。README 列出默认联网行为、开关及用户配置后才启用的外部服务;安装时可选择额外能力。来源与上游及许可证拆分有说明,但发布者身份和维护者更新路径有限。
README 描述有界重试、明确的 NOT DONE 终态和可重放收据,并区分已测与未测主张;CI 文件详细声明跨平台测试与构建门槛。依赖安装仍需网络且有大量包,源材料未显示锁定、可用性保障或面向用户的完整失败诊断,因此这些方面扣分。所给账户测试包含传输错误映射等具体断言,但不足以独立证明整个产品可靠。
材料明确面向单机小模型用户,也说明可接 OpenAI 兼容端点,并按 macOS、Linux、Windows 给出路径。安全边界和不支持容器时的处理说得较具体;但何时启用哪些代理能力的触发说明不完整,平台隔离能力不同(Windows 无 OS 内核隔离)限制了环境一致性。
README 以用途、能力、安装、隐私和文档索引组织内容,并明确列出未测结果、n=1 样本及上游代码限制。安装步骤具体但 Windows 要求 Git for Windows,选项和依赖较多;示例与文档索引充足,但 FAQ、持续维护负责人和更新责任的证据较少。MIT 文件清楚,同时说明 vendored engine 另有使用限制,故许可证信息良好但仍需读者核对拆分。版本徽章和更新说明存在,但所给材料未充分展示完整版本政策。
收据包含 diff、基础提交、验证命令和结果,且提供回放命令,输出适合审阅;README 将其限定为可重放记录而非签名,也承认测试质量不能由此证明。测试后置守卫具有明确价值主张,但其结果改善尚未测量;额外浏览器、搜索、容器及语音能力有成本说明,然而整体安装和依赖成本仍不低。
主张链接到收据规范、评测说明、插件清单及公开样例;README 对已测、未测、A/B 小样本与单任务结果分别标注,并将结果改善明确列为未测。CI 和单元测试提供不同类型的佐证,但源材料仅展示少数测试文件及部分 CI 内容,无法全面交叉核实全部安全与效果主张。
- 该 Agent 能执行模型指令的 shell、文件和浏览器操作;请先审阅具体 diff,并把密钥留在 gitignore 的 .env 中。
- 本次仅作静态审阅;守卫对 shell 的路径提取被文档称为 best-effort,Windows 也没有所述 OS 内核隔离。
最近版本
来自该项目 GitHub Releases 的最新发布记录,说明为上游原文摘录,未经本站改写或测试。
-
发布说明摘录
Fourteen versions with one subject: a task must not be lost to the harness itself. Every item below was found in the logs of real runs, where work was ended, misreported or quietly thrown away by the machinery that exists to protect it — a compaction that ended the turn in progress, a single refused path that ended the whole job, a failed edit counted as a success, a note-keeping helper that could edit project files, a Stop button that waited for the very thing it was stopping. Each change ships with tests. …在 GitHub 查看 ↗ -
发布说明摘录
This release is one long chain with a single subject: **the harness must not let the agent start finished work over again.** Thirteen versions, each closing one link — the guard that could not reach the message, the log line nobody could read, the counter that reset mid-task, the note that drove the loop, the database connection that answered with the past. Along the way: chats can be deleted all at once, the deploy check now looks at what is RUNNING rather than at what is on disk, and the privacy section was corrected to name both requests the app makes on its own, not one. …在 GitHub 查看 ↗ -
发布说明摘录
This release is one long chain with a single subject: **the harness must not let the agent start finished work over again.** Twelve versions, each closing one link — the guard that could not reach the message, the log line nobody could read, the counter that reset mid-task, the note that drove the loop, the database connection that answered with the past. Along the way: chats can be deleted all at once, and the deploy check now looks at what is RUNNING rather than at what is on disk. What changed 0.275.0 …在 GitHub 查看 ↗