跳转至

知识代理

知识代理允许你将 claude-mem 观察历史中的一段切片编译成一个可查询的“大脑”,以对话方式回答问题。你得到的不是原始搜索结果,而是从真实项目历史(决策、发现、缺陷修复和功能)中提炼出的、有依据的综合答案。

快速开始

三种使用知识代理的方式,从最简单到最强大。

1. 创建知识代理

使用 /knowledge-agent 技能或直接使用 MCP 工具:

build_corpus name="hooks-expertise" query="hooks architecture" project="claude-mem" limit=200

这会搜索你的观察历史,收集匹配的记录,并将其保存为语料库文件。然后预热它——将语料库加载到 Claude 会话的上下文窗口中:

prime_corpus name="hooks-expertise"

你的知识代理已就绪。返回的 session_id 就是代理——一个内置了你的历史记录的 Claude 会话。

2. 提出单个问题

预热之后,提出任何问题都能得到有依据的答案:

query_corpus name="hooks-expertise" question="What are the 5 lifecycle hooks and when does each fire?"

代理会基于其语料库作答——回答源自你的真实项目历史,减少幻觉和臆测。每个后续问题都会延续之前的对话:

query_corpus name="hooks-expertise" question="Which hook handles context injection?"

3. 开启全新对话

如果对话跑偏,或者你想针对同一语料库提出不相关的问题,重新预热以全新开始:

reprime_corpus name="hooks-expertise"

这会创建一个新会话,重新加载完整语料库——就像与同一个“大脑”开启一段全新聊天。所有之前的问答上下文都会被清空,但语料库知识仍然保留。在以下情况下使用此操作:

  • 对话偏离正轨,你想要一个干净的状态
  • 你要在同一语料库内切换主题
  • 你想提问时避免之前的答案影响后续响应

保持最新

当项目新增观察记录时,重建语料库以纳入最新内容,然后重新预热:

rebuild_corpus name="hooks-expertise"
reprime_corpus name="hooks-expertise"

重建会重新执行原始搜索筛选条件。重新预热会将刷新后的数据加载到一个新会话中。


工作流:构建、预热、查询

BUILD  ──>  PRIME  ──>  QUERY

1. 构建语料库

语料库是经过筛选的观察记录集合,保存为 JSON 文件。使用搜索筛选条件精确选择你想要的历史片段。

WORKER_PORT=$(jq -r .CLAUDE_MEM_WORKER_PORT ~/.claude-mem/settings.json)
curl -X POST http://127.0.0.1:$WORKER_PORT/api/corpus \
  -H "Content-Type: application/json" \
  -d '{
    "name": "hooks-expertise",
    "query": "hooks architecture",
    "project": "claude-mem",
    "types": ["decision", "discovery"],
    "limit": 200
  }'

在底层,CorpusBuilder 会搜索你的观察记录,补全完整记录,解析结构化字段(facts、concepts、files),计算统计信息,并将所有内容写入 ~/.claude-mem/corpora/hooks-expertise.corpus.json。

2. 预热知识代理

预热会将整个语料库加载到 Claude 会话的上下文窗口中。

curl -X POST http://127.0.0.1:$WORKER_PORT/api/corpus/hooks-expertise/prime

代理会将所有观察记录渲染成完整详细的文本,并送入 Claude Agent SDK。Claude 会读取语料库并确认其中的主题。返回的 session_id 就是知识代理——一个内置了你的历史记录的 Claude 会话。

3. 查询

恢复已预热的会话并提出问题。

curl -X POST http://127.0.0.1:$WORKER_PORT/api/corpus/hooks-expertise/query \
  -H "Content-Type: application/json" \
  -d '{ "question": "What are the 5 lifecycle hooks?" }'

每个后续问题都会自然地延续这段对话。如果会话过期,代理会自动从语料库文件重新预热并重试。


筛选选项

构建语料库时,可使用以下参数控制包含哪些观察记录:

参数 类型 说明
name string 语料库名称(用于之后所有 API 调用)
project string 按项目名称筛选
types string[] 按观察记录类型筛选(bugfix, feature, decision, discovery, refactor, change)
concepts string[] 按已标记的概念筛选
files string[] 按读取或修改的文件筛选
query string 全文搜索查询
dateStart string 开始日期筛选(YYYY-MM-DD)
dateEnd string 结束日期筛选(YYYY-MM-DD)
limit number 要包含的最大观察记录数

架构

                MCP Tools                    HTTP API
            (mcp-server.ts)            (worker on :$WORKER_PORT)
                  |                          |
   build_corpus ──┤                          |
   list_corpora ──┤                          |
   prime_corpus ──┤──── callWorker() ───────>|
   query_corpus ──┤                          |
rebuild_corpus ──┤                          |
reprime_corpus ──┘                          |
                                             v
                                       CorpusRoutes
                                       (8 endpoints)
                                        /    |    \
                              CorpusBuilder  |  KnowledgeAgent
                                  |          |       |
                        SearchOrchestrator   |   Agent SDK V1
                        SessionStore         |   query() + resume
                                             |
                                        CorpusStore
                                    (~/.claude-mem/corpora/)

关键要点: Agent SDK 的 resume 选项允许你只预热一次会话(上传语料库),保存 session_id,然后在之后的每个问题中恢复它。语料库会一直留在上下文中——无需重新上传,也无需 Prompt 缓存技巧。1M token 的上下文窗口让这成为可能:2000 条观察记录,每条约 300 tokens,可以轻松容纳。

/mem-search /knowledge-agent
返回内容 原始观测记录 综合对话式回答
适用场景 查找特定观测、ID、时间线 询问关于模式、决策、架构的问题
Token 计费模式 按查询付费(3 层渐进式披露) 预热的 prime 阶段一次性付费,之后跟进查询更便宜
交互方式 搜索、筛选、获取 用自然语言提问
数据新鲜度 始终最新(实时查询数据库) 构建时的快照(重新构建以刷新)
设置 无需设置——立即可用 首次查询前需要构建 + 预热(prime)

经验法则: 需要查找特定内容时使用 /mem-search。想从宏观层面理解某个主题时使用 /knowledge-agent。


API 参考

方法 路径 描述
POST /api/corpus 根据过滤器构建新语料库
GET /api/corpus 列出所有语料库及其统计信息
GET /api/corpus/:name 获取语料库元数据
DELETE /api/corpus/:name 删除语料库
POST /api/corpus/:name/rebuild 根据存储的过滤器重新构建
POST /api/corpus/:name/prime 创建加载了语料库的 AI 会话
POST /api/corpus/:name/query 向知识代理提问
POST /api/corpus/:name/reprime 开启新会话(清除之前的问答)

边界情况

  • 会话过期:如果 resume 失败,代理会自动从语料库文件重新预热(reprime)并重试
  • SDK 进程退出:如果 Claude 进程在生成所有消息后退出,当 session_id 或答案已被捕获时,代理会将其视为成功
  • 空语料库:包含 0 条观测记录的语料库是有效的(只是为空而已)
  • 从设置中读取模型:从用户设置中读取 CLAUDE_MEM_MODEL——没有硬编码的模型 ID

后续步骤

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 cl/claude-mem