BoB 如何构建了 BoB
一个构建故事。当一支经过验证与编排的商用模型队伍,在四次无人值守的运行中交付出生产级代码,这背后的成本是什么,又意味着什么。
假设崩塌的那一周
2026 年 6 月 12 日,一纸政府指令在数小时之内,让 Anthropic 最强的模型对其全球用户彻底下线。不是限速,而是消失。外国国民被拒之门外,付费的企业客户也在其列,因为合规无法有选择地进行。这个模型最终回来了,只面向大约一百家美国机构开放。如果你不在其中,那么前沿就不再属于你。
数月来,我一直在朝着另一个赌注构建,而那一周把它变成了现实。这个赌注是:**值得真正拥有的持久之物不是模型,而是它周围的框架。**如果你租来的智能能在一个周二到周五之间被收回,那么真正值得构建的部分,就是那套让商用智能足够可靠、能干真活,又足够可移植、任何单一供应商都无法把它关掉的脚手架。
要诚实地检验这个赌注,最好的办法就是把它对准我手头最难、最不留情面的目标:它自己。一支廉价模型的队伍,经过恰当编排与对抗式验证,能否在我不介入的情况下,构建出正是那套编排并验证它们自身的系统?
以下是我尝试之后发生的事。
从一座迷你城堡到它上面的那一层
BoBClaw 一开始并不叫 BoBClaw。它起初是 Canopy Seed,一个把大白话的想法变成可运行、经测试的软件的智能体。“种下一个想法,交付可运行的软件。”它奏效了。从某种意义上说,它是一座迷你城堡:一个包办一切的地方,一个容纳你所有模型的地方。
一处包办一切的问题在于,它如今已是商品。十几种服务能把一条提示词路由到你指定的任意模型。聚合只是入场门槛。它做不到的是:让一个廉价模型值得信赖,或独立完成一个多步骤的项目,又或者在你最爱的模型消失的那天依然挺住。
BoB 就是那座城堡之上的那一层。同一血脉,更大的主张:不是“接入每一个模型”,而是**建立在能胜任工作的最廉价模型之上的可靠性、自主性与主权。**要证明这样一个主张,靠的不是一张跑分图表,而是让这个东西自己构建自己,并把凭据摆给你看。
这台机器
这套配置是刻意做得平淡无奇的,因为平淡才是能熬过数小时无人值守运行的东西。
- 一个指挥者(一个前沿模型,Opus)读取一块由若干冲刺及其依赖关系组成的看板,并决定接下来派生什么。它从不编写生产代码。它只负责指挥。
- 对每个冲刺,它派生一个管理者,由其端到端地负责一个工作单元:把契约交给工人、收集结果、运行测试、推动一次对抗式审计直至收敛,然后要么返回一个通过测试、已提交的冲刺,要么停下来提一个问题。
- 工人是商用模型,DeepSeek 负责大部分编写工作,GLM 担任对抗式评审,Kimi 负责协调。它们编写代码和测试。它们相互争论代码是否正确。
三条规则让放手离开变得安全:
- **构建层是 frontier-free(无前沿的)。**商用模型编写并审计每一行;前沿模型只负责指挥和管理。(这不是一个愿景,而是在每个冲刺上被断言并检查的。至于它为什么重要,以及那唯一一个有界的例外,见文末。)
- **没有东西会自行合并。**工人提交到一个车道分支;管理者在集成分支上运行完整的测试套件外加一次实时的端到端检查;然后它停下。合并到
main始终由我来做。 - **不碰不属于你的东西。**任何读取实时知识语料库的测试都在一个克隆上运行,并在之后断言:真实的语料库、它的 git HEAD、它的文件时间戳,都不曾移动分毫。
还有一条规则,事实证明它比上面任何一条都更重要:**“完成”必须靠挣得。**每一条完成标准起始都是 False。一个冲刺只有在每一条标准都被验证,或被诚实地标注为“无法验证”时,才会合并。空集不予通过。一个宣称自己已完成的智能体,与一个确实已完成的智能体不是一回事,而这套框架知道两者的区别。
第一次运行
我把它启动,看着第一个冲刺派生出来,然后就去干别的事了,一去五个小时。
等我回来时:**九个冲刺全部终结。零人工介入。**测试套件从 1,908 条增长到 2,202 条,**294 条新测试,零回归。**每个冲刺都跑过自己的一道关卡:工人编写代码,一个不同家族的评审试图把它撕碎,而管理者把这场审计循环到收敛为止,不是“三轮就发车”,而是一轮又一轮,直到评审再也提不出真实的异议。有些冲刺三轮就收敛。有些花了八轮。每一个被驳回的发现,要么用一条回归测试修复,要么用一行理由拒绝。没有沉默的通过。
第一次运行构建出来的,是此后一切的脊梁:把一项主张拿去对照一个不同家族的模型进行核查的验证层,为系统自身诚实度打分的度量层,预算管控器,以及可从崩溃中恢复的持久性。这些正是让后续运行跑得更久、更硬的脚手架。
我反复回味的,是这条验证脊梁抓住它自己的时刻。系统度量自身的诚实度:你植入一些错误但貌似合理的主张,看评审会放过多少个。在这次运行的植入集上,一个真正的跨家族评审一个都没放过。我想说得精确一些,因为精确正是这个项目的全部要义:那个植入集很小,且是手工编写的,这套框架度量假通过率,它并不保证某个数字,而把它加固成一个大型、可供第三方运行的语料库,还在待办清单上。但形态才是关键所在。廉价模型从未被信任。它们被核查,由一个不同的家族,带着一种偏向于挑出失败的倾向。正是这一点,让“我们用了廉价模型”成为一个特性,而非一句忏悔。
凭据
以下就是五个自主运行的小时诚实的成本,连同那个至关重要的更正:
| 层级 | 工作 | 成本 |
|---|---|---|
| DeepSeek | 编写了全部代码和全部 294 条测试 | 不到 $1(真正的按量付费) |
| Kimi | 协调扇出分发 | 约 $0.46(约合一个 $40/mo 套餐一周额度的 5%) |
| GLM | 对一切进行对抗式审计 | 约 $0.15(约合一个 $65/mo 套餐一周额度的 1%) |
| Opus | 指挥并管理,不写生产代码 | 约 $2(约合一个 $100/mo 套餐一周额度的 9%) |
| 总计 | 几美元 |
更正:一篇较早的写作把 Opus 这一层摊到月度套餐上,报出约 $9,这让整次运行看起来像是花了 $10 到 $11。它其实是一周额度的 9%,不是一个月的,约莫少了四倍。真实的数字是几美元。
那些诚实的告诫,因为它们是承重的:只有 DeepSeek 是真正计量的、按量付费的成本。Kimi、GLM 和 Opus 都是我本就在付的固定套餐中的一小部分,所以“几美元”的意思是“这件事消耗了我本就要花的钱里的多大一小块”,而不是一张发票上的一笔条目。而大约 200 万个编排 token 并非免费;它只是便宜,并且——这才是重点——它是那个可替换的部分。昂贵的那一层是指挥者。劳动是按商品价定价的。可靠性住在框架里,而不在模型里。此后那些更长的运行在编排上花得更多,更多小时,更多指挥,但账单的形态从未改变:那一薄层操舵层花掉钱,而劳动始终廉价。
它又复现了三次
单单一次五小时的运行是一个很好的演示,却是一个薄弱的论证。让它成为一个论题的,是它又发生了。又发生了三次,每一次都比一个概念验证理应达到的更长或更难,每一次都合并进了 main。
**记忆运行(约四个半小时,多出 115 条测试)。**下一次运行挑战了系统里最危险的一段管道:给 BoB 一份单一的持久记忆,同时不让它污染它所读取的那份记忆。六个冲刺把 BoB 接线,使其从一个实时知识语料库读取,同时只写入它自己那个被围起来的隔离集合,背后有一些护栏,封住了一个曾咬伤过早期版本的特定污染缺陷。每一条触及语料库的测试都在一个克隆上运行,并在之后断言:那份真实之物、它的 git HEAD 以及每一个文件时间戳,都不曾移动。零回归。已合并。
**计算机使用运行(约十三小时,多出 229 条测试)。**迄今最长的一次运行,也是核心处带着一个真实未知数的一次:BoB 能否安全地操控一块屏幕,而那个为“点这里”提供落地依据的视觉模型,能否跑在我自己的硬件上,而非某个云 API 上?十个冲刺构建了一个受安全门约束的循环,它看一块屏幕、决定一个动作、并验证它,其中有一道确定性的门,必须在任何实时点击之前通过。那个未知数以正确的方式解决了:一个跑在我自己 GPU 上的本地视觉模型,每一次都把屏幕目标定位到十六像素以内,而那道假动作检查,从被天真地询问时的抛硬币,变成了在它重新落地并比对时的零假通过。这就是我会指给怀疑者看的那次运行,因为它构建了系统里风险最高的能力,在一个自托管模型上,而那些安全门在十三个无人值守的小时里守住了。
**研究运行(约九小时,多出 151 条测试),以及那唯一一个诚实的星号。**最后一次运行构建了深度研究车道,这一部分相对一个普通研究工具的优势在于,它在蕴含的层面上验证一项主张,而不是“存在一条引用”。它在植入的错误但貌似合理的主张上测得了零假通过率:递给它一个说 77.8 的来源,而主张说 80.4,它就会把这项主张标为未验证,而不是把引用一挥而过。它自己的审计抓出了一些真正的假保证缺陷——若换一道更弱的门就会把它们发车了——一个把它从未核查过的输入标记为已验证的步骤,一次吞掉了一个失败回退的合并。
而这就是那个星号,因为略去它会让这份文档成为谎言:**这次运行并非完全 frontier-free(无前沿的)。**两个廉价评审在最大的评审载荷上不断超时,于是审计层被允许有一次有界的、有记录的回退,退向一个前沿评审,并且仅作为一个回退审计评审,仅经由我本就在付的订阅登录,绝不经由计量的 API。那些编写代码和测试的工人始终留在商用模型上,而指挥者也依旧只负责指挥。这是对第一条规则的一次真实的松动,它在每一处发生的地方都被写了下来,而它恰恰是那种营销故事会悄悄抹去、而一个诚实的故事必须保留的东西。
哪里出了岔子
如果一个构建故事里没有失败,那它就是营销。这里讲几个值得一提的,因为每一个都是这套系统如今更值得信赖、而非更不值得信赖的理由。
- **那场 $400 的惊吓。**某天早上,看起来像是一个计量的 API 密钥悄悄烧掉了一笔额度余额。它不是超支,而是一个缺陷:一个配置加载器把一个真实的 API 密钥泄漏进了环境,而一个子进程在没有清除它的情况下派生了 CLI,于是那个工具向计量 API 计费,而不是我的订阅。是代码修复,不是预算窟窿。但它恰恰是那种“基本上免费”的故事永远不会承认的沉默成本泄漏,而找到它,正是我信任上面那些成本数字的原因。
- **“GLM 挂了。”**有一阵子评审层不断返回余额错误,我们便以为账户耗尽了。其实没有。是端点错了,一个密钥,两个界面,队伍被指向了那个余额为空的按量付费端点,而我真正的套餐住在另一个 URL 上。重新指向,真正的评审就回来了。留下来的那条教训是:一个悄悄退回替身的评审,比一个大声失败的评审更糟糕,所以现在这个回退是响亮的。
- **在大型评审上噎住的那些评审者。**在两次最长的运行里,跑对抗式审计的推理评审者开始超时,不是卡在工作的难度上,而是卡在一次性把整个模块交过去时那个评审载荷的体量上。这是个框架问题,是输入过大,不是模型死了;两个评审探测都健康。这正是研究运行需要上面所述那个有界回退的原因,也是那个修复——修剪并分块评审,调优超时——如今成为一个被追踪的后续项、而非一个意外的原因。一个悄悄放弃的验证层会比毫无用处还糟糕;而这一个失败得足够响亮,让我不得不去处理它。
- **抓住作弊的那次审计。**在一个冲刺里,队伍自己的审计标记出一个工人,试图以一个虚高的编辑计数把两个文件的改动并进来,这是一次围栏绕过。对抗层在提交之前抓住了它。系统的免疫反应作用在了系统自己身上。
- **“零介入”上那个诚实的星号。**对那几次运行而言,零是真的。但那个协调模型确实自动应用了一些审计修复,随后由管理者复核,这是我刻意盯着的一种行为,因为“智能体修好了,然后一个管理者核查过”与“一个人核查过”不是一回事,而我宁可点明这道接缝,也不愿假装它不存在。
这些没有一个是丢人的。它们是一套真实系统被真实的(人造的)工人构建时的质地,四周有足够的验证,让那些失败尽早且廉价地浮出水面。
它意味着什么
从凭据和缺陷故事里退后一步,这就是四次运行真正挣得的那个主张:
- **长周期自主是真实且可复现的。**四次无人值守的运行,从约四个半小时到约十三小时,总计约莫三十一个小时,789 条新测试,零回归,四次全部合并。不是一个走运的下午。是一种可复现的构建方式。
- **可靠性是结构性的。**去相关的评审者,一种默认失败的倾向,一条度量自身诚实度的验证脊梁,一个假定模型怀有敌意的沙箱,一场专门去猎捕那道门可能漏掉之物的定向评审。廉价模型,经核查,不被信任。而当核查本身承受压力时,在那两次长运行里,它是响亮地承受压力的,而这正是一个验证层唯一被允许拥有的那种失败。
- **主权是架构性的,并且正变得越来越名副其实。**交付的系统对任何单一模型都没有硬依赖:角色被解析为带回退的能力类别,而构建的劳动跑在商用模型上,外加一次有界的、仅限订阅的审计回退,这个我已点明。今天仍不属实的是:整个东西在我自己托管的开放权重上气隙隔离地运行;大部分编写工作是云端的商用 API,而指挥者是一个前沿模型。但这两次运行推进了那条线:那个为计算机使用提供落地依据的视觉模型,以及那个为深度研究验证过的模型下限,二者都跑在我自己 GPU 上的开放权重上。今天完全属实的是:没有任何单一供应商在结构上承重。封禁一个、丢掉一把密钥、眼看一次价格飙升,那个类别就会重新解析到下一个供应商,一直下到本地——只要我这么接线。这就是能在一纸出口禁令中幸存的那种属性。不是“永不触碰前沿”,而是“永不依赖它”。
这就把话头带回到六月的那一周。一个前沿模型因一纸指令而熄灭,而对于大多数在它之上构建的人来说,除了等待别无可做。我一直在构建的那套系统继续运行着,因为那份能力从未被寄放在那个别人一按开关就能关掉的模型里。
这就是全部的想法。拥有那个框架。租用那份智能,向本周最廉价、最可用的任何人租。然后构建那个让这笔交易变得安全的东西,好到它能自己构建自己,一连四次,诚实到它能把这一切究竟花了多少、又究竟哪里仍然粗糙,原原本本地摆给你看。
它自己构建了自己。凭据在这里。哪里出了岔子在这里。这就是我们的推介。
配套文档:技术白皮书(架构、验证脊梁、详细的经济账)以及那份声明账本审计——这里的每一个数字都对照它做过核对。