我们暂停了新功能的开发,以修复底层基础。一次实现审计发现,我们的规范与代码之间存在四个关键差距。v0.5.5 版本已全部修复这四个问题。
差距一:命令行工具绕过了 WASM 沙箱
rotifer test 和 rotifer agent run 在 Node.js 中直接调用了 import() —— 基因在运行时拥有完整的主机访问权限,既无燃料计量,也无内存隔离。WasmtimeSandbox 虽已在 Rust 中实现,但命令行工具从未调用它。
修复:新增一个 NAPI 函数 executeGene(),将原生基因的执行路由至 Rust 沙箱。执行报告现在包含 fuel_consumed(消耗燃料)、memory_peak(内存峰值)和 execution_time_ms(执行耗时,单位毫秒)。对于未封装的基因,系统会回退到 Node.js 并显示警告:⚠ 未在沙箱中运行 —— 请先执行 'rotifer compile'。
差距二:L0 内核毫无强制约束
PermissionSet 虽被传入执行上下文,却从未被检查。一个基因即使声明了 network_access: false,仍可发起 HTTP 请求。
修复:L0Gate::check() 在执行前进行四项检查(域名白名单、资源限制、网络权限、文件系统权限)。所有执行操作——无论通过或被阻止——都会记录到 .rotifer/audit.jsonl 文件中。
差距三:代数执行器未集成
Rust 端已完整实现了包含五种操作符的代数执行器(Seq/Par/Cond/Try/Transform)。但命令行工具却在 TypeScript 中重新实现了一个仅支持 Seq 的循环,忽略了其余部分。
修复:通过 executeAlgebra() NAPI 桥接,命令行工具现已连接至 Rust 执行器。rotifer agent run --composition Par 现已生效,且 rotifer agent create 支持 Par/Cond/Try 配置。
差距四:适应度公式与规范不一致
规范定义了一个乘法模型:若成功率(success rate)为零,则适应度(fitness)也为零。而原有实现采用的是加法平均模型,使得某项指标的低分可通过其他指标补偿。
修复:compute_fitness() 现已实现规范中的公式:F(g) = [S_r · log(1+C_util) · (1+R_rob)] / [L · Resource_Cost]。历史数据通过 formula_version 字段共存。
合规性测试
rotifer test --compliance 执行六项结构性检查:沙箱执行、燃料消耗、L0Gate 通过情况、表型合规性、F(g) 可计算性以及 IR 段完整性。
统计:Rust 端 224 个测试 + 1 个文档测试 · TypeScript 端 188 个测试 · 全部通过
源码:gitlab.com/rotifer-protocol/rotifer-playground
本文最初发表于 rotifer.dev。欢迎在 GitLab 上关注本项目,或通过以下命令安装命令行工具:npm i -g @rotifer/playground。
免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。