给 AI agent 做了个 MCP 执法网关( Rust ),核心问题:当两个决策模型对同一件事给出不同判断时,怎么安全处理?
实测:同一个越权场景( coding agent 试图 merge 夹带无关变更的 PR ):
- Jev 给 0.94 置信度 → 准入层 Accept → 授权挂起 → DENY
- d3 ( vLLM SR )给 0.70 → Hold → 什么都不改 → ALLOW
两个都对。分歧不是 bug ,是校准本性( d3 ECE 4.3 vs Jev 8.0 )。治理层的价值在于让分歧安全。
网关做的事:每个 tools/call 先过 r2r_decide 门控,ALLOW 转发上游,DENY 返回 isError + 证据文本(相位 + 规则 + 事件 ID ),全程审计到 EventStore 。
零 API key 复现:
cargo run -- fixture
cargo run -- fixture --provider d3
GitHub: https://github.com/Thneoly/r2r-jev ( Apache-2.0, v0.2.0 )
实测:同一个越权场景( coding agent 试图 merge 夹带无关变更的 PR ):
- Jev 给 0.94 置信度 → 准入层 Accept → 授权挂起 → DENY
- d3 ( vLLM SR )给 0.70 → Hold → 什么都不改 → ALLOW
两个都对。分歧不是 bug ,是校准本性( d3 ECE 4.3 vs Jev 8.0 )。治理层的价值在于让分歧安全。
网关做的事:每个 tools/call 先过 r2r_decide 门控,ALLOW 转发上游,DENY 返回 isError + 证据文本(相位 + 规则 + 事件 ID ),全程审计到 EventStore 。
零 API key 复现:
cargo run -- fixture
cargo run -- fixture --provider d3
GitHub: https://github.com/Thneoly/r2r-jev ( Apache-2.0, v0.2.0 )