cheat-status
/cheat-status — 状态看板
读 state file + 扫描用户项目 → 汇总当前进度 → 输出"今天该做什么"清单。
Overview
[用户:状态]
↓
[Phase 1: 读 .cheat-state.json + 扫文件系统]
↓
[Phase 2: 计算派生指标]
↓
[Phase 3: 检测建议触发器(升级 / bump / 清算)]
↓
[Phase 4: 输出看板]
Constants
- SQLITE_UPGRADE_THRESHOLD = 30 — calibration_samples 达到 N 时建议升 SQLite
- CLEANUP_LINE_THRESHOLD = 600 — rubric_notes.md 行数超 N 时建议清算
- STALE_PREDICTION_DAYS = 30 — in_progress prediction 超 N 天未发布提示清理
Inputs
| 来源 | 用途 |
|---|---|
.cheat-state.json |
主要状态 |
predictions/*.md |
校准样本数 / pending retros |
candidates.md |
候选池规模 |
rubric_notes.md |
行数 / 当前版本 |
.cheat-cache/usage.jsonl(如有) |
meta-logging 数据,用于"距上次 bump 多少次预测" |
Workflow
Phase 1: 读状态
state = read_json('.cheat-state.json')
if not state:
return "你还没初始化。请先跑 /cheat-init。"
predictions = glob('predictions/*.md')
candidates_count = parse_candidates_md_entries()
rubric_lines = wc -l rubric_notes.md
Phase 2: 派生指标
| 指标 | 算法 |
|---|---|
| Buffer 数 | len(state.shoots) |
| Buffer 颜色 | 按 cadence-protocol.md 派生:buffer_days = buffer_count × target_publish_cadence_days,<1 红 / 1-2 橙 / 3-5 绿 / >5 蓝。如 target_publish_cadence_days=null → 颜色禁用 |
| Confidence 等级 | 按 state-management.md confidence 表 派生:从 calibration_samples 整数派生 emoji + 标签 |
| 最早一拍至今天数 | now - state.shoots[0].shot_at,用于警告"拍了 N 天没发" |
| 校准样本数 | predictions 中含完整复盘段(实绩数据非空)的文件数 |
| 待复盘 | state.pending_retros 中已过 RETRO_WINDOW_DAYS 的 |
| 池大小 | candidates.md 中 tier!=skip 的 entry 数 |
| 上次 bump 至今几次预测 | predictions 中 published_at > state.last_bump_at 的数量 |
| 同向偏差队列 | state.consecutive_directional_errors |
| in_progress 陈旧度 | now - state.in_progress_session.started_at(如有) |
Phase 3: 检测建议触发器
按优先级(高→低)逐项检查:
- Buffer 颜色 = 🔴 红 → 第一行高优先级警戒:"buffer 已 0/1 篇,下个发布日可能断更——今天必须拍 ≥1 条。说'推荐选题'我只推 top 1 稳分(不推实验性)"
- Buffer 颜色 = 🔵 蓝 → 高优先级提示:"buffer 已 N 篇积压。暂停拍摄,先发存货 + 复盘。说'已发布 ...'我帮你出队"
- state.shoots 中最早一项 shot_at > 14 天 → "你有视频拍了 N 天还没发——议题时效流失风险,建议尽快发或弃稿"
- in_progress 陈旧 (>= STALE_PREDICTION_DAYS) → 高优先级提示"清理或 publish"
- 待复盘 ≥ 1 → 高优先级"今天该复盘 X 篇"
pool_status=none+calibration_samples=0+ 距 init >24h → "🌱 你 init 完已经 N 天但还没拍——是因为没选题吗?跑 /cheat-seed 5 分钟拿 5 个候选 + 5 个 draft" 高优先级- Claude 判断系统性偏差信号(不是死磕 ≥3 同向) → 提示"建议跑 /cheat-bump"
- 默认参考:连续 ≥3 次同向偏差
- 但 Claude 可以更早:1 次极端偏差(≥10x)或 2 次同向 + 评论区强反向证据
- 也可以更晚:3 次同向但每次幅度都 <25%(可能只是噪声)
- 提示时显式标注:"本次是 [default-aligned] / [judgment-driven]"
- calibration_samples 跨入新 confidence 等级(0→1, 2→3, 5→6, 10→11, 20→21)→ 提示"🎉 confidence 升级:<旧等级> → <新等级>。bucket 中枢精度从 ±X% 提到 ±Y%"。仅作通知,无任何用户必须确认的操作——所有 skill 都已经按 calibration_samples 自动调整
- calibration_samples 跨过 5 → "你的 rubric 形态可以第一次正式 bump 了。回顾 rubric_notes.md 看观察记录段是否有 ≥3 样本支持的 pattern → 跑 /cheat-bump"
- calibration_samples 跨过 10 → "可以跑 /cheat-bump --bucket-only --scheme percentile 让 bucket 边界改用 percentile(永远自洽)"
- calibration_samples 跨过 SQLITE_UPGRADE_THRESHOLD 且 data_layer=markdown → "建议跑 tools/md-to-sqlite.py"
- rubric_notes.md 行数 > CLEANUP_LINE_THRESHOLD → "建议清算观察段(手动或下次 bump 触发)"
- calibration_samples ≥ 5 + pool_status=none → "可以开始建立选题池了"
- calibration_samples ≥ 15 + pool_status=none → "强烈建议建池:/cheat-trends 或手动建 candidates.md"
- state.hooks_installed=false → "你的 immutability 是君子协定,建议跑 /cheat-init 装 hook"
- state.last_bump_self_audited=true → "上次 bump 是自审。建议配置 mcp__llm-chat__chat 后下次 bump 走外部审"
- state.rubric_form_mismatch=true → "你的 content_form 不是 opinion-video,用了内置观点 rubric。前几篇预测会更不准,下次 bump 时建议自行调整权重适配你的形态"
- state.benchmark_status=pending → "🎯 你 init 时答应等下找对标账号但还没找。跑 /cheat-learn-from 导入 ≥3 条对标视频,工具就有 anchor 了"
- state.benchmark_status=imported + Claude 判断用户数据信号已超过 benchmark → "📊 你的真实数据已经成为主信号,benchmark 影响淡出"
- 默认参考:calibration_samples ≥ 10
- 但 Claude 可以更早:N=5 但用户的 (打分, 实绩) 配对里出现 ≥3 条与 benchmark pattern 不一致的——说明你的账号已经走出对标的路径
- 也可以更晚:N=15 但用户的样本都很相似,没足够多样性 → benchmark 仍有信号价值
- 提示是通知不是 gate——benchmark.md 永远保留作 sanity check,cheat-seed 仍可读
Phase 4: 输出看板
🎛️ cheat-on-content 状态(更新于 2026-05-04 15:00)
内容形态:opinion-video / 时长 3-5min / cadence: 隔日更
当前 rubric:v2 (上次 bump: 2026-04-22)
校准样本:18 篇
Confidence: 🟢 较高 (中枢 ±15%,rubric 形态稳定)
Baseline: 4.2w 中位数
📦 Buffer:3 篇(🟢 绿色)
按你的 cadence (隔日更)= 6 天 buffer,节奏稳定
📊 进度条
[█████████████░░░░░] 18 / 30 → SQLite 升级建议门槛
[██████████░░░░░░░░] 18 / 10 → percentile 桶可用(已超过门槛)
🎬 待办(按紧急度)
🚨 复盘 1 篇(已过 T+3d)
- predictions/2026-05-01_db063817_你已不在关系里.md(T+3d 到了)
⚠️ 同向偏差 3 次(high, high, high)→ 建议 /cheat-bump
💤 in-progress prediction 已陈旧 35 天
- predictions/2026-04-01_xxx.md → 是已发了忘登记?还是弃稿?
🔥 候选池
- candidates.md: 27 条(tier1: 12, tier2: 9, tier3: 6)
- 距上次抓热点: 4 天 — 可以再跑 /cheat-trends
📈 健康度
- rubric_notes.md: 412 行(健康,<600 警戒线)
- hooks_installed: ✅
- external audit configured: ❌ → 建议配 mcp__llm-chat__chat
下一步建议(按推荐优先级):
1. /cheat-retro predictions/2026-05-01_db063817_你已不在关系里.md ← 最紧急
2. /cheat-bump ← 同向偏差 3 次的处理
3. 处理陈旧 in-progress(手动或回 "清理 in-progress")
完整的命令清单见主 SKILL.md。
输出风格:直白、具体、可点击。每个建议附确切的命令——用户应能 copy-paste 直接执行。
Key Rules
- 无副作用。读多写零。任何状态修改是其他 skill 的事
- 不假装数据可用。state file 字段缺失 → 显式标"未知",不猜
- 建议带优先级。10 个建议同时显示用户会麻木——按紧急度排
- 每个建议附命令。不能只说"该 bump 了"——要给
/cheat-bump --propose "..."的精确入口
Refusals
- 「顺便帮我自动跑一下 retro」 → 拒绝。status 是只读,retro 是另一个动作(避免一次操作做两件事)
- 「我不想看 rubric_notes 行数,太琐碎」 → 输出仍包含但折叠到底部"健康度"区——状态信息的存在让用户在出问题前可见
Integration
- 上游:所有其他 skill 完成时更新 .cheat-state.json,status 是这些更新的可视化
- 下游:每个建议都路由到具体子 skill
- meta-logging hook(如启用) → 写 usage.jsonl,status 用它算"距上次 X 多少次"
More from xbuilderlab/cheat-on-content
cheat-init
cheat-on-content 的首次 onboarding 与脚手架创建器。统一流程——所有用户都走相同 5 阶段闭环,唯一区别是"发过视频的人"会在 init 时多一步:抓取已有视频建立历史 context(用于后续 cheat-seed 给更贴合的选题、更准的 baseline)。触发词:"初始化"/"init"/"首次使用"/"我是新用户"/"setup cheat-on-content"。**必须在用户第一次会话执行;其他子 skill 在 .cheat-state.json 不存在时自动路由到此。**
17cheat-score
给单篇稿子打 rubric 分。**只在控制台输出,不写文件,不预测**。触发词:"打分这篇 [path]"/"score this [path]"/"给这稿子打分"/"先打分看看"。是 cheat-predict 之前的轻量探索动作。
15cheat-shoot
登记一条视频已拍摄。**建 video folder + 询问实际拍摄稿是否与 scripts/<id>.md 一致 + buffer +1**。与 cheat-publish 配对:拍了进队列,发了出队列。触发词:"拍了"/"拍了 X"/"shot"/"shot it"/"已拍 X"/"录完了"。
14cheat-bump
提议并执行 rubric 或 bucket 升级。两种模式:**完整 rubric bump**(最高风险动作,5 步强制 + 跨模型审核)和 **--bucket-only 轻量重校**(只换 bucket 边界,不动 rubric 公式)。触发词:"升级 rubric"/"bump rubric"/"更新公式"/"我想加一个维度"/"调整权重"/"重校桶"/"recalibrate bucket"。
14cheat-predict
给最终稿写一份 immutable 盲预测日志。这是 cheat-on-content 整个校准循环的核心动作——预测段一旦写完不可改,由 hook 强制。触发词:"启动预测"/"start prediction"/"给这稿子打分并预测"/"预测刚拍的视频"/"写预测日志"。
12