agent-knowledge
agent-knowledge
面向 AI 编码助手的跨会话记忆与召回 —— 开箱即用地支持 Claude Code、Cursor、OpenCode、Cline、Continue.dev 和 Aider。Git 同步的知识库、混合语义 + TF-IDF 搜索、自动蒸馏并清洗机密信息。
基准测试: 在 longmemeval_s 上 R@5 = 97.2%(稀疏)/ 98.8%(混合),在更难的 longmemeval_m 分割上 86.0%(稀疏)/ 88.4%(混合) —— 这是公开的 LongMemEval 学术基准(Wu 等人,2024,ICLR 2025),每个分割 500 个完整问题,无需 LLM、无需 API 密钥,完全离线运行。在与论文的苹果对苹果复现中,R@5 比论文官方 flat-bm25 基线高出 +8.6 到 +13.2 个百分点。完整的按类别表格、复现说明和论文对比细节见 bench/README.md。
为什么
AI 编码会话是短暂的。当会话结束时,它学到的一切——架构决策、调试见解、项目上下文——都消失了。下一个会话从零开始。
agent-knowledge 通过两个互补系统解决这个问题:
知识库 —— 一个 Git 同步的 Markdown 仓库,包含结构化条目(决策、工作流、项目上下文),跨会话和跨机器持久化。
会话搜索 —— 对所有编码工具的会话记录进行 TF-IDF 排序的全文搜索,让代理能够回忆之前发生的事情——无论使用哪个工具。
Related MCP server: Doclea MCP
支持的工具
所有主流 AI 编码助手的会话都会被自动发现——如果安装了某个工具,它的会话会自动出现。
工具 | 格式 | 自动检测路径 |
Claude Code | JSONL |
|
Cursor | JSONL |
|
Codex CLI | JSONL |
|
Aider | Markdown/JSONL |
|
Continue.dev | JSON |
|
Cline | JSON | VS Code globalStorage |
OpenCode | SQLite |
|
无需配置。可以通过 AGENT_KNOWLEDGE_EXTRA_SESSION_ROOTS 环境变量(逗号分隔的路径)添加额外的会话根目录。
功能
与宿主无关的会话搜索 —— 统一搜索所有主流 AI 编码助手(Claude Code、Cursor、Codex CLI、Aider、Continue.dev、Cline、OpenCode)。配置中不硬编码任何宿主名称——适配器注册表在启动时探测已安装的宿主根目录。
混合搜索 —— 语义向量相似度与 TF-IDF 关键词排名混合
Git 同步的知识库 —— 带 YAML frontmatter 的 Markdown 仓库,写入时自动提交并推送
自动过时检测 ——
knowledge_analyze(action: "stale_by_code_activity")将每个条目正文中提到的文件路径与最近会话摘要中的filesModified进行交叉引用。配合符号存在性精确层:检查条目引用的标识符(内联反引号 + 围栏代码块)是否在受影响的文件中;如果仍然存在,置信度下调 ×0.3。带有evergreen: true的条目豁免。搜索缺口跟踪 ——
knowledge_analyze(action: "search_gaps")显示过去since_days内的零结果查询,按 token-Jaccard 相似度分组。这是“接下来应该写什么条目?”的最清晰信号。分区优先级上下文打包器 ——
knowledge(action: "wakeup")在 token 预算内(默认 800,可通过token_budget或AGENT_KNOWLEDGE_WAKEUP_BUDGET覆盖)组装多分区捆绑包(identity→active_tasks→recent_decisions→known_gotchas→last_session_summary→top_weighted→semantic_fallback)。未使用的分区预算会重新分配给后面的分区。评分 + 门控提升器 —— 通过 6 信号加权评分器提升会话洞察,带有三个独立门控(
minScore、minRecallCount、minUniqueQueries)。自动在后台运行,可通过knowledge_admin(action: "promote")按需运行,或通过npm run bench:promote离线基准测试。每次运行都会生成可审计的.dreams/YYYY-MM-DD.md日记。可插拔适配器系统 —— 通过实现
SessionAdapter接口来添加对新工具的支持嵌入 —— 本地(Hugging Face)、OpenAI、Claude/Voyage 或 Gemini 提供商
模糊匹配 —— 使用 Levenshtein 距离的容错搜索
6 种搜索范围 —— 错误、计划、配置、工具、文件、决策
6 个 MCP 工具 —— 统一的基于操作的接口(
knowledge、knowledge_search、knowledge_session、knowledge_graph、knowledge_analyze、knowledge_admin)常青条目 —— frontmatter 中的
evergreen: true使条目在排名中免于衰减,并在提升时仅允许追加。仪表板在这些卡片上显示图钉徽章。作者归属 —— 可选的
author: <string>frontmatter 在每张卡片上显示为弱化的标签。代码图解析 —— 用于代码结构的
calls、imports、inherits边类型;有向 BFS 遍历(outbound/inbound/both);bulk_link用于高效摄取;unlink_by_origin用于在重新摄取前清除过时的代码边;code:前缀的节点 ID 区分代码与知识时间知识图 —— 边支持
valid_from/valid_to有效性窗口;as_of查询返回时间点快照;invalidate操作将事实标记为已结束而不删除它们混合评分提升 —— 在 TF-IDF + 语义混合之上增加专有名词和时间邻近性提升,上限为 +66.7%,无信号时短路
类别作为提升(而非过滤) —— 选择
category_mode: "boost",这样错误的类别猜测会降低排名,而不是丢弃正确答案逐字会话索引 —— 将每条消息的块(≥30 字符)嵌入向量存储,使原始对话可检索;通过
AGENT_KNOWLEDGE_INDEX_VERBATIM=false切换可配置的 Git URL ——
knowledge_admin(action: "config")用于运行时设置,持久化在 XDG/AppData 位置跨机器持久化 —— 知识通过 git 同步,会话从每个工具的本地存储读取
实时仪表板 —— 在
localhost:3423浏览、搜索和管理机密清洗 —— API 密钥、令牌、密码、私钥在 git push 前自动编辑
知识图 —— 条目之间的关系边(related_to、supersedes、depends_on、contradicts、specializes、part_of、alternative_to、builds_on)及 BFS 遍历
置信度/衰减评分 —— 根据访问频率和最近性对条目评分;从候选自动提升到已建立再到已验证
记忆整合 —— 写入时进行 TF-IDF 重复检测(警告相似条目),加上
knowledge_analyze(action: "consolidate")进行批量去重扫描反思循环 ——
knowledge_analyze(action: "reflect")显示未连接的条目,并生成结构化提示,让代理识别新的图连接写入时自动链接 —— 当余弦相似度 > 0.7 时,新条目自动链接到前 3 个相似现有条目
置信度元数据 —— 条目标记为
extracted(用户编写)或inferred(自动蒸馏,0.85× 搜索排名乘数);confidence_score字段携带模型的确定性 0-1知识分析 ——
knowledge_analyze操作god_nodes(连接最多的条目)、bridges(跨类别连接器)、gaps(孤立条目)知识简报 ——
knowledge_analyze(action: "brief")返回缓存的约 200 token 摘要(核心概念、活跃项目、最近决策、过时和缺口计数),用于会话开始时的定向边来源 —— 图边跟踪
origin(manual、auto-link、distill、reflect),以便分析区分用户判断与自动化启发式蒸馏中的确定性预提取 —— 会话摘要现在包括通过正则表达式从 bash/工具输出中提取的 git 提交、错误模式、访问的 URL 和更改的包(无 LLM 成本)
每次搜索命中的新鲜度元数据 —— 每个知识结果都携带
freshness: { body_age_days, last_accessed, access_count, verified_at, verification_age_days, evergreen }。代理读取信任信号并自行决定;我们不施加任何策略降级。按类别衰减窗口 —— “未使用”过滤器和按类型图表遵循按类别阈值(项目 180 天、人员 365 天、决策 90 天、工作流 60 天、笔记 30 天),这样身份类内容不会仅仅因为不是每周重读而显得过时。
生命周期钩子 ——
SessionStart自动唤醒 + 摄取新鲜度检查,UserPromptSubmit首次提示定向注入,PreCompact内存刷新提示 + 蒸馏,SessionEnd蒸馏。共六个钩子脚本,全部故障开放,每个可通过AGENT_KNOWLEDGE_*环境变量切换。参见docs/HOOKS.md。取代宿主自动记忆 —— 在具有每会话记忆系统的宿主上(Claude Code 的
~/.claude/projects/*/memory/,其他 IDE 类似),将持久的用户事实和反馈路由到 agent-knowledge 而不是自动记忆。自动记忆是机器本地的,对其他机器不可见;agent-knowledge 是 git 同步的、跨机器的、可搜索的,并在唤醒时显示。参见docs/USER-MANUAL.md中的 Claude Code 集成说明。
代码库摄取
knowledge-ingest 技能从代码库目录填充或更新知识库。它使用 tree-sitter 进行零 token 的结构提取(类、函数、导入、调用图、原理注释),然后将文件聚类为子系统,并通过现有的 MCP 工具创建知识条目 + 图边。后续运行是增量的——只重新处理更改的文件。
/knowledge-ingest ./my-project使用 Agent Skills 标准 —— 适用于 Claude Code、OpenCode、Cursor、Codex CLI 和 Gemini CLI。详见 摄取指南。
支持的语言: TypeScript、JavaScript、Python、Go、Rust、Java、C、C++。
快速开始
从 npm 安装
npm install -g agent-knowledge或从源码克隆
git clone https://github.com/keshrath/agent-knowledge.git
cd agent-knowledge
npm install && npm run build选项 1:MCP 服务器(用于 AI 代理)
添加到你的 MCP 客户端配置(Claude Code、Cline 等):
{
"mcpServers": {
"agent-knowledge": {
"command": "npx",
"args": ["agent-knowledge"]
}
}
}仪表板在首次 MCP 连接时自动启动于 http://localhost:3423。
参见 设置指南 获取特定客户端的说明(Claude Code、Cursor、Windsurf、OpenCode)。
选项 2:独立服务器(用于 REST/WebSocket 客户端)
node dist/server.js --port 3423MCP 工具(6)
知识库
工具 | 操作 | 描述 | 参数 |
|
| 按分类和/或标签列出条目 |
|
| 读取特定条目 |
| |
| 创建/更新条目(自动 git 同步) |
| |
| 删除条目(自动 git 同步) |
| |
| 手动 git pull + push | -- | |
| 返回 L0 身份 + L1 权重最高的条目(受 token 预算限制) |
|
搜索
工具 | 描述 | 参数 |
| 通用混合 TF-IDF + 语义搜索(无 |
|
限定会话范围的召回(当设置 |
|
响应格式:{mode: "general" | "scoped", sessions, knowledge}。限定范围模式按设计返回 knowledge: []。
范围:errors, plans, configs, tools, files, decisions, all。
搜索调节选项:
mmr: true应用最大边际相关性(Maximal Marginal Relevance)重排序(消除 top-K 中的近似重复簇)。mmr_lambda取值范围 0-1,默认 0.7。category_mode: "boost"(默认)为匹配分类的条目提供 1.25× 的分数乘数,而不是丢弃不匹配的条目。传入"filter"可进行硬过滤。explain: true为每条知识命中附加score_components: {bm25, decay, maturity, confidence, category_boost, mmr_penalty}。
会话
工具 | 操作 | 描述 | 参数 |
|
| 列出带元数据的会话 |
|
| 检索完整会话对话 |
| |
| 会话摘要(主题、工具、文件) |
|
知识图谱
工具 | 操作 | 描述 | 参数 |
|
| 创建/更新条目之间的边 |
|
| 移除条目之间的边 |
| |
| 将边标记为过期(设置 valid_to) |
| |
| 列出边 |
| |
| 从条目进行有向 BFS 遍历 |
| |
| 批量创建边(代码图谱摄取) |
| |
| 按来源删除所有边 |
|
知识类型:related_to, supersedes, depends_on, contradicts, specializes, part_of, alternative_to, builds_on
代码结构类型:calls, imports, inherits
遍历方向:outbound(source→target)、inbound(target→source)、both(默认,无向)
分析
工具 | 操作 | 描述 | 参数 |
|
| 查找近似重复条目 |
|
| 查找未连接的条目以进行链接 |
| |
| 连接最多的条目(度中心性) |
| |
| 跨分类连接器(介数中心性) |
| |
| 按成熟度查找孤立条目(0-1 条边) |
| |
| 缓存的约 200 token 知识库摘要 | -- |
管理
工具 | 操作 | 描述 | 参数 |
|
| 向量存储统计 | -- |
| 查看或更新配置 |
| |
| 重新嵌入所有知识条目(在切换提供商时有用) | -- | |
| 删除磁盘上已不存在会话的嵌入 |
| |
| 回收向量存储中的空闲页 | -- | |
| 带评分和门控的提升器 |
|
评分提升器
每个项目级候选条目基于六个信号进行评分(相关性 0.30、频率 0.24、查询多样性 0.15、时效性 0.15、整合度 0.10、概念丰富度 0.06),并通过 minScore ≥ 0.5、minRecallCount ≥ 2、minUniqueQueries ≥ 2 进行门控。三个门控必须全部通过。后台自动提升由相同的 auto_distill 配置标志控制;可通过 knowledge_admin(action: "promote") 按需调用。
promote_mode: "explain"(默认)— 对候选条目进行评分 + 门控,写入日志,不修改知识库。promote_mode: "apply"— 提升通过的候选条目,写入日志,git 提交。每次运行都会在
~/agent-knowledge/.dreams/YYYY-MM-DD.md中写入每个候选条目的信号分解和门控结果。以.开头的目录由 git 跟踪,但被排除在列表/搜索之外。基于来源的再水合:如果候选条目的源会话文件在磁盘上不再存在,则跳过该候选条目(防止提升已删除的内容)。
带有
evergreen: truefrontmatter 的条目永远不会被提升覆盖 — 活动会被追加。
写入基准测试工具:npm run bench:promote — 离线回放,通过"在后续会话中被引用"自动标注。将门控提升器与朴素的"全部发布"基线进行比较,报告精确率 / 召回率 / F1。在推出信号权重或阈值更改之前,使用它进行门控。
REST API
方法 | 端点 | 描述 |
GET |
| 列出知识条目 |
GET |
| 搜索知识库 |
GET |
| 读取特定条目 |
GET |
| 连接最多的条目 |
GET |
| 跨分类连接器 |
GET |
| 孤立条目 |
GET |
| 知识库摘要 |
GET |
| 列出会话 |
GET |
| 搜索会话(TF-IDF) |
GET |
| 限定范围召回 |
GET |
| 读取会话 |
GET |
| 会话摘要 |
POST |
| 写入条目(HTTP 客户端) |
GET |
| 健康检查 |
架构
graph LR
subgraph Storage
KB[(Knowledge Base<br/>~/agent-knowledge<br/>Git Repository)]
end
subgraph Session Sources
CC[(Claude Code<br/>JSONL)]
CU[(Cursor<br/>JSONL)]
OC[(OpenCode<br/>SQLite)]
CL[(Cline<br/>JSON)]
CD[(Continue.dev<br/>JSON)]
AI[(Aider<br/>MD / JSONL)]
end
subgraph agent-knowledge
KM[Knowledge Module<br/>store / search / git]
AD[Session Adapters<br/>auto-discovery]
SE[Search Engine<br/>TF-IDF + Fuzzy]
DS[Dashboard<br/>:3423]
MCP[MCP Server<br/>stdio]
end
subgraph Clients
AG[Agent Sessions]
WB[Web Browser]
end
KB <-->|git pull/push| KM
CC --> AD
CU --> AD
OC --> AD
CL --> AD
CD --> AD
AI --> AD
AD --> SE
KM --> MCP
SE --> MCP
KM --> DS
SE --> DS
MCP --> AG
DS --> WB知识图谱
条目和代码符号可以通过存储在专用 edges SQLite 表中的类型化、加权边进行连接。支持十一种关系类型 — 8 种用于知识边,3 种用于代码结构:
知识:related_to, supersedes, depends_on, contradicts, specializes, part_of, alternative_to, builds_on
代码结构:calls, imports, inherits
knowledge_graph(action: "link")创建或更新边(可带 0-1 的强度值)knowledge_graph(action: "unlink")移除边(可选按类型过滤)knowledge_graph(action: "list")列出条目或关系类型的边knowledge_graph(action: "traverse")从起始条目执行有向 BFS 遍历。支持direction(outbound、inbound、both)和rel_type过滤器knowledge_graph(action: "bulk_link")在单个事务中批量创建边(用于代码图谱摄取)knowledge_graph(action: "unlink_by_origin")删除具有特定来源的所有边(用于在重新摄取前清除过期的代码边)
代码图谱
代码结构边由 knowledge-ingest 技能在代码库摄取期间创建。它们使用 code: 前缀的节点 ID:
code:src/auth/middleware.ts # file node
code:src/auth/middleware.ts::validateToken # symbol node查询示例:
# Who calls validateToken?
knowledge_graph({ action: "traverse", entry: "code:src/auth.ts::validateToken", direction: "inbound", rel_type: "calls", depth: 3 })
# What breaks if I change this function?
knowledge_graph({ action: "traverse", entry: "code:src/auth.ts::validateToken", direction: "inbound", rel_type: "calls", depth: 5 })
# Combined: callers + knowledge context (decisions, design rationale)
knowledge_graph({ action: "traverse", entry: "code:src/auth.ts::validateToken", depth: 2 })自动链接
当 knowledge 以 action: "write" 创建或更新条目时,它会自动通过余弦相似度找到最相似的 3 个现有条目,并为任何得分高于 0.7 的配对创建 related_to 边。
置信度与衰减评分
每个知识条目都有一个置信度分数,跟踪在 entry_scores SQLite 表中。搜索结果使用以下公式排名:
finalScore = baseRelevance * 0.5^(daysSinceLastAccess / 90) * maturityMultiplier条目根据访问次数自动成熟:
阶段 | 访问次数 | 倍数 |
| < 5 | 0.5x |
| 5-19 | 1.0x |
| 20+ | 1.5x |
频繁访问的条目在搜索排名中会上升;过时的条目会随时间衰减。
搜索能力
TF-IDF 排名 —— 结果按词频-逆文档频率(term frequency-inverse document frequency)评分。稀有词会提升相关性。全局索引缓存 60 秒。
模糊匹配 —— 基于 Levenshtein 编辑距离的滑动窗口匹配。阈值可配置(默认 0.7)。
作用域召回 —— 通过 knowledge_search 的 scope 参数实现:
作用域 | 匹配内容 |
| 堆栈跟踪、异常、失败的命令 |
| 架构、待办事项、实现步骤 |
| 设置、环境变量、配置文件 |
| MCP 工具调用、CLI 命令 |
| 文件路径、修改 |
| 权衡、理由、选择 |
集成
REST 写入端点
POST /api/knowledge 接受 { category, filename, content } 并运行完整的写入流水线:git pull → 文件写入 → 嵌入索引 → 自动链接 → git push → 重复检查。返回 { path, autoLinks?, duplicateWarnings?, git },状态码为 201。
这使得其他服务无需 MCP 连接即可通过 HTTP 进行写入。
agent-tasks KnowledgeBridge
agent-tasks 内置了 KnowledgeBridge,会在任务完成时自动将 learning 和 decision 工件推送到 agent-knowledge。条目会落入 decisions/ 目录并带有 frontmatter 标签(agent-tasks、项目名称、工件类型),自动进行嵌入索引,并自动链接到相似条目。无需配置——只要 agent-knowledge 运行在 localhost:3423,即可正常工作。
测试
npm test # 563 tests across 35 files
npm run test:watch # Watch mode
npm run lint # ESLint on src/ and tests/
npm run typecheck # tsc --noEmit
npm run check # typecheck + lint + format + test环境变量
所有环境变量均以 AGENT_KNOWLEDGE_* 前缀命名。没有硬编码的主机名——适配器注册表会自动检测已安装的 AI 编码主机(.claude、.cursor、.codex、.aider、.continue、OpenCode),无需配置。
核心
变量 | 默认值 | 描述 |
|
| Git 同步的知识库目录 |
| -- | Git 远程仓库 URL(若目录不存在则自动克隆) |
|
| 自动将会话洞察提炼到知识库中 |
|
| 将原始会话消息块索引到向量存储中,以便后续可检索会话内容。在规模较大时设为 |
| (平台配置) | 覆盖主主机数据根目录。常规情况下保持未设置——适配器会自动检测 |
| -- | 额外的会话目录,以逗号分隔。会添加到自动检测到的结果之上。 |
|
| 仪表板 HTTP/WebSocket 端口 |
嵌入
变量 | 默认值 | 描述 |
|
|
|
|
| TF-IDF 与语义混合权重( |
| -- | 覆盖提供商的默认模型 |
|
| 卸载本地模型前的空闲秒数( |
| (自动) | 本地提供商的 ONNX / OMP 线程数 |
API 密钥
项目级覆盖优先于标准密钥。设置任一即可;项目级形式允许你使用与环境中其他部分不同的密钥来运行 agent-knowledge。
变量 | 回退 | 描述 |
|
| OpenAI 嵌入 |
|
| Claude / Voyage 嵌入 |
|
| Gemini 嵌入 |
钩子
变量 | 默认值 | 描述 |
|
| 自动将 |
|
| 唤醒包的令牌数 |
|
| 在首个用户提示上执行定向 |
|
| 首提示注入的令牌数(限制在 |
|
| 附加到首提示的最大知识命中数(限制在 |
|
| 在预压缩之前,提示代理通过 |
外部工具覆盖
变量 | 默认值 | 描述 |
|
| 覆盖 OpenCode 会话数据库的存储位置(OpenCode 自身的环境变量,我们的适配器会予以识别) |
文档
设置指南 —— 安装、客户端设置(Claude Code、OpenCode、Cursor、Windsurf)、钩子、技能
摄取指南 —— 代码库摄取技能、tree-sitter 提取、增量更新
架构 —— 源码结构、设计原则、数据库模式
仪表板 —— Web UI 视图与功能
许可证
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseBqualityCmaintenanceProvides AI assistants with persistent memory of your project architecture, development history, and technical decisions, allowing them to give context-aware coding help without needing repeated explanations.16612MIT

Doclea MCPofficial
AlicenseNot gradedqualityCmaintenanceProvides persistent memory for AI coding assistants, storing and retrieving architectural decisions, patterns, and solutions across sessions using semantic search, while also offering git integration for commit messages and code expertise mapping.MIT- AlicenseAqualityDmaintenanceProvides persistent memory for AI agents using hybrid search (vector embeddings + BM25) with neural reranking, enabling storage and retrieval of insights, debugging solutions, and patterns across coding sessions.8MIT
- AlicenseNot gradedqualityDmaintenanceProvides AI coding assistants with persistent, context-rich memory of a codebase, including documentation and git history, enabling recall across sessions.105Apache 2.0
Related MCP Connectors
Long-term memory for AI assistants. Hybrid retrieval, query expansion, auto-topics.
Persistent memory and knowledge management for AI agents with semantic search and 50+ tools.
Persistent memory and knowledge graphs for AI agents. Hybrid search, context checkpoints, and more.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/keshrath/agent-knowledge'
If you have feedback or need assistance with the MCP directory API, please join our Discord server