Memory Ingest
Turn raw, unstructured input into structured Basic Memory entities. Meeting transcripts, conversation logs, pasted documents, email threads — anything with information worth preserving gets parsed, cross-referenced against existing knowledge, and written as proper notes.
When to Use
- - User pastes a meeting transcript or conversation log
- User says "process these notes" or "add this to Basic Memory"
- User pastes a document, article, or email for knowledge extraction
- Any time raw external text needs to become structured knowledge
Workflow Overview
CODEBLOCK0
Step 1: Parse Raw Input
Read the pasted content and identify its structure:
- - Format: Meeting transcript, email thread, conversation log, article, freeform notes
- Date: When this happened (extract from content or ask)
- Participants: Who was involved (names, roles, organizations)
- Sections: Any existing structure (headings, speaker labels, timestamps)
Don't rewrite or summarize the source content. Preserve it verbatim in the note — you'll add structured observations alongside it.
Step 2: Extract Entities
Scan the content for entities worth tracking in the knowledge graph:
| Entity Type | Signals |
|---|
| Person | Names with roles, titles, or affiliations mentioned |
| Organization |
Company names, agencies, institutions |
|
Topic/Concept | Technical domains, methodologies, standards discussed substantively |
|
Action Item | Commitments, deadlines, "I'll do X by Y" statements |
Infer type from context. If someone is introduced as "CTO of Acme Corp", that's both a Person and an Organization entity. If a technology is discussed in depth, it might warrant a Concept entity.
Exclude noise. Not every name mentioned is worth an entity. Filter for:
- - People with substantive roles or interactions (not passing mentions)
- Organizations discussed in business/technical context
- Topics with enough detail to warrant their own note
Step 3: Search Existing Entities
For each extracted entity, search Basic Memory with multiple query variations:
CODEBLOCK1
Classify each entity as:
- - Existing — found in Basic Memory. Will link to it with
[[wiki-link]]. - Proposed — not found. Will propose creation pending approval.
Step 4: Research New Entities (Optional)
For proposed entities where more context would be valuable, do a brief web search (2-3 queries max per entity):
- - Organizations: What they do, size, public/private, key products
- People: Current role, background, expertise
- Topics: Brief definition, relevance
Use hedging language ("appears to be", "estimated", "based on public information"). Never fabricate details.
This step is optional — skip it if the source material provides enough context, or if the user is in a hurry. See the memory-research skill for deeper research workflows.
Step 5: Present Entity Proposal
Before creating anything, present what you found and what you'd like to create:
CODEBLOCK2
Include enough context with each proposed entity for the user to make a quick decision.
Step 6: Create the Source Note
Create the primary note for the ingested content. This is the "record of what happened" — it preserves the raw material and adds structured metadata.
Meeting / Conversation Note
CODEBLOCK3
Document / Article Note
CODEBLOCK4
Observation Categories
Use categories that capture the nature of the information. Common categories for ingested content:
| Category | Use For |
|---|
| INLINECODE1 | Business or collaboration opportunities identified |
| INLINECODE2 |
Decisions made or agreed upon |
|
insight | Non-obvious understanding gained |
|
next_step | Concrete action items or follow-ups |
|
sentiment | Enthusiasm, concerns, hesitations expressed |
|
risk | Risks or concerns identified |
|
requirement | Requirements or constraints discovered |
|
key_finding | Important facts from reference material |
|
technique | Methods, approaches, or patterns described |
|
context | Background information that may be useful later |
Invent categories as needed — these are suggestions, not a fixed list.
Step 7: Create Approved Entities
For each entity the user approved, create a structured note. Match the entity type to an appropriate template.
Person
CODEBLOCK5
Organization
CODEBLOCK6
Concept / Topic
CODEBLOCK7
Adapt templates to your domain. The key elements are: type and tags as parameters, an overview section, observations with categories, and relations linking back to the source.
Step 8: Extract Action Items
Review the source content for commitments and follow-ups:
CODEBLOCK8
If using the memory-tasks skill, create Task notes for your action items. Otherwise, capture them as observations in the source note.
Guidelines
- - Preserve source content verbatim. The original text is the ground truth. Structure and observations are your interpretation layered on top.
- Search before creating. Always check if entities already exist (see memory-notes search-before-create pattern). Update existing entities with new information rather than creating duplicates.
- Get approval for new entities. Present proposed entities and let the user decide which to create. Don't silently populate the knowledge graph.
- Infer, don't interrogate. Extract entity types and relationships from context. Only ask the user when genuinely ambiguous.
- Be selective about entities. Not every name mentioned deserves its own note. Focus on entities the user will want to reference again.
- Use hedging for researched info. Web research supplements — don't present it as fact. "Appears to be", "estimated", "based on public information".
- Link everything back. Every created entity should relate back to the source note. The source note should link to all entities discussed.
- Prose and observations together. Notes work best with both narrative context and structured observations. Prose gives meaning and tells the story; observations make individual facts searchable. Use the body for context, then distill key facts into categorized observations.
记忆摄取
将原始、非结构化的输入转化为结构化的基本记忆实体。会议记录、对话日志、粘贴的文档、邮件线程——任何值得保存的信息都会被解析、与现有知识进行交叉引用,并以适当的笔记形式写入。
何时使用
- - 用户粘贴会议记录或对话日志
- 用户说处理这些笔记或将其添加到基本记忆
- 用户粘贴文档、文章或邮件以进行知识提取
- 任何需要将原始外部文本转化为结构化知识的情况
工作流程概览
- 1. 解析原始输入 → 识别结构,提取关键信息
- 提取实体 → 人员、组织、主题、行动项
- 搜索现有实体 → 多变量查询
- 研究新实体 → 可选的网络研究(参见记忆研究)
- 呈现实体提案 → 创建前获得批准
- 创建源笔记 → 逐字内容 + 观察 + 关系
- 创建已批准的实体 → 为每个新实体创建结构化笔记
- 提取行动项 → 后续跟进和承诺事项
步骤1:解析原始输入
阅读粘贴的内容并识别其结构:
- - 格式:会议记录、邮件线程、对话日志、文章、自由格式笔记
- 日期:事件发生时间(从内容中提取或询问)
- 参与者:涉及的人员(姓名、角色、组织)
- 章节:任何现有结构(标题、发言者标签、时间戳)
不要重写或总结源内容。在笔记中逐字保留——你将在其旁边添加结构化观察。
步骤2:提取实体
扫描内容,找出值得在知识图谱中追踪的实体:
| 实体类型 | 信号 |
|---|
| 人员 | 提及姓名并带有角色、头衔或隶属关系 |
| 组织 |
公司名称、机构、组织 |
|
主题/概念 | 实质性讨论的技术领域、方法论、标准 |
|
行动项 | 承诺、截止日期、我将在Y时间前完成X的陈述 |
从上下文中推断类型。 如果有人被介绍为Acme Corp的CTO,那既是人员实体也是组织实体。如果某项技术被深入讨论,可能值得创建一个概念实体。
排除噪音。 并非每个提到的名字都值得成为实体。筛选条件:
- - 具有实质性角色或互动的人员(而非随口提及)
- 在业务/技术背景下讨论的组织
- 细节足够丰富、值得拥有独立笔记的主题
步骤3:搜索现有实体
对于每个提取的实体,使用多种查询变体搜索基本记忆:
python
人员 — 尝试全名、姓氏
search_notes(query=Sarah Chen)
search_notes(query=Chen)
组织 — 尝试全名、缩写、首字母缩略词
search_notes(query=National Renewable Energy Laboratory)
search_notes(query=NREL)
主题 — 尝试完整术语和关键词
search_notes(query=edge computing)
search_notes(query=edge inference)
将每个实体分类为:
- - 现有 — 在基本记忆中找到。将使用[[wiki-link]]链接。
- 提议 — 未找到。将提议创建,待批准。
步骤4:研究新实体(可选)
对于需要更多上下文的提议实体,进行简短的网络搜索(每个实体最多2-3次查询):
- - 组织:业务范围、规模、上市/私有、主要产品
- 人员:当前角色、背景、专长
- 主题:简要定义、相关性
使用模糊措辞(似乎是、估计、基于公开信息)。切勿编造细节。
此步骤为可选——如果源材料提供了足够的上下文,或者用户时间紧迫,可以跳过。参见记忆研究技能以了解更深入的研究工作流程。
步骤5:呈现实体提案
在创建任何内容之前,展示你找到的内容以及你想要创建的内容:
在基本记忆中找到的实体:
- [[Sarah Chen]](人员 — 现有)
- [[Acme Corp]](组织 — 现有)
提议的新实体:
- Jordan Rivera(人员 — NovaTech工程副总裁,被提及为项目负责人)
- NovaTech(组织 — SaaS平台,B轮,被讨论为集成合作伙伴)
- 联邦学习(概念 — 讨论的核心技术主题)
全部批准 / 单独选择 / 跳过实体创建?
为每个提议的实体提供足够的上下文,以便用户快速做出决定。
步骤6:创建源笔记
为摄取的内容创建主笔记。这是事件记录——它保留原始材料并添加结构化元数据。
会议/对话笔记
python
write_note(
title=NovaTech会议 - Jordan Rivera - 2026年2月22日,
directory=meetings/2026,
note_type=meeting,
tags=[meeting, novatech, federated-learning],
metadata={date: 2026-02-22},
content=
NovaTech会议 - Jordan Rivera - 2026年2月22日
关于本次会议内容的简要一句话总结。
记录
[逐字保留所有源内容 — 不要总结或重写]
观察
- - [机会] NovaTech对集成合作伙伴关系感兴趣
- [洞察] 他们的平台处理10K并发会话,与我们的规模需求相关
- [下一步] 周五前发送技术规格文档
- [情绪] 他们的工程团队表现出强烈热情
- [决策] 同意从概念验证集成开始
关系
- - 出席 [[Jordan Rivera]]
- 与 [[NovaTech]] 合作
- 讨论 [[联邦学习]]
- 跟进 [[向NovaTech发送技术规格]]
)
文档/文章笔记
python
write_note(
title=边缘计算架构白皮书,
directory=references,
note_type=reference,
tags=[edge-computing, architecture, reference],
metadata={source: https://example.com/whitepaper.pdf, date_ingested: 2026-02-22},
content=
边缘计算架构白皮书
源内容
[保留相关内容 — 对于长文档,包含关键章节而非全文]
观察
- - [关键发现] 边缘推理相比纯云方案延迟降低40%
- [技术] 跨异构边缘节点的模型分片
- [限制] 每个边缘节点至少需要8GB内存
关系
)
观察类别
使用能够捕捉信息性质的类别。摄取内容的常见类别:
做出或达成一致的决策 |
| 洞察 | 获得的非显而易见理解 |
| 下一步 | 具体的行动项或后续跟进 |
| 情绪 | 表达的热情、担忧、犹豫 |
| 风险 | 识别出的风险或担忧 |
| 要求 | 发现的需求或约束 |
| 关键发现 | 参考资料中的重要事实 |
| 技术 | 描述的方法、方法或模式 |
| 背景 | 以后可能有用的背景信息 |
根据需要发明类别——这些是建议,而非固定列表。
步骤7:创建已批准的实体
为用户批准的每个实体创建结构化笔记。将实体类型匹配到适当的模板。
人员
python
write_note(
title=Jordan Rivera,
directory=people,
note_type=person,
tags=[person, novatech, engineering],
content=
Jordan Rivera
概述
NovaTech工程副总裁。在集成合作伙伴关系讨论中结识。
背景
[角色、专长、会议中的上下文 + 任何网络研究]
观察
- - [角色] NovaTech工程副总裁
- [专长] 分布式系统、联邦学习
- [结识] 2026年2月22日,在集成讨论期间
关系
- - 工作于 [[NovaTech]]
- 在 [[NovaTech会议 - Jordan Rivera - 2026年2月22日]] 中讨论
)
组织
python
write_note(
title=NovaTech,
directory=organizations,
note_type=organization,
tags=[organization, saas, integration-partner],
content=
NovaTech
概述
SaaS平台公司。B轮阶段。
[会议 + 网络研究的额外上下文]
产品与服务
[他们提供的内容,如果讨论或研究过]
观察
- - [阶段] B轮,约200名员工
- [相关性] 我们平台的潜在集成合作伙伴
- [首次接触] 2026年2月22日
关系
- - 雇佣 [[Jordan Rivera]]
- 在 [[NovaTech会议 - Jordan Rivera - 2026年2月22日]] 中讨论
)
概念/主题
python
write_note(
title=联邦学习,
directory=concepts,
note_type=concept,
tags