ratemy.sh

ratemy.sh · 以证据为准的上线审查

难的从来不是写出来。

AI 一个周末就能把产品写出来。但写出来的东西,敢不敢让真实用户、真实数据、真金白银压上去, 没有人替你回答。RateMy 回答的就是这一步:五个 skill 各审一层,产品、后端、Skill、运行时、agent 本体, 共用一套证据合同。不合格,直接说 NOT READY。

审计 · R-014目标:real-moneyref: sha256:9f3c…e2a1

问题清单

BLOCKER · F-002取消不会真的停下工具调用。用户按了停止,agent 还在继续花钱。

HIGH · F-005重试会把同一笔扣款再执行一遍。用户批准一次,钱扣了两次。

待验证

UNKNOWN · U-003从来没人真的去试过能不能读到别人的数据。一个用户的数据可能被另一个用户看到。

证据通道

deterministic-checksFAIL
critical-journey-e2ePASS
probabilistic-evalUNVERIFIED
continuous-evidenceN/A (尚无部署)
最高安全档位:internal-demo
阻断闸门:duplicate-real-charge, runaway-execution
NOT READY
这份判决样张里,四条证据通道分别是:确定性检查(校验器和断言过没过)、 关键旅程(用户真的走通一次下单或登录没有)、概率性评测(重复跑多次的行为达没达到门槛)、 持续证据(上线之后这套结论还成不成立)。最高安全档位是它敢放行到哪一步,五档从松到严是 internal-demo、private-beta、public-launch、real-money、high-stakes。

凭什么信它的结论

这是一份合同,不是一种感觉。

五个 skill 共用下面这几条。有这几条,这里的结论才值得一读。

§ 1

分数不能把硬闸门平均掉。

有几种问题不参与打分,一旦查实就直接拦住发布,这叫硬闸门:越权、数据跨边界泄漏、数据不可逆地丢失、 真的向用户重复扣款、把没做完的说成做完了。总分再高也盖不住它们。你说「这个风险我认了」, 也只会记成你认了,不会变成通过。

§ 2

证据是分级的。

每条结论都标着它的证据有多硬:E3 是换个环境重现过,E2 是有工具或日志记下来, E1 是看到了代码或配置本身,E0 是还没验证。代码里够得着的缺陷是真的, 但在它被真正触发之前,它会造成什么后果只能算推断。

§ 3

一份看着合理的 diff 不等于修好了。

换一个没参与修复的上下文重新跑一遍,拿到新的通过证据,这条问题才算修好。重跑的这一遍还会把补丁本身 当成没人审过的新代码,再审一次。修复的人,不给自己打分。

§ 4

CI 全绿只证明结构,不证明行为。

仓库检查和 schema 校验证明不了用户真能走通一次下单或者登录。要发到公开档位、或者能碰真钱的档位, 必须拿被审的那一版跑出来的新证据。会变的 latest 标签,不算指定了版本。

该用哪个

按你正要上线的东西来挑。

「我 vibe 出一个 app,想拿它收钱。」

rate-my-code,按收真钱的那一档来审。在你收第一分钱之前,先验证钱不会多扣少扣、 重试不会重复扣、别人的订单看不到、坏了能恢复、坏了有人知道。

「API 是我写的,马上要接真实流量。」

rate-my-server。一个用户的数据会不会漏给另一个用户、同一个请求重试会不会重复执行、 流量打满时会不会连环崩、数据库改结构和回滚靠不靠谱,以及「恢复」到底能不能真的恢复。

「我做了个能碰真实账号的 agent。」

rate-my-agent 判它怎么做决定,rate-my-harness 判运行时拦不拦得住它。结论要紧的话,两个都上。

「我写了个 Skill,想发出去。」

rate-my-skill。该触发的时候触发得到吗、装了到底比不装强多少、指令会不会被输入里的文本带偏、 别人拿到能不能装上并复现。