| name | ingest |
| description | 将 笔记/ 目录下的原始资料编译到 笔记/Wiki/ 知识网络中。支持 Explore 子智能体并行扫描、Memory 记忆跨会话去重、冲突自动检测。使用 /ingest 扫描全部或 /ingest <path> 处理指定文件。 |
| user-invocable | true |
ingest 技能 v2.0
核心定位
Ingest 是知识工厂的编译流水线:将原始资料(文章、论文、转录稿)自动编译成结构化的知识网络。Claude Code 不再是"帮你整理笔记",而是"直接把活干了"。
架构升级 v2.0:
- ✅ 支持 Explore 子智能体并行扫描
- ✅ 集成 Memory 系统跨会话去重
- ✅ 冲突检测粒度细化到段落级
- ✅ MCP 协议支持飞书/微信来源
目录结构约定
nolebase-template/
├── 笔记/ ← 原始资料(只读不改)
│ ├── Claude code/ Claude Code 相关笔记
│ ├── Codex/ Codex 相关笔记
│ ├── Obsidian/ Obsidian 相关笔记
│ ├── github/ GitHub 相关笔记
│ └── other/ 其他笔记
└── 笔记/Wiki/ ← 编译输出层
├── sources/ 来源摘要(1 源文件 → 1 source)
├── entities/ 实体:人/公司/产品/工具
├── concepts/ 概念:框架/理论/方法论
└── syntheses/ 综合:跨源分析总结
触发逻辑
| 触发方式 | 行为 |
|---|
/ingest | 用 Explore 子智能体扫描 笔记/ 所有子目录(排除 Wiki/) |
/ingest <path> | 仅处理指定文件或目录 |
| 隐式触发 | 用户说"把这个资料加进去"、"摄入这篇文章"时自动执行 |
编译流水线(v2.0 增强版)
前置检查:Memory 去重
第一步永远检查 Memory:
- 调用 Memory 系统查询该文件是否已处理过
- 已处理 → 询问用户是否需要重新编译
- 未处理 → 继续流程,处理后记录到 Memory
步骤 1:Explore 子智能体并行扫描
当文件 > 3 个时,自动启用 Explore 子智能体:
子智能体任务分配:
├── Agent 1:扫描 Claude code/,提取每篇的核心实体/概念
├── Agent 2:扫描 Codex/,提取代码工具相关实体/概念
└── Agent 3:扫描 Obsidian/,提取插件与工作流相关实体/概念
主智能体只做最终决策,不做体力活。
步骤 2:源文件读取与预处理
| 文件类型 | 处理方式 |
|---|
.md | 完整读取,自动识别 Markdown 结构 |
.pdf | 尝试提取文本,失败则记录元信息(文件名、页数、URL) |
| 音频/视频 | 提取转录稿,处理成结构化文本 |
硬约束: 绝对不修改 笔记/ 下的任何源文件内容。
步骤 3:知识提取与翻译
从源文件中提取三类知识节点:
| 类型 | 判定标准 | 输出目录 |
|---|
| Entity 实体 | 具体名词:人、公司、产品、工具、项目 | 笔记/Wiki/entities/ |
| Concept 概念 | 抽象名词:框架、理论、方法论、模式 | 笔记/Wiki/concepts/ |
| Claim 主张 | 可验证的观点、结论、数据 | 写入对应页面的知识冲突区 |
非中文内容自动翻译成中文,保留关键术语的英文原文。
步骤 4:创建来源摘要(Source)
在 笔记/Wiki/sources/ 创建页面,文件名:摘要-{slug}.md
---
title: "摘要-{源文件名称}"
type: source
tags: [来源, 文章/论文/转录]
sources: [笔记/Claude code/xxx.md]
last_updated: YYYY-MM-DD
confidence: high/medium/low
---
## 核心摘要
[3-5 句话的中立总结,不加入 AI 自己的观点]
## 关键数据
- [数据点 1]
- [数据点 2]
## 关联连接
- [[EntityName]] — 提到的实体
- [[ConceptName]] — 涉及的概念
步骤 5:增量更新实体/概念页面
对每个提取出的实体/概念:
Case A:页面不存在
按照 Frontmatter 规范创建新页面
Case B:页面已存在
- 读取现有内容
- 段落级比对,只追加真正的新信息
- 发现冲突 → 触发冲突处理流程
增量更新原则: 宁可不加,不要覆盖。宁可重复,不要丢失。
Case C:发现知识冲突
立即暂停,向用户报告:
⚠️ 发现知识冲突
页面:[[页面名称]]
已有主张:[旧内容]
新主张:[新内容]
来源差异:[源文件 A vs 源文件 B]
请选择处理方式:
A) 两者都保留,标注为"知识冲突"
B) 用新知识覆盖(确认来源更权威)
C) 跳过本条,保留旧知识
D) 终止本次 ingest,人工处理
步骤 6:更新全局注册表
更新 笔记/Wiki/index.md:
- Sources:
[[摘要-source-slug]] — 该资料的核心主旨
- Entities:
[[EntityName]] — 该实体的身份定义
- Concepts:
[[ConceptName]] — 该概念的核心定义
更新 笔记/Wiki/log.md:
追加操作日志(Append-only,不改历史):
## [YYYY-MM-DD] ingest | 处理了 N 个文件
- 新增 Sources:[[A]], [[B]], [[C]]
- 新增 Entities:[[X]], [[Y]]
- 更新 Concepts:[[Z]]
- 冲突:无 / 发现 N 个冲突(已暂停等待决策)
步骤 7:Memory 记录
确认以下全部完成后:
- sources 页面已创建
- 实体/概念页面已创建或更新
- index.md 已更新
- log.md 已更新
- 所有冲突已解决
执行:
- 在 Memory 系统记录:
{filename} 已 ingest,日期 YYYY-MM-DD
- 源文件保留在原位(笔记可继续编辑,下次 ingest 增量更新)
v2.0 增强特性
1. Explore 子智能体
- 文件 > 3 个时自动启用并行处理
- 每个子智能体专注一类资料类型
- 主智能体负责质量检查与冲突处理
2. Memory 跨会话去重
- 自动记录已处理的文件 hash
- 重复 ingest 时主动提醒:"这个文件 4 月 12 日已经处理过,是否需要重新编译?"
3. 段落级冲突检测
- v1.0:页面级冲突 → 太粗
- v2.0:段落级冲突 → 只对有差异的部分提问
- 标注置信度:
confidence: high/medium/low
4. MCP 来源支持
- 支持从飞书文档直接 ingest:
/ingest https://feishu.cn/doc/xxx
- 支持从微信聊天记录 ingest
- 自动保留原始来源链接
硬约束(绝对不能违反)
- ✅ 笔记 只读不改:源文件永远只读,不移动、不修改
- ✅ 冲突必须暂停:新旧知识矛盾时,绝不自行决定,必须问人
- ✅ 绝对不编造:没有的内容,宁可空着,不能瞎写
- ✅ 所有页面必须有双链:不能产生孤岛页面
- ✅ 所有操作必须记 log:审计可追溯,Append-only 不改历史
关联连接
- [[Skill_Lint]] — ingest 完成后必须运行 lint 检查
- [[Skill_Query]] — 基于编译完成的知识问答
- [[Memory_System]] — 跨会话去重的记忆系统
- [[Five_Layer_Architecture]] — 知识库五层架构设计