Local-first agent memory & knowledge service with hybrid retrieval (BGE-M3 dense vectors + BM25 via jieba, fused with RRF), document & webpage ingestion, and optional RAG answering via local Ollama. Single process, embedded ChromaDB, REST + native MCP server; fully functional offline without any LLM. Apache-2.0.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent — or use 1-click editor setup below.
💡 Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
English | 中文
本地优先、完全离线可用的 Agent 记忆与知识服务——REST + MCP 双协议,混合检索(向量 + BM25 归一化加权融合),文档/网页入库与 RAG 问答;无 LLM 时存取与检索完整可用。
本仓库含两个子系统(ROADMAP):
| 子系统 | 一句话定位 | 状态 |
|---|---|---|
| kb | 本地优先、完全免费的 Agent 记忆与知识服务(核心产品,开发主线,当前测试开发阶段) | 测试开发中 |
| agent-orchestra | 基于 kb 共享任务板的跨任务多 Agent 协作系统(❄️ 维护模式,自用脚手架) | B1-B3 收口冻结 |
开源协议:Apache-2.0(含专利授权,可商用)。
Windows 单进程常驻(python -m kb serve),REST + MCP 双协议,向 Claude Code /
Cursor / TraeWork / 自建 Agent 提供记忆写入、文档与网页入库、混合检索
(向量 + BM25 归一化加权融合)与 RAG 问答。
无 LLM 时存取与检索完整可用——记忆写入、文档入库、混合检索不依赖任何大模型;
配置本地 Ollama 或云端 API 后,/ask 问答能力自动启用。
python -m kb serve 同时提供 REST API 与 MCP 端点,无需额外组件KB_RERANK_ENABLED=true 启用 bge-reranker-v2-m3 交叉重排(默认关)KB_SPARSE_ENABLED=true 启用 BGE-M3 稀疏向量第三路(默认关,失败自动降级双路)logs/agent-audit/<客户端>__<项目>.log(按 client+project 分文件);用户可查:REST GET /api/v1/audit?client=<客户端>[&project=<项目>] 或 CLI kb audit --client <客户端>KB_WATCH_DIR)kb add/search/stats/ask/eval/forget/dedup——终端直接完成写入、检索、统计与 RAG 问答/ask 智能路由(本地优先,难题可选云端)Windows PowerShell:
Linux / macOS:
重要:
kb命令只装在虚拟环境内。每个新终端都要先激活虚拟环境 (Windows.\venv\Scripts\Activate.ps1,Linux/macOSsource venv/bin/activate), 否则会提示kb:未找到命令。改用python -m kb <子命令>可绕过激活。快速安装备选(免虚拟环境,Python 3.10+):
pip install --user -r requirements.txt后 用python -m kb serve运行,但建议优先使用 venv 隔离依赖。
启动后健康检查:
首次启动会加载本地嵌入模型(默认 BAAI/bge-m3,约 2GB,需提前下载缓存); 未配置 LLM 时服务照常启动,
/ask返回 503 与配置指引。LLM 默认关闭(
KB_LLM_MODE=off):服务启动不会探测/加载/调用任何大模型, 零显存、零成本、纯离线;记忆写入、文档入库、混合检索完整可用。 需要 RAG 问答(/ask)时再按下面方式配置本地或云端 LLM。
/ask 问答需要)KB_LLM_MODE 默认 off(不加载不调用);四个档位:
| 档位 | 行为 |
|---|---|
off(默认) | 完全不加载/不调用 LLM;记忆存取与检索完整可用 |
local | 仅本地 Ollama(完全离线,隐私零出网) |
auto | 本地优先,云端降级:本地 Ollama 可用走本地,无本地但有云端 Key 走云端 |
cloud | 全部走云端(本地仅做压缩与隐私隔离) |
本地 LLM(Ollama):
云端 LLM(任意 OpenAI 兼容服务商,不绑定 DeepSeek): DeepSeek / OpenAI / 通义千问 / 硅基流动 / Moonshot 等均可,通用三键:
验证:GET /api/v1/healthz 的 llm 字段——local/cloud 表示 LLM 已就绪,disabled 表示未启用。
huggingface.co 会超时。设置 HF 镜像后重启即可:
模型会自动从镜像下载并缓存到 ~/.cache/huggingface/hub/,之后断网也能离线加载。kb 采用离线优先(先命中本地缓存,失败才联网),
只要缓存目录完整即可完全离线运行。把 kb 的接入规约交给 AI 客户端(TraeWork / Claude Code / Cursor / 自建 Agent), 让它们知道怎么读写记忆、按什么身份规约、怎么查审计。两种方式,任选其一:
skill(推荐,能自动触发)——可选的独立步骤:仓库内
skills/kb-memory/SKILL.md
是客户端无关的 Anthropic 开格式 skill。把它安装到你所用客户端的用户级 skills 目录后,
该客户端的任何项目会话都会在读写记忆/RAG 问答/审计查询时自动识别并触发。
安装 = 把 skills/kb-memory 目录复制过去即可(有脚本,也可手动复制,无需任何依赖);
更新(重新覆盖)、卸载、以及装好后的使用说明见
scripts/README.md。
不装也不影响 kb 服务:skill 只是给 AI 客户端的「提示词包装」,与服务的安装、 启动无关——跳过这一步,服务照常运行,你随时可用方法 2 的纯文本提示词接入; skill 安装是一次性、按需、独立执行的,不会随
kb serve自动触发, 也不会写入你的任何客户端目录以外的文件。
纯文本提示词(兜底,任何客户端通用):整段复制
docs/AGENT_PROMPT.md 粘贴给 Agent 即可,不依赖 skill 机制。
.trae-cn/skills/.claude/skills/.cursor/skills是任何客户端都认的「标准」吗?——不是。 这些只是各家客户端各自的用户级约定目录:SKILL.md本身是统一的 Anthropic 开格式, 但「装到哪个目录、能否自动触发」由各客户端自行决定,支持程度不一:
| 客户端 | 用户级 skills 目录 | 自动加载 |
|---|---|---|
| TraeWork | ~/.trae-cn/skills/ | 自动发现 |
| Claude Code | ~/.claude/skills/ | 高版本支持 |
| Cursor | ~/.cursor/skills/ | 逐步跟进 |
| 其他 / 自建 Agent | 无统一约定 | 需手动加载或不支持 |
不存在「所有客户端都遵循」的统一目录;你的客户端若不支持 skill,永远有方法 2 兜底 (粘贴
AGENT_PROMPT.md,纯文本任何客户端可用)。安装方法、各客户端目录差异与加载机制、 相互引用关系:详细见scripts/README.md(此处不重复)。
MCP 端点(streamable HTTP):http://127.0.0.1:8000/mcp/
Claude Code:本仓库已内置项目级 .mcp.json,在本目录启动 Claude Code 即自动挂载;
也可全局添加:
Cursor / TraeWork 及其他支持 MCP 的客户端:在 MCP 配置中加入以下 JSON
(Cursor 放 ~/.cursor/mcp.json 或项目 .cursor/mcp.json;TraeWork 在设置中添加 MCP 服务器):
挂载后可用的 MCP 工具:write_memory / search_memory / read_memory /
update_memory / delete_memory / add_document / add_webpage / ask_kb。
启用
KB_API_KEY鉴权后,MCP 客户端需在连接配置加headers(Authorization: Bearer <key>); 仓库内.mcp.json模板不含真实 key(JSON 不支持注释),配法见 USER_GUIDE §5.2。
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /api/v1/memories | 写入记忆 {content, tags?, source?, namespace?} |
| GET | /api/v1/memories | 记忆列表,支持 type/tag/source/q/limit/offset 过滤 |
| GET | /api/v1/memories/{id} | 读取单条记忆 |
| PATCH | /api/v1/memories/{id} | 更新内容或标签 |
| DELETE | /api/v1/memories/{id} | 删除单条记忆 |
| POST | /api/v1/search | 混合检索 {query, top_k?, mode?, type?, tag?},mode: hybrid/vector/keyword |
| POST | /api/v1/documents | 文档入库:multipart file 字段或 JSON {"path": "本地路径"} |
| GET | /api/v1/documents | 已入库文档列表(按 source 聚合) |
| DELETE | /api/v1/documents/{source} | 按 source 删除该文档全部记录 |
| POST | /api/v1/ingest/web | 网页入库 {url},抓取正文切分入库 |
| POST | /api/v1/ask | RAG 问答 {question};未配置 LLM 返回 503 |
| GET | /api/v1/healthz | 健康检查与服务统计 |
| GET | /api/v1/governance/stats | 记忆治理统计:total_count/avg_access_count/stale_90d_count(只读) |
| GET | /api/v1/governance/config | 治理配置:衰减+新鲜度开关与参数(只读) |
| POST | /api/v1/memories → 409 | 启用语义去重(KB_DEDUP_ENABLED=true)后写入命中重复返回 409:{"error":"DUPLICATE","duplicate_of":"<已有记录id>","similarity":<相似度>}(不写入) |
记忆治理(去重/衰减/新鲜度)均默认关闭、零行为变化;用法见 USER_GUIDE §3.5。
示例:
全部配置以 KB_ 前缀的环境变量或 .env 文件提供;完整键名见 .env.example
(复制为 .env 后填写,.env 已被 gitignore,真实密钥只放本机,严禁入库)。
| 配置项 | 默认值 | 说明 |
|---|---|---|
KB_LLM_MODE | off | LLM 模式:off(默认,不加载/不调用 LLM,零显存零成本)/ local(仅本地 Ollama)/ auto(本地优先,云端降级)/ cloud |
KB_DEVICE | 空 | 嵌入模型设备:空=自动检测,可显式设 cpu / cuda |
KB_WATCH_DIR | data | serve 模式监听目录,文件变动自动入库;空串或 . = 不启动 |
KB_DATA_DIR | kb_data | 运行数据根目录(ChromaDB、运行时状态等) |
KB_API_HOST / KB_API_PORT | 127.0.0.1 / 8000 | REST 与 MCP 监听地址 |
KB_EMBED_MODEL | BAAI/bge-m3 | 嵌入模型 |
KB_LLM_MODEL | 空 | 本地 Ollama 模型名(默认空=不配;配 KB_LLM_MODE=local/auto 时须按自己电脑选模型,以 ollama list 为准) |
KB_OLLAMA_BASE_URL | http://localhost:11434 | Ollama 端点 |
KB_LLM_API_KEY / KB_LLM_BASE_URL / KB_LLM_CLOUD_MODEL | 空 | 云端 LLM(可选):任意 OpenAI 兼容服务商(DeepSeek / OpenAI / 通义 / 硅基流动等),仅填在本机 .env |
KB_CHUNK_SIZE / KB_CHUNK_OVERLAP | 500 / 100 | 文档切分参数 |
KB_SENSITIVE_NAMESPACES | 空 | 逗号分隔的敏感 namespace,命中强制本地回答不出网 |
KB_API_KEY | 空 | 空=不鉴权(本地回环零摩擦);非空=启用 Bearer/X-API-Key 鉴权;orchestra 客户端自动带 X-API-Key 头 |
KB_RERANK_ENABLED / KB_RERANK_MODEL / KB_RERANK_TOP_N | false / BAAI/bge-reranker-v2-m3 / 20 | 检索精排(A3.5):融合候选送 CrossEncoder 重排,默认关 |
KB_SPARSE_ENABLED | false | 稀疏第三路(A3.5):BGE-M3 稀疏向量 + 倒排索引参与归一化加权融合,默认关 |
No reviews yet — be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/fish827-08-rag-kb)<a href="https://allmcps.com/mcp/fish827-08-rag-kb"><img src="https://allmcps.com/api/badge/fish827-08-rag-kb?style=directory" alt="Rag Kb on AllMCPs" /></a>