跳到正文
Hacker News· atatiyan·· 9 天前AI 评分62

Fabrika 发布:一个带红蓝队与盲测的软件工厂

Show HN: Fabrika, Opinionated Software Factory

AI 导读

Fabrika 发布 alpha 版本 0.1.0,采用 MIT 许可,把编码流程固定为一条由普通代码调度的流水线,构建者与检查者分属不同模型家族,例如用 Claude 构建、用 GPT 或 Gemini 检查。

正文 · AI 翻译

为什么选择 Fabrika

为交付生产级代码而构建

为人类决策而优化

Fabrika 对比
你最喜欢的编码工具

工具可以完成每一步。工厂确保它 确实完成。

你的工具可以启动子智能体、编写测试并 检查自己的工作。它是否会这样做,以及 是否会以相同方式做两次,取决于会话。

Fabrika 则固定了流水线。流程是 规定的而非可配置的,这正是它能够 保证每个功能都经过红队测试、盲测和 项目自身检查的原因,由 普通代码决定接下来运行什么。

构建者和检查者,来自不同的模型谱系。

每个站点都是一个智能体,只负责一项工作和一条 提示词。构建者制造东西;检查者攻击已 制造的东西。Fabrika 希望这两支团队使用不同的模型 家族:例如,用 Claude 构建,用 GPT 或 Gemini 检查。

团队:谁站在每个站点、他们运行什么模型,以及流水线在哪里回环进行修复。

每个智能体只看到其工作所需的内容

一个 worker 获得整个分支以及 harness 拥有的所有工具。oracle 获得需求,但看不到任何代码。

模型与任务相匹配

一个读取并总结代码的 scout 可以运行在类似 Haiku 的模型上;规划构建的 architect 则需要类似 Opus 的模型。

你可以阅读和修改的提示词

每个角色都是一个在调用时加载的 Markdown 提示词,针对其岗位进行调优,并可在控制台中编辑。

仓库就绪: 批准检查

将 Fabrika 指向一个仓库,它会调查代码当前是如何被检查、测试和引导的:linter 和类型检查器、安全性和可访问性检查、单元测试、集成测试和面向用户的测试,以及像 AGENTS.md 和 CLAUDE.md 这样的 agent 指南。

它发现的每一项检查都会在一个未改动的检出上运行。 在你接受它们之前,不会构建任何东西,因为之后的每个功能都会以该基线为评判标准。一项检查不必是绿色的才能被接受:修复它、将其保持在当前数值,或判定它不适用。

构建:
观察,
不要干预。

architect 规划工作单元,plan checker 提出异议;只有当它们无法达成一致时,你才会在 计划评审 中看到计划。此后运行中途不再有输入。

两条通道彼此不可见地运行:worker 进行构建,而 oracle 根据规格编写测试。运行检查、运行 oracle 的测试,以及将修复拆分为不重叠的单元,都由普通代码完成,而不是由 agent 完成。

规格冻结后的各个站点
站点 团队 它做什么
worker builder 编写代码及其单元测试。多个并行运行,每个都在计划中自己的单元内。
integrator builder 将各个 worker 的单元合并为一个整体,并编写覆盖它们之间接缝的测试。
oracle checker 仅根据规格编写验收测试,与 worker 并行进行。它从不查看实现。
breaker checker 攻击结果:边界、失败路径、并发、恶意输入、字面上满足但实质上未满足的标准。它编写探针来证明失败。
reviewer checker 提出反对发布的强有力理由:重复、破坏约定、不应有的抽象。
arbiter neither 对每一项发现作出裁决:修复它、简化它、将其送回 oracle、判定其超出范围,或将其升级给你。它不能让一项发现消失。
repairer builder 对 arbiter 送回的问题进行最小范围的修复,在一个受轮次、预算和挂钟时间限制的循环中。
simplifier builder 简化正确但过于复杂的代码。之后所有内容都会重新测试。
rapporteur neither 组装评审包。

功能评审: 对评审包作出裁决

回来的不是 pull request,而是一个 review packet:代码,外加一份结构化的论证,说明它做到了所规定的事。代码是通过提出要求的那个标准来抵达的。你审计这份论证,并对少数几个决定作出裁决,而不是从头读一遍 diff。

结果要么是一个你可以合并的分支,要么是又一轮工作。

这次运行无法自行解决的决定:被升级或无法修复的发现,以及任何你需要手动检查的事项。每一项都带有仲裁者的推理及其背后的证据,你带着理由去修复或驳回它。

你的裁决:这次运行留给人的三个裁决,一个许可证阻塞项和两个重大发现,每一项都附有仲裁者的推理和旁边的证据。

建成后:
代码库,
逐文件阅读。

在改变一个系统之前,你需要对它有一个心智模型。一个 reader agent 读取每个文件,普通代码检查它报告的内容并将其连接成一张图,一个 cartographer 为这些分组命名。结果是一个架构、一组子系统以及一张能力地图,每一项都有一个稳定的三字母 id。

它在你要求时运行,之后只读取自它处理的上一次提交以来发生更改的文件。

三种皮肤,
一块板。

控制台有 default、day 和 night 三种,从报头切换,并由你的浏览器记住。皮肤是把一种底色移到另一种底色上,而不是反转页面:在 day 中,板加入地板;在 night 中,地板加入板。

选择一种皮肤,或在屏幕上拖动。

The crew page in the default skin: enamel board and rail over a pale green-grey floor.

default 搪瓷板和它的轨道悬挂在涂漆的地板上;记录在地板上读取。

运行在你已有的订阅上。

Fabrika 以无头方式驱动 Claude Code 和 Codex,使用你的 Anthropic 和 OpenAI 订阅。任何 OpenAI 兼容的东西、OpenRouter 或你自己机器上的模型,都通过 OpenHands harness 运行。

订阅会被限流,所以每个团队都有一个后备 agent,当主路由拒绝时,工厂会切换到它。每个模型名称都放在一个文件里,factory.yaml。

它用于什么,以及不用于什么。

专为

  • 一个人,或一个小团队,基本靠自己构建功能。
  • 定义明确、自包含的功能,在进入工厂之前就已设计好。
  • 在自己的机器上运行,作为单一用户。

尚未,或完全不

  • 团队登录、协调工作流、云部署。
  • 需要大量来回沟通的工作, 比如塑造用户体验或探索 问题空间。为此使用交互式代理 会话。

现状

Alpha 版,版本 0.1.0,MIT 许可。它尚未 经过实战检验,会有 bug。 大约一千二百个测试各自断言一个 使其值得运行的属性:不变量、隔离、修复循环、 控制台绘制的内容。

来源:Hacker News · tatiyants.com