Back to skills
SKILL.md
Oracle Retro
ASecurity按轨道 retro 窗口回收数据 + 复盘 + 把新观察写入 rubric_notes.md。校准循环的反馈环节——不复盘的预测等于占星。转化轨按 T+3/7/30 三窗口分阶段回收(评论/私信/付费加权)。触发词:"复盘 [path]"/"retro this"/"T+3d 数据来了"/"抓数据 [path]"/"把这篇复盘了"。
- 2 stars
- 0 votes
- 0 copies
- 1 view
- Added September 19, 2026
Security analysis
100/100Pro scans all 2 files and shows the line behind each finding
npx -y skills add Huanyu-Hibiki/Huanyu-Skills --skill oracle-retro --agent claude-codeAre you the author of Oracle Retro?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/huanyu-hibiki-oracle-retro)---
name: oracle-retro
description: 按轨道 retro 窗口回收数据 + 复盘 + 把新观察写入 rubric_notes.md。校准循环的反馈环节——不复盘的预测等于占星。转化轨按 T+3/7/30 三窗口分阶段回收(评论/私信/付费加权)。触发词:"复盘 [path]"/"retro this"/"T+3d 数据来了"/"抓数据 [path]"/"把这篇复盘了"。
argument-hint: "<prediction-file> [— window: 3|7|30] [— source: manual|adapter]"
allowed-tools: Bash(*), Read, Edit, Write, Glob, Grep, Skill
---
# /oracle-retro — 数据回收与复盘
按该轨 retro 窗口抓实际表现 → 对比预测 → 提炼新观察 → 写入 rubric_notes.md。**只追加 `## 复盘` 段,绝不改预测段**。
## Overview
```
[用户:复盘 <NNN>_<标题>]
↓
[Phase 0: 校验(immutability + 窗口 + 有效预测段 + published_at)]
↓
[Phase 1: 抓数据(manual / adapter;转化轨按窗口加权追问私信/付费)]
↓
[Phase 1.5: 限流排查 — 某平台实绩 < 中枢 50% 时先扫合规,再下 rubric 结论]
↓
[Phase 2: 实绩段 + 派生比率 + 互动率追踪 + top 评论聚类]
↓
[Phase 3: 验证/推翻预测各假设]
↓
[Phase 4: 提炼新观察(4a rubric / 4b pattern diff / 4c 双角度档案验证)]
↓
[Phase 5: 落盘(追加 ## 复盘 段 + brief/audit 验证段)]
↓
[Phase 6: 写入 rubric_notes.md + script_patterns.md]
↓
[Phase 7: 更新 state 分桶计数 + 检测 bump 候选 → 提议]
↓
[Phase 8: 内容资产提取(可选)]
```
## Constants
- **窗口按轨道**:从 state 的 `tracks.definitions[].retro_windows_days` 读(流量轨 [3];转化轨 [3,7,30])。`— window: N` 可显式指定补跑某窗口
- **DATA_SOURCE = manual** 默认(state.data_collection 可改 adapter)
- **TOP_COMMENTS_N = 20**
- **LIMIT_CHECK_THRESHOLD = 0.50** — 任一平台实绩 < 预测中枢 × 此值 → Phase 1.5 自动触发
- **转化轨加权**(窗口权重,只用于该轨 bump 分桶重打):
| 维度 | T+3d | T+7d | T+30d |
|---|---|---|---|
| 评论关键词命中 | 1.0 | 1.5 | 2.0 |
| 私信触发 | N/A | 2.0(首次出现) | 3.0 |
| 付费转化 | N/A | N/A | 5.0(**转化轨成功的唯一真信号**) |
## Workflow
### Phase 0: 校验
1. 读 prediction 文件,确认存在
2. **识别有效预测段**:扫所有 `## 预测...` 段,取**最后一个 vN** 作校准依据(交叉题 v1_a/v1_b 都读,各算各的);state.shoots 对应项的 `v2_prediction_written` 与文件实际不一致 → 警告(state 与文件脱节)
3. **immutability 缓存**:用**段位置 offset**(不是段内容 hash)缓存所有预测段——写完后按 offset 切片核对"原段内容字面一致"
> 坑(实战):非贪婪 regex 重新匹配会把新追加段切进旧段边界 → hash 必然不一致的假警报。offset 切片或关键指纹校验(grep 几个核心字符串仍在)才是对的
4. 校验 `Published at` → 缺失 → 优先走 oracle-publish 补登记;不可用 → 询问用户手动给("不知道" → 用文件 mtime 近似 + 标 `published_at_unverified: true`)
5. **窗口校验**:按 per-platform 时间独立判定 `今天 - published_at >= 窗口`:
- 转化轨按 due_windows 勾掉本次完成的窗口;还有未到期窗口 → 保留在 pending_retros
- 不到 → 提示"还差 X 天",用户坚持 → 标 `early_retro: true`(bump 时权重降级)
6. 已有复盘段 → 询问"补充还是修正?"——修正预测段 → **拒绝**
### Phase 1: 抓数据
#### Path A:manual(候补)
- 询问"粘贴这条作品的当前数据:播放/点赞/评论/转发/收藏"
- **top 评论分级制**:≥20 条 → 完整 retro;5-19 条 → 部分 retro;<5 条 → 标 `comments_unavailable` 降级 retro;0 条+平台状态变化(限流/申诉/封禁)→ 写"平台状态变化"段,不强行套模板
- 用户给不出评论 → **必须问原因**(adapter 失败/没到时间/评论区关闭/没空),记入复盘段
- 转化轨按窗口追问:T+7d 加"私信触发数 + 咨询意图词('怎么用'/'多少钱')";T+30d 加"试用/付费转化数 + 私信样本(脱敏)"
#### Path B:adapter(自动)
**优先级顺序**:
1. **auto-collect(一键采集,推荐)**——`adapters/perf-data/auto-collect/`:
```bash
# <PY> = auto-collect 自带 .venv 的 python(见包根 SKILL.md「Adapter 铁律」;Windows 是 .venv/Scripts/python.exe)
<PY> <包根>/adapters/perf-data/auto-collect/collect.py all --days 30 # 四平台连采(首次每平台先 --auth-only 本人扫码)
```
🚫 禁止 computer-use/GUI 自动化/亲手开浏览器替代本脚本采集——脚本失败走降级路径,不换方式。
产物 `.oracle-cache/collections/<ts>/unified.json`(统一 schema)→ 直接进本 Phase 的实绩段提取。采集后顺手存快照供 compass-retro 用:
```bash
<PY> <包根>/tools/snapshot_store.py archive --db <项目根>/content-analytics.db --input <unified.json>
```
按 prediction header 的 Platform 字段过滤该作品的数据行(`平台作品键` 前缀匹配)。
**失败不阻塞**:授权过期 → 提示用户 `--auth-only` 重授权后重试一次;仍失败 → 降级下一条路径。
2. **平台手动导出文件**——用户从后台点"导出"拿到的 Excel 拖进来 → `python tools/data_normalizer.py --input <文件> --platform <平台>` 归一后同上消费。
3. **manual paste(兜底)**——问用户要数字。
任何 adapter 失败 → 优雅降级到 manual,标"adapter 因 X 不可用",不阻塞。
#### 共同输出
- 定稿快照旁写 `report.md`(原始数据真相:数字 + top 评论全文;auto-collect 场景附 unified.json 路径引用)
- prediction 复盘段含**摘要**(关键比率 + 评论聚类 + 验证/推翻判定)——数据真相在 report,判断真相在 prediction
- **actual_data 字段统一写归一后的 schema**(`平台作品键` + 中文统一字段)——只有一种口径,根除 schema 漂移(bump 取数不再需要兼容多格式)
### Phase 1.5: 限流排查(归因前必跑)
任一平台实绩 < 中枢 × 50% → **先扫合规再下 rubric 结论**:
1. 扫定稿口播段([oracle-compliance](../oracle-compliance/SKILL.md) 清单):竞品平台名 / 站外导流 / 敏感词 / 绝对化用语
2. 发现 ≥1 高危 → 实绩段标 `platform_compliance: flagged`,该平台 rubric 结论降权("可能是限流导致,非 composite 问题")
3. 无论结果,rubric_notes 观察注明是否排查过限流
**为什么在 Phase 3 之前**:低播放先归因于内容 → 后来发现是限流 → 错误观察污染 rubric_notes。归因顺序错了,校准白做。
### Phase 2: 实绩段 + 评论分析
- 实绩数据 + **派生比率必算**(赞播比/评播比/藏播比/转播比——播放数永远暴露不了的信号)
- 互动率追踪表:本期 vs 历史(同轨全量派生基线)vs 目标,逐项 ✅/⚠️/❌
- 互动设计复盘(draft 有 `## 互动设计` 段时):逐项验证触发器是否生效
- top 评论关键词聚类:分 3-5 类(高赞模因 / 概念引用 / 离题 / @朋友传播等),每类代表评论(带赞数)+ 比例
- 转化轨:按窗口权重表额外回收评论关键词/私信/付费三维度
### Phase 3: 验证/推翻
对预测文件的推理因素表、关键校准假设、反事实场景逐项判定(✅/❌)。**每条必须引用具体数据**("分播比 2.53%"),不许写"基本符合"。实际落在的 bucket → 明确写出它测试了哪个 rubric 假设。
### Phase 4: 提炼新观察
#### 4a. Rubric 观察(→ rubric_notes.md 该轨节)
打分维度/公式/bucket 相关。每条**可追溯到具体数据点**。按题材/内容类型分分支记录(同轨不同题材可能是两条独立预测路径——单中枢强行平均会两头错)。
#### 4b. 写作 Pattern 观察(→ script_patterns.md,用户确认后才写)
Diff `scripts/<id>.md`(草稿)vs 定稿快照 → 找"改动且对流量有明显影响"的部分:
- 砍了某段 + 实绩≥中枢 → 验证冗余 → "用户改稿模式"表
- 加了钩子 + 超中枢 → 候选 Pattern N(标 ≥1 样本待验证)
- 定稿缺失(script_lost)→ 跳过 4b + 标"因未登记定稿跳过"
> rubric 进化 ≠ 写作进化——两个文件解耦:rubric 改了影响所有未来打分;pattern 改了影响所有未来 draft。
#### 4c. 双角度档案验证(brief/audit 存在时)
- audience-brief.md 存在 → 对照实绩验证:受众画像匹配?搜索流量占比?钩子判断?红旗真的拖累流量?
- open-source-audit.md 存在 → 验证:评论引用推理还是结论?"被推销感"还是真诚信号?
- 判定写进 brief/audit 末尾 **Retro 验证段**(诊断段 immutable,只追加验证段)
- 发现 rubric 盲区 → 候选观察(攒 ≥3 篇同类验证触发 bump)
### Phase 5: 落盘
Edit 追加三处:prediction 复盘段 + brief 验证段 + audit 验证段。
**Retro 段命名规则**(防同名段解析错乱):
| 文件已有 | 新段名 |
|---|---|
| (无) | `## 复盘` |
| 已有 `## 复盘` (T+3d) | `## 复盘(补充 T+Nd)` |
| 已有多个 | `## 复盘(YYYY-MM-DD T+Nd retroactive)` |
| header 标 NOT FOR CALIBRATION | 段头强制 `**calibration_skipped**: true` |
**写完按 Phase 0 的 offset 缓存核对**——任一预测段字面变了 → 报错回滚。
### Phase 6: 写入 rubric_notes + script_patterns
🔴 **CHECKPOINT · 写入门**:写入前展示清单(哪些观察进 rubric_notes / 哪些 pattern 进 script_patterns / 哪些不写及原因),用户确认后一次写入。
- 6a:按 [observation-lifecycle.md](../../shared-references/observation-lifecycle.md) 观察记录模板追加到该轨 `## 观察记录`;检测跨样本 pattern(≥2 样本支持 → 升"重大跨样本观察"段)
- 6b:Phase 4b 用户确认的 pattern → script_patterns.md("用户改稿模式"表 / "新发现的 Pattern"段)
### Phase 7: 更新 state + 检测 bump
```json
{
"calibration_samples_by_track": { "<track>": +1 },
"calibration_samples_total": <+1(cross 各 +0.5)>,
"pending_retros": [<勾掉完成窗口;全窗口完成则移除>],
"consecutive_directional_errors": { "<track>": [push "high"/"low"(偏差 >±25% 才 push)] },
"last_retro_at": "<ISO>"
}
```
retroactive 路径(header 标 NOT FOR CALIBRATION):计数不变 + `shoots[].calibration_status = "not_for_calibration"` + retroactive = true。
**bump 提议判断**(Claude 判断,非死门槛):
- 默认参考:连续 ≥3 次同向偏差 → 提议 /oracle-bump
- 更早:1 次极端偏差(≥10x)或 2 次同向 + 评论区反向证据
- 更晚:3 次同向但幅度都 <25%(可能只是噪声)
- 提议时标注 default-aligned / judgment-driven
### Phase 8: 内容资产提取(可选)
从本期 draft 提取 1-3 个**可独立成立的观点**(离开原作品也看得懂、可继续展开)写入 `content-assets.md`:优先复盘数据支持的 + 评论被引用复述的。下游:oracle-seed 没想法时读它当选题素材。
## Key Rules
1. **预测段 immutable**。offset 缓存 + 写后核对是双保险
2. **数据来源必标注**(manual / adapter:<name>)
3. **观察可追溯**——每条引用具体数据点
4. **不在复盘里 bump**——Phase 7 只提议,升级走 /oracle-bump
5. **早复盘降级**——early_retro 样本在 bump 时权重降级
## Refusals
- 「把预测段的概率分布改一下,让复盘看起来更准」 → 拒绝。原则 #1
- 「这条观察太对了,直接升成规律写进 rubric」 → 拒绝。观察需 ≥2 样本支持才升"跨样本观察",单样本只进观察记录(observation-lifecycle 的事)
- 「跳过观察提炼,直接结束」 → 拒绝。观察是 rubric 进化的唯一燃料
- 「直接 bump,不要单独走 oracle-bump」 → 拒绝。retro 是触发器不是执行器
## 已知坑(压缩版)
| 坑 | 正解 |
|---|---|
| adapter 不可用就阻塞 | 降级 manual,标注原因,判断维度降级 |
| state 滞后(没跑 publish)→ 校验失败 | retro 内走 publish 补登记逻辑 |
| 多平台分日发 → 窗口算错 | per-platform 独立判窗口 |
| 同一钩子不同平台效果差数十倍 | 平台×内容交互是已知盲区——分平台记录,观察按平台分支 |
| 限流 confounding(低播放误归因内容) | Phase 1.5 在归因前必跑 |
## Integration
- 前置:oracle-publish 已登记 + 窗口到达
- 下游:consecutive_directional_errors 累积 → /oracle-bump 提议;每 2 期已复盘 → /oracle-compass-retro
- 与 [observation-lifecycle.md](../../shared-references/observation-lifecycle.md) 紧耦合:每次复盘是观察新增入口
Files in this skill
- SKILL.md
- test-prompts.json
Attribution
Comments
Loading comments…