RULITH 规据 可信到底指什么

可信到底指什么

Rulith 不承诺“智能体永远正确”。它承诺的是一组更窄、但可以检查的性质:材料不会冒充结论,结论必须由规则推出,失败不会被包装成成功。

把一件事交给智能体,你在赌什么

把一件真实的事交给智能体,你其实在赌三件事:

  1. 它报的数可信吗? 你无法分辨一个数是算出来的还是顺口说的;
  2. 它说做完了,是真做完了吗? "我已经完成"是它的自我评价,不是一个可检查的事实;
  3. 出了错,能定位到哪一步吗? 过程散落在对话里,回头找不到当时它凭什么这么判。

这三个问题有同一个结构:再好的模型,也不能为自己作证。 加长提示词、要求它"一步步想"、换更大的模型,改善的都是概率,不改变这件事的性质——过程仍然不可检查。所以可信没有捷径:它必须是系统的性质,不能指望是模型的性格。

Rulith 据此换一种分工:模型提出,板判定。模型仍然做它擅长的事——读懂你的意思、提出该记什么、该立什么规则——但"这个结论成不成立"不再由它自己说了算。这不是对模型提了更严的要求,而是把要求做成了结构

先把“可信”拆开

人们常把四件不同的事都叫可信:

问题真正要检查什么Rulith 的作用
输入是真的吗材料来自谁、有没有外部凭据标明来源;完整形态可接受信通道与真实回执
推理对吗结论是否真的由这些材料和规则推出由板做闭包推导,保留直接依据
数字对吗计算有没有舍入、越界或暗中猜测exact-or-fail;算不准就拒绝
动作真的发生了吗是模型声称做了,还是执行系统留下回执完整形态用动作与回执闭环;云上自助版尚未开放

这四层不能互相替代。推导正确,不代表输入天然真实;输入真实,也不代表模型可以跳过规则直接宣布结论。 Rulith 的价值,是让每一层各归其位,不再混成一句“相信我”。

板保证的三件事

身份不混淆

板上每一条内容都有明确来源,而且互不混淆:材料asserted)是你或智能体断言的事实,它就是原始输入,不假装是推理结果;结论derived)是闭包推导出来的,板会告诉你依据哪条规则、用了哪几项直接材料;动作产物effect)是某个动作真的被执行后留下的(动作层属于完整形态,云上自助版尚未开放)。

三者不可混同,是整个系统的命门。一个模型说"测试通过了",与一个真实运行器留下的记录,在板上是两种东西——前者进不了需要背书的那道门。模型自己写下来的话,不会因为语气肯定就升级成 [derived]

结论可复算

同样的材料与规则应当得到同样的闭包。你可以检查是哪条规则命中、用了哪些直接前提;规则或材料有问题,问题会停在一个可定位的节点上,而不是散落在一段无法复现的对话里。

失败可见

形状不对、操作未开放、算术越界、前提不安全,都应明确拒绝并告诉调用者怎么改。一个诚实的失败比一个流畅的假成功更有价值。

板不替你保证的三件事

它不会把错误材料变成真相

如果有人断言了错误单价,板可以准确推出一个建立在错误单价上的金额。它能让你顺着依据定位到那条单价,但不会假装自己亲眼核验过来源。

所以材料要问两遍:它说了什么?它凭什么能说? 第一问属于推理,第二问属于来源与权限。

它不会替人决定制度是否合理

规则写着“五万元以上需要两家报价”,板会忠实执行;但五万元这个门槛是否合理,仍是人的制度判断。板把制度变得明确、可执行、可审计,不把价值判断伪装成数学真理。

它不会把“模型调用过工具”当成真实回执

模型说“邮件已发”“部署成功”,仍只是声明。要把这类结果升级成可依赖的证据,需要由受信执行器或外部系统留下回执。这个闭环属于 Rulith 的完整形态,当前云上自助版没有开放。

这和向量记忆有什么不同

向量记忆做的是召回——把相关的内容翻出来,信不信、怎么用,仍由模型自己定夺。这份记忆做的是裁决——结论必须从材料与规则推得出来,推不出就是不成立。召回错误未必会被系统暴露;裁决结果则保留依据链,可以定位输入和规则。两者不冲突:一个管"想起来",一个管"算得准、赖不掉"。

在此之上,三件事是检索给不了的:

  • 精确算术,算不准就失败:±253 内精确;越界、无穷、非数一律报错而不是悄悄舍入;
  • 目标带反绎提示:你声明"什么算做完",板在每一步告诉你还差哪几件事——缺口具体到可以直接动手,而目标只有在闭包真的支持它时才翻成"已满足";
  • 缺席不等于通过:"没有人反对"不是"已经批准"。板用 naf(无法被证明)表达缺席:没有签字就挂在待签,不会因为时间久了、没人提出异议就算通过。这条纪律写在领域能力的判据里,不靠人自觉,也不靠模型的好意。

一条结论应当怎样被追问

面对 approved(request=R-17),不要只问“它对不对”,而要按层追问:

  1. 这是材料、结论,还是动作产物?
  2. 如果是结论,命中了哪条规则?
  3. 规则用了哪些直接材料?
  4. 那些材料是谁提供的,属于断言还是受信回执?
  5. 中间是否有缺席条件,例如“没有发现反对”?
  6. 如果撤回一条材料,这条结论会不会随证据级联失效?

板面会列出结论的直接依据,explain_fact 则沿支撑事实一路递归走到断言或动作产物的叶子,每个节点标出自己的出身——这六问都可以逐条落到具体节点上。各项的开放与验证记录见现况与边界

对产品的检验标准

一份可信智能体产品,不应只展示“成功案例”。更值得检查的是:

  • 推不出来时,它会不会明确说不成立;
  • 材料缺失时,它会不会把缺席偷换成通过;
  • 算不准时,它会不会停止而不是给近似值;
  • 操作没开放时,文档会不会如实写“未开放”;
  • 版本变化时,承诺有没有一份可核对的现况页。

这也是我们写这份文档的标准。Rulith 的宏大目标若成立,必须先从这些小而硬的承诺开始。

→ 看当前真正开放了什么

正文住 content/*.md;能力清单、工具清单、字段矩阵由生成器从实现代码抽取 (快照在 facts.json)——改了实现而忘了改文档,校验会自己发现。