跳转到内容

知识语料库构建

知识语料库构建:Claude-Mem 的具体实现

学习目标

本章聚焦 Claude-Mem 如何将历史记忆转化为可查询的知识 Agent。建议先阅读前置知识,下文直接聚焦具体落地方案。

前置知识

本章涉及知识语料库的通用模式,建议先阅读:

项目实践

MCP 工具接口

Claude-Mem 提供了四个语料库相关的 MCP 工具:

工具端点功能
build_corpusPOST /api/corpus从筛选的记忆构建语料库
list_corporaGET /api/corpus列出所有语料库及其统计
prime_corpusPOST /api/corpus/{name}/prime注入知识,创建 AI 会话
query_corpusPOST /api/corpus/{name}/query向已 primed 的语料库提问
rebuild_corpusPOST /api/corpus/{name}/rebuild重新运行筛选以包含新观察
reprime_corpusPOST /api/corpus/{name}/reprime刷新知识 Agent 会话

筛选条件

build_corpus 支持多维度筛选:

build_corpus(
name="auth-system-knowledge",
description="认证系统相关经验",
project="my-app",
types="bugfix,refactor,decision",
concepts="authentication,session,jwt",
files="src/auth/,src/middleware/auth.ts",
dateStart="2026-01-01",
dateEnd="2026-05-28",
limit=500
)

筛选条件持久化存储,rebuild_corpus 时使用相同的条件重新执行查询。

知识注入过程

prime_corpus 的注入过程:

  1. 加载语料库的筛选条件
  2. 从 SQLite 中查询匹配的观察和摘要
  3. 创建一个专用的 AI Agent 会话
  4. 将语料库内容格式化为上下文注入
  5. 返回会话 ID,供后续 query_corpus 使用

知识 Agent 会话

Primed 的语料库本质上是一个特殊的 AI 会话,具有:

  • 预加载上下文:语料库中的所有观察在会话开始时即注入
  • 独立生命周期:与用户的常规会话隔离
  • 可刷新:通过 reprime_corpus 创建新会话,清除旧对话

问题与规避

语料库大小与上下文窗口

问题:如果语料库包含数百条观察,注入的上下文可能超出模型的上下文窗口限制。

规避build_corpuslimit 参数默认为 500,限制最大观察数量。用户应根据使用的模型的上下文窗口调整此值。

知识过时

问题:语料库构建后,新的相关观察可能产生,导致语料库不包含最新知识。

规避:通过 rebuild_corpus 重新运行筛选,然后通过 reprime_corpus 创建新会话。建议在项目有重大变更后刷新语料库。

设计取舍

为什么用专用会话而非直接注入?

语料库通过创建专用 AI 会话(prime)来注入知识,而非在每次查询时动态注入:

  • 优势:一次注入,多次查询。无需每次查询都重新加载全部知识
  • 代价:需要维护会话状态,长期不 reprime 可能导致对话上下文污染
  • 替代方案:每次查询时动态注入语料库。Claude-Mem 选择 pre-load 模式以节省 token 和延迟

参考来源