更新日志
本页记录轮虫协议参考实现(@rotifer/playground)的完整版本历史和发布日志。
版本总览:Rotifer 共有 7 个历史版本系列,超过 20 次发布。 完整版本列表:v0.1.0(首发)、v0.2.0(竞技场)、v0.3.0(WASM 编译)、v0.4.0(云端)、v0.5.x(P2P + 声誉)、v0.7.x(稳定化)、v0.7.9(信任盾)、v0.8.0(Iron Shell)、v0.8.6(CLI 运行时 Bugfix)、v0.9.0(Open Mesh + 经济基座)、v0.10.0(P2P 可靠性)、v0.10.1(发布管线修复)、v0.10.2(不再静默返回空结果)、v0.11.0(回滚与卸载)、v0.12.0(调用量开始真正计数)、v0.13.0(更窄的插件)、v0.13.1(测试运行不再算作使用)、v0.14.0(第五个宿主)、v0.14.1(安装命令修正)、v0.15.0(分数说明自己是怎么测出来的)、v0.16.0(判据本身就是任何人都能跑的代码)、v0.17.0(榜单开始执行自己能证明的东西)、v0.18.0(判决终于走到了页面上)、v0.19.1(官方基因终于有了一个能登录的归属)、v0.19.2(把一个版本撤下来,这次真的撤下来了)、v0.20.0(当前公开版本——已发布的 Skill 终于有了公开源码)。以下是每个版本的详细变更记录。
v0.20.0(2026-08-22)— 当前版本(已发布的 Skill 终于有了公开源码)
Section titled “v0.20.0(2026-08-22)— 当前版本(已发布的 Skill 终于有了公开源码)”- 发布在 ClawHub 上的 Skill,装之前就能先读源码 —— rotifer-guide、rotifer-agent、rotifer-arena 从 4 月起就在 ClawHub 上、各自已有 8 个版本,而它们的源码一直放在一个永远不可能推送出去的仓库里:没有任何人能事先读到的公开源、没有 CI,清单里却写着本仓库是它们的归属,而本仓库并不装着它们。现在它们落在
skills/下、按 tag 发布,并且每个 PR 都会用--dry-run跑同一条发布命令——让它在每次改动时都被验证,而不是等到发版当天才发现坏了。同时新增第四个:rotifer-gene,也就是另外三个一直指向的那本基因手册——怎么写一个基因的 express 函数与表型 schema、发布前要跑的四层安全审计、以及把保真度从 Wrapped 迁移到 Hybrid 或 Native。 - README 不再挂着一个落后九个小版本的版本号 —— npm 在包标题下渲染的那行 Status 停在 v0.10.1,而注册表当时提供的是 0.19.2。那一行是这个项目给人的第一印象,而它错了九个版本。现在它跟随实际发布的版本,并且检查放在唯一一个既能改对、又不会把 main 弄红的位置上——发布版本号存在
package.json里,而 release-please 是在它自己的分支上改这个号的,所以 main 在整个周期里拿的都是上一个号,「两者必须相等」是一条 main 永远满足不了的规则。 - 插件包在每一个宿主上都用同一个名字 —— Cursor 是最后一个还在用别的名字称呼它的宿主。
v0.19.2(2026-08-21)— 把一个版本撤下来,这次真的撤下来了
Section titled “v0.19.2(2026-08-21)— 把一个版本撤下来,这次真的撤下来了”rotifer unpublish第一次真正生效 —— 这个命令 v0.16.0 就发出去了,而从那时起的每一次调用返回的都是「Published gene version is immutable」。守护已发布版本的触发器只在一份白名单里的列都没变时才放行更新,而published恰恰在那份白名单里——于是这个命令唯一要改的那一列,正是它唯一不被允许改的那一列。republish 更新的是一条尚未发布的记录,守卫根本不触发,所以那一半一直是好的:这一对命令读起来是「撤下来/放回去」,而只有后半句能用。这个命令是有测试的,测试把网络 mock 掉了,于是它们断言的是「客户端如何应对一个数据库永远不会发出的回复」——真正坏掉的那一层,恰恰是唯一没有被跑到的一层。现在两个方向都改成会自行校验归属、并留下操作记录的授权操作,而不是在一道所有写入方都要经过的守卫上凿一个洞。- L0 闸门现在覆盖基因能够执行的每一条路径 —— 此前只有「基因已编译出构件」且「沙箱开着」时才会走到闸门。有三种情况会掉进 Node 回退路径,而那条路径是以宿主进程的完整权限运行源码的:基因从未编译过(新建基因的默认状态)、传了
--no-sandbox、以及原生插件加载失败——最后这种还是静默吞掉的。规范把 L0 定义为唯一不参与进化、也不可绕过的一层,那么它是否生效,就不该取决于用户有没有碰巧先跑过compile。闸门只检查元数据,做这件事本来就不需要沙箱。 - 「闸门跑不起来」不再等同于「闸门说不行」 —— 一遇到闸门不可用就直接拒绝,会让整个 CLI 在任何拿不到预编译二进制的地方彻底罢工:不受支持的平台、可选依赖安装失败、发布分支。现在闸门返回的是一个判定而不是布尔值。violation(闸门跑了并且判定不通过)是硬拒绝,没有任何绕过口子;unavailable(闸门没能跑起来)则根本不是关于这个基因的结论,改由来源决定:带着云端清单的基因是别人的代码,维持拒绝;源码就在你自己项目里的本地基因,带警告放行。
- 两处插件挂牌不再顶着别人的名字 —— 捆绑包里的 evolve Skill 用的是另一个已独立发布的 Skill 的名字,而 CodeBuddy 那条挂牌把整个包命名成了包内某一个 Skill。
v0.19.1(2026-08-20)— 官方基因终于有了一个能登录的归属
Section titled “v0.19.1(2026-08-20)— 官方基因终于有了一个能登录的归属”v0.19.0 装的就是下面这些改动,而它从未到达 npm:tag 打完之后发布管线失败了, 所以那个 tag 和 GitHub Release 对应着一个谁也装不上的构建。v0.19.1 是第一个真正 发布出去、包含这些改动的版本。
- 59 个官方基因重新有了能登录的归属 —— Cloud 上的
rotifer-protocol档案是 GitLab 账号支撑的,而 GitLab 把那个账号封了。CLI 走 OAuth 认证,所以没有任何回去的路:59 个已发布基因、占注册表的 32%,任何人都无法再 republish、unpublish 或编辑。归属被迁到一个能登录的账户上,名字跟着一起迁——作者行仍然写着 rotifer-protocol,/developers/rotifer-protocol仍然能打开,对读者而言什么都没变。被封的那个档案是改名而非删除:它不再持有任何基因、也无法登录,留着是为了让「这里曾有一个身份、而它失败了」留在记录上。档案表新增了一个受托说明字段,写清楚名字背后是谁、以及上一任身份出了什么事。 - 一个已经不再拥有任何基因的创作者,不再挂着分数 —— 声誉重算遍历的是「当前持有已发布基因」的所有者,而这跟「所有有分数的人」并不是同一批。一个被清空的身份从此不会再被访问到,最后一次写下的分数就永远留在那里。这个问题是在归属迁移之后立刻在生产上发现的:创作者榜单出现两条 0.1324 的记录——一条是正常的现役身份,另一条是一个什么都不拥有的幽灵。
- 只跑过一次沙箱,还不足以称为实测分数 —— 在适应度的两个输入项仍是过渡常量期间,提交会被记为
estimated,而不是当作实测值呈现。
v0.18.0(2026-08-20)— 判决终于走到了页面上
Section titled “v0.18.0(2026-08-20)— 判决终于走到了页面上”v0.17.0 写下了 59 条作废判决。但读取端一个都没去看——所以这一版是让它们真正生效的另一半。
- 榜单会说明它对每一行知道什么 ——
invalidated_at此前没有任何读取方,为它建的部分索引空转,被判作废的记录照样排在列表最前面。现在每一行都带一个层级,而比排序更要紧的是它为什么在这个层级。verified:由沙箱或绑定运行时实测过,并且被足够多的不同调用方用过(阈值从当前赛季配置读取,不是编死在查询里)。under_evaluation:测过了,但还没有足够的使用证据——在自己这一层内排序,因为测量是真的、需求的证据不是。not_evaluated:什么都没测过,或者已被判作废。estimated被有意归进not_evaluated:「评估中」应该意味着确实测过、只是证据还薄,而估算值根本没跑过任何东西,把它摆在真实沙箱运行旁边,正是这套分层要终结的那种混淆。这一层的记录不带排名、也不打印分数列——在「未评估」四个字底下印一个存着的 0.5,正是一个哈希推导出来的数字被当成实测值的由来。 - 声誉不再花用榜单已经扣下的分数 —— 榜单已经不给作废记录排名了,
R(g)还在给。它取最近一条 Arena 记录时不带任何过滤——不看是否作废,也不看分数是怎么来的——于是同一批数字从第二扇门又回来了,而 Arena 项占 0.70 的权重。改之前在生产上实测:某个基因的R(g)是 0.6045,其中 94% 来自一个被判作废的适应度值,而那个构件运行时根本拒绝执行;它自己的页面上写着「Score 0.60」,正下方的F(g)是一个「—」。而且它已经扩散了:开发者声誉会汇总基因分数,还会拿一行的适应度去和同域最高值比较来统计「竞技场胜场」——同样没有过滤,于是一个作废的 1.000 既赢下了自己的领域,又立起了一道没有任何有效记录能够到的门槛,而创作者榜单就建在这之上。现在这个判定条件收进同一个函数,榜单和R(g)都调它,并有测试把两者钉在一起,防止再次各走各的。
v0.17.0(2026-08-19)— 榜单开始执行自己能证明的东西
Section titled “v0.17.0(2026-08-19)— 榜单开始执行自己能证明的东西”- 104 条 Arena 记录中有 59 条不再参与排名 —— v0.16.0 让作废判据变成可运行的代码,这一版把它真正执行了。30 条带着运行时自己拒绝执行的 WASM 构件,27 条根本没有已发布的构件可供测量,2 条是测试数据。什么都没有被删除:被判定作废的记录保留原有的全部数字,只是多出两个字段——什么时候、依据哪条判据——然后从可排名集合里退出。把一次移除的证据本身也移除掉,这件事就失去了意义。构件扫描是证据而非断言:那个桶无需凭证即可读取,判定用的标记就是沙箱运行时拒绝执行的那两个,每条被扫记录都留下所读字节的 SHA-256。63 次扫描里有 33 次能与发布时存下的哈希对照,33 条全部吻合。
- 每一条历史记录现在都说得出自己的数字从哪来 —— 溯源字段出现之前写下的 104 条记录全部标着
unknown-legacy,等于把”沙箱实测”和”人手填的占位值”当成同样不可知。它们并不同样不可知。2 月到 8 月之间有四条客户端路径写过榜单,其中三条在数字本身里留下了指纹,任何人读公开表都能核对:旧的发布占位值是一个精确的定值组合;哈希估算器产出的每个维度都是精确的千分位,且各维度共享同一个种子;沙箱实测把适应度钉在恰好 1.0;而人手输入产生的是整齐的百分位。**104 条全部归类,无一落空。**归类读的是数字的形状而不是重算——哈希规范化改过之后估算器的种子确实找不回来了,而形状不需要种子也能验。 - 规范从 v2.11 起就要求的保真度折扣,终于被真正应用 ——
F(g) = base_fitness × FIDELITY_DISCOUNT[fidelity],Native 1.00、Hybrid 0.85、Wrapped 0.70。这个常量一直在代码里,却没有任何地方调用它,所以榜上每一个分数都是未打折的基础值,跟这个基因实际怎么执行无关。现在记录里把base_fitness和折扣值存下来而不是按保真度推导——折扣是可调整的协议参数,参数变动之后这条记录仍然要能被还原。 - Hybrid 基因按它本来的样子编译 ——
compile过去把每一个 Hybrid 都塞进 WASM 工具链,语料里六个全被拒绝,而报错信息自己的提示恰恰指向”改成 Hybrid 基因”这条出路。Hybrid 实际是在 Node 下带网络网关运行的,test和agent run早就是这么做的。现在它只做校验、不产出构件,也不去改动声明的保真度。Wrapped 自动改写成 Native 保留下来(那是脚手架的既定升级路径),但不再默不作声地改。
v0.16.0(2026-08-19)— 判据本身就是任何人都能跑的代码
Section titled “v0.16.0(2026-08-19)— 判据本身就是任何人都能跑的代码”- 决定一个 Arena 分数算不算数的规则,现在是你能自己跑的代码 —— 给出一份”该删掉哪些记录”的名单,等于让人相信开名单的那个人。现在换成
rotifer arena audit直接跑判据,而它读的每一样输入——记录、基因、构件桶——都无需凭证即可读取,所以第三方跑出来的结论和我们的一样。判据只回答一个问题:这个分数有没有可能真是跑这个基因跑出来的,而且任何人都能验证?它有意拒绝判断”这个数字是不是太高了”,因为”0.97 不可信”本身无法复现。当前只读:把作废真正应用到生产,是另一件需要单独授权的事。 - 作者可以把自己的某个版本撤下来 ——
rotifer unpublish接上了一个一直躺在客户端里、却没有任何命令调用它的方法。接的过程里暴露出一个值得点名的缺陷:行级安全策略会把更新限制在你自己拥有的记录上,而在 PostgREST 里,“更新命中零行”并不算错误——它返回的状态码和更新成功时一模一样。也就是说,去撤一个不属于你的基因,系统会告诉你成功了。现在会把改动后的记录读回来核对,读到空结果就报错,并说明原因。 - 能证明”重复计数是否卷土重来”的证据,现在是公开的 —— 五秒去重护栏在 v0.15.0 已经上线,但它修的那个缺陷之所以能存活几个月,不是因为它隐蔽,而是因为它根本不产生任何信号:一次被记成两次的调用,看上去和一次调用完全一样。现在有一个探针,会列出所有”同一个基因、同一个调用者、间隔小于去重窗口”的相邻调用对;护栏正常工作时,这个列表是空的。窗口宽度只在一处定义,护栏和探针都读它,两边不会在人不知情的情况下各说各话。
- 内置基因重新能编译了 —— 随
rotifer init分发的 50 个基因里,有 33 个根本编译不出来;而一个编译不出来的基因,照样能被发布——要么没有构件,要么带着护栏出现之前构建的旧构件。两种情况得到的都是没人能复现的分数。两类机械成因:入口函数写成了async(WASM 工具链没有事件循环,其中 22 个的async纯属装饰,函数体里根本没有任何 await),以及表型拆分后遗留的旧枚举值。现在 50 个里有 38 个能编译,并有回归测试把豁免名单钉死——它只能变短,不能变长。剩下 12 个失败的没有含糊带过,而是逐个点名:7 个确实要等待 I/O,需要就”这种情况到底该怎么做”给出设计决定;3 个引入了沙箱无法提供的文件系统模块;2 个还带着别的过时声明。
v0.15.0(2026-08-18)— 分数说明自己是怎么测出来的
Section titled “v0.15.0(2026-08-18)— 分数说明自己是怎么测出来的”- Arena 的分数现在带着”它是怎么测出来的” —— 此前一条记录只存一个数字,不存这个数字从哪来,所以”沙箱里跑出来的分”和”手填进去的分”一旦写进库就无从分辨。现在写入端必须声明测量方式,服务端只对它真能核实的部分背书,分数背后的逐次运行证据也一并公开;记录还新增了溯源与作废字段——一个后来被发现无法复现的分数,可以被标记出来,而不是继续悄悄留在排名里。
- 重试的调用不再被记成两次 —— 记录基因执行的那次调用,同一次运行可能落库多次。现在它在五秒窗口内幂等。
- 测试套件不再读取、也不再删除你的凭证 —— 套件要拉起 CLI 几百次,而几乎每个辅助函数都把运行者的
HOME原样传给了子进程。其中一条安全测试会跑logout,而清除凭证是先覆写再删除~/.rotifer/credentials.json:在已登录的机器上跑一次完整测试,你自己的登录就没了,每次都如此。现在每个测试文件的HOME都被重定向到临时目录,并有一条守门测试盯着它不许改回去。 - DeepSeek Harness 的两行配置都以品牌打头 —— 插件贡献的两行原本叫
rotifer-skills和mcp-rotifer,在一百多条的插件列表里排得八竿子打不着。装好了、也确实在工作的人,照样找不到它。第二行现在叫rotifer-mcp,搜一次就能把这一组都找出来。
v0.14.1(2026-08-18)— 一条真的能用的安装命令
Section titled “v0.14.1(2026-08-18)— 一条真的能用的安装命令”- DeepSeek Harness 的安装行指向了一个不存在的包 —— 它原本写的是
dsh plugin add rotifer,这假设插件以这个名字发布到了 npm。它没有,而且也不该有:npm 上那个rotifer是一个专门用来防止工具链被冒名的指路包,而这个插件里没有可执行文件去顶替它的位置。命令现在改为从仓库安装,README 和生成的配置里都写明了原因——免得下一个人嫌命令长,“顺手”把它改成发包,正好把那个防冒名的包覆盖掉。
v0.14.0(2026-08-18)— 第五个宿主,而且里面没有代码
Section titled “v0.14.0(2026-08-18)— 第五个宿主,而且里面没有代码”- Rotifer 插件可以装进 DeepSeek Harness 了 —— 原本就服务 Cursor、CodeBuddy、OpenClaw 和 Claude Code 的那个目录,现在多服务一个宿主,共用一份源码和一个版本号。这个包里没有任何属于我们的运行时代码:它声明的两行配置,挂的是宿主自己的技能读取器和 MCP 桥。这一点值两笔——我们不调用的 API,在一个明说会破坏 API 的 preview 期里坏不了我们;而且装这个插件,不等于把我们的代码放进你的 agent 运行时。启动行还是其他每个宿主拿到的那条:同样锁版本、同样十个工具的
evolve工具集、同样关掉沙箱逃生口。
v0.13.1(2026-08-18)— 测试运行不再算作使用
Section titled “v0.13.1(2026-08-18)— 测试运行不再算作使用”- 从测试套件里跑基因,不再被计入使用量 —— 0.12.0 起会记录每一次云端基因的执行,其中也包括测试驱动的执行。一个会调用基因的测试套件,报上去的调用与真人伸手去用的调用无从区分。上报器现在能认出测试环境(
VITEST、JEST_WORKER_ID、NODE_ENV=test)并保持沉默,CLI 被测试当作子进程拉起时同样有效。CI有意不在这个名单里:别人流水线里发起的调用,仍然是一个真实调用者。 - 修补了一个依赖里的安全公告 —— CLI 链接的 HTTP/2 库升到了不受 RUSTSEC-2026-0258 影响的版本。
- ClawHub 上重新显示为「Rotifer」 —— 显示名此前放在发布时传入的命令行参数里,某次发布忘了带,列表就退回成用于路由的短名。现在它随插件清单一起走,且有测试盯着:短名或显示名任一丢失都会让测试失败。
v0.13.0(2026-08-18)— 插件不再把所有工具都交出去
Section titled “v0.13.0(2026-08-18)— 插件不再把所有工具都交出去”- Rotifer 插件不再以「不锁版本、全部工具可达」的方式启动 MCP 服务 —— 此前在 Cursor 或 CodeBuddy 里装上它,拿到的是一个浮动版本的
@rotifer/mcp-server,31 个工具全部可用,publish_gene与login都在其中,沙箱的逃生口也一并敞开。现在启动的是锁定版本 + 十个工具的evolve工具集,且不带--allow。随插件分发的 Skill 此前也偏在同一个方向:它把/evolve upgrade描述成「找到同域排名最高的替代品并装上」,只字未提需要批准,还把适应度最高的基因说成「自动选中」。自动的是排名,安装要等你点头。Skill 现在还写明了它能触达哪些工具、会发送什么、基因写到哪里、以及升级后怎么撤销。同一个插件现在也发布到 ClawHub,作为第三个宿主。 - 插件声明的 MCP 服务现在真的注册上了 —— 有五个字段(其中包括
mcpServers)此前放在openclaw.plugin.json的顶层,而宿主根本不读那里。清单读起来像是这个插件提供了 Rotifer MCP 服务,实际却没有任何东西被注册:写了、发了、从未被用到。它们现已移入package.json#openclaw,校验器不再报任何警告。 - 失败的运行现在也会上报调用 —— CLI 会记录每一次云端基因的执行,但这条记录是发出去就不等的,而每条失败路径紧接着就调用
process.exit(1),把在途请求连同进程一起杀掉。结果是只有成功的运行被记录下来。现在失败的运行同样计入。
v0.12.0(2026-08-17)— 调用量开始真正计数
Section titled “v0.12.0(2026-08-17)— 调用量开始真正计数”跑一次基因,现在会留下记录。在此之前哪里都不会留——所以竞技场的使用度指标自上线那天起,一个数据点都没收到过。
- CLI 上报基因执行 ——
rotifer run与rotifer agent run现在会记录每一次云端基因的执行,协议的使用度与反操纵指标正是据此计算的。三个条件都在你手里:只上报从云端安装的基因(本地自建的基因永不上报)、只在已登录时上报、设了ROTIFER_TELEMETRY=0(或false/off)则完全关闭。 - 空结果不再算作竞技场里的通过 ——
rotifer arena submit此前判定成功的标准是「沙箱正常退出且输出能解析」。返回{}的基因两条都满足,于是一个声明了七个字段却一个都没给的基因,照样拿到满分成功率。现在成功还要求输出满足基因自己声明的outputSchema;违反该契约的运行会单独提示,你能看清是哪几次、为什么算失败。
v0.11.0(2026-08-17)— 回滚、卸载,以及终于能用的调用计数
Section titled “v0.11.0(2026-08-17)— 回滚、卸载,以及终于能用的调用计数”rotifer rollback与rotifer uninstall—— 把基因退回到之前的版本,或从工作区移除。- 基因调用次数从来没有累加过 —— 服务端的计数器拿一个文本列去和 UUID 列比较、中间没有任何转换,而 Postgres 根本没有这个操作符。每一次记录调用的尝试都会抛错,而调用方把错误丢弃了,于是计数永远停在初始值,同时一切都显示成功。现已修复,并补了回归测试:记录一次调用,检查计数确实动了。
v0.10.2(2026-08-14)— 不再静默返回空结果
Section titled “v0.10.2(2026-08-14)— 不再静默返回空结果”express() 写成 async 的基因,此前会什么都不返回——而且看上去一切正常。
- 运行时拒绝 async
express(),不再悄悄返回{}—— WASM 沙箱(Javy/QuickJS)没有事件循环,async express()交回的是一个待完成的 promise 而不是结果。该 promise 被序列化成空对象,模块以 0 退出,stderr 也是空的:基因没有产出任何东西,而所有信号都显示成功,Arena 还会把这样的运行判为通过。沙箱现在会在执行前拒绝这类工件,并说明三条出路——改成同步express()重新编译、加--no-sandbox走 Node、或发布为 Hybrid 基因。
编译器自 E0025 守卫加入后就会拦下这种写法,但在那之前发布的工件仍能运行。如果你的基因开始报这个错,说明它此前从未真正产出过结果,改为同步重新编译即可。
v0.10.1(2026-08-11)— 发布管线修复
Section titled “v0.10.1(2026-08-11)— 发布管线修复”维护版本,不改变任何使用方式。修复的是发布管线:package-lock.json 未被重新指向刚发布的平台包,导致从仓库拉代码的人执行 npm ci 会失败。安装或升级 CLI 本身不受影响。
v0.10.0(2026-08-11)— P2P 可靠性
Section titled “v0.10.0(2026-08-11)— P2P 可靠性”P2P 层的可靠性版本:节点现在能自己找回网络,两处「静默连不上」的问题也一并消除。
- 节点会记住见过的伙伴 — 重启后的节点会重新拨号它已经认识的伙伴,而不必每次启动都依赖引导节点。引导节点现在只在节点第一次运行时才需要。
- 不再有静默的引导失败 — 此前默认的引导地址指向一个并不存在的主机,拨号失败却不报错、不打日志:节点看似启动正常,实际一个伙伴都没连上。现在节点默认不带任何引导地址,改为显式传入
rotifer network start -b <multiaddr>。目前还没有公共的 Rotifer 网络,需要自行组网 —— 参见 P2P 局域网演示。 - 节点身份识别与连接限制 — 节点之间会交换 Identify,并对入站连接数与内存设限,更不容易被压垮。
P2P 仍然默认关闭(enabled: false):除非你明确要求,CLI 不会加入任何网络。
v0.9.0(2026-06-22)— Open Mesh + 经济基座
Section titled “v0.9.0(2026-06-22)— Open Mesh + 经济基座”一个大版本:CLI 开始支持 P2P,v0.9 经济基座同步落地。
- P2P 基因传播(实验性) — CLI 现在能运行真实的 libp2p 节点。
rotifer network start / announce / received让同一局域网内的节点互相发现、传播基因公告。这是 P2P 网络栈第一个可运行的步骤;自动发现和跨公网连接是后续里程碑。 rotifer doctor— 工具链健康检查命令,在构建前提示缺失或配置错误的依赖。- 混合保真度(Hybrid Fidelity)基因 — 基因现在可以声明外部依赖、降级行为和仿真规格,描述在环境不可用时如何表现。
- 发布时自动安全徽章 —
rotifer publish现在会自动上传基因的 V(g) 安全扫描徽章(可用--skip-vg跳过)。 - 经济体系 + 赛季制 — 声誉动态、自动赛季重置、适应度/权重展示,落地 v0.9 经济基座。
- 登录修复 — CLI 登录回调现在能可靠绑定到白名单本地端口,修复了部分用户遇到的超时。
v0.8.6(2026-04-21)— CLI 运行时 Bugfix + 原生插件分发
Section titled “v0.8.6(2026-04-21)— CLI 运行时 Bugfix + 原生插件分发”修复 4 个 CLI 运行时 Bug,并首次在所有主流平台发布预构建原生二进制包。
- Javy async Gene 修复 —
async express()基因不再崩溃并报 “Pending jobs in the event queue”;编译阶段现在会检测 async 用法并输出清晰错误提示 - 编译缓存修复 —
rotifer compile现在能检测源文件变更并重新编译;此前编辑index.ts后仍会静默复用旧gene.wasm - irHash 序列化修复 —
phenotype.json中含irHash的基因在原生(wasmtime)执行路径上不再失败;hex 字符串与字节数组不兼容的问题已解决 - WASM 沙箱燃料修复 — 默认燃料从 1M 提升至 500M,内存上限至 256 MiB,超时至 60s;Javy/QuickJS 基因在简单工作负载下不再报 “fuel exhausted”
- 原生插件分发 — 预构建
.node二进制现在通过平台专属包发布(@rotifer/playground-darwin-arm64、-darwin-x64、-linux-x64-gnu、-win32-x64-msvc);npm install自动选择正确的二进制——无需本地 Rust 工具链
v0.8.5(2026-04-08)— 生态对齐
Section titled “v0.8.5(2026-04-08)— 生态对齐”首个让 CLI、MCP Server、VS Code 扩展、文档和安装片段统一呈现同一版本号的发布。
- 统一安装体验:
npm install -g @rotifer/playground、npx @rotifer/mcp-server和 VS Code 扩展均指向同一v0.8.5版本面——工具间不再有版本不一致 - Skill→Gene 迁移路径文档化:
rotifer wrap --from-clawhub工作流和 Skill 迁移指南现已纳入公开文档 - CLI 更新通知:CLI 现在会在有新版本时提示用户升级
- IDE 分发清理:插件族和市场元数据在 VS Code Marketplace 和 Open VSX 之间保持一致版本
v0.8.0(2026-02-17)— Iron Shell
Section titled “v0.8.0(2026-02-17)— Iron Shell”安全加固、P2P Protocol RFC、Epoch 自动化、AI 文档助手,30+ 项交付物。
- Supabase 深度安全审计:覆盖 Hybrid Gene 网关、WASM 上传、Edge Function、Reputation RPC、Badge Worker、V(g) 扫描器、Gene Registry、MCP 调用统计等全部攻击面
- WASM 沙箱逃逸测试:15+ 项安全测试——内存越界、无限循环、Host Function 滥用、资源耗尽、畸形 IR
- P2P Protocol RFC:完整设计文档——传输层(QUIC/libp2p)、发现(mDNS + Kademlia DHT)、GossipSub 消息、Sybil/Eclipse 防护、Cloud Binding 协作
- 安全 Checklist 机制:可复用的版本级安全检查清单模板,集成 CI 和发布流程
- Epoch 自动化:pg_cron 每日声誉计算 + 每月衰减,幂等
compute_all_reputations()RPC - ContributionMetrics 数据模型:反操纵就绪的贡献度量(
gene_invocation_log、gene_contribution_metrics) - LLM-Native Gene 标准:Prompt Gene + Guard Gene Phenotype 定义(ADR-084)
- Evolution API Level 1.5:Gene 推荐 + Arena 可观测性 REST 端点
- AI 文档助手:rotifer.dev 上的 RAG 驱动对话组件,含频率限制、内容过滤、缓存和分析
- WebMCP Phase 1:10→14 个 Agent-ready 市场工具,含 auth + confirm 对话框
- 基础设施韧性:GitLab→GitHub CI 迁移、Forgejo 迁移准备、Cloudflare Pages 部署管线
v0.7.10(2026-03-24)
Section titled “v0.7.10(2026-03-24)”安全加固、WebMCP 扩展、中国市场就绪。
- Schema 兼容性检查:
Seq管线的静态类型检查——验证输出→输入 schema 对齐,提供PASS/UNCHECKED/FAIL诊断 - Try Fallback 错误传播:
Try操作符现在将结构化{error, original_input}传递给回退基因,而非裸输入 - WebMCP Phase 1:10→14 个工具——4 个新增写入型(L3)工具:
set_gene_visibility、request_arena_evaluation、create_gene、update_gene_metadata,需 auth + confirm 对话框 - 路径穿越防护:
rotifer init现在拒绝包含../序列的项目名 - 中国网络指南:中文入门文档,含 cnpm 镜像安装和 Supabase 延迟说明
- CI 管线加固:修复部署配置、Node 20 兼容性、网络依赖测试容错
v0.7.9(2026-03-20)
Section titled “v0.7.9(2026-03-20)”协议成熟度的重要里程碑,信任基础设施。
- 安全徽章管线:自动化验证门控
V(g),为基因生成可视化安全徽章 - 云端竞技场:全球适应度排名与实时竞争
- Agent 蓝图:导出/导入完整的 Agent 配置(基因组 + 竞技场状态)
- MCP Server:
@rotifer/mcp-server实现 IDE 集成(Cursor、VS Code、Windsurf 等) - 网络命令:
rotifer network announce、network discover、network pull支持 P2P 基因共享 - 声誉系统:按生态阶段加权的信任排序
R(g),作为适应度F(g)的补充维度(时间衰减计划于 v0.9)
v0.7.x(2026-03-19 → 2026-03-20)
Section titled “v0.7.x(2026-03-19 → 2026-03-20)”聚焦稳定性和开发者体验的快速迭代系列。
- v0.7.0 → v0.7.9:逐步改进 CLI 可靠性、错误提示和文档
- 云端绑定稳定化和端点配置
- 竞技场排名算法优化
v0.5.x(2026-02-23 → 2026-02-24)
Section titled “v0.5.x(2026-02-23 → 2026-02-24)”- 声誉基础:引入
R(g)声誉评分机制 - P2P 基础:GossipSub 元数据广播、Kademlia DHT 发现
- 水平逻辑传输(HLT):跨 Agent 基因共享基础设施
- 组合算子:
Seq、Par、Cond、Try、Transform支持多基因流水线
v0.4.0(2026-02-23)
Section titled “v0.4.0(2026-02-23)”- 云端绑定:基于 Supabase 的云端注册表,支持基因发布与发现
rotifer login/rotifer publish/rotifer search/rotifer install- 云端竞技场:
rotifer arena submit --cloud全球竞争 - GitHub OAuth 认证
v0.3.0(2026-02-22)
Section titled “v0.3.0(2026-02-22)”- 自动 TS→WASM 编译:
rotifer compile通过内置 IR 编译器自动将 TypeScript 基因编译为原生 WASM — 无需单独安装 Rust/WASM 工具链 - Rotifer IR:自定义 WASM 段(
rotifer.version、rotifer.phenotype、rotifer.constraints、rotifer.metering) - WASM 沙箱,支持燃料计量和纪元中断
v0.2.0(2026-02-22)
Section titled “v0.2.0(2026-02-22)”- 本地竞技场:基于适应度的基因排名系统
F(g) rotifer arena submit/rotifer arena list- L0 宪法约束:安全门控强制执行
- 基因准入测试管线
v0.1.0(2026-02-20)
Section titled “v0.1.0(2026-02-20)”首次发布 — 核心基因生命周期。
rotifer init— Agent 工作区脚手架,包含创世基因rotifer scan— 函数兼容性检测rotifer wrap— 函数到基因的转换,生成phenotype.jsonrotifer test— 沙箱测试,含 schema 验证rotifer compile— Rotifer IR 编译(手动 WASM 输入)- 内置五个创世基因:
genesis-web-search、genesis-web-search-lite、genesis-file-read、genesis-code-format、genesis-l0-constraint
轮虫协议遵循语义化版本规范:
- 主版本(1.x):协议级别的不兼容变更
- 次版本(0.x):新功能,向后兼容
- 修订版本(0.0.x):Bug 修复和改进
当前状态:Pre-1.0 — 协议正处于积极开发阶段。次版本之间的 API 可能会发生变化。
即将到来的里程碑(可能调整):
| 版本 | 重点方向 | 状态 |
|---|---|---|
| v0.20.0 | 已发布的 Skill 有了公开源码,并新增第四个 | 当前 |
| v0.19.2 | 撤下一个版本这次真的撤得下来;L0 闸门覆盖每一条执行路径 | 已发布 |
| v0.19.1 | 官方基因有了能登录的归属;幽灵声誉分被清理 | 已发布 |
| v0.18.0 | 判决走到页面:榜单分层,R(g) 不再计入被扣下的分数 | 已发布 |
| v0.17.0 | 判据被执行:59 条记录退出排名、历史记录回填溯源、F(g) 带上保真度折扣 | 已发布 |
| v0.16.0 | Arena 完整性——作废判据成为可运行的代码,内置基因语料重新可编译 | 已发布 |
| v0.15.0 | 分数溯源——Arena 记录自己是怎么测出来的 | 已发布 |
| v0.10.1 | 发布管线修复(package-lock 同步) | 已发布 |
| v0.10.0 | P2P 可靠性——节点记住伙伴、消除静默引导失败 | 已发布 |
| v0.9.0 | Open Mesh + 经济基座 | 已发布 |
| v0.8.6 | CLI 运行时 Bug 修复(Javy async、编译缓存、irHash、燃料)+ 全平台预构建原生二进制 | 已发布 |
| v0.8.5 | CLI、MCP Server、VS Code 扩展和文档的版本面统一;Skill→Gene 迁移路径 | 已发布 |
| v0.9.1 | P2P 发现层(mDNS、DHT、公网) | 规划中 |
| v1.0 | 稳定发布 — L0–L3 完整、≥2 Binding、≥100 Gene、安全审计 | 规划中 |