/oracle-status — 状态看板
读 state + 扫项目 → 汇总进度 → 输出"今天该做什么"清单。读多写零。
Overview
[用户:状态]
↓
[Phase 1: 读 state + 扫文件系统]
↓
[Phase 2: 计算派生指标(分轨)]
↓
[Phase 3: 检测建议触发器(按优先级)]
↓
[Phase 4: 输出看板]
Constants
- SQLITE_UPGRADE_THRESHOLD = 30 — 总校准样本 ≥N 建议升 SQLite
- CLEANUP_LINE_THRESHOLD = 600 — rubric_notes.md 行数超 N 建议清算
- STALE_PREDICTION_DAYS = 30 — in-progress 超 N 天未发布提示清理
- COMPASS_RETRO_EVERY = 2 — 每 N 期已复盘作品提示罗盘复盘
Inputs
| 来源 | 用途 |
|---|---|
.oracle-state.json |
主状态(tracks / buffer / pending_retros) |
python tools/context.py <项目根> --task status(可选快速路径) |
≤6KB 全局摘要基线(confidence / buffer / 待复盘口径与 Phase 2 一致),再按需扫文件核验 |
<NNN>_*/predictions/*.md |
校准样本数核验 |
candidates.md |
候选池规模 |
rubric_notes.md |
行数 / 各轨版本 |
python tools/score-curve.py <项目根> --json |
预测收敛(分轨平均绝对偏差 / bucket 命中率 / 偏差方向序列)——无样本时输出"无有效校准样本",直接跳过该行 |
python tools/dashboard.py --db <项目根>/content-analytics.db(db 存在时) |
实绩快照新鲜度 + 五维指标概览({"ok":false,"message":"no_runs"} → 标"暂无快照数据") |
.oracle-cache/usage.jsonl(如有) |
使用频率 |
Workflow
Phase 1: 读状态
state = read_json('.oracle-state.json')
if not state:
return "你还没初始化。请先跑 /oracle-init。"
Phase 2: 派生指标(分轨)
| 指标 | 算法 |
|---|---|
| Buffer 数 / 颜色 | len(state.shoots);颜色按 cadence-protocol.md(cadence=null → 颜色禁用) |
| 各轨样本数 + confidence | calibration_samples_by_track → 按轨派生 emoji 等级(state-management.md confidence 表) |
| 总样本数可信度 | 扫 shoots 中 calibration_status == "not_for_calibration" / retroactive == true 的数量 → 有效数 = 总数 - retroactive 数,显示时附注 |
| 最早一拍至今天数 | now - shoots[0].shot_at → "拍了 N 天没发"警告 |
| 待复盘(分轨分窗口) | pending_retros 展开 due_windows:已过 due_at 且未 done 的 |
| 轨道占比执行情况 | 最近 N 期(默认 5)已发布作品的 track 分布 vs mix_ratio → "破圈轨 40% 计划 / 最近 5 期实际 20%——该补稀轨" |
| 池大小 | candidates.md 中 tier != skip 的条数(分轨统计) |
| 同向偏差队列 | consecutive_directional_errors(分轨);与 score-curve 的偏差方向序列交叉核验(state 是 retro 登记的,score-curve 是从 prediction 文件重算的——不一致时以文件为准并提示补登记) |
| 预测收敛(分轨) | score-curve --json:样本数 / 平均绝对偏差 / bucket 命中率——支撑触发器 7 的 bump 判断(偏差幅度序列比"≥3 同向"计数更细) |
| 数据快照新鲜度 | content-analytics.db 最后快照日期(dashboard.py)——超过一个复盘周期未更新 → Path B 用户可能在手动档拖延 |
| in_progress 陈旧度 | now - in_progress_session.started_at |
Phase 3: 检测建议触发器(按优先级)
- Buffer 🔴 红 → 第一行警戒:"buffer 0/1 篇,断更风险——今天必须拍/发。说'推荐选题'只推 top 1 稳分"
- Buffer 🔵 蓝 → "积压 N 篇,暂停制作,先发存货 + 复盘"
- shoots 最早一项 > 14 天 → "有作品拍了 N 天没发——时效流失风险"
- in_progress 陈旧 ≥ 30 天 → "清理或 publish(是忘登记还是弃稿?)"
- 待复盘 ≥1(按 due_at 最近排序) → "今天该复盘 X 篇"(转化轨显示是哪个窗口 T+3d/T+7d/T+30d)
- 轨道占比偏离(某轨连续 3 期低于 mix_ratio 的一半)→ "该轨按计划该发了——下次'推荐选题'我会优先补稀轨"
- bump 信号(分轨,Claude 判断):默认 ≥3 同向;可提前(1 次极端偏差 / 2 次+评论反向证据);可推迟(幅度都 <25%)→ 提议时标注 default-aligned / judgment-driven
- confidence 升级跨档(0→1 / 2→3 / 5→6 / 10→11 / 20→21)→ "🎉 <轨> confidence 升级"(仅通知)
- 某轨样本跨 5 → "该轨 rubric 可第一次正式 bump 了"
- 总样本跨 10 → "可跑 /oracle-bump --bucket-only --scheme percentile"
- 总样本 ≥30 且 data_layer=markdown → 建议升 SQLite
- rubric_notes 行数 > 600 → 建议清算观察段
- 已复盘作品数达 COMPASS_RETRO_EVERY 倍数 → "罗盘复盘到期:/oracle-compass-retro(账号级诊断 + 规划修订候选)"
- hooks_installed=false → "immutability 是君子协定,建议补装"
- last_bump_self_audited=true → "上次 bump 是自审,建议配置跨模型审核通道"
- rubric_form_mismatch=true → "形态与 starter 不完全匹配,下次 bump 建议调权重"
- benchmark_status=pending → "答应找的对标账号还没找——跑 /oracle-learn-from"
- benchmark 影响淡出判断(该轨样本 ≥10 且与 benchmark pattern 出现 ≥3 条不一致)→ "你的真实数据已成主信号"(通知不 gate,benchmark 保留作 sanity check)
- retroactive 残留 ≥20% → "总样本中 N 条 retroactive 不计校准,bump 触发只看有效数"
- mix_ratio 之和 ≠ 1.0 / tracks 定义异常 → 报警等用户拍板修正
Phase 4: 输出看板
🎛️ oracle-bone 状态(更新于 2026-08-19 15:00)
内容形态:opinion-video / 时长 3-5min / cadence: 隔日更
规划:双轨 — 破圈 40% + 转化 60%
📊 分轨校准
破圈轨 rubric v2 · 样本 12 · 🟢 中(中枢 ±25%)· 预测偏差 32% / bucket 命中 8/12
转化轨 rubric v1 · 样本 6 · 🟡 偏低(±40%)· 预测偏差 41%(连续 3 次高估)
(总样本 18,其中 1 条 retroactive 不计)
📦 Buffer:3 篇(🟢 绿)· 按你的 cadence = 6 天,节奏稳定
🎬 待办(按紧急度)
🚨 复盘 1 篇(转化轨 T+7d 窗口到期)→ "复盘 006_获客案例"
⚠️ 破圈轨同向偏差 3 次(high)→ 建议 /oracle-bump --track 破圈轨
💤 in-progress 陈旧 35 天 → 已发忘登记?还是弃稿?
⚖️ 占比执行:最近 5 期 破圈 20% / 转化 80%(计划 40/60)→ 该补破圈轨
🔥 候选池:27 条(tier1: 12 / tier2: 9 / tier3: 6)· 距上次抓热点 4 天
📈 健康度
rubric_notes.md: 412 行(健康)· hooks ✅ · 跨模型审核 ❌(未配置)
实绩快照: 2 天前(auto-collect)· 详细看板: python tools/dashboard.py --db content-analytics.db
下一步建议(按优先级):
1. /oracle-retro(006 获客案例 T+7d)
2. /oracle-bump --propose "..." --track 破圈轨
3. "推荐选题"(会优先补破圈轨)
输出风格:直白、具体、可复制执行——每个建议附确切命令。
Key Rules
- 无副作用。读多写零;状态修改是其他 skill 的事
- 不假装数据可用。字段缺失 → 显式标"未知",不猜
- 建议带优先级。按紧急度排,不同时堆 10 条
- 每个建议附命令。不能只说"该 bump 了"
- 分轨呈现。混池显示会掩盖单轨问题
Refusals
- 「顺便帮我自动跑一下 retro」 → 拒绝。status 只读,一次操作只做一件事
- 「顺手把 state 里的 mix_ratio 改一下」 → 拒绝。写操作属于对应 skill——改占比走 compass-retro 拍板门,清队列走 publish
- 「不想看行数/健康度,太琐碎」 → 折叠到底部"健康度"区,不移除——出问题前可见
Integration
- 上游:所有 skill 完成时更新 state,status 是这些更新的可视化
- 下游:每个建议路由到具体子 skill
- SessionStart hook 调本 skill 渲染 4-6 行开场报告