/up-Library-ingest — 编译素材到 Library
触发条件
- 用户输入
/up-Library-ingest或/up-Library-ingest <路径> - 用户说"编译素材"、"导入到知识库"、"ingest 这个文件"
编译范围
只编译以下 7 个目录中的 .md 文件,其他目录忽略:
| 编号 | 目录 | 内容 |
|---|---|---|
| 01 | 01-输入/01-Clipings/ |
网页剪藏 |
| 02 | 01-输入/02-get笔记/ |
Get 笔记插件同步内容 |
| 03 | 01-输入/03-微信/ |
微信文章、收藏 |
| 04 | 01-输入/04-选题/ |
选题素材 |
| 05 | 01-输入/05-口喷稿/ |
口播/口喷稿 |
| 06 | 01-输入/06-微信读书/ |
微信读书笔记 |
| 07 | 01-输入/07-Daily/ |
日常记录 |
归档目录:01-输入/archive/
文件命名规范
优先使用中文名称,专有名词保留英文原名(产品名、人名等)。
| 页面类型 | 命名规则 | 示例 |
|---|---|---|
| Sources | 摘要-<中文标题>.md |
摘要-Claude Code浏览器版.md |
| Entities | <中文名称>.md |
卡帕西.md、The Vibe Companion.md |
| Concepts | <中文名称>.md |
Lolm Wiki框架.md、本地知识库+大模型.md |
| Syntheses | kebab-case 或中文均可 | ai-coding-tools-对比分析.md |
判断原则:
- 有明确中文名的 → 用中文(如"卡帕西")
- 纯英文品牌/产品 → 保留英文原名(如
The Vibe Companion.md) - 混合场景 → 中文为主,英文保留(如
Lolm Wiki框架.md)
执行流程
1. 扫描待编译文件
指定路径时(/up-Library-ingest 01-输入/02-get笔记/Notes):只扫描该路径下的 .md 文件。
未指定路径时(/up-Library-ingest):扫描上述 7 个目录中的所有 .md 文件。
两种情况都排除已归档的(01-输入/archive/)。如未指定文件,列出未处理的文件供用户选择。
1.5 构建已编译文件检查表(防重复)
Get 笔记重新同步会把已归档的文件重新拉到源目录,且文件名后缀会变(如 _37 → _38)。需要在编译前排除已有对应页面的文件。
- 用 grep 扫描
Library/所有.md文件中sources:字段引用的源文件路径 - 归一化文件名(去掉
_数字后缀)建立检查表 - 扫描源目录时,跳过检查表中已存在的文件
- 记录「新文件」和「已编译跳过」的数量,供 Step 2 展示
grep -rh "^sources:" Library/ --include="*.md" \
| grep -oP '01-输入/[^ ,\]]+\.md' \
| sed 's/_[0-9]*\.md$//' \
| sort -u > /tmp/compiled_sources.txt
2. 用户确认
向用户展示扫描结果,格式如下:
扫描结果:
- 新文件:XX 个(待编译)
- 已编译:XX 个(自动跳过)
- 合计:XX 个
等待确认后继续。如未指定文件,列出新文件供用户选择。
3. 7 个子代理并行编译
同时启动 7 个 Agent(前台并行),每个 Agent 负责一个目录:
| Agent | 目录 |
|---|---|
| Agent-01 | 01-输入/01-Clipings/ |
| Agent-02 | 01-输入/02-get笔记/ |
| Agent-03 | 01-输入/03-微信/ |
| Agent-04 | 01-输入/04-选题/ |
| Agent-05 | 01-输入/05-口喷稿/ |
| Agent-06 | 01-输入/06-微信读书/ |
| Agent-07 | 01-输入/07-Daily/ |
每个子代理的职责:
- 读取分配到的目录中的所有
.md文件 - 读取
Library/index.md了解现有页面 - 从每个源文件中提取:
- 核心事实:关键数据、结论、发现
- 实体:涉及的工具、产品、人物、公司
- 概念:涉及的方法论、框架、技术概念
- 生成页面(直接写入
Library/对应目录):- 来源摘要 →
Library/sources/摘要-<中文标题>.md - 新实体 →
Library/entities/<中文名称>.md - 新概念 →
Library/concepts/<中文名称>.md - 已存在 → 增量合并,不覆盖旧内容
- 信息冲突 → 新建
## 知识冲突区块,保留两种说法
- 来源摘要 →
- 返回处理结果清单(创建/更新的页面列表、冲突列表)
子代理 prompt 模板:
你是 Library 编译子代理,负责处理 `01-输入/<目录>/` 中的文件。
## 任务
1. 列出该目录下所有 .md 文件(排除 archive/)
2. 读取 `Library/index.md` 了解现有页面
3. 逐个读取源文件,提取实体、概念、核心事实
4. 按以下规范写入页面:
- 来源摘要 → `Library/sources/摘要-<中文标题>.md`
- 实体 → `Library/entities/<中文名称>.md`(中文名优先,专有名词保留英文)
- 概念 → `Library/concepts/<中文名称>.md`
- 已存在的页面 → 增量合并,冲突处加 `## 知识冲突`
5. 所有页面必须有 `## 关联连接`
6. 返回清单:创建了哪些页面、更新了哪些页面、有哪些冲突
## 命名规范
- 优先中文:卡帕西.md、Lolm Wiki框架.md
- 纯英文品牌保留原名:The Vibe Companion.md
- 来源摘要前缀:摘要-<中文标题>.md
## 页面模板
遵循 `Library/schema.md` 中的四类模板(Sources/Entities/Concepts/Syntheses)。
使用简体中文编写所有内容。
执行方式:7 个 Agent 使用 run_in_background: false(前台等待),在同一条消息中并行发出(同一 message 多个 Agent tool call)。如果某目录无待处理文件,该 Agent 直接返回"无待处理文件"。
4. 主代理:去重合并与汇总
所有子代理完成后,主代理执行:
- 去重检查:检查 7 个 Agent 是否创建了同名实体/概念页面,处理冲突(合并内容或保留更完整的版本)
- 更新
Library/index.md:汇总所有新页面,添加到对应分类下 - 追加
Library/log.md:## [YYYY-MM-DD] ingest | 并行编译 N 个文件 - **处理文件**: 列出所有源文件路径 - **创建页面**: [[摘要-xxx]], [[实体名]], [[概念名]] ... - **更新页面**: [[已有实体]](增量合并) - **冲突**: 无(或描述冲突及处理方式) - **并行代理**: 7 个,其中 X 个有文件,Y 个为空
5. 归档源文件
将已处理的源文件移动到 01-输入/archive/(保留原始目录结构)。
⚠️ 02-get笔记 目录的特殊规则:
01-输入/02-get笔记/ 下有多个子目录和文件,归档时只移动 Notes/ 子目录下的 .md 文件,不动以下内容:
get attachment/(附件目录,不动)Get Canvas.canvas(画布文件,不动)Get Moments.md(动态文件,不动)
即:只归档 01-输入/02-get笔记/Notes/**/*.md,其余保持原位。
归档后清理:移动完文件后,删除源目录中遗留的空子目录(如日期文件夹),保持目录整洁。
约束
- 只编译上述 7 个目录中的文件,其他目录(
01-输入/研究/、01-输入/素材/等)不处理 - 绝不修改
01-输入/中的源文件内容 - 绝不读取
01-输入/archive/中已归档的文件(除非用户明确要求) - 每个 wiki 页面必须有
## 关联连接 - 使用简体中文编写所有内容
- 文件名优先使用中文,专有名词保留英文原名