知识语料库构建
知识语料库构建:Claude-Mem 的具体实现
学习目标
本章聚焦 Claude-Mem 如何将历史记忆转化为可查询的知识 Agent。建议先阅读前置知识,下文直接聚焦具体落地方案。
前置知识
本章涉及知识语料库的通用模式,建议先阅读:
- 知识语料库模式 — 四阶段生命周期
项目实践
MCP 工具接口
Claude-Mem 提供了四个语料库相关的 MCP 工具:
| 工具 | 端点 | 功能 |
|---|---|---|
build_corpus | POST /api/corpus | 从筛选的记忆构建语料库 |
list_corpora | GET /api/corpus | 列出所有语料库及其统计 |
prime_corpus | POST /api/corpus/{name}/prime | 注入知识,创建 AI 会话 |
query_corpus | POST /api/corpus/{name}/query | 向已 primed 的语料库提问 |
rebuild_corpus | POST /api/corpus/{name}/rebuild | 重新运行筛选以包含新观察 |
reprime_corpus | POST /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 的注入过程:
- 加载语料库的筛选条件
- 从 SQLite 中查询匹配的观察和摘要
- 创建一个专用的 AI Agent 会话
- 将语料库内容格式化为上下文注入
- 返回会话 ID,供后续
query_corpus使用
知识 Agent 会话
Primed 的语料库本质上是一个特殊的 AI 会话,具有:
- 预加载上下文:语料库中的所有观察在会话开始时即注入
- 独立生命周期:与用户的常规会话隔离
- 可刷新:通过
reprime_corpus创建新会话,清除旧对话
问题与规避
语料库大小与上下文窗口
问题:如果语料库包含数百条观察,注入的上下文可能超出模型的上下文窗口限制。
规避:build_corpus 的 limit 参数默认为 500,限制最大观察数量。用户应根据使用的模型的上下文窗口调整此值。
知识过时
问题:语料库构建后,新的相关观察可能产生,导致语料库不包含最新知识。
规避:通过 rebuild_corpus 重新运行筛选,然后通过 reprime_corpus 创建新会话。建议在项目有重大变更后刷新语料库。
设计取舍
为什么用专用会话而非直接注入?
语料库通过创建专用 AI 会话(prime)来注入知识,而非在每次查询时动态注入:
- 优势:一次注入,多次查询。无需每次查询都重新加载全部知识
- 代价:需要维护会话状态,长期不 reprime 可能导致对话上下文污染
- 替代方案:每次查询时动态注入语料库。Claude-Mem 选择 pre-load 模式以节省 token 和延迟