mcpField
M
memory-ingest

memory-ingest

github.com/basicmachines-co生产力4.4k1.2k 次安装今天更新
代码仓库

关于 memory-ingest

此 Basic Memory 技能将会议记录、文档、邮件等原始文本转为相互关联的结构化笔记。它会先查找已有实体,并在创建新实体前征求批准。

主要功能

  1. 01解析原文并提取实体
  2. 02搜索已有笔记
  3. 03提议实体并征求批准
  4. 04逐字保留来源内容
  5. 05记录行动项与关联

适用场景

  1. 01将会议记录转为笔记
  2. 02整理粘贴的邮件往来
  3. 03从参考文档提取实体

MCP 相关

工作流使用 Basic Memory MCP 工具,包括 bm_search 查找已有实体,以及 bm_write 或 bm_edit 创建或更新笔记。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/basicmachines-co/basic-memory --skill memory-ingest

安装后在 Claude Code 中输入/memory-ingest确认已加载。

详细介绍

Memory Ingest

将原始、非结构化输入转换为结构化的 Basic Memory 实体。会议记录、对话日志、粘贴的文档、电子邮件往来——任何值得保留信息的内容,都会经过解析、与现有知识交叉比对,并写成规范的笔记。

适用场景

  • 用户粘贴会议记录或对话日志
  • 用户说“处理这些笔记”或“将这些内容添加到 Basic Memory”
  • 用户粘贴文档、文章或电子邮件以提取知识
  • 任何需要将原始外部文本转化为结构化知识的情况

工作流概览

1. Parse raw input           → identify structure, extract key info
2. Extract entities          → people, orgs, topics, action items
3. Search existing entities  → multi-variation queries
4. Research new entities     → optional web research (see memory-research)
5. Present entity proposal   → get approval before creating
6. Create source note        → verbatim content + observations + relations
7. Create approved entities  → structured notes for each new entity
8. Extract action items      → follow-ups and commitments

第 1 步:解析原始输入

阅读粘贴的内容并识别其结构:

  • 格式:会议记录、电子邮件往来、对话日志、文章、自由形式笔记
  • 日期:事情发生的时间(从内容中提取或询问用户)
  • 参与者:涉及的人员(姓名、角色、组织)
  • 章节:已有的结构(标题、发言者标签、时间戳)

不要改写或总结来源内容。在笔记中逐字保留内容,并在旁边添加结构化观察。

为注明日期的观察添加限定符,使用来源中给出的日期(参见 memory-notes): 会议中发生的事情使用 @occurred:,行动项使用 @due:。

使用文件而非粘贴文本。 对于项目中的 PDF、Word、PowerPoint 或 CSV 文件,如果 bm CLI 可用,请运行 bm import document <path>。此命令会写入一个提取文本的旁注文件(<file>.<ext>.md),并通过 derived_from 链接到源文件。请单独编写结构化笔记并将其链接到旁注文件;不要编辑旁注文件。

第 2 步:提取实体

扫描内容,找出值得在知识图谱中跟踪的实体:

实体类型线索
人物提及姓名、角色、头衔或所属组织
组织公司名称、机构、组织
主题/概念详细讨论的技术领域、方法论、标准
行动项承诺、截止日期、“我会在 Y 之前完成 X”之类的陈述

根据上下文推断类型。 如果某人被介绍为“Acme Corp 的 CTO”,则同时将其作为人物实体和组织实体。如果深入讨论某项技术,可能值得将其作为概念实体。

排除无关信息。 并非提及的每个名称都值得建立实体。筛选以下内容:

  • 承担实质性职责或有实质性互动的人物(而非一笔带过的提及)
  • 在商业或技术语境中讨论的组织
  • 详细程度足以单独建立笔记的主题

第 3 步:搜索现有实体

针对每个提取的实体,使用多个查询变体搜索 Basic Memory:

# Person — try full name, last name
bm_search(query="Sarah Chen")
bm_search(query="Chen")

# Organization — try full name, abbreviation, acronym
bm_search(query="National Renewable Energy Laboratory")
bm_search(query="NREL")

# Topic — try the full term and keywords
bm_search(query="edge computing")
bm_search(query="edge inference")

将每个实体分类为:

  • 现有实体 — 已在 Basic Memory 中找到。将使用 [[wiki-link]] 链接到该实体。
  • 拟议实体 — 尚未找到。将提议创建该实体,等待批准。

第 4 步:研究新实体(可选)

对于能够通过更多背景信息获益的拟议实体,进行简短的网络搜索(每个实体最多 2-3 个查询):

  • 组织:业务内容、规模、公有或私有、主要产品
  • 人物:当前角色、背景、专业领域
  • 主题:简要定义、相关性

使用审慎措辞(“似乎是”“估计”“根据公开信息”)。绝不编造细节。

此步骤为可选步骤——如果来源材料已提供足够背景信息,或用户赶时间,可以跳过。有关更深入的研究工作流,请参阅 memory-research 技能。

第 5 步:展示实体提案

创建任何内容之前,先展示找到的内容以及希望创建的内容:

Entities found in Basic Memory:
  - [[Sarah Chen]] (Person — existing)
  - [[Acme Corp]] (Organization — existing)

Proposed new entities:
  - Jordan Rivera (Person — VP Engineering at NovaTech, mentioned as project lead)
  - NovaTech (Organization — SaaS platform, Series B, discussed as integration partner)
  - Federated Learning (Concept — core technical topic of the discussion)

Approve all / select individually / skip entity creation?

为每个拟议实体提供足够的背景信息,方便用户快速判断。

第 6 步:创建来源笔记

为摄取的内容创建主要笔记。这是“事件记录”——保留原始材料,并添加结构化元数据。

会议/对话笔记
bm_write(
  title="NovaTech Meeting - Jordan Rivera - Feb 22, 2026",
  directory="meetings/2026",
  note_type="meeting",
  tags=["meeting", "novatech", "federated-learning"],
  metadata={"date": "2026-02-22"},
  content="""
# NovaTech Meeting - Jordan Rivera - Feb 22, 2026

Brief one-sentence summary of what this meeting was about.

## Transcript
[Preserve all source content verbatim — do not summarize or rewrite]

## Observations
- [opportunity] NovaTech interested in integration partnership
- [insight] Their platform handles 10K concurrent sessions, relevant to our scale needs
- [next_step] @due:2026-02-27 Send technical spec document
- [sentiment] Strong enthusiasm from their engineering team
- [decision] @occurred:2026-02-22 Agreed to start with a proof-of-concept integration

## Relations
- attended [[Jordan Rivera]]
- with [[NovaTech]]
- discussed [[Federated Learning]]
- follow_up [[Send NovaTech Technical Spec]]
"""
)
文档/文章笔记
bm_write(
  title="Edge Computing Architecture Whitepaper",
  directory="references",
  note_type="reference",
  tags=["edge-computing", "architecture", "reference"],
  metadata={"source": "https://example.com/whitepaper.pdf", "date_ingested": "2026-02-22"},
  content="""
# Edge Computing Architecture Whitepaper

## Source Content
[Preserve relevant content — for long documents, include key sections rather than the entire text]

## Observations
- [key_finding] Latency drops 40% with edge inference vs cloud-only
- [technique] Model sharding across heterogeneous edge nodes
- [limitation] Requires minimum 8GB RAM per edge node

## Relations
- relates_to [[Edge Computing]]
- relates_to [[Model Optimization]]
"""
)
观察类别

使用能体现信息性质的类别。导入内容常用的类别:

类别用途
opportunity发现的业务或合作机会
decision已做出或达成共识的决定
insight获得的非显而易见的认识
next_step具体的待办事项或后续跟进
sentiment表达的热情、顾虑或犹豫
risk发现的风险或顾虑
requirement发现的要求或限制
key_finding参考资料中的重要事实
technique描述的方法、途径或模式
context以后可能有用的背景信息

可按需创建类别——以上只是建议,并非固定列表。

第 7 步:创建已批准的实体

为用户批准的每个实体创建一条结构化笔记。选择合适的模板来匹配实体类型。

如果 bm_write 报告存在相似的笔记,请将其视为第 3 步遗漏的匹配项:合并到现有笔记并删除新笔记,或将两者链接起来。

人物
bm_write(
  title="Jordan Rivera",
  directory="people",
  note_type="person",
  tags=["person", "novatech", "engineering"],
  content="""
# Jordan Rivera

## Overview
VP of Engineering at NovaTech. Met during integration partnership discussion.

## Background
[Role, expertise, context from meeting + any web research]

## Observations
- [role] VP Engineering at NovaTech
- [expertise] Distributed systems, federated learning
- [met] 2026-02-22 during integration discussion

## Relations
- works_at [[NovaTech]]
- discussed_in [[NovaTech Meeting - Jordan Rivera - Feb 22, 2026]]
"""
)
组织
bm_write(
  title="NovaTech",
  directory="organizations",
  note_type="organization",
  tags=["organization", "saas", "integration-partner"],
  content="""
# NovaTech

## Overview
SaaS platform company. Series B stage.
[Additional context from meeting + web research]

## Products & Services
[What they offer, if discussed or researched]

## Observations
- [stage] Series B, ~200 employees
- [relevance] Potential integration partner for our platform
- [first_contact] 2026-02-22

## Relations
- employs [[Jordan Rivera]]
- discussed_in [[NovaTech Meeting - Jordan Rivera - Feb 22, 2026]]
"""
)
概念 / 主题
bm_write(
  title="Federated Learning",
  directory="concepts",
  note_type="concept",
  tags=["concept", "machine-learning", "distributed-systems"],
  content="""
# Federated Learning

## Overview
[Brief description of the concept from the discussion context]

## Observations
- [definition] Machine learning approach where models train across decentralized data sources
- [relevance] Core technique discussed in NovaTech integration

## Relations
- discussed_in [[NovaTech Meeting - Jordan Rivera - Feb 22, 2026]]
"""
)

根据你的领域调整模板。关键要素包括:作为参数的类型和标签、概览部分、带类别的观察,以及链接回源内容的关联。

第 8 步:提取待办事项

检查源内容中的承诺和后续跟进事项:

Action Items:
  - Send NovaTech technical spec document by Friday (your commitment)
  - Jordan will share their API documentation by next week (their commitment)

Follow-Up Reminders:
  - 1 week: Check if Jordan sent API docs
  - 2 weeks: Schedule follow-up call to discuss POC scope

如果使用 memory-tasks 技能,请为待办事项创建 Task 笔记。否则,将其作为观察记录在源笔记中。

指南

  • 逐字保留源内容。 原文是事实依据。结构和观察是在此基础上的解读。
  • 创建前先搜索。 务必检查实体是否已存在(参见 memory-notes 的创建前搜索模式)。用新信息更新现有实体,而不是创建重复项。
  • 创建新实体前征求批准。 展示拟创建的实体,让用户决定创建哪些。不要擅自填充知识图谱。
  • 推断,不要盘问。 根据上下文提取实体类型和关系。只有在确实存在歧义时才询问用户。
  • 谨慎选择实体。 并非提及的每个名称都值得单独建立笔记。重点关注用户以后会想再次查阅的实体。
  • 对研究所得信息使用不确定表述。 网络研究只能作为补充——不要将其当作事实陈述。使用“似乎是”“估计”“基于公开信息”等表述。
  • 将所有内容关联起来。 每个创建的实体都应关联回源笔记。源笔记应链接到所有提及的实体。
  • 结合叙述与观察。 笔记最好同时包含叙述性背景和结构化观察。叙述能说明意义并讲述来龙去脉;观察则便于搜索单条事实。使用正文记录背景,再将关键事实提炼为带类别的观察。

评论

支持 Markdown