这就是内部一直在用的那套审查,这里把它写成你可以自己拿来对自己的构建使用的版本。完成一次大约需要一个小时;如果执行审查的人,不是这个构建的开发者,效果会好得多。
如何进行这项审查
- 把下面的评分表复制一份,放在你正在审查的构建旁边。
- 逐条过一遍每项原则下的问题,这些问题取自八项原则。
- 为每个问题打分:已达成、部分达成、未达成,或不适用。
- 每个分数都需要一个依据——某样具体的东西来证明它:一条具体的记录、一段你亲眼看到发生并粘贴下来的结果、一张实际行为的截图。一个背后什么都没有的分数,只是一个人的看法,算不上审查。
- 任何被打上未达成的项,要么在交付前修复,要么写一条带日期的书面说明,说明是谁接受了这个差距、为什么接受。
让这项审查真正值得做的几条规则
- 评审人不是这个构建的开发者。 一个人审查自己的作品,往往只能发现自己本来就已经知道的问题。
- 动手运行,不要只是看着推测。 不要因为一项测试看起来应该会通过,就认定它通过了。把它运行一遍,亲眼看着结果。
- “不适用”需要一个理由。 这是一个正当的分数,但沉默不是——写清楚这个问题为什么在这里不适用。
- 部分达成不等于通过。 它是一个被明确指出的差距,要有负责人,最好还要有一个重新审视它的日期。
- 这审查的是构建,不是人。 目标是得到一个更好的成果,而不是对做出它的人下判断。
1. 可溯源性(Provenance)
| # | 问题 | 分数 | 依据 | 备注 |
|---|
| 1 | 不借助他人帮助,你能否从输出里的一个数字,一路找到它背后的那条记录? | | | |
| 2 | 这个答案是否带有一个截至日期? | | | |
| 3 | 一句被引用的内容,是否能对照其出处得到证实,并给出具体位置? | | | |
| 4 | 当数据无法回答这个问题时,一个人会看到什么? | | | |
| 5 | 每一句被引用的内容,是否真正支持它所对应的结论,还是只是恰好出现在源材料里? | | | |
2. 确定性(Determinism)
| # | 问题 | 分数 | 依据 | 备注 |
|---|
| 1 | 每一个数字,具体是在哪里算出来的? | | | |
| 2 | 一个业务人员能否在不找开发者的情况下,自行修改一个阈值? | | | |
| 3 | 同一个问题问两次,得到的答案是否一样? | | | |
| 4 | 当系统遇到一条它尚未实现的规则时,会发生什么? | | | |
3. 模块化(Modularity)
| # | 问题 | 分数 | 依据 | 备注 |
|---|
| 1 | 对任何被标记为“共享”的东西,说出两个真实存在、彼此独立的使用场景。 | | | |
| 2 | 是否存在这样的变体:它们之间的差异其实来自一次修改,而不是来自配置? | | | |
| 3 | 一个部件能否脱离实际账号和网络,独立完成测试? | | | |
| 4 | 这个构建里,是否存在没有真实、具名用户的部分? | | | |
4. 无领域内核(Domain-free cores)
| # | 问题 | 分数 | 依据 | 备注 |
|---|
| 1 | 核心逻辑里,是否出现了公司名称或某个客户特有的细节? | | | |
| 2 | 只靠修改配置,这个核心能否服务于另一家公司? | | | |
| 3 | 配置里的每一项设置是否都被用到了,而每一个被用到的东西是否都在配置里声明过? | | | |
| 4 | 是否有任何工作流程里,包含了某台机器的网络地址? | | | |
5. 人的治理(Human governance)
| # | 问题 | 分数 | 依据 | 备注 |
|---|
| 1 | 展示最近一次决定的记录。谁决定的?决定了什么?什么时候决定的? | | | |
| 2 | 如果审核人联系不上,还会有东西被发出去吗? | | | |
| 3 | 这个关卡是自己算出答案,还是相信别人递给它的答案? | | | |
| 4 | 审核人本来在哪里工作?那条路径是否曾以他们的身份端到端走通过?仅仅打开链接,会不会决定任何事? | | | |
| 5 | 当同一个决定送达两次时,会发生什么? | | | |
| 6 | 智能体能否写入用来记录决定的那些列? | | | |
| 7 | 当一项检查还没有在记录上打下结论时,后面的步骤会怎么做? | | | |
| 8 | 批准一项、拒绝一项、再留一项不做处理。每一次,流程是否都能自行继续往下走? | | | |
6. 原生优先(Native-first)
| # | 问题 | 分数 | 依据 | 备注 |
|---|
| 1 | 一个不是开发者的人,能否读懂这个构建,并说出每一步在做什么? | | | |
| 2 | 在构建里搜索,是否会找到任何看起来像凭证的东西? | | | |
| 3 | 对每一段自定义代码,是否考虑过、又放弃了哪个内置能力?为什么? | | | |
| 4 | 把这个构建搬到另一个账号下。什么会坏掉? | | | |
7. 可运维性(Operability)
| # | 问题 | 分数 | 依据 | 备注 |
|---|
| 1 | 你是否亲自运行过这些测试,并亲眼看着它们通过? | | | |
| 2 | 固定测试集在哪里,它上一次评分是什么时候? | | | |
| 3 | 重置是否能把这个构建,恢复到完全相同的起始状态? | | | |
| 4 | 有什么在独立核查这条主路径,它上一次与主路径的结果不一致是什么时候? | | | |
| 5 | 一个素不相识的人,仅凭这个安装包和文档,能否把它装起来并运行? | | | |
| 6 | 对每一步,哪条记录能证明这项工作确实发生过? | | | |
8. 安全与主权(Security and sovereignty)
| # | 问题 | 分数 | 依据 | 备注 |
|---|
| 1 | 即将被分享出去的东西里,是否包含任何看起来像凭证的内容? | | | |
| 2 | 任何 AI 工具能访问到的凭证,是否都是权限有限、可随时作废的? | | | |
| 3 | 敏感字段的脱敏,是由平台强制执行的,还是由一个可能被跳过的步骤来做的? | | | |
| 4 | 谁能看到未经脱敏的原始数据,又是什么在真正阻止 AI 被接入这些数据? | | | |
| 5 | 你上一次分享出去的安装包,实际包含了什么? | | | |
| 6 | 有哪些 AI 模型会读取这个构建的数据,其中是否有任何一个在部署范围之外? | | | |
已接受的差距