首页 › AI Agent实战项目案例库 › 从0-1构建 RAG+Wiki 企业级知识库 › 让 Agent 快速拥有长期记忆

让 Agent 快速拥有长期记忆

​

给现有的 Claude Code、Qoder、Codex 等 Agent 接入 Context0,安装配置完成后正常对话即可积累和使用长期记忆。无需学习日常读写记忆的 CLI 命令,内置 Skill 会帮助 Agent 使用这些能力。​

​

架构​

对话由 Hook 自动提交,后台提炼记忆。新会话按配置加载用户画像,任务相关的历史信息由 Agent 在内置 Skill 的指导下按需检索。​

​

飞书文档 - 图片

​

接入后能做什么​

每次开启新会话,都要重新解释技术栈、代码风格和项目决策,是使用 Coding Agent 时常见的重复工作。接入 Context0 后,这些信息可以跨会话保留,Agent 在后续任务中继续使用。​

​

#wGZLCQNeZcrs text { white-space: pre; }#wGZLCQNeZcrs .fb0 { stroke: var(--N900-FG, 0.15); }#wGZLCQNeZcrs .fb0 {stroke: rgba(31,35,41, 0.15)}#wGZLCQNeZcrs .fx0 { stroke-miterlimit: 10; }#wGZLCQNeZcrs .fx0 {stroke-miterlimit: 10}#wGZLCQNeZcrs .fa1 { fill: rgb(187, 191, 196); }#wGZLCQNeZcrs .fa1 {fill: rgb(187, 191, 196)}#wGZLCQNeZcrs .fx1 { font: 400 12px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#wGZLCQNeZcrs .fx1 {font-style: normal}#wGZLCQNeZcrs .fx2 { text-anchor: middle; }#wGZLCQNeZcrs .fx2 {text-anchor: middle}#wGZLCQNeZcrs .fx3 { dominant-baseline: central; }#wGZLCQNeZcrs .fx3 {dominant-baseline: central}#wGZLCQNeZcrs .fx4 { stroke: none; }#wGZLCQNeZcrs .fx4 {stroke: none}#wGZLCQNeZcrs .fc0 { fill: var(--text-caption); }#wGZLCQNeZcrs .fc0 {fill: #646a73}#wGZLCQNeZcrs .fa2 { fill: var(--text-link-disabled); }#wGZLCQNeZcrs .fa2 {fill: rgb(187, 191, 196)}#wGZLCQNeZcrs .fa3 { fill: rgb(229, 229, 229); }#wGZLCQNeZcrs .fa3 {fill: rgb(229, 229, 229)}#wGZLCQNeZcrs .fx5 { font: 700 14px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#wGZLCQNeZcrs .fx5 {font-style: normal}#wGZLCQNeZcrs .fx6 { text-anchor: start; }#wGZLCQNeZcrs .fx6 {text-anchor: start}#wGZLCQNeZcrs .fx7 { dominant-baseline: alphabetic; }#wGZLCQNeZcrs .fx7 {dominant-baseline: alphabetic}#wGZLCQNeZcrs .fc1 { fill: rgb(0, 0, 0); }#wGZLCQNeZcrs .fc1 {fill: rgb(0, 0, 0)}#wGZLCQNeZcrs .fx8 { font: 400 14px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#wGZLCQNeZcrs .fx8 {font-style: normal}#wGZLCQNeZcrs .fb1 { fill: var(--N900-FG, 0.15); }#wGZLCQNeZcrs .fb1 {fill: rgba(31,35,41, 0.15)}#wGZLCQNeZcrs .fb2 { fill: rgb(216, 216, 216); }#wGZLCQNeZcrs .fb2 {fill: rgb(216, 216, 216)}#wGZLCQNeZcrs .fa4 { fill: var(--bg-body); }#wGZLCQNeZcrs .fa4 {fill: #fff}AB12345您想做的事直接对 Agent 说记住项目约定沿用历史决策找回讨论结论更新旧约定"这个项目统一用 Vitest,测试放在tests目录。""按我们之前确定的鉴权方案,补上登录接口。""上次讨论的发布流程是什么?""测试框架已经改成 Vitest,请更新之前的记忆。"

