원클릭으로
ob-compile
将 raw/ 层已有的资料编译到 wiki/{theme}/,支持增量更新和按主题合并编译
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
将 raw/ 层已有的资料编译到 wiki/{theme}/,支持增量更新和按主题合并编译
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
在需要打包、签名、OTA、APK/IPA、GitHub Release、商店提交、部署、回滚或验活时使用;支持独立窄任务,也支持作为 app-flow 的当前行动。它核对具体渠道授权,可复用用户明确记录的项目级 preview OTA 持续授权并在验证通过后自动发布;未获授权只做预检。
把自然语言 App 需求、模块说明和参考截图一路推进到经验证的代码与当次授权交付;用于需要长时间自主开发、持续排障和跨上下文恢复的移动端或跨端 App 任务。它不固定技术栈、阶段或交付形式,也不会把无人值守理解为远端发布授权。
在需要与生产者分离的独立评审、复核、验收,或对 App 方案、UI、代码、体验或交付准备度做质量判断时使用;支持独立窄任务,也支持作为 app-flow 的当前行动。它只做只读评判并绑定真实证据,不创建或修改产物,也不做第一方定位根因或直接改代码。
在设计、开发或交付 App 时按需参考 Happy/Paws 经验,包括移动端架构、React Native/Expo 取舍、验证、OTA、安装包与 Release 边界。用于用户明确要求参考 Happy/Paws,或当前问题与这些真实工程经验高度匹配时;它只提供上下文,不是 App Workflow,也不强制复制 Happy 的技术栈。
在需要创建、修改、重构、修复 App 代码,或只读诊断崩溃、定位根因、给出候选补丁时使用;支持独立窄任务,也支持作为 app-flow 的当前行动。它不做产品调研、原型/设计、独立评审或打包发布,除非当前行动本身就是改代码。
作为 self-learning 的 HyperFrames 产出能力,自主学习本地教学音视频或公开视频链接,把教程讲授的方法、可观察动效和屏幕代码转成有证据、可恢复、可渲染的 HyperFrames Demo,并记录实际使用的内容、Skills、工具与可复用经验。仅在 self-learning 调用,或用户明确要求从教学素材制作 HyperFrames Demo 时使用;普通学习任务不要单独触发。
| name | ob-compile |
| description | 将 raw/ 层已有的资料编译到 wiki/{theme}/,支持增量更新和按主题合并编译 |
触发词:
- 编译到 wiki / 编译 raw / 编译归纳
- ob-compile / compile
- 把 raw 编译到 wiki
- 增量编译 / 更新 wiki
- 重新编译 / 全量编译
示例:
- "ob-compile 王站岗"
- "编译王站岗的 raw 到 wiki"
- "增量编译王站岗新视频"
- "重新编译王站岗全部 wiki"
- "把 raw/战国时代_姜汁汽水/ 编译到 wiki"
gsd:workflow gsd:meta ob-compile 编译到 wiki、ob-compile、编译 raw、增量编译、重新编译 OBSIDIAN_REPO,Read,Write,Edit,Bash,Glob,Grep,AskUserQuestion 已确认编译目标和模式 已确认主题分类方案 编译完成并验证输出 只读取 raw/ 层已有文件,不执行采集 主题合并编译的文件名不加日期前缀(活文档) 增量更新时不覆盖已有 wiki 的结构,追加新内容 全量重编译时覆盖已有 wiki 文件 每个 wiki 文件必须有唯一 article_id 编译完成后将 raw 文件 frontmatter status 改为 compiled(这是 ob-index 判断是否已编译的依据) </gsd:meta>
gsd:goal将 raw/ 层资料编译归纳到 wiki/{theme}/,更新索引。</gsd:goal>
<gsd:phase name="scan" order="1"> gsd:step委托 ob-router skill 解析当前激活仓库路径</gsd:step> gsd:step扫描 raw/{author}/ 下的文件,统计已编译和未编译数量</gsd:step> gsd:step确认编译模式和目标范围</gsd:step> gsd:checkpoint用户确认编译目标和模式</gsd:checkpoint> </gsd:phase>
<gsd:phase name="classify" order="2"> gsd:step按文件标题/内容关键词自动分类到主题</gsd:step> gsd:step展示分类结果供用户调整</gsd:step> gsd:checkpoint用户确认主题分类方案</gsd:checkpoint> </gsd:phase>
<gsd:phase name="compile" order="3"> gsd:step按主题分组,并行启动 Sub Agent 编译</gsd:step> gsd:step每个 Sub Agent 读取 raw 文件并生成 wiki 归纳笔记</gsd:step> gsd:step验证所有输出文件和 article_id 唯一性</gsd:step> gsd:checkpoint编译完成并验证</gsd:checkpoint> </gsd:phase>
<gsd:phase name="index" order="4"> gsd:step更新 wiki/{theme}/index.md</gsd:step> gsd:step更新 wiki/index.md</gsd:step> gsd:step更新 wiki/log.md</gsd:step> gsd:step更新 raw/index.md(作者索引)</gsd:step> gsd:step将已编译的 raw 文件 status 改为 compiled</gsd:step> </gsd:phase> </gsd:workflow>
【硬约束】仓库路径一律委托 ob-router skill 解析,本 skill 不自行读取路径文件。
调用 ob-router skill 获取 $OBSIDIAN_REPO:
ob-router init 持久化将 ob-router 返回的路径保存为 $OBSIDIAN_REPO,后续全程使用此变量。
4. 确认 raw/ 和 wiki/ 目录存在
根据用户输入确定编译目标:
| 输入 | 目标 |
|---|---|
ob-compile 王站岗 | raw/王站岗/ 下所有文件 |
ob-compile --author 王站岗 | 同上 |
ob-compile (无参数) | 扫描所有 raw/{author}/ 和 raw/{category}/,展示可编译列表供选择 |
通过 raw 文件的 frontmatter status 字段判断编译状态(uncompiled / compiled)。
# 统计目标目录下文件数量和编译状态
grep -l "status: uncompiled" raw/{author}/*.md | wc -l # 未编译
grep -l "status: compiled" raw/{author}/*.md | wc -l # 已编译
ls raw/{author}/*.md | wc -l # 总数
状态追踪约定:不使用
.kb/manifest.json,统一通过 raw 文件的statusfrontmatter 字段追踪编译状态。ob-index 也依赖此字段判断未编译内容。
| 模式 | 触发条件 | 行为 |
|---|---|---|
| 增量 (incremental) | 默认;已有 wiki 存在时 | 只编译 status: uncompiled 的 raw 文件,通过观点对齐流程合并到已有 wiki(详见 3.6) |
| 全量 (full) | 用户说"重新编译"/--mode full | 重新编译所有 raw 文件,覆盖已有 wiki(覆盖前自动备份) |
| 主题合并 (thematic) | raw 文件 ≥ 20 篇时默认推荐 | 按主题分组,每组生成一篇综合 wiki(活文档) |
展示扫描结果,让用户确认编译模式。
⚠️ Checkpoint — 用户确认编译目标和模式后继续
读取所有 raw 文件的 frontmatter(标题、tags、source)和前 20 行内容,按关键词自动分类:
| 主题 | 目录 | 关键词 |
|---|---|---|
| AI 技术 | wiki/ai/ | AI, LLM, GPT, transformer, 机器学习 |
| Claude 生态 | wiki/claude/ | Claude, Claude Code, Skills, MCP |
| 开发工具 | wiki/dev-tools/ | VSCode, IDE, CLI, Git |
| 前端开发 | wiki/front-end/ | React, JavaScript, TypeScript, CSS |
| 时事分析 | wiki/current-affairs/ | 经济, 政治, 金融, 投资, 股市 |
| 职业发展 | wiki/career/ | 职级, 面试, 职业规划 |
| Obsidian | wiki/obsidian/ | Obsidian, 知识管理 |
无匹配时归入最接近的主题,或自动创建新主题目录。
在主题目录内,进一步按内容关键词分组。例如时事分析下的子主题:
📁 编译分类方案:
├── 时事分析 (current-affairs/)
│ ├── 投资哲学与方法论 → 王站岗-投资哲学与方法论.md (21 篇)
│ ├── 个股分析与估值 → 王站岗-个股分析与估值.md (53 篇)
│ ├── 美股港股与商品投资 → 王站岗-美股港股与商品投资.md (36 篇)
│ ├── 实盘操作与战绩 → 王站岗-实盘操作与战绩.md (19 篇)
│ └── A股市场复盘编年 → 王站岗-A股市场复盘编年.md (163 篇)
└── [其他主题...]
⚠️ Checkpoint — 用户确认分类方案后继续(可调整分组、合并或拆分)
| 任务数 | 策略 |
|---|---|
| 1-4 篇 raw → 1 篇 wiki | 主会话直接处理 |
| 5-50 篇 raw → 1 篇 wiki | 1 个 Sub Agent |
| 多组主题 | 并行 Sub Agent(≤ 4 并发) |
每个 Sub Agent 接收:
---
article_id: OBA-{随机8位}
tags: [{主题标签}, {作者名}, 归纳]
type: summary
updated_at: {YYYY-MM-DD}
---
# {作者}:{主题标题}
> **作者**: {author}
> **来源**: {来源平台}
> **提取时间**: {date}
> **涵盖视频/文章**: {N} 个
---
## 核心观点
### 1. {观点标题}
简明扼要地概括这个观点(2-5句话)。
→ [[raw/{author}/{filename}#M:SS]]
### 2. {观点标题}
...
## 关键引用
> [原文金句1] — [[raw/{author}/{filename}]]
## 我的思考
[待补充]
---
#音频笔记 #{author} #{主题} #归纳
---
article_id: OBA-{随机8位}
tags: [{主题标签}, {作者名}, 归纳]
type: summary
updated_at: {YYYY-MM-DD}
---
# {标题} - 归纳
> **作者**: {author}
> **来源**: {url}
> **原文**: [[raw/{author}/{filename}]]
## 核心观点
### 1. {观点标题}
概括 + [[raw/{author}/{filename}#M:SS]]
## 关键引用
> [金句] — [[raw/{author}/{filename}]]
## 我的思考
[待补充]
[[raw/{author}/{filename}#M:SS]] 链接# 生成
python3 -c "import random,string; print(''.join(random.choices(string.ascii_lowercase+string.digits,k=8)))"
# 验证唯一性
grep -rh "OBA-{生成的ID}" "$OBSIDIAN_REPO/wiki/" --include="*.md"
incremental 模式不是机械追加,必须做「观点对齐」避免内容碎裂。
| 与 existing 的关系 | 处理方式 |
|---|---|
| 重复(讨论同一论点) | 不新增观点,把新 raw 引用追加到该 existing 观点的「raw 引用列表」 |
| 补充(深化某 existing 观点的细节/案例) | 不新增观点,把新内容 merge 到该 existing 观点的描述段落 |
| 反驳/矛盾(与 existing 观点对立) | 保留为新观点,并在原 existing 观点处加注「← 与观点 #N 冲突」 |
| 全新角度 | 追加为新观点 #M |
判断标准:使用语义相似度,不靠字面匹配。建议:
updated_at、涵盖视频/文章 数量## [{date}] +{N} 篇 raw / 新增 {X} 观点 / 强化 {Y} 观点 / 冲突 {Z}compiled当新增 raw 的主题与现有所有 thematic wiki 都不匹配时:
| 累积同新主题的 uncompiled raw 数 | 行为 |
|---|---|
| ≥ 5 篇 | 自动开新主题 — 新建一篇 thematic wiki,归入对应 wiki/{theme}/ |
| < 5 篇 | 暂存 — raw 保持 uncompiled 状态,等达到阈值或用户主动触发 full 模式 |
提示用户:
检测到 N 篇 raw 不匹配现有 thematic wiki,暂存中(等达到 5 篇阈值后自动开新主题)。
当前暂存:{主题猜测} - {N} 篇
incremental 反复增量更新会让 wiki 越来越臃肿。当累积新增达到阈值时,提示用户考虑 full 模式重新综合:
| 累积新增 raw / 原 raw 总数 | 行为 |
|---|---|
| < 20% | 静默继续 incremental |
| 20% - 50% | 提示「累积新增达 N%,建议考虑 full 模式重新综合」 |
| > 50% | 强烈建议 full 模式,需要用户明确确认是否继续 incremental |
full 模式会覆盖已有 wiki,会丢失用户在「## 我的思考」段落的手写内容——所以必须用户明确确认。建议在覆盖前自动备份到 wiki/{theme}/.archive/{filename}-{date}.md。
直接覆盖已有 wiki 文件,重新生成全部内容。
⚠️ Checkpoint — 所有 Sub Agent 完成后,验证输出文件
| 文件 | 操作 |
|---|---|
wiki/{theme}/index.md | 追加新文章条目 |
wiki/index.md | 更新文章总数、主题篇数 |
wiki/log.md | 追加编译日志 |
raw/index.md | 添加或更新作者条目 |
将已编译的 raw 文件的 frontmatter status 从 uncompiled 改为 compiled。
## [{date}] compile | {标题}
### 批次概要
- **来源**: raw/{author}/
- **编译模式**: thematic/incremental/full
- **输出目录**: wiki/{theme}/
### 生成文件
| 主题 | 文件 | article_id | raw 篇数 |
|------|------|-----------|----------|
| {主题} | {filename} | OBA-{id} | {N} |
| 编译模式 | 命名格式 | 示例 |
|---|---|---|
| 主题合并 | {作者}-{主题}.md(无日期前缀) | 王站岗-投资哲学与方法论.md |
| 单篇编译 | {YYYY-MM-DD}-{slug}.md | 2026-04-30-大电池单日涨15%-归纳.md |
| 增量更新 | 保持原文件名不变 | — |