ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

AI Agent 共享知识库搭建教程:让 Claude Code、Hermes、Codex、VSCode 共用同一份记忆(TaoToken 统一 Key 接入版)

AI Agent 共享知识库搭建教程:让 Claude Code、Hermes、Codex、VSCode 共用同一份记忆(TaoToken 统一 Key 接入版) 1. 四个 AI 助手各记各的怎么破你在 Claude Code 里花了半小时讲清楚项目结构、接口约定、环境变量位置转头打开 Hermes 想问个后续问题它一脸茫然地让你重新介绍一遍。再切到 VSCode 里的 Cline 插件又是从零开始。Codex CLI 更不用说每次会话结束记忆就清空了。这不是你用得不对而是这些工具默认都把记忆存在各自沙箱里。Claude Code 的记忆在~/.claude下Hermes 有自己的会话存储Cline 走 VSCode 的插件数据目录Codex 又是另一套。四个工具、四份记忆、四次重复解释时间全耗在“复述上下文”上了。AI Agent 共享知识库要解决的就是这件事让 Claude Code、Hermes、Codex、VSCode 里的 AI 插件读写同一份持久化记忆。你在任何一个工具里存下的知识——比如“生产库连接串在.env第 15 行”“这个项目用 pnpm 不用 npm”“接口返回字段data.items是数组”——其他三个工具立刻就能检索到。适合谁用同时使用两个以上 AI 编码工具的开发者经常在不同工具间切换做同一项目的团队以及想让 AI 记住项目约定、避免每次重复交代的人。整套方案的核心思路是搭一个独立的记忆服务所有 AI 客户端通过统一协议连它而连接入口用 TaoToken 的统一 Key 和 API 通道省去每个工具单独配 Key 的麻烦。下面从目录结构开始一步步把四个工具接到同一份记忆上最后演示“在 Claude Code 存一条在 Hermes 查到”的完整验证。2. TaoToken 统一 Key 与共享记忆服务前置在动手之前先把两件事理清楚记忆服务本身怎么跑以及四个 AI 工具怎么通过一个统一入口访问模型能力。记忆服务我选 Cognee 作为后端它是一个开源 AI 记忆平台用知识图谱加向量搜索做长期记忆天然支持多客户端通过 MCP 协议共享同一份数据。但 Cognee 在摄入知识、做实体抽取和关系推理时需要调用大模型。如果每个工具、每次摄入都单独配一个模型 Key管理起来很乱。这时候用 TaoToken 的统一 Key 就顺了一个 Key 覆盖 Claude、GPT、DeepSeek 等模型通道记忆服务的模型调用和 AI 工具本身的模型调用都走它。TaoToken 在这里扮演的是统一 API 通道的角色。你不需要在每个工具里分别填不同厂商的 Key也不用担心某个工具的 Key 额度用完了要单独换。官网入口在 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 基址是 https://taotoken.net/api 。前置准备清单第一拿到 TaoToken 的 API Key。登录后进控制台在 API Keys 页面创建一个复制出来形如sk-xxxxxxxx的字符串。这个 Key 后面会同时填进记忆服务的环境变量和各个 AI 工具的配置里。第二确认本机有 Python 3.10 和 Git。轻量方案只需要 Python完整方案还需要 Docker。我建议先用轻量方案跑通再决定要不要上 Docker。第三规划一个固定目录放共享知识库。我用D:/tools/shared-knowledge你可以换成任意路径但后面所有配置里的路径都要跟着改别混用。第四确认四个工具的配置文件位置。Claude Code 在~/.claude/settings.jsonHermes 在D:/.hermes/config.yamlVSCode 的 Cline 在设置里的 MCP Servers 面板Codex CLI 在项目级.codex/mcp.json。这些位置先记下来第 3 节会逐个填。关于模型选择记忆服务做实体抽取时用deepseek-chat这类性价比高的模型就够不必上最贵的。TaoToken 的模型对话入口在 https://taotoken.net/api 你可以在里面先测一下 Key 是否可用确认能正常返回再往下走。3. 可复制的目录结构与四工具配置片段这一节是全文的核心所有配置片段都可以直接复制改路径和 Key 即可。先建目录结构mkdir -p D:/tools/shared-knowledge cd D:/tools/shared-knowledge目录规划如下D:/tools/shared-knowledge/ ├── engine.py # 知识引擎核心remember / recall / forget ├── kb.py # CLI 命令行接口 ├── knowledge.db # SQLite 数据库首次运行自动创建 └── .env # 存放 TaoToken Key 和模型配置先写.env把 TaoToken 的 Key 和 API 基址填进去# D:/tools/shared-knowledge/.env TAOTOKEN_API_KEYsk-你的Key TAOTOKEN_BASE_URLhttps://taotoken.net/api MEMORY_MODELdeepseek-chat然后是engine.py这是记忆引擎的核心提供三个函数remember存知识、recall搜知识、forget删知识。用 SQLite 做存储零外部依赖# D:/tools/shared-knowledge/engine.py import sqlite3, hashlib from datetime import datetime from pathlib import Path DB_PATH Path(__file__).parent / knowledge.db def _init_db(): conn sqlite3.connect(str(DB_PATH)) conn.execute( CREATE TABLE IF NOT EXISTS facts ( id TEXT PRIMARY KEY, content TEXT NOT NULL, tags TEXT DEFAULT , updated_at TEXT NOT NULL ) ) conn.commit() conn.close() def remember(text: str, tags: str ) - dict: 存储知识相同内容自动去重更新 _init_db() conn sqlite3.connect(str(DB_PATH)) fact_id hashlib.md5(text.encode()).hexdigest()[:16] now datetime.now().isoformat() conn.execute( INSERT OR REPLACE INTO facts (id, content, tags, updated_at) VALUES (?, ?, ?, ?) , (fact_id, text, tags, now)) conn.commit() conn.close() return {id: fact_id, content: text, status: stored} def recall(query: str, limit: int 10) - list: 按关键词搜索知识 _init_db() conn sqlite3.connect(str(DB_PATH)) conn.row_factory sqlite3.Row rows conn.execute( SELECT * FROM facts WHERE content LIKE ? OR tags LIKE ? ORDER BY updated_at DESC LIMIT ? , (f%{query}%, f%{query}%, limit)).fetchall() conn.close() return [dict(r) for r in rows] def forget(fact_id: str) - int: 按 ID 删除知识 _init_db() conn sqlite3.connect(str(DB_PATH)) conn.execute(DELETE FROM facts WHERE id?, (fact_id,)) conn.commit() deleted conn.total_changes conn.close() return deleted再写kb.py把引擎包成命令行工具这样任何终端、任何 AI 工具都能调用# D:/tools/shared-knowledge/kb.py import sys, json from engine import remember, recall, forget, DB_PATH import sqlite3 def main(): if len(sys.argv) 2: print(用法: kb.py [remember|recall|forget|list|stats] ...) return cmd sys.argv[1] if cmd remember: print(json.dumps(remember(sys.argv[2]), ensure_asciiFalse)) elif cmd recall: for r in recall(sys.argv[2]): print(f[{r[id]}] {r[content]}) elif cmd forget: print(fdeleted: {forget(sys.argv[2])}) elif cmd list: for r in recall(, 100): print(f[{r[id]}] {r[content]}) elif cmd stats: conn sqlite3.connect(str(DB_PATH)) n conn.execute(SELECT COUNT(*) FROM facts).fetchone()[0] conn.close() print(json.dumps({total_facts: n}, ensure_asciiFalse)) if __name__ __main__: main()初始化并验证cd D:/tools/shared-knowledge python kb.py stats # 输出: {total_facts: 0}现在四个工具的配置。核心是让它们都能调用kb.py并且模型请求走 TaoToken。Claude Code的~/.claude/settings.json加入 MCP 服务器指向本地知识库同时把模型通道指向 TaoToken{ mcpServers: { shared-knowledge: { command: python, args: [D:/tools/shared-knowledge/kb.py, recall], env: { TAOTOKEN_API_KEY: sk-你的Key, TAOTOKEN_BASE_URL: https://taotoken.net/api } } }, env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_API_KEY: sk-你的Key } }Hermes的D:/.hermes/config.yaml在mcp_servers下加一段mcp_servers: shared-knowledge: command: python args: - D:/tools/shared-knowledge/kb.py - recall env: TAOTOKEN_API_KEY: sk-你的Key TAOTOKEN_BASE_URL: https://taotoken.net/apiVSCode 的 Cline在设置里找到 MCP Servers添加{ mcpServers: { shared-knowledge: { command: python, args: [D:/tools/shared-knowledge/kb.py, recall], env: { TAOTOKEN_API_KEY: sk-你的Key, TAOTOKEN_BASE_URL: https://taotoken.net/api } } } }Codex CLI的项目级.codex/mcp.json{ mcpServers: { shared-knowledge: { command: python, args: [D:/tools/shared-knowledge/kb.py, recall], env: { TAOTOKEN_API_KEY: sk-你的Key, TAOTOKEN_BASE_URL: https://taotoken.net/api } } } }四个配置里 Base URL、Key、Model ID 三件套要一致Base URL 都是https://taotoken.net/apiKey 都是同一个 TaoToken KeyModel ID 在.env里统一为deepseek-chat。这样无论哪个工具触发记忆读写走的都是同一条通道、同一份数据。4. 验证请求存一条四个工具都能查到配置填完重启四个工具然后做一次端到端验证。这一步的目的是确认“写入一份、多方读取”真的成立。先在任意终端存一条知识cd D:/tools/shared-knowledge python kb.py remember 生产库连接串在 .env 第 15 行变量名 DATABASE_URL输出{id: a23a52cb66122ca1, content: 生产库连接串在 .env 第 15 行变量名 DATABASE_URL, status: stored}再存一条带标签的python kb.py remember 本项目用 pnpm不要用 npm install build现在验证检索。在终端直接搜python kb.py recall DATABASE_URL # [a23a52cb66122ca1] 生产库连接串在 .env 第 15 行变量名 DATABASE_URL python kb.py recall pnpm # [7f3ed449xxxx] 本项目用 pnpm不要用 npm install终端能查到只是第一步关键是四个 AI 工具里也能查到。逐个验证在 Claude Code 里输入“查一下知识库里 DATABASE_URL 在哪”。Claude Code 会通过 MCP 调用kb.py recall返回上面那条记录。如果它没自动调用你可以直接说“用 shared-knowledge 这个 MCP 工具搜 DATABASE_URL”。在 Hermes 里问同样的问题。Hermes 的 MCP 客户端会连到同一个kb.py读同一个knowledge.db返回结果应该和 Claude Code 完全一致。在 VSCode 的 Cline 里打开对话面板问“pnpm 还是 npm”。Cline 通过配置的 MCP Server 检索命中第二条记录。在 Codex CLI 里进入项目目录后问“构建工具用什么”。Codex 读.codex/mcp.json里的配置同样命中。四个工具返回的内容一字不差因为它们读的是同一个 SQLite 文件。这就是共享记忆的本质存储层只有一份工具只是不同的读取入口。再做一个反向验证在 Hermes 里存一条去 Claude Code 查# 在 Hermes 终端 python kb.py remember 接口返回字段 data.items 是数组不是对象然后到 Claude Code 里问“data.items 是什么类型”应该返回“数组”。这一步确认写入方向也是通的不是单向只读。最后看统计python kb.py stats # {total_facts: 3}三条记录四个工具共享。到这里AI Agent 共享知识库就跑通了。5. 常见报错排查401、local proxy failed、reading choices配置过程中最容易卡在几个固定报错上这一节按真实错误信息逐个拆。报错一401 UnauthorizedError: 401 Unauthorized - invalid api key原因通常是 Key 没填对或者填了但没生效。排查顺序先确认.env里的TAOTOKEN_API_KEY是完整的sk-开头字符串没有多余空格或换行再确认四个工具的配置里 Key 和.env一致别一个填了新的一个还是旧的最后确认 Base URL 是https://taotoken.net/api末尾不要多加/v1或斜杠。改完配置后必须重启工具Claude Code 和 Hermes 都是启动时读配置热改不生效。报错二local proxy failed / connection refusedError: local proxy failed: dial tcp 127.0.0.1:8001: connect: connection refused这个报错说明工具在连本地 MCP 服务但服务没起来。如果你用的是完整 Cognee 方案检查 Docker 容器是否在跑docker compose --profile mcp --profile neo4j ps如果 MCP 容器是 exited 状态看日志docker compose logs mcp如果你用的是本文的轻量方案这个报错通常是因为kb.py路径写错了工具找不到脚本。检查配置里的args路径Windows 下用正斜杠D:/tools/shared-knowledge/kb.py别用反斜杠反斜杠在 JSON 里要转义容易出错。另外确认python命令在 PATH 里可以先用python --version测一下。报错三reading choices / unexpected end of JSONError: reading choices: unexpected end of JSON input这是模型返回体解析失败多半是 Base URL 或模型名不对。先确认MEMORY_MODEL填的是 TaoToken 支持的模型 ID比如deepseek-chat别填成gpt-4这种可能没开通的。再确认 Base URL 没有拼错。可以用 curl 直接测一下通道curl https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer sk-你的Key \ -H Content-Type: application/json \ -d {model:deepseek-chat,messages:[{role:user,content:hi}]}如果这条 curl 返回正常 JSON说明 Key 和通道没问题报错就在工具配置侧如果 curl 也报错那就是 Key 或模型 ID 的问题。报错四OAuth / authentication failedError: OAuth authentication failed有些工具默认走 OAuth 登录流程但你用的是 API Key 模式两者冲突。解决办法是在工具配置里显式指定 API Key 模式关掉 OAuth。Claude Code 里确认ANTHROPIC_API_KEY已设置Codex CLI 里检查auth.json是否残留了旧的 OAuth token有的话清掉改用 Key 认证。报错五MCP tool not foundError: MCP tool shared-knowledge not found工具没识别到 MCP 配置。检查配置文件位置对不对Claude Code 是~/.claude/settings.jsonHermes 是D:/.hermes/config.yamlCodex 是项目级.codex/mcp.json。改完必须完全退出工具再重开不是关窗口是结束进程。VSCode 的 Cline 要在设置面板里点一下 MCP Servers 的刷新。排查口诀先 curl 测通道再查 Key 一致性再看路径和进程最后重启工具。四步走完九成报错能定位。6. 把共享记忆接进日常编码流跑通之后真正让它产生价值的是把它接进日常流程。几个实用做法。第一把项目约定在开工时批量存进去。新项目初始化时花两分钟把“包管理器是 pnpm”“测试命令是 pnpm test”“环境变量在 .env”“接口基址是 /api/v2”这些存进知识库。之后无论用哪个 AI 工具它都能直接查到不用每次交代。第二用标签做分类。remember支持第二个参数打标签比如build、api、env。检索时标签也会被匹配找起来更快。项目多了以后标签就是你的索引。第三定期清理过期记忆。环境变量位置变了、接口字段改了旧记录要删掉否则 AI 会查到过时信息。用kb.py list看全部kb.py forget id删掉不要的。别让知识库变成垃圾场。第四长期编码和 Agent 任务建议走 Coding Plan。共享记忆配合稳定的模型通道才能让 Agent 在长任务里持续读写上下文。入口在 https://taotoken.net/api 的 coding-plan 页面适合需要长时间跑 Agent、频繁调用模型的场景。第五记忆服务的模型调用和工具本身的模型调用都走 TaoToken 统一 Key额度集中管理换模型只改一处。接入文档在 https://taotoken.net/api 的 doc 页面API Keys 管理在 console 的 api-keys 页面。最后提醒一个容易忽略的点knowledge.db是普通 SQLite 文件可以直接备份、可以放进 Git如果内容不敏感、可以拷到另一台机器。换电脑时把整个shared-knowledge目录复制过去四个工具改一下路径就能继续用记忆不丢。这比每个工具各自导出导入省事得多。存一次处处可查。四个 AI 助手终于共用同一个大脑了。
返回列表