​

您负责描述任务,内置 Skill 帮助 Agent 判断何时查记忆、怎样读取和使用结果。​

快速上手​

第一步:准备服务与连接信息​

先在控制台开通 Context0 实例,或使用团队已部署的服务。​

​

#aUBRQCWMZHgt text { white-space: pre; }#aUBRQCWMZHgt .fb0 { stroke: var(--N900-FG, 0.15); }#aUBRQCWMZHgt .fb0 {stroke: rgba(31,35,41, 0.15)}#aUBRQCWMZHgt .fx0 { stroke-miterlimit: 10; }#aUBRQCWMZHgt .fx0 {stroke-miterlimit: 10}#aUBRQCWMZHgt .fa1 { fill: rgb(187, 191, 196); }#aUBRQCWMZHgt .fa1 {fill: rgb(187, 191, 196)}#aUBRQCWMZHgt .fx1 { font: 400 12px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#aUBRQCWMZHgt .fx1 {font-style: normal}#aUBRQCWMZHgt .fx2 { text-anchor: middle; }#aUBRQCWMZHgt .fx2 {text-anchor: middle}#aUBRQCWMZHgt .fx3 { dominant-baseline: central; }#aUBRQCWMZHgt .fx3 {dominant-baseline: central}#aUBRQCWMZHgt .fx4 { stroke: none; }#aUBRQCWMZHgt .fx4 {stroke: none}#aUBRQCWMZHgt .fc0 { fill: var(--text-caption); }#aUBRQCWMZHgt .fc0 {fill: #646a73}#aUBRQCWMZHgt .fa2 { fill: var(--text-link-disabled); }#aUBRQCWMZHgt .fa2 {fill: rgb(187, 191, 196)}#aUBRQCWMZHgt .fa3 { fill: rgb(229, 229, 229); }#aUBRQCWMZHgt .fa3 {fill: rgb(229, 229, 229)}#aUBRQCWMZHgt .fx5 { font: 700 14px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#aUBRQCWMZHgt .fx5 {font-style: normal}#aUBRQCWMZHgt .fx6 { text-anchor: start; }#aUBRQCWMZHgt .fx6 {text-anchor: start}#aUBRQCWMZHgt .fx7 { dominant-baseline: alphabetic; }#aUBRQCWMZHgt .fx7 {dominant-baseline: alphabetic}#aUBRQCWMZHgt .fc1 { fill: rgb(0, 0, 0); }#aUBRQCWMZHgt .fc1 {fill: rgb(0, 0, 0)}#aUBRQCWMZHgt .fx8 { font: 400 14px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#aUBRQCWMZHgt .fx8 {font-style: normal}#aUBRQCWMZHgt .fx9 { font: 400 14px LarkHackSafariFont, LarkEmojiFont, Menlo, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Helvetica, "Noto Sans", Tahoma, "Nimbus Sans L", Arial, "Liberation Sans", "PingFang SC", "Hiragino Sans GB", "Noto Sans CJK SC", "Source Han Sans SC", "Source Han Sans CN", "Microsoft YaHei", "Wenquanyi Micro Hei", "WenQuanYi Zen Hei", STHeiti, SimHei, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji", system-ui; }#aUBRQCWMZHgt .fx9 {font-style: normal}#aUBRQCWMZHgt .fb1 { fill: var(--N900-FG, 0.15); }#aUBRQCWMZHgt .fb1 {fill: rgba(31,35,41, 0.15)}#aUBRQCWMZHgt .fb2 { fill: rgb(216, 216, 216); }#aUBRQCWMZHgt .fb2 {fill: rgb(216, 216, 216)}#aUBRQCWMZHgt .fa4 { fill: var(--bg-body); }#aUBRQCWMZHgt .fa4 {fill: #fff}AB123456准备项说明连接信息Node.jsContext0 地址API Key用户标识现有 Agent版本 ≥ 22,用 查看。在控制台中的数据面服务地址。有权访问实例的 Key,日常 Agent 接入可使用 Owner Key 或者 User Key为自己选择稳定的 ,后续使用同一标识Claude Code、Qoder、Codex、Qwen Code、Hermes 或 QoderWorknode --versionuser_id

