Reader Testing Protocol
状态:Active / 治理知识库 reader testing 协议 最后更新:2026-05-15 用途:把 reader testing 从作者自检升级为多视角独立测试,作为治理库重构 / 内容验收 / closeout 的强制证据来源
1. 目标
本协议解决的问题是:
治理知识库的作者(人或 Agent)不能可靠地当自己的 reader。把作者自检的"链路自洽检查"误认作"reader 体验测试",会导致重构 closeout 与真实读者体感持续脱节。
本协议把 reader testing 从单视角 spec-conformance 升级为多视角独立 reader experience,并定义证据归档规范。
本协议不替代:
- 文档变更范围控制(见
document-change-scope-policy.md) - 接入与对齐协议(见
access-and-alignment-protocol.md) - Controller 责任边界(见
program-controller-operating-model.md)
2. 基本原则
- 作者无法当自己的 reader:任何文档作者(人或 Agent)的自检结果不能作为该文档的 reader-testing 唯一证据。
- 独立视角:至少 2 个独立视角,每个视角不共享 prompt、不读对方的中间产出。
- 真实路径:reader 必须按文档体系自身的入口路径走,不允许 reader 已知最终结论后倒推路径。
- 可追溯:每个发现必须给出
file:line引用 + 可重复观察步骤。 - 降权规则:单视角观察未被独立佐证的部分不能进入 P0 R3 lane(最多 P1 候选,由用户最终裁决)。
- 不可替代:published-site 链接验证、build success、scope guard 通过都不是 reader testing 证据。
3. Reader 视角分类
| 视角 ID | 名称 | 适用场景 | 不适用 |
|---|---|---|---|
R-self | 作者自检 | 链路自洽检查、构建验证、scope 合规 | 不能作为唯一 reader-testing 证据 |
R-agent-low-context | 独立 Agent 低上下文人类读者模拟 | 入口可读性、文档叙事、首屏体感、路径冲突 | 工程可实施性 |
R-agent-engineer | 独立 Agent 工程师视角 | schema/JSON sample/state machine/prompt template/eval case 完备性 | 文档叙事、UX 体感 |
R-agent-controller | 独立 Agent Controller 视角(模拟某个项目 Controller 第一次接手) | 项目层文档体系、pickup vs rewrite 区分、回写路径 | 通用入口可读性 |
R-human | 真人新成员(非作者团队)测试 | 一切 | 无 |
4. Reader Test 强度等级
| 等级 | 视角组合 | 触发条件 |
|---|---|---|
| L0 自检 | 仅 R-self | 日常小改、单文件 typo / link fix |
| L1 单独立 | R-self + 1 独立视角 | 单 lane 重构(如某文档重写) |
| L2 双独立 | R-self + 2 独立视角(异质:低上下文 + 工程师 / 或 + Controller) | 公共入口重构、项目层 audit、closeout 验收 |
| L3 三独立 + 真人 | R-self + 2 独立视角 + 真人 | 重大里程碑、向团队成员发布、生态层重大重构 |
强制门控:
- 任何 closeout 标"satisfied"必须至少经过 L1
- 公共入口(
README/CONTEXT-MAP/ACCESS_GUIDE/INDEX/registry/project-registry.md/llms.txt/docs-manifest.json/sidebars.js)的重构必须经过 L2 - "团队成员反馈逐条解决"标 satisfied 必须经过 L3
5. 调度方式
按 /Users/mlabs/Programs/CurvatureLabs/personal-domain-admin/docs/09-cross-agent-dispatch.md 执行。Cursor 主调度推荐:
| 视角 | 推荐 Agent | 调度方式 |
|---|---|---|
R-agent-low-context | Codex(claude-opus-4.5 / gpt-5 也可) | shell codex exec --sandbox read-only --json --output-last-message <file>(MCP 同步阻塞不适合 deep mode) |
R-agent-engineer | OOSO sisyphus-junior + kimi-for-coding 或 codex-app-server with claude-sonnet | shell oh-my-opencode run --json --agent sisyphus-junior --model kimi-for-coding/kimi-for-coding |
R-agent-controller | Codex with project-controller skill 或 OOSO with controller-aware prompt | 视项目 Controller 偏好选 |
6. Prompt 模板
6.1 通用约束(所有视角共用)
- READ-ONLY. 不修改任何文件
- 不读 packets/, controllers/checkpoints/ 下的 audit / closeout / acceptance 文档(那是作者自我评估)
- 每个发现必须 file:line 引用
- 单方观察,不要参考其他视角的中间产出
- Brutally honest. 看不懂就说看不懂,看得懂也说看得懂
6.2 视角专属 prompt 骨架
详见 evidence/reader-tests/<DATE>-<TAG>/ 下的实际归档示例(首批参考 evidence/reader-tests/2026-05-15-tri-perspective/;FinClaw canonical 首屏 L1 跟进见 evidence/reader-tests/2026-05-15-finclaw-canonical-l1/)。
每个 reader test 必须独立写 prompt,不允许复用前一轮的 prompt(防止 prompt 同化导致 reader 自动绕开同一类盲点)。
7. 归档规范
每次 reader test 必须归档到:
evidence/reader-tests/<YYYY-MM-DD>-<TAG>/
├── README.md # 触发根因、视角分工、调度协议、共识矩阵、限制
├── <视角名>-audit.md # 每个视角一份原始报告
├── prompts/ # 实际使用的 prompt(每视角一份)
└── _meta.yaml # 调度命令、agent/模型版本、耗时、token 用量(如可获取)
强制要求:
- 不允许只归档汇总报告而不归档原始视角报告
- 不允许把 reader test 评论"满意 / 不满意"写在归档之外(必须落到归档 README)
- 任何后续 closeout 引用 reader test 必须引用归档目录路径,不允许引用临时
/tmp/或私下 share 的版本
8. 共识规则
reader testing 完成后,按以下规则汇总:
| 共识级别 | 条件 | 处理 |
|---|---|---|
| 三方一致 P0/P1 | 全部独立视角 + 自检都标该 FR 未解决 | 必须进 R3 P0 lane |
| 两方一致 P0/P1 | 2 个独立视角一致,第三方不在范围 | 必须进 R3 P1 lane |
| 单方独立 P0/P1 | 仅 1 个独立视角发现(非作者自检) | 进 R3 P1 候选,由用户裁决 |
| 仅作者自检发现 | 自检发现,无独立佐证 | 最多 P2 候选,必须降权 |
| 三方不一致 | 视角间冲突 | 必须由用户裁决,不能 silently 跳过 |
9. 与现有协议的关系
- 与
document-change-scope-policy.md:reader testing 是 closeout 强制证据之一,但不替代 scope 合规检查 - 与
program-controller-operating-model.md:Controller 自己的 audit 也必须按本协议至少 L1 - 与
knowledge-update-closure-protocol.md:closure 阶段必须明确列出本次 closure 的 reader test 等级与 evidence path
10. 不在本协议范围
- reader test 的写法 / 模板细节(每次应根据被测对象 freshly 设计)
- Agent 选型理由(详见
cross-agent-dispatch.md) - 真人 reader 招募流程(待团队层另立)
11. 边界承诺
- 本协议不替代 Controller / Owner 的产品判断
- 不要求每次小改都跑 reader test(L0 自检即可)
- 不允许把 reader test 当作"再产 packet"的借口(FR-016 / RC-B 元根因纠偏:reader test 的目的是验证已有产出,不是产出本身)
12. 首批 evidence
evidence/reader-tests/2026-05-15-tri-perspective/ — Cursor R1+R2 重构后的三方独立 audit(Cursor 自审 + Codex 低上下文读者 + OOSO 工程师视角)。