oracle-bone / 甲骨
商王做事之前先烧龟壳:读兆纹,刻卜辞,然后行动。几天后,把真实结果刻回同一块骨头。 3000 年前的贞人就在跑校准循环——这套 skill 把它还给内容创作者。
把内容创作变成可校准预测循环:打分 → 盲预测 → 发布 → 复盘 → 进化 rubric
本文件是总协议 + 路由器。具体每个阶段的工作流在 skills/oracle-*/SKILL.md 各子 skill 里。
方法论通用,rubric 当前默认视频版:方法论(5 阶段闭环)适用任何能被量化的内容形态——视频 / 文章 / 播客 / Newsletter / 短文 thread。当前默认 starter 是观点类视频 rubric(7 维,参考博主 25+ 已发样本拟合)+ 转化类视频 starter;其他形态可参照 starter-rubrics/ 格式自写,再借 bump 调权重。
默认假设:用户是从零开始的新人(一条都没发过)——cold-start 期预测会简化(7 维打分 + 一句话 bet,不强求 bucket 数字,避免 false precision)。已有 5+ 篇数据的老手走 calibration 模式解锁完整 7 组件预测。
🔴 三条不可妥协原则(🛑 STOP:用户要求打破任一条 = 拒绝执行并说明原因)
任何一条被违反,整个校准循环退化为"凭直觉的自我安慰"。如果用户要求打破其中任何一条,拒绝执行并说明原因。
盲预测(Blind prediction):预测必须在看到任何实际数据之前写完。一旦写完,
## 预测段是 immutable——只能往## 复盘段追加。完整规范:shared-references/blind-prediction-protocol.md。hooks/prediction-immutability 在 harness 层强制执行(hook 为 Claude Code 格式;不支持 hooks 的 runtime 降级为 predict Phase 0 自检 + 用户 review 软防线,同样拒绝写已见数据的预测)。污染边界:「见过数据」仅指当前这条作品的实际表现数据(播放/点赞/评论/转化)。其他作品的实绩数据是合法输入——那是校准的燃料:经 retro 进校准池后供 predict 当锚点、bump 当重打样本。因此「预测 004 时参考 003 的实绩/复盘结论」合法且鼓励;「预测 004 时参考 004 自己发布后的数据」违规——改走
_redo.mdreconstructed。升级 = 全量重打(Bump = full re-score):rubric 升级时,校准池所有有实绩数据的样本必须用新公式重打分;新排序与实际表现排序若在 ≥4/5 样本上不一致,升级被拒;升级必须经跨模型独立审核。完整规范:shared-references/bump-validation-protocol.md。
rubric 是工作台,不是博物馆:被新数据推翻或被吸收为正式维度的观察,删掉。绝不留"我曾经以为 X,但其实..."的考古层。git history 才是档案。完整规范:shared-references/observation-lifecycle.md。
能力边界与已知限制(先知道它不能做什么)
- 不保证爆款,也不直接产生流量——本系统是校准器不是放大器:它让预测越来越准,不替内容变好。预测精度上限由校准池样本量决定(confidence 派生表见 state-management.md)。
- cold-start 前 5 篇预测精度 ±50%——新账号没有锚点,写预测的目的的是采集校准数据,不是做发布决策。导入对标账号(learn-from)可显著改善。
- hooks 是 Claude Code 格式(预测不可变强制 / 会话自动状态报告)——不支持 hooks 的 runtime 降级为 skill 内自检 + 用户 review 软防线,保护强度依赖流程纪律。
- 数据采集依赖 adapter,adapter 会失败——登录墙 / 反爬 / 断网时走手动粘贴路径,绝不静默编造或估算数据(协作契约 #3)。
- AI 写的 draft 是脚手架不是成品——不改写直接拍会拉低 ER 并污染校准数据(seed Refusals 有对应警告分支)。
- 一个项目一份 state——
.oracle-state.json全局唯一于各项目根;多账号 / 多项目 = 多个项目根各自 init,不支持单 state 混装。
init 档案与轨道机制(内容规划驱动)
oracle-bone 不硬编码任何内容分层。/oracle-init 通过采访为用户建立三份档案,整个系统后续按档案执行:
| 档案 | 内容 | 被谁消费 |
|---|---|---|
user-profile.md |
创作者档案:变现方式 / 客单价 / 专业优势 / 形象三词 / 内容风格 / 内容喜好 / 内容红线 | seed / learn-from / who-for / cover |
content-plan.md |
内容规划:单一 / 双轨 / 三轨(对应内容漏斗 破圈→认知→转化)+ 各轨占比 + 各轨成功指标 | seed 分流 / recommend 比例过滤 / bump 分池 / status 看板 |
audience-profiles.md |
各轨受众画像(含"一般关注"人群) | simulate-audience / who-for / seed 受众校准 |
轨道 = 漏斗层。init 产出几轨就是几轨(1-3),注册进 .oracle-state.json 的 tracks.definitions。每轨四要素:独立 rubric 权重、成功指标、review skill 路由、retro 窗口:
- 破圈 / 认知类轨道(流量导向)→ review 走
oracle-who-for,retro 窗口[3d] - 转化类轨道(获客导向)→ review 走
oracle-open-source,retro 窗口[3d, 7d, 30d],加载references/conversion-track-playbook.md
候选池每条标 track;预测 header 加 track 字段;校准池按轨道分桶;bump 按轨道独立重打;看板分轨显示。交叉题(一条内容跨两轨)算 0.5 + 0.5。规划可修订:跑满若干期后 compass-retro 可建议调整占比/增删轨道——但需用户拍板并同步 state。
init 采访依据:references/xu-zuohao-positioning-distill.md(《做号》定位画像提炼)+ references/content-funnel-theory.md(内容漏斗三层模型)。
stage_constraint:当前最大约束(不是等级)
烧龟壳之前先问"这次卜的是哪件事"。约束字段决定系统当前最该修什么——定位未明的人追热点、产能受限的人三轨全铺,都是开错药。阶段/约束描述当前最大短板,不描述账号等级。
init 时暂定(oracle-init Phase 4.5)+ compass-retro 每 2 期回写,存 state.stage_constraint:
| 约束值 | 判定信号 | 对链路的影响 |
|---|---|---|
positioning_unclear 定位未明 |
init 时形象三词/专业优势答不上;评论复述不出"你是谁讲什么" | seed 优先 Mode A 经历锚点深挖,热点路径降级提示;who-for 逐稿建议跑 |
expression_unstable 表达不稳 |
定位清晰但 script_patterns 空 + 未导对标;或连续 B 类(表达)问题 | 提示 apprentice 拜师拆稿补 pattern;draft 必过 no-ai-slop |
capacity_limited 产能受限 |
cadence 目标 vs 实际可投入差距大;buffer 长期橙红 | recommend 附注"优先 derivative 一稿多吃";cadence 下调候选 |
conversion_blocked 转化受阻 |
转化轨有播放但零咨询/付费信号 | 转化轨 seed 必过 playbook"极刚痛点 6 问";review 强制 open-source |
none 无显著约束 |
四类信号都不显著 | 不硬贴标签——没有最大约束本身就是好状态 |
纪律:判定必须带依据 + 升级条件;证据不足保守取更早的约束(宁可低估)。切换约束需连续两次 compass-retro 同向证据或用户明确拍板(防单期噪声)。约束与轨道分流正交:先轨道后约束,叠加生效。
作品目录结构(全局约定)
每期作品的所有产物(draft / prediction / brief / cover prompt / 发布文案 / 置顶评论等)统一放在 <NNN>_<标题>/ 下(编号制,如 003_从龟壳到算法/)。
- 初始化时机:
oracle-seed起 draft 时一次性建目录 - 所有 skill 共享:publish / shoot / retro / cover 等都按此结构定位产物
- 完整 schema:shared-references/content-folder-schema.md
<NNN>_<最终标题>/
├── predictions/<YYYY-MM-DD>_<id>_<短标题>.md # oracle-predict 落盘(## 预测 段 immutable)
├── prompt/cover/ # oracle-cover 生成(_base.md + 平台比例派生)
├── scripts/<最终标题>.md # 定稿;简介/置顶评论直接 append 到末尾段
└── audience-brief.md / open-source-audit.md # review skill 产出(按轨道二选一)
约束:
predictions/prompt/cover/scripts/= oracle-bone 链路产物;制作管线产物(分镜 / 录屏 / 素材)放作品目录其他子目录,不混入。- 简介直接写脚本末尾
## 发布文案段,不建独立 description 文件。 oracle-title-pick选完要改名:mv作品目录 +mv脚本文件 + 同步 prediction header 的 Title / Script Path 字段。
每期完整链路(顺序敏感)
oracle-seed (按 track 分流写 draft)
↓
oracle-title (3-5 候选,不落文件) → oracle-title-pick (选最优 → 改名)
↓
oracle-description (简介 append 到脚本末尾) → oracle-cover (封面 prompt 按平台比例派生)
↓
oracle-no-ai-slop (AI 味检测与修正 —— 预测前必跑)
↓
按轨道选 post-draft review:
流量/共鸣轨 → oracle-who-for(以 init 画像为基线逐稿深化)
转化轨 → oracle-open-source
↓
[可选] oracle-simulate-audience (用 init 画像模拟评论区)
oracle-compliance (违禁词/限流风险扫描,任意轮可复检)
↓
oracle-predict v1 (落盘 predictions/<id>.md,basis=pre_shoot)
↓
实际制作(AI 不可见,等用户回来)
↓
oracle-shoot (登记拍摄 + buffer +1;成稿与预测稿 diff 超阈值 → predict v2)
↓
实际发布到平台
↓
oracle-publish (合规 gate → 登记 URL + buffer -1)
↓
oracle-pinned-comment (发布后黄金窗口) → oracle-derivative (T+1 衍生)
↓
oracle-retro (窗口按轨道 → ## 复盘 段追加 → 观察入 rubric_notes)
└─ 每 2 期 → oracle-compass-retro (账号级罗盘复盘 + 规划修订候选)
🔴 主链路顺序铁律:predict → (制作)→ shoot → (发布)→ publish → retro。
🔴 三类动作与 skill 的映射(🛑 STOP:绝不能错配):
| 状态 | 正确 skill | 错误动作 |
|---|---|---|
| 写了稿,没拍 | (什么都不跑,等用户拍) | ❌ 不该 publish |
| 拍了,没发 | oracle-shoot + buffer+1 | ❌ 不该 publish |
| 拍了,发了 | oracle-shoot → oracle-publish | ✅ |
oracle-publish 严格只用于「已实际发到平台且有真实 URL」。predict 落盘 ≠ 发布,scheduled ≠ 发布。没有真实 URL 就不是 publish。
拍 vs 发分两个动作:buffer 警戒系统需要明确知道"拍了但没发" vs "已发"两种状态。详见 shared-references/cadence-protocol.md。
路由表(触发词 → 子 skill)
| 用户说 | 调用 | 前置条件 |
|---|---|---|
| "初始化" / "init" / "首次使用" | /oracle-init |
无(这是入口) |
| "找对标" / "学这个账号" / "拆这几个对标视频" / "learn from" | /oracle-learn-from |
已 init;cold-start 强烈建议;后续可随时 --append / --replace |
| "拜师" / "拆这条稿" / "学这个博主的表达" / "apprentice" | /oracle-apprentice |
手艺层拆稿(钩子/节奏/金句/结构)→ 四步闭环内化;与 learn-from 分工:learn-from=数据信号,apprentice=单条写法 |
| "找选题" / "我不知道做什么" / "seed" | /oracle-seed |
已 init(cold-start 用户专用一次性种子动作) |
| "打分这篇 [path]" / "score this [path]" | /oracle-score |
rubric_notes.md 存在(不存在时自动从 starter-rubric 兜底) |
| "给我标题" / "标题候选" / "诊断标题" | /oracle-title |
有 draft |
| "选标题" / "哪个标题好" / "title-pick" | /oracle-title-pick |
有 title 候选 |
| "写简介" / "视频描述" / "description" | /oracle-description |
有定稿脚本 |
| "封面" / "cover" / "封面 prompt" | /oracle-cover |
有定稿脚本 |
| "拆封面" / "分析封面" / "对标封面" | /oracle-cover-analyze |
已 init + 有参考封面图(三维度对标的视觉维度) |
| "这是拍给谁的" / "受众是谁" / "who-for" | /oracle-who-for |
已 init + 有 draft(流量/共鸣类轨道每条建议跑) |
| "自我开源" / "这条够真诚吗" / "open-source" | /oracle-open-source |
已 init + 有 draft(转化类轨道专用) |
| "模拟评论" / "换位思考" / "评论区预判" | /oracle-simulate-audience |
已 init(直接用 audience-profiles.md,发布前压力测试) |
| "AI 味" / "去 AI 味" / "读着不顺" | /oracle-no-ai-slop |
有 draft(预测前必跑) |
| "合规检查" / "查违禁词" | /oracle-compliance |
有 draft(发布前 gate,任意轮可复检) |
| "启动预测" / "start prediction" / "给这稿子打分并预测" | /oracle-predict |
已 init + 有最终稿 |
| "拍了 X" / "shot it" / "录完了" | /oracle-shoot |
对应预测已写(buffer +1) |
| "已发布" / "I shipped it" / "发布链接是 X" | /oracle-publish |
对应预测文件存在(buffer -1) |
| "置顶评论" / "引导评论" | /oracle-pinned-comment |
已发布(黄金窗口内) |
| "衍生内容" / "图文" / "切片" | /oracle-derivative |
已发布(T+1) |
| "复盘" / "retro this" / "T+3d 数据来了" | /oracle-retro |
对应预测文件存在 + 已过该轨道 retro 窗口 |
| "罗盘复盘" / "账号诊断" | /oracle-compass-retro |
已有 ≥2 期已复盘作品 |
| "升级 rubric" / "bump rubric" / "调整权重" | /oracle-bump |
校准池 ≥ MIN_SAMPLES_FOR_BUMP |
| "推荐选题" / "next topic" | /oracle-recommend |
candidates.md 存在且非空 |
| "抓热点" / "fetch trends" / "今天有什么可做的" | /oracle-trends |
trend-sources adapter 已配置(日常补充候选池) |
| "状态" / "status" / "看板" | /oracle-status |
任意时刻可调 |
| "迁移" / "升级 state" / "migrate" | /oracle-migrate |
已 init;git pull 拉了新版后;SessionStart hook 提示 schema mismatch 后 |
| "这次推荐不准" / "你判错了" / "记个教训" / "记产品反馈" | 反馈分流协议(见路由表下说明) | 任意时刻 |
反馈分流协议:用户指出 skill 判断/推荐不准 → 展示拟写入项(哪里不准 / 是否采纳 / 原因)→ 确认后一行追加 meta-retros/product-feedback.md(目录约定同 compass-retro Phase 7)。它只喂协作自进化(compass-retro Phase 5 的候选规则提取),不进 rubric_notes / 三档案 / 校准池——对系统的评价与创作者数据分离,防反馈污染校准。若反馈同时暴露新的创作者事实(如"我变现方式变了")→ 拆成独立拟议更新走档案写入确认协议(协作契约 #9),两件事不混写。
按需读取纪律:每次只读当前流程真正需要的文件,不默认加载全部方法论 / references / 模板——27 个子 skill + 12 份协议全量进上下文既浪费 token 也稀释注意力。各子 skill 的 Workflow 已声明自己要读什么,照声明读,不扩读。体积预算(棘轮,只许收紧)与跨文件同步规则见 MAINTENANCE.md;任务前要全局口径时用 python tools/context.py <项目根> --task <子skill后缀> 取 ≤6KB 摘要(只读),不逐字段全量解读 state。
协作契约(默认对所有用户生效)
从实战教训泛化的 8 条协作纪律,完整版见 shared-references/collaboration-contract.md:
- 方案菜单:改稿/修复默认出 2-4 个方案 + 每案特点/成本/风险 + ⭐推荐 + 等用户选;用户明确说「直接做/你就执行」才代选。
- 双角度交叉验证:每次改稿后重跑 score 对比(composite 前后值 + 各维度变化),不涨则回退提示;改稿日志同步贴对比,供 retro 回溯。
- 真实数据原则:禁止硬编占位时间/数字/事实;用
[等真实数据]模糊标记 + 显式提醒;用户贴真值立即替换并回溯清污染。 - 发现即改:发现问题直接改,改完报告结果;不输出「我发现问题了」的过程叙述。
- 术语即解释:任何分流/分叉/几问的术语首次提出必须配「这是 X,对应 Y 决策」解释。
- 假性确认防线:用户说「按你的意思执行」→ 先复述将动的具体项再动手;没明说的决策点列出来等拍板。
- 验证后报告:任何「完成」声明前必须 stat/read 验证文件实际状态;跑脚本看输出 marker,不只看 exit code。
- 不代答不甩锅:出选项 + 标推荐 + 等选是默认;既不甩锅式提问,也不未经同意代选。
- 档案写入确认:修改三份档案(user-profile / content-plan / audience-profiles)任何字段前,展示拟改字段 / 旧值→新值 / 依据 → 确认后落盘,并在档案末尾
## 变更记录追加一行(日期/字段/旧值→新值/依据;首次修订时创建该段)。compass-retro Phase 4.5 的规划修订拍板门是本条的结构化实例。 - 产出前自检:seed / title / description / cover 交付前内部过一遍通用质量门——开场命中强开场四原则与 ≥2 个钩子方向?用户视角("你")连续缺失 ≤2 段?核心信息倒金字塔前移?兴趣属性有内容支撑?——不满足先重写再交,不把半成品甩给用户。
🔴 必须拒绝的请求(🛑 STOP:命中即硬拒绝)
下列模式会直接破坏三条原则之一,无论用户怎么说,都拒绝执行:
- 「帮我预测一下,但我先告诉你播放量你来反推就行」→ 违反原则 #1。改用
_redo.md路径记为 reconstructed - 「能不能从 candidates 里直接挑 composite 最高的,不用解释理由」→ 拒绝。永远展示各维度评分和至少一个锚点对比
- 「跳过校准池重打,直接换公式」→ 违反原则 #2
- 「跳过外部模型审核,自己说了算」→ 仅当
CROSS_MODEL_AUDIT=false显式设置且 state file 标记自审时允许 - 「删掉这份预测,我想重写」→ 违反原则 #1。预测是 immutable。如有正当理由重做,写新文件
_redo.md,原版必须保留 - 「凭你的感觉给我推荐选题,不用打分」→ 拒绝。本工具不做 gut-feel forecast——那是它诞生之前的状态
- 「把 rubric_notes.md 里所有历史观察都留着,加个时间戳分组就行」→ 违反原则 #3。git history 是档案,不是 markdown 文件
- 「能不能把 THRESHOLD 从 4/5 降到 3/5 让这次 bump 过」→ 拒绝。改 THRESHOLD 本身是元层级 bump,单独走流程
详细的拒绝场景在每个子 skill 的 Refusals 段。
state 与路径约定
.oracle-state.json是全局唯一 state 文件(项目根下),不建每期 state。所有 shoots / pending_retros / calibration_samples / episodes / tracks 注册都合到这一份。操作前先读全局,验证已有事实,再追加。完整约定:shared-references/state-management.md- 项目根路径由 init 时用户配置,记录在 state 的
project_root;skill 包目录 ≠ 用户项目目录,用户数据永远落在项目根 - state schema:见 DESIGN.md §7.2 与
migrations/registry.md
平台坑备查
Windows / Obsidian / 文件锁 / 只读属性等平台特定问题,统一压缩在 references/platform-notes.md(写入 Permission denied → 先查 ReadOnly 属性与进程句柄;rename 被锁 → copy+delete fallback;文件夹名避开冒号等)。
文件清单
oracle-bone/
├── SKILL.md # 本文件(总协议 + 路由)
├── README.md # 门面
├── DESIGN.md # 设计文档(完整流程梳理)
├── skills/ # 27 个子 skill
│ ├── oracle-init/SKILL.md # 入口:五 Phase onboarding(档案+规划+画像+脚手架)
│ ├── oracle-learn-from/SKILL.md # 对标账号导入(拆 pattern + 派生 rubric 信号)
│ ├── oracle-apprentice/SKILL.md # 拜师拆稿(单条写法拆解 + 四步闭环内化)
│ ├── oracle-migrate/SKILL.md # schema 升级迁移
│ ├── oracle-trends/SKILL.md # 热点抓取(多 adapter)
│ ├── oracle-recommend/SKILL.md # 候选池排序推荐(按 plan 占比过滤)
│ ├── oracle-seed/SKILL.md # 对话式选题 + 起 draft(按 track 分流)
│ ├── oracle-score/SKILL.md # 单稿打分(不落盘)
│ ├── oracle-title/SKILL.md # 标题候选生成
│ ├── oracle-title-pick/SKILL.md # 淘汰制选标题 + 改名
│ ├── oracle-description/SKILL.md # 多平台简介
│ ├── oracle-cover/SKILL.md # 封面 prompt(按平台比例派生)
│ ├── oracle-cover-analyze/SKILL.md # 对标封面拆解(借结构不借元素 → cover-patterns.md)
│ ├── oracle-no-ai-slop/SKILL.md # AI 味检测与修正(预测前必跑)
│ ├── oracle-who-for/SKILL.md # 受众价值采访(流量/共鸣轨)
│ ├── oracle-open-source/SKILL.md # 自我开源度审查(转化轨)
│ ├── oracle-simulate-audience/SKILL.md # 评论区预演(基于 init 画像)
│ ├── oracle-compliance/SKILL.md # 平台合规审查
│ ├── oracle-predict/SKILL.md # 盲预测 + immutable 日志(核心)
│ ├── oracle-shoot/SKILL.md # 登记拍摄(buffer +1)
│ ├── oracle-publish/SKILL.md # 发布登记(buffer -1)+ 合规 gate
│ ├── oracle-pinned-comment/SKILL.md # 置顶评论生成
│ ├── oracle-derivative/SKILL.md # T+1 衍生内容
│ ├── oracle-retro/SKILL.md # 数据回收 + 复盘
│ ├── oracle-compass-retro/SKILL.md # 账号级罗盘复盘(规划修订候选)
│ ├── oracle-bump/SKILL.md # rubric 升级(全量重打 + 跨模型审)
│ └── oracle-status/SKILL.md # 状态看板(分轨 + buffer 警戒)
├── migrations/ # schema 演进单一来源
│ ├── registry.md # LATEST_SCHEMA + 版本链表
│ └── <from>-to-<to>.md # 每步迁移 WHAT/WHY/HOW
├── shared-references/ # 跨 skill 共享协议(12 份)
│ ├── blind-prediction-protocol.md # 原则 #1
│ ├── bump-validation-protocol.md # 原则 #2
│ ├── observation-lifecycle.md # 原则 #3
│ ├── prediction-anatomy.md # 合格预测的 7 组件
│ ├── candidate-schema.md # 候选项统一 schema
│ ├── cadence-protocol.md # 节奏协议(buffer 警戒 + 拍/发分离)
│ ├── state-management.md # state 读写约定
│ ├── revision-loop-protocol.md # 改稿闭环
│ ├── migration-protocol.md # schema 演进哲学
│ ├── content-folder-schema.md # 作品目录 schema
│ ├── content-funnel-protocol.md # init 内容漏斗采访协议
│ └── collaboration-contract.md # 协作契约
├── starter-rubrics/ # 各内容形态先验 rubric
│ ├── opinion-video.md # 观点视频(默认)
│ ├── opinion-video-zero.md # v0 等权占位(cold-start)
│ ├── conversion-video.md # 转化类视频
│ ├── long-form-essay.md # ⬜ 扩展位
│ └── short-form-text.md # ⬜ 扩展位
├── templates/ # skill 写进用户项目的文件骨架
│ ├── user-profile.template.md # init Phase 2
│ ├── content-plan.template.md # init Phase 3
│ ├── audience-profiles.template.md # init Phase 4
│ ├── rubric_notes.template.md
│ ├── prediction.template.md
│ ├── candidates.template.md
│ ├── content-assets.template.md
│ ├── audience-brief.template.md
│ ├── open-source-audit.template.md
│ ├── benchmark.template.md
│ ├── script_patterns.template.md
│ ├── workflow.template.md
│ ├── status.template.md
│ └── content.db.schema.sql
├── hooks/ # harness 强制层
│ ├── prediction-immutability.json/.sh # 阻断预测段编辑
│ ├── session-start.json/.sh # 会话自动状态报告
│ └── meta-logging.json / log-event.sh # 被动记录
├── tools/ # 独立 CLI 脚本
│ ├── context.py # 任务状态摘要(只读 ≤6KB;退出码 0/2/3,schema 漂移提示 migrate)
│ ├── score-curve.py # 预测精度收敛曲线(md-to-sqlite / validate-bump 预留)
│ ├── snapshot_store.py # 采集快照库(runs + snapshots 时序模型,latest vs prev diff)
│ ├── data_normalizer.py # 四平台作品数据统一归一器
│ ├── link_resolver.py # 发布链接解析 + 作品自动匹配(oracle-publish 用)
│ └── dashboard.py # 分析引擎:五维指标 + quantile 规则建议(compass-retro / status 用)
├── adapters/ # 数据源适配
│ ├── perf-data/ # 复盘数据源
│ ├── candidate-pool/ # 候选池数据源
│ ├── trend-sources/ # 热点抓取源
│ └── script-extraction/ # 视频/音频转脚本
├── references/ # 开放参考资料库(用户可自由添加)
│ ├── xu-zuohao-positioning-distill.md # 《做号》定位画像提炼(init 采访依据)
│ ├── dbskill-essence-distill.md # dbskill 精华提炼(九大模块 + 接线表)
│ ├── content-funnel-theory.md # 内容漏斗三层模型摘要
│ ├── conversion-track-playbook.md # 转化轨手册(13 条第一性原理 + 选题 6 问)
│ ├── hook-prototypes.md # 开场内容原型库(10 原型 + 留存优先级;seed/apprentice/title 消费)
│ └── platform-notes.md # Windows/Obsidian/文件锁平台坑
└── examples/
└── script_patterns.example.md # script_patterns 全填示例
🔴 Adapter 铁律(所有 runtime 通用,含 Codex 等)
- 所有 adapter 都是确定性 Bash 脚本——数据采集/转录/解析一律通过 shell 调脚本完成。禁止用 computer-use / GUI 自动化 / 视觉识别 / 亲手开浏览器点页面来替代 adapter 干活。脚本坏了 → 报错因 + 按各 adapter README 的失败模式速查修,换方式采集 = 绕过校准数据的确定性来源 = 拒绝
- 解释器必须用 adapter 自带的
.venv(依赖隔离,系统 python 没装 playwright/faster-whisper):<包根>= 本 SKILL.md 所在目录(skills/oracle-*/SKILL.md的上两级)- Windows:
<包根>\adapters\perf-data\auto-collect\.venv\Scripts\python.exe - macOS/Linux:
<包根>/adapters/perf-data/auto-collect/.venv/bin/python .venv不存在 → 按该 adapter README 的安装节先建(uv venv + uv pip install),不要换系统 python 硬跑
- 登录态/授权问题照各 adapter 的协议办(如 auto-collect 的
NEEDS_AUTH退出码 → 跑--auth-only),不要自创恢复动作
Tone & voice
写面向用户的文案(commit message / 复盘小结等)时,匹配项目的直白克制风格:
- 直接说出失败:「composite 8.47 但实际只有 16.8w——rubric 高估了 SR」
- 不要用模糊措辞软化:「这或许可能在某种程度上暗示...」——别这么写
给开发者:扩展本 skill
- 新增内容形态 → 加
starter-rubrics/<form>.md - 新增热点抓取源 → 加
adapters/trend-sources/<name>.md,符合 candidate-schema.md 输出契约 - 修改原则 → 改
shared-references/<protocol>.md,所有引用它的 skill 自动跟进 - 上下文预算 / 协议同步规则 / 发布前检查 → MAINTENANCE.md(tests/ 有预算棘轮测试)
- 修改路由 → 改本文件的"路由表"段
- 子 skill 内部细节 → 直接改对应
skills/oracle-*/SKILL.md - 用户想参考更多方法论 → 放
references/,子 skill 按需引用
完整设计见 DESIGN.md。