​

将 API Key 放入环境变量 CTXDB0_API_KEY。下面以 Claude Code 为例,替换地址和用户标识后执行一次即可。​

第二步:安装并连接到现有 Agent​

​

代码块​

Bash

# 安装 ctxdb0 CLI(要求 Node.js ≥ 22)​

npm install -g @polardbx/ctxdb0​

​

# 通过 stdin 传入 API Key,建立连接 profile(替换 endpoint 与 user-id)printf '%s' "$CTXDB0_API_KEY" | ctxdb0 connect \​

--profile default \​

--endpoint 'http://您的实例域名' \​

--user-id 'your-user-id' \​

--api-key-stdin --json​

​

# 把插件挂载到 Claude Code(其他 Agent 替换 --host 值即可)​

​

•

远程服务使用HTTP地址,本机开发可使用 http://localhost:4040。​

•

attach 安装 Hook 和内置 Skill。按 doctor 提示完成 Host 激活或信任步骤,再开启一个新会话,就可以开始正常使用。其他 Agent 只需替换 --host,见下方支持表。​

•

这些命令用于一次性接入。接入后,日常记忆读写交给 Agent,不需要您反复执行命令。​

第三步:正常对话,开始积累记忆​

首次写入项目约定:​

​

代码块​

LaTeX

您:这个项目统一使用 Vitest,测试放在 __tests__ 目录,以后按这个约定来。​

Agent:好的,后续会按这个测试约定开发。​

​

回合结束后,本轮对话自动提交到 Context0,后台异步提炼。处理完成后,可尝试跨会话召回记忆。​

跨会话召回已存储的记忆:​

​

代码块​

LaTeX

您:按我们之前的测试约定,帮我给订单模块加单元测试。​

Agent:查到之前的约定是 Vitest,测试放在 __tests__ 目录。​

我会按这个结构补充订单模块的测试。​

​

这就是日常使用方式。无需手动搜索、复制记忆或拼接提示词。如果是刚刚写入的新内容,给后台留出处理时间即可。​

支持的 Agent 平台​

​

#wgUUUTzrMPDm text{white-space:pre}.fb0{stroke:var(--N900-FG, 0.15)}.fx0{stroke-miterlimit:10}.fa1{fill:#bbbfc4}.fx1{font:normal 400 12px MonospacedNumber,LarkHackSafariFont,LarkEmojiFont,LarkChineseQuote,-apple-system,BlinkMacSystemFont,Helvetica Neue,Tahoma,PingFang SC,Microsoft Yahei,Arial,Hiragino Sans GB,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.fx2{text-anchor:middle}.fx3{dominant-baseline:central}.fx4{stroke:none}.fc0{fill:var(--text-caption)}.fa2{fill:var(--text-link-disabled)}.fa3{fill:rgb(229, 229, 229)}.fx5{font:700 normal 14px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"}.fx6{text-anchor:start}.fx7{dominant-baseline:alphabetic}.fc1{fill:rgb(0, 0, 0)}.fx8{font:400 normal 14px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"}.fx9{font:700 normal 14px LarkHackSafariFont, LarkEmojiFont, "Menlo", -apple-system, BlinkMacSystemFont, "Helvetica Neue", Helvetica, "Noto Sans", Tahoma, "Nimbus Sans L", Arial, "Liberation Sans", "PingFang SC", "Hiragino Sans GB", "Noto Sans CJK SC", "Source Han Sans SC", "Source Han Sans CN", "Microsoft YaHei", "Wenquanyi Micro Hei", "WenQuanYi Zen Hei", STHeiti, SimHei, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji", system-ui}.fx10{font:400 normal 14px LarkHackSafariFont, LarkEmojiFont, "Menlo", -apple-system, BlinkMacSystemFont, "Helvetica Neue", Helvetica, "Noto Sans", Tahoma, "Nimbus Sans L", Arial, "Liberation Sans", "PingFang SC", "Hiragino Sans GB", "Noto Sans CJK SC", "Source Han Sans SC", "Source Han Sans CN", "Microsoft YaHei", "Wenquanyi Micro Hei", "WenQuanYi Zen Hei", STHeiti, SimHei, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji", system-ui}.fb1{fill:var(--N900-FG, 0.15)}.fb2{fill:rgb(216, 216, 216)}.fa4{fill:var(--bg-body)}ABC1234567Agent接入说明Claude CodeQoder CLIOpenAI CodexQwen CodeHermes AgentQoderWork安装 Hook 和静态 Skill安装 Hook 和静态 Skill通过原生插件接入,按提示信任 Hook安装 Hook 和静态 Skill安装后按提示接受 Hook allowlist;记忆检索由 Skill 指导 Agent 执行回合捕获为降级模式,可通过内置 Skill 使用记忆--hostclaudeqodercodexqwenhermesqoderwork

​

一台机器可接入多个 Agent,各自安装与激活。Claude Code、Codex、Qoder、Qwen 支持启动时注入画像。Hermes、QoderWork 当前不支持这项注入,可由 Agent 主动读取记忆。​

日常使用举例​

以下示例展示历史内容已完成提炼、当前连接有权限读取时的使用效果。​

技术选型跨会话延续​

两次会话之间的技术栈约定自动延续,无需重新粘贴。​

​

代码块​

Plain Text

[第一次讨论]​

您:这个项目用 TypeScript + Prisma,接口放在 /app/api 下。​

Agent:了解,后续按这个技术栈和目录约定开发。​

​

您不需要重新粘贴之前的对话,Agent 根据任务使用已有记忆。​

代码风格持续生效​

编码风格写入后,后续会话自动沿用。​

​

代码块​

Plain Text

您:组件统一使用函数组件和 Hooks,不用 class 组件。​

Agent:好的,后续遵循这个风格。​

​

[后续会话]​

您:按之前的组件风格,新建一个 UserProfile 页面。​

Agent:我会使用函数组件和 Hooks,并沿用项目已有组件结构。​

​

找回历史决定​

Agent 检索历史记忆,返回之前讨论的具体方案和细节。​

​

代码块​

Plain Text

您:之前我们怎么处理鉴权的来着?​

Agent:之前确定了 JWT + HttpOnly Cookie 方案:​

access token 15 分钟过期,refresh token 7 天,​

刷新入口是 /api/auth/refresh。​

​

内置 Skill 会帮助 Agent 检索有关鉴权的历史记忆,再结合命中内容回答。​

约定发生变化​

当项目约定需要变更时,用自然语言通知 Agent 更新记忆。​

​

代码块​

Plain Text

您:现在发布先做 5% 灰度,替换之前 10% 的约定,请更新记忆。​

​

需要主动管理时,也可以直接用自然语言要求 Agent 查找、补充或修订记忆。​

安装后有哪些默认配置​

多数场景无需再调参数。默认开启记忆能力、启动画像和 Skill 目录,采用逐轮异步沉淀。​

​

表格加载中...

​

画像来自后台逐步形成的 L0 实体卡。刚接入时可能还没有画像,随着使用积累即可。已有的长期事实仍可由 Agent 检索使用。如需调整,可让 Agent 帮忙,也可主动执行:​

​

代码块​

Bash

# 查看当前连接的全部配置项​

ctxdb0 config show --json​

# 关闭启动时的用户画像注入​

ctxdb0 config set startup-profile off --json​

# 将记忆搜索返回条数调整为 10​

ctxdb0 config set memory-top-k 10 --json​

​

(可选)主动使用 CLI 管理记忆​

以下是给脚本接入、主动管理或排查问题准备的另一种使用方式。日常在 Agent 中正常提问即可,不需要掌握这些命令。​

​

​

删除命令中的两个 ID 必须一致。若交给 Agent 操作,直接说明您要修订或删除哪条内容。​

常见问题​

​

​

如果需要了解技术分工:Hook 自动捕获对话、启动时按配置加载画像,Prompt Hook 不执行语义搜索,任务相关检索由内置 Skill 指导 Agent 完成。您仍然只需在现有 Agent 中描述需求。​