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 会持续提示