找回密码
立即注册
搜索
发回帖 发新帖

6650

积分

0

好友

841

主题
发表于 昨天 23:11 | 查看: 4| 回复: 0

最近在折腾一个开源小项目 r2r-jev:给 Jev(TypeSafe AI 上个月发布的决策模型)的判断结果,加一层持久治理的 Rust 实现。

它管的是“判断之后”的事。

用 Jev 做 guardrail 的常见姿势是:模型给出越权概率 → 阈值 → block 这次调用 → 结束。下次调用来了,系统从零开始,像什么都没发生过。可问题是,判断之后的状态变化谁来管?

r2r-jev 把这条线拉长:

Judgment → Evidence → Admission → R2R → Enforcement
判断 → 证据 → 准入 → 关系状态 → 执行

判断会先变成带类型的证据候选,再经过准入层(Accept / Hold / Reject)。只有被接纳的证据,才允许改变 Trust / Delegation / Authorization 这类长期关系状态。一个 0.94 的越权判断,不该直接变成 Authorization = Suspended——概率是证据,不是权限。

Rust 同好可能最在意的一条:确定性纪律。

  • 概率在 adapter 边界转成整数 ppm(0.94 → 940000),治理路径全程无浮点。
  • 无时钟、无随机:ID 是顺序计数器(ev-0001、evidence-0001…),事件序列本身就是时间。
  • 同输入同输出逐字节一致——cargo run -- fixture 跑两遍 diff 验证,这也是 CI 里的断言。
  • 事件库带重启恢复和重放对账:存储事件重放一遍,状态版本对不上会报出第一个发散点。

准入层 v0.1 刻意小而可证伪:七步有序判定 + 七条不变量,几个内置反例:

  • 99.9% 置信 + 低可靠来源 → Reject(置信度造不出来源权威)
  • 99.0% 置信 + 已过期 → Reject
  • 76.0% 置信 + 无佐证 → Hold(第三态:既不忽略也不改状态)
  • 76.0% 置信 + 2 个独立佐证 → Accept(Corroborated)

对照实验中,我们故意输掉的场景也原样放在仓库里:强信任来源的高置信误报,准入层和直接阈值一样中招(false-deny 两臂打平);不确定带(87 万 ppm 单源无佐证)准入层能把误报爆炸半径打到零,而佐证充分的真实违规反而比固定阈值拦得更早。四条 CSV trace + 双臂 harness,数字全部被测试锁死。

仓里还有一个能跑的 MCP 治理控制面(stdio + HTTP 双 transport):提交观测、查询关系状态、执行前取确定性决策、记录执行结果、溯源与重放检查——决策无副作用,写失败 fail-closed。

跑起来不需要 API key:

git clone https://github.com/Thneoly/r2r-jev.git
cd r2r-jev
cargo run -- fixture          # 三幕 demo:判断→证据→三连降级→DENY
cargo run --bin admission     # 准入参考案例 A–G
cargo run --bin admission-compare -- \
experiments/evidence-admission-v0.1/traces/uncertain-single-source.csv

仓库:https://github.com/Thneoly/r2r-jev (Apache-2.0)

八个还没解决的问题开在 Discussions 板,欢迎来拍砖——特别是“独立佐证的身份怎么定义”和“已接纳的证据该不该随时间失效”这两个。

声明:作者即维护者;与 TypeSafe AI 无隶属,Jev 仅指其公开 API。




上一篇:Rust Tauri 2 开源语音输入工具 Voltip:crate 选型与几处取舍
下一篇:Agent Harness 要不要自建?LangChain 创始人的选型与评估建议
您需要登录后才可以回帖 登录 | 立即注册

关闭

站长推荐上一条 /1 下一条

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-10-28 14:16 , Processed in 0.069328 second(s), 43 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表