cheat-predict
为最终稿创建不可变盲预测日志,并在已有预测时追加新版本。通过 cheat-score-blind 做隔离评分,再由主窗口复核落盘。触发词包括启动预测、start prediction、打分并预测、写预测日志。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
为最终稿创建不可变盲预测日志,并在已有预测时追加新版本。通过 cheat-score-blind 做隔离评分,再由主窗口复核落盘。触发词包括启动预测、start prediction、打分并预测、写预测日志。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Route CEO-first multi-window work into owner-led role loops. Use for 总控/CEO、架构/CTO、内容主编、角色派发与复用、模型路由、来源窗口回调、role-windows 台账、skill 命中统计或 multi-window loop engineering。
Audit and optimize a skill system with evidence. Use for skill architecture, token or context waste, role and prompt boundaries, routing hits or misfires, plugin packaging, registry/docs/source drift, duplicate workflows, or deciding whether a reusable change belongs in a skill. Runs deterministic checks first and applies only authorized, minimal fixes.
用打分、盲预测、发布后复盘和 rubric 进化校准内容判断。适用于视频、文章、播客等可量化内容;触发词包括初始化、打分、预测、发布、复盘、推荐选题、抓热点、状态、找对标。首次使用先运行 cheat-init。
提议并执行 rubric 或 bucket 升级。两种模式:**完整 rubric bump**(最高风险动作,5 步强制 + 跨模型审核)和 **--bucket-only 轻量重校**(只换 bucket 边界,不动 rubric 公式)。**Phase 2 强制走 cheat-score-blind sub-agent 给校准池重打分**——不接受 self-scored fallback。触发词:"升级 rubric"/"bump rubric"/"更新公式"/"我想加一个维度"/"调整权重"/"重校桶"/"recalibrate bucket"。
cheat-on-content 的首次 onboarding 与脚手架创建器。统一流程——所有用户都走相同 5 阶段闭环,唯一区别是"发过视频的人"会在 init 时多一步:抓取已有视频建立历史 context(用于后续 cheat-seed 给更贴合的选题、更准的 baseline)。触发词:"初始化"/"init"/"首次使用"/"我是新用户"/"setup cheat-on-content"。**必须在用户第一次会话执行;其他子 skill 在 .cheat-state.json 不存在时自动路由到此。**
从对标账号导入 script + 数据 → 拆 pattern + 派生 base rubric 信号 → 写到 benchmark.md / script_patterns.md / rubric_notes.md。**这是工具最早期信号的来源**——cold-start 用户没自己历史时全靠对标,发过历史的用户也建议至少 1 个对标做 sanity check。触发词:"学这个账号"/"拆这几个对标视频"/"learn from"/"导入对标账号"/"找对标"。
| name | cheat-predict |
| description | 为最终稿创建不可变盲预测日志,并在已有预测时追加新版本。通过 cheat-score-blind 做隔离评分,再由主窗口复核落盘。触发词包括启动预测、start prediction、打分并预测、写预测日志。 |
| argument-hint | <script-path> [— mode: v1|v2] [— prediction-file: <path>] [— skip-blind] |
| allowed-tools | Bash(*), Read, Write, Edit, Glob, Task |
这个工具是"作弊器"——AI 帮你做判断。所以 cheat-predict 的核心是:
不是用户从 7 维分到概率分布全部自己写,那 Claude 只剩"格式化器"——失去工具的核心价值。
严格遵守 shared-references/blind-prediction-protocol.md——见过任何后续数据就不能写预测,只能记 reconstructed。 完整组件清单见 shared-references/prediction-anatomy.md。 Confidence 派生表见 shared-references/state-management.md。
[用户:启动预测 scripts/<id>.md]
↓
[Phase 0: blind check 自检] ← 触犯就拒绝
↓
[Phase 0.7: 模式判定 — v1 (新建) 还是 v2 (append)]
↓
[Phase 1: 读 script + rubric + state + 派生 confidence]
↓
[Phase 2: **委派 cheat-score-blind sub-agent**(Task tool)拿 9 维盲打 + per-dim confidence]
↓
[Phase 2.5: 主 Claude 对 blind 输出做 review — 若任意维度 |delta| ≥ 2 vs 主估,弹给用户裁定]
↓
[Phase 3: **Claude 自己**找锚点对比]
↓
[Phase 4: **Claude 自己**给 bucket + 概率分布 + 中枢] ← confidence 低时分布更平
↓
[Phase 5: **Claude 自己**写反事实场景 + 关键校准假设]
↓
[Phase 5.5: **用户 review**——展示完整草拟版,等用户 "ok" 或挑刺]
↓
├─ "ok" → Phase 6 落盘
└─ "X 维度应该 Y 不是 Z" → Claude 改 → 再 review → 循环
↓
[Phase 6: 落盘 — v1 写新文件 / v2 append 到现有文件 ## 复盘 之前]
↓
[Phase 7: 更新 state.in_progress_session]
--skip-blind flag,标 last_prediction_self_scored: true 给 cheat-status 警告cheat-score-blind 子 agent 盲打,再由主 Claude 做一套主窗口自评分用于对照和 disagreement detection。不要把“盲打 + 主窗口对照”叫 --skip-blind;--skip-blind 只表示完全跳过子 agent。💡 调用时覆盖:
/cheat-predict scripts/<id>.md — BLIND_CHECK: lenient/--skip-blind(都不推荐)
Workspace standing authorization: when the current project or user instruction has explicitly authorized sub-agent use for blind scoring, treat future predictions in that workstream as requesting
blind_subagent_plus_main_compareunless the user revokes it or the runtime policy blocks sub-agents.
| 必填 | 来源 |
|---|---|
<video-folder-path> 或 <script-path> | 用户参数;缺失则询问 |
rubric_notes.md | 用户项目根 |
.cheat-state.json | 状态文件 |
predictions/*.md(可选) | 历史预测,作为锚点 |
用户给的路径应该是 scripts/<date>_<id>_<short>.md。如不在 scripts/ 下:
| 形态 | 处理 |
|---|---|
scripts/<date>_<id>_<short>.md | 标准路径,直接用 |
<id> 或 <short> 简写 | glob scripts/*_<id>_*.md 或 scripts/*<short>*.md 找匹配 |
任意外部 .md 文件(如 ~/Desktop/my-draft.md) | 警告 + 询问:"建议把稿子放到 scripts/.md 让 cheat-on-content 管理。要我帮你 cp 过去并算 id 吗?"用户同意 → 建标准路径再继续 |
videos/<id>/ 路径(user 误以为视频文件夹存稿子) | 提示"video folder 是拍后才建的——pre-shoot 草稿在 scripts/。你要 predict 哪份稿子?" |
如 scripts/.md 不存在 → 报错并询问"你想 predict 的稿子在哪?"
按 blind-prediction-protocol.md 的"子 skill 必须做的检查清单"执行:
询问用户该作品当前发布状态:
RETRO_WINDOW_DAYS 天 → 询问"你看过任何后续数据吗(播放/点赞/评论)?"
published_before_prediction: true + blind_status: confirmed_no_data_seenRETRO_WINDOW_DAYS 天 → 立即拒绝写"预测",建议改用 _redo.md 路径记 reconstructed retrospective自检对话历史里是否含播放/阅读/点赞/评论/转发等字眼的实际数字 → 命中则视为已见数据,按上面 strict 模式处理
BLIND_CHECK=lenient 模式:仅警告 + 强制在文件头标注 **Reconstructed retrospective — NOT a blind prediction**,但仍允许继续
通过 → 进入 Phase 0.7。
判定本次是新建预测(v1)还是对既有预测的 v2 追加(拍后改稿场景)。
显式参数优先:用户/调用方传 — mode: v2 + — prediction-file: <path> → 直接 v2 模式。
自动检测(无显式参数):
predictions/<同 scripts/<id> 命名>.md## 复盘(无任何 ## 预测... 段)→ v1 模式(异常状态,覆盖警告 + 进 Phase 1)## 预测 或 ## 预测 v1 段 → v2 模式v2 模式额外动作:
## 预测 段引用的原 Script Hashprediction_basis = "post_shoot_pre_publish"(v1 默认 pre_shoot)scripts/<id>.md 全文script_hash = sha256(script 内容)[:12] → header 用rubric_notes.md,识别当前公式 + 维度(同 cheat-score Phase 2).cheat-state.json 拿 rubric_version、content_form、calibration_samples、typical_duration_seconds、baseline_playscalibration_samples 派生 confidence 等级(按 state-management.md confidence 表)→ 后续写入 prediction headertypical_duration_seconds 派生范围严重不符(差 >50%)→ 提示用户:"这条稿子 N 字,按你设的典型时长(X 分钟)应该是 M-K 字。是临时改了时长,还是稿子需要砍/补?"BLIND_SCORING=on(默认)—— 通过 Task/sub-agent tool spawn cheat-score-blind,让一个 context-isolated 的 sub-agent 只看 script + rubric_notes.md 给出 N 维分。
默认执行顺序固定为:
cheat-score-blind 子 agent 盲打。这份分数是正式预测的基础。blind vs self 差异;差异达到阈值时让用户裁定。只有用户明确说“跳过盲打 / 这次不用子 agent / 直接自评”,或运行环境确实没有可用 sub-agent,才允许 --skip-blind。一旦走 --skip-blind,必须写 BlindScored By: main-claude-self,并更新 last_prediction_self_scored: true。不要把“盲打 + 主窗口对照”误记成 --skip-blind。
详见 cheat-score-blind/SKILL.md 的"主 Claude 调用契约"段。Task prompt 必须精简:
Spawn cheat-score-blind sub-agent.
Input:
script_path: <Phase 0.5 解析出的 scripts/<id>.md>
rubric_notes_path: rubric_notes.md
Task: 按 rubric_notes 当前公式给上面 script 打分。返回严格 JSON(见 cheat-score-blind SKILL.md Phase 2 schema)。
不要读 state file / predictions/ / videos/ 任何其他文件。
不要询问用户 —— 你没有用户。
调用前自检:把 Task prompt 串过 grep -Ei '播放|阅读|点赞|评论数|实际|retro|复盘|实绩|w$|万$'——命中 → 改 prompt 重发。
主 Claude 自己也内心估一份(不发 sub-agent)——纯为 Phase 2.5 disagreement 检测,不落盘、不替代 sub-agent 输出。这个估值代表"如果我没用 sub-agent,我会打多少",是 contamination 的客观指标。
沙盒 escape:BLIND_SCORING=off 或 --skip-blind —— 主 Claude 自己打 7 维。state 立刻标 last_prediction_self_scored: true + last_self_scored_at: <ISO>,cheat-status 持续提示警告。仅用于:
按当前公式算 composite——用 sub-agent 回传的 dim 分,不用主 Claude 自估。
拿到 sub-agent JSON 后,主 Claude 必做的事:
python3 -c "import json; json.loads(...)" 应能解析;不能解析 → 主 Claude 重发 Task(最多 3 次重试),仍败 → abort,向用户报告self_check.any_contamination_signal == true → 警告用户"sub-agent 自报疑似 contamination",但仍接受打分(confidence 降一档)refusal != null → 按 cheat-score-blind/SKILL.md Phase 2 的处理表对应路径delta = |主估 - blind|delta >= DISAGREEMENT_THRESHOLD(默认 2) → 弹给用户裁定弹裁定 UX:
⚠️ blind sub-agent 跟主 Claude 在某些维度差异较大:
| 维度 | blind (sub) | 主 Claude 自估 | delta | sub-agent 理由 |
|---|---|---|---|---|
| ER | 5 | 3 | 2 | "PPT加油猫猫开头—具象画面强" |
| AB | 2 | 4 | 2 | "一人公司视角,受众窄" |
谁更准?
a) 信 sub-agent(隔离打分,但同 Claude 模型)
b) 信主 Claude 自估(有更多对话上下文,可能是 contamination)
c) 我自己定(你直接给分)
回 a / b / c <你的分数>
用户选:
last_prediction_self_scored: trueUser Override所有 delta —— 即使全 < THRESHOLD —— 都记录到 prediction header 的 BlindScore Disagreement 字段(详见 prediction-anatomy.md 组件 1)。delta=0 也要记录。
所有阶段都跑此 phase——锚点不够时显式标 N/A,不删段。
predictions/*.md,读每个文件 header(提取 composite、实绩 bucket、duration_seconds)。注意排除 reconstructed predictions(标记 "Reconstructed" 的不算锚点)Target Duration (s) 与本次差 ±20% 内)为什么按时长筛锚点:4 分钟视频 5w 播放 vs 1 分钟视频 5w 播放完全不是一回事——长视频每秒扛了更多注意力损失。跨时长锚点容易得出虚假结论。
所有阶段都写——confidence 低时分布更平,不是省略。
starter-rubrics/<content_form>.md 读默认 bucket 边界(除非用户在 rubric_notes.md 自定义了)反诚实陷阱:如果你给一个 bucket 95% 概率,下次预测错了你没法说"我其实不太确定"。真实的概率分布通常在 headline bucket 是 40-65%,剩下 ≥35% 散布在邻近 buckets。
所有阶段都写——校准池小时关键校准假设可能没有合适对照样本,那就写"无可对照样本——仍写下我对这次的核心赌注"+ 1-2 条这次想测的事。
反事实场景(4 段,每段对应一个可能的 bucket,写"如果落在这里,意味着什么 rubric 假设被验证 / 推翻"):参考 prediction-anatomy.md 组件 6。
关键校准假设(强烈推荐):
如 REQUIRE_HYPOTHESIS=required → 缺失则不允许落盘。
Phase 2-5 全部在内存里做完后,一次性展示完整草拟版给用户:
我的预测草稿(写文件前 review):
📊 7 维分(v0 / v2 / 等当前 rubric):
| 维度 | 分 | 理由 |
|---|---|---|
| ER | 5 | "PPT 加油猫猫 + 老板看到 + 大脑空白"——情感重 |
| HP | 5 | 开头"PPT 第七页大屏中央 一只加油猫猫"具体反差强 |
| QL | 5 | "加油猫猫救了我一命"双金句 |
| NA | 4 | 单一时间线 + 反思,清晰但不复杂 |
| AB | 4 | 一人公司题但 AI 焦虑普适 |
| SR | 3 | AI 焦虑是议题但不是热点对峙 |
| SAT | 2 | 共情调性,几乎无讽刺 |
→ composite ≈ 8.00
🎯 押 bucket:30-100w,中枢 ~60w
概率分布: <5w 5% / 5-30w 22% / **30-100w 50%** / 100-150w 18% / >150w 5%
confidence: 🟢 中(基于 8 个校准样本,中枢 ±25%)
🔍 锚点对比:
| 对照 | composite | 实绩 | 异同 |
|---|---|---|---|
| ... | ... | ... | ... |
🤔 反事实:
如果 >100w → 验证 ER 主导假设强化
如果 30-100w → 基准线 ok
如果 <30w → 推翻 "AI 焦虑普适",AB 偏乐观
🎲 关键校准假设:本篇 vs [对照] 押 1.5x
——————————————————————————————
回 "ok" 我直接落盘,
或指出哪些维度 / 判断不对(如 "AB 给 3,太乐观" / "中枢应该 30w 不是 60w")。
用户三种回应:
Scored By: claude用户挑刺的字段记录到 prediction header 的 User Override 段(Phase 6 写入):
复盘时这个字段帮诊断:
用户挑刺的纪律:
文件名约定(blind-prediction-protocol.md 的"文件名约定"段):
predictions/YYYY-MM-DD_<id>_<short-title>.md
YYYY-MM-DD:今天日期(预测写下的日期)<id>:12 位 hash,对稿子全文做 sha256 取前 12 位(稳定 ID,重写不变)<short-title>:3-8 字,去标点第一段标题写 ## 预测 v1(不再写裸 ## 预测——为将来可能的 v2 留 schema 一致性。老用户的 legacy ## 预测 文件不动,hook 都识别)。
header 必填字段:
Article ID(与 scripts/.md 同 id)Script Path(指向 scripts/.md)Script Hash(Phase 1 算出的)Calibration Samples + Confidence(从 state 派生)Prediction Basis:pre_shoot(v1 默认)Scored By:claude / claude+user_overrideBlindScored By:subagent-v1(Phase 2 默认)/ main-claude-self(--skip-blind 时) / mixed(Phase 2.5 用户裁定 b/c)BlindScore Disagreement:JSON 字段列表,每维度 {dim, blind, self, delta, decided_as},所有维度必记(即使 delta=0)User Override(如有覆盖):列出哪些字段被用户改了留一个空的 ## 复盘 段:
## 复盘
(待填——T+RETRO_WINDOW_DAYS 天后跑 /cheat-retro <对应 video folder>)
绝不用 Write 覆盖文件——会被 immutability hook 拦。用 Edit 在 ## 复盘 之前插入 ## 预测 v2 段:
# 伪代码
edit_old = "## 复盘\n" # 单独一行,确保 hook awk 识别为 v1 段的边界
edit_new = """## 预测 v2 (replaces v1; basis=post_shoot_pre_publish)
**Diff vs v1**: 改了 N 行(X→Y%),主要变化:[摘要]
**重判触发**: cheat-shoot 检测稿子改动 ≥30%
**Script Hash (v2)**: <新稿子 hash>
[7 组件 — 与 v1 同 anatomy]
---
## 复盘
"""
v1 段不动。v2 段头部明确写"replaces v1"——读者一眼知道哪段是有效预测。
cheat-retro 复盘时按"读最后一个 ## 预测 vN"逻辑,自然取到 v2 算偏差。
所有阶段都用统一完整版格式(参考 prediction-anatomy.md "完整结构总览")。confidence 低不缩格式,只让 header 标 confidence 等级 + 锚点对比段写"N/A 解释" + 概率分布更平。
写文件前自检 7 个组件齐全(缺锚点 / 关键校准假设 → 写"N/A 解释段",不删段)。
更新 .cheat-state.json:
{
"in_progress_session": {
"type": "prediction",
"file": "predictions/YYYY-MM-DD_<id>_<short>.md",
"video_folder": "videos/YYYY-MM-DD_<id>_<short>/",
"started_at": "<ISO timestamp>",
"rubric_version": "<v0/v2/...>"
},
"last_prediction_self_scored": <true 仅当 --skip-blind / Phase 2.5 选 b>,
"last_self_scored_at": <ISO 当 last_prediction_self_scored=true 时>
}
video_folder 为 null 表示用户跑的是裸 .md 文件,没建 video folder。
in_progress_session 在 cheat-publish 触发时清除。如果用户预测后从未 publish(弃稿),下次 /cheat-init 或 /cheat-status 检测到陈旧 in_progress 会询问是否清理。
last_prediction_self_scored:
true 仅当本次预测走了 --skip-blind 或 Phase 2.5 用户选了 b(信主 Claude 自估)true → cheat-status 持续 nag:"上次预测没走 blind sub-agent,已 N 天"——直到下次 normal cheat-predict(走 sub-agent)触发后才清回 falselast_self_scored_at 跟随更新;下次 cheat-predict 走 sub-agent → 这两个字段一起被重置Cold-start-simple 模式:
✅ 预测落盘(cold-start 简化版):predictions/2026-05-04_a3f2c1d4e5b6_停止期待.md
7 维打分:ER5 / HP5 / QL4 / NA3 / AB5 / SR2 / SAT4
方向押注:比上一篇明显好(ER+HP 双 5)
对比对象:N/A(这是第 1 篇)
⚠️ ## 预测段已 immutable(hook 锁定)。
⚠️ 这是 cold-start 期简化版——没有 bucket 数字。前 5 篇都这样。
第 5 篇复盘后会自动解锁完整预测(bucket / 概率 / 锚点 / 反事实)。
进度:第 N 篇 / 共 5 篇 cold-start 期
下一步:
- 发布后 → "已发布 https://..."
- T+3 天 → "复盘 predictions/2026-05-04_..."
Complete 模式:
✅ 预测落盘:predictions/2026-05-04_a3f2c1d4e5b6_停止期待.md
bucket 押注:30-100w(中枢 50w)
关键校准假设:本篇 vs 谁问你了 = 1.5-2x
⚠️ ## 预测 段已 immutable(hook 锁定)。
⚠️ 你不能再向我"透露"这条作品的播放数据,否则下次复盘的盲度声明失效。
如果你不小心看到了,告诉我——我会在文件里补一个 integrity warning。
下一步:
- 发布后 → "已发布 https://..."
- T+3 天 → "复盘 predictions/2026-05-04_..."
## 复盘 占位空段——否则 hook 不知道哪里是 immutable 边界--skip-blind flag 显式声明。不接受主 Claude 自作主张跳过 sub-agent。flag 触发 state.last_prediction_self_scored=true,cheat-status 持续提示直到下次 normal 调用清除**Numerical predictions in cold-start are NOT predictive — for self-education only**/cheat-init 必须完成 + rubric_notes.md 存在/cheat-score 反复尝试不同稿子版本/cheat-publish(发布登记)→ /cheat-retro(复盘)→ 累计 ≥ MIN_SAMPLES 后 /cheat-bumphooks/prediction-immutability.sh 必须已安装在用户 .claude/settings.json,否则 immutability 仅靠 SKILL.md 自律——cheat-status 会持续提示