Observation Lifecycle(观察生命周期协议)
May 12, 2026 · View on GitHub
被这些子 skill 引用:cheat-retro、cheat-bump、主 SKILL.md。
这是项目原则 #3 的完整规范——rubric 是工作台,不是博物馆。任何对 rubric_notes.md 中观察条目的增删都必须遵循本协议。
三个生命阶段
每条观察都在下列状态之一:
[新增] → [观察记录] → [跨视频观察] → [规律沉淀] / [被吸收为维度] / [被推翻]
↘
[待验证假设](暂存)
| 阶段 | 在 rubric_notes.md 的位置 | 触发 |
|---|---|---|
| 观察记录 | ## 观察记录 段 | 单次复盘后写入。每篇视频复盘对应一条 |
| 跨视频观察 | ## 重大跨视频观察 段 | 同一个 pattern 在 ≥2 个样本里出现 |
| 规律沉淀 | ## 规律沉淀区(高置信度) 段 | 已有 ≥2 样本支持且通过升级验证流程(即被吸收进维度或被显式确认) |
| 待验证假设 | ## 待验证假设 段 | 单样本观察暂存,等更多样本 |
升级到下一阶段的门槛(Claude 判断为主,下面是参考默认)
| 从 → 到 | 默认参考门槛 | Claude 判断信号强度(可软违反) |
|---|---|---|
| 观察记录 → 跨视频观察 | 同 pattern ≥2 样本 | 1 样本 + 评论区 ≥2000 赞的强模因证据也可升 |
| 跨视频观察 → 待验证假设 | 单样本 + 强信号但还没复现 | — |
| 跨视频观察 → 规律沉淀 | ≥2 样本 + 不需要改公式 | 1 样本 + 强反例(≥3x 偏差)也可升(标 **Single-sample, high-confidence**) |
| 跨视频观察 → 维度(不再单独存在) | ≥3 样本 + 通过 bump 流程被吸收 | 同 cheat-bump 的 READINESS_HEURISTIC |
| 任意 → 删除 | 被新数据推翻 / 被吸收为维度 / 被沉淀为规律 | cheat-bump cleanup pass,或单独操作 |
核心原则:样本数是信号强度的代理指标,不是信号本身。3 个清晰、可追溯到具体数据点的样本 > 10 个零碎、低置信度的样本。
Claude 软违反的纪律:
- 标注
**Promoted with N samples (default expects M)**: <为什么仍然成立>,让用户审视 - 不连环软违反——如果 Claude 在最近 3 次升格里有 2 次以上软违反,cheat-status 提示"你的观察升格判断可能太激进,建议回到默认门槛 review"
Sample size → 允许的动作(细化分级)
按校准池总样本数决定能做什么改动——粗暴改大动作需要更多证据:
| 校准池规模 | 允许的动作 | 备注 |
|---|---|---|
| 1 个 | 记录"单次观察" | 单点不能触发任何规则改动,只能作为种子 |
| 2-4 个 | 提炼"候选规律" + 升级到"跨视频观察"段 | 仍不能改公式 |
| 5-9 个 | 修正维度定义(定性变更——如把 SR=5 的门槛说更严) | 不动权重数值,只改判断习惯。第一次正式 bump 也在这一档(rubric 形态首次成型) |
| 10-19 个 | 微调权重 ±0.2(定量变更) | 如 ER ×1.5 → ×1.7;新增 / 删除维度仍属"定性大动作",需要更多样本 |
| 20+ 个 | 用回归反推权重(数据驱动) | Spearman correlation 之类,可作为 bump 依据 |
关键纪律:
- 不要在 N=5 时就用回归——5 个点拟合 7 维公式必过拟合
- 不要在 N=20 时还用直觉调权重——已经有数据信号了
- bump 协议(
bump-validation-protocol.md)的MIN_SAMPLES_FOR_BUMP=5是形态首次成型的最低门槛,不是"开始数据驱动"的门槛——后者要 N≥20
删除规则(最容易做错的部分)
两类条目必须删,不能保留:
类型 A:被吸收为维度的观察
例:v2.1 升级时,"观察 E(致谢段二创量级是 ER=5 的最强外部证据)"被吸收为新维度 MS(Memetic Shareability)。
→ 升级落地后,删除"观察 E"这条观察记录。维度 MS 本身就是新归宿。
理由:保留观察 = 同一概念在文件里出现两次(一次作为维度,一次作为观察)。读者会困惑:这是历史还是仍生效的规则?
类型 B:被新数据推翻的观察
例:观察 X 提议"长视频天花板低",后来 4 个长视频样本都破 50w → 推翻。
→ 删除这条观察。
理由:保留 = 让未来的你或其他读者基于错误规则打分。
必须保留的条目
下列条目不删,留在原处或迁移到合适段:
- 未解决的观察(既未被吸收也未被推翻)→ 跨升级时迁移到新版本的"待验证假设"段
- 历史校准事件(如"v1 → v2 升级是因为房价 259w 严重低估")→ 保留在版本日志的"升级 Memo"段,不保留在观察段
- 本版本仍生效的规律(已沉淀到"规律沉淀区")→ 保留
不允许的反模式(必须拒绝)
下列模式都是"博物馆冲动"——把 rubric_notes.md 当历史档案:
| 反模式 | 为什么不行 |
|---|---|
~~ER 权重 1.5~~ **改为 2.0**(带删除线的旧值) | 用 git history 看旧值,不要在文件里堆 |
| "我曾经以为 SR 重要,但其实..." | 这种考古条目让读者读完不知道当下规则是什么 |
| "v1 时代 NA 是关键,v2 后发现不是" | 同上。删掉 NA 相关条目,留版本 memo 解释为什么 NA 被砍 |
| "保留这条观察作为反例" | 反例的位置是版本 memo 的"被推翻假设"小节,不是观察段 |
| "下个 bump 再删,先放着" | 拒绝。bump 落地的同一次操作里删干净 |
git history 才是真正的归档。rubric_notes.md 是当前生效规则的快照——读者打开它应该看到今天该怎么打分,而不是过去几个月的演化史。
Blind channel leak guard(任何 skill 写 rubric_notes.md 时必须遵守)
rubric_notes.md 是 cheat-score-blind sub-agent(channel B)的白名单——sub-agent 读这个文件给 script 打分时,文件内容不能含已发布作品的实绩数据,否则 sub-agent 的"盲"被破坏。
禁止写入 rubric_notes.md 的 pattern:
| 模式 | 例子 | 替代位置 |
|---|---|---|
| 真实视频标题 + 实绩 | "「停止期待」播放 71.1w" | rubric-memo.md |
| 派生证据带命名锚 | "派生证据:「她不一样」MS=5 → 实绩 124.8w" | rubric-memo.md |
| 校准池重打表 | bump 时的样本对照表 | rubric-memo.md |
| 跨模型审核引用含数字 | "audit: 「老板废话」rank 一致 ✓" | rubric-memo.md |
含 \d+w / \d+万 / \d+M / \d+k 的数字(除 bucket 边界) | "实绩 13.7w" | rubric-memo.md |
允许的 pattern(通用语言):
- 公式:
(ER×2.0 + HP×1.5 + ...) / N × M - 维度定义:
ER(情感共鸣):0=无情绪 / 3=中等共鸣 / 5=极端共鸣 - 派生证据抽象化:
派生证据:高抽象密度样本 → CC=1 → 低 reach - Bucket 边界(数字属于规则不属于实绩):
5-30w / 30-100w / 100-150w / >150w - 观察 ID + 一句话:
观察 E:开头 5 秒含问句 → ER+(不带样本名 / 不带实绩)
强制 cheat-bump Phase 5 末尾自检:写完 rubric_notes.md 后跑 grep -E '\\d+\\s*[wWmMkK万]|播放|实绩|实际' → 命中 → abort + 回滚。这是硬约束。
历史背景:PR #11 引入 cheat-score-blind 时漏算了这条——cheat-bump 把 Memo 写进 rubric_notes.md,sub-agent 通过白名单读到实绩。PR #12 修复(拆 file)+ 加本段约束防止将来再犯。
cleanup pass 的强制时机
cleanup pass = 把所有满足"可删除"条件的观察一次性清掉。
强制触发:
- bump 落地的最后一步(见
bump-validation-protocol.mdStep 5) - 用户显式触发"清算"操作(罕见)
非强制但建议:
- 校准池每加 5 个样本,主动审视"观察记录"段,看哪些已经可以升格 / 删除
cheat-status看板检测到rubric_notes.md行数超过 500 时,建议清算
行数预算
健康 rubric_notes.md 的体积参考(目标):
| 校准池规模 | 健康行数 | 警戒行数 |
|---|---|---|
| 0-5 篇 | 100-200 | >300 |
| 5-20 篇 | 200-400 | >500 |
| 20-50 篇 | 300-500 | >700 |
| 50+ 篇 | 400-600 | >800 |
行数超警戒 → 必跑一次 cleanup pass。这不是为了好看,是为了读者打分前能在 60 秒内读完核心规则。
与"观察记录"模板的对齐
每条观察记录的标准模板(rubric_notes.template.md 也用这个):
### YYYY-MM-DD [标题简称] (id) — [一句话定性,如"验证 ER 主导"]
- 预测:composite=X.XX,bucket=Y
- 实绩:播放 / 点赞 / 评论 / 转发(带 T+Nd 标注)
- Top 评论关键词:[简短摘录 + 赞数]
- 判断:哪个维度被验证 / 推翻?为什么?
- Rubric 调整:[如果有,写明 "下次打 XX 类文章时改 YY"]
- 详见:[predictions/<file>.md]
跨视频观察的模板:
### 观察 X — [一句话规律]
**证据**:
- 样本 1(composite, 实绩):核心数据
- 样本 2(composite, 实绩):核心数据
- 样本 3(composite, 实绩):核心数据
**假设**:[如果规律成立,意味着什么 rubric 调整]
样本数:N 个,[已超 / 待补]。
与 bump 协议的衔接
cheat-bump 在 Step 5(cleanup pass)必须按以下顺序处理观察段:
- 列出所有
## 观察记录段条目 - 对每条问 3 个问题:
- 它是否被本次 bump 吸收为正式维度?→ 删
- 它是否被本次 bump 的新数据推翻?→ 删
- 它是否仍未解决?→ 迁移到"待验证假设"段
- 列出所有
## 重大跨视频观察段条目 - 对每条问相同 3 个问题
- 把"已被验证但不需改公式"的规律 → 迁移到"规律沉淀区"
- 最后重新阅读
rubric_notes.md全文,确保读者打开能在 60 秒内理解当下打分规则