RDS ContextDB:Agent 上下文如何沉淀并被复用

转载请注明出处❤️

作者:测试蔡坨坨

原文链接:caituotuo.top/a0ed7474.html


从代码交付到经验沉淀

你好,我是测试蔡坨坨。

今天想聊一个技术团队经常遇到的问题:代码能交接,经验难传承

项目仓库记录的是一次次改动的结果,却很少完整解释当时为什么要这样选:哪个方案曾经被否掉,某个配置为什么不能轻易调整,一次故障排查过程中又排除了哪些可能性。

真正影响后续判断的线索,往往不只存在于代码里。它可能藏在一条评审评论中,也可能散落在复盘文档、群聊消息,甚至某位同事的个人记忆里。项目持续向前迭代,但这些经验线索却会在流转中慢慢断开。

于是就会出现一个很常见的现象:问题明明以前处理过,后来的人还是要重新排查;约束明明已经讨论清楚,换一批协作者又要重新解释。

Coding Agent 出现后,这种经验断层反而更容易被忽略。Claude Code、Codex 可以在当前会话中读代码、改实现、跑测试,把一次任务快速推进到交付结果。但当这轮任务结束后,刚刚确认过的边界、已经放弃的方案、尚未完成的进度,并不一定能被下一轮任务自然接住。

也就是说,Agent 交付了代码,但团队未必沉淀下了判断依据。

普通知识库更擅长保管已经成型的文档,却很难承接工作过程中刚刚产生的事实、上下文和决策。阿里云 RDS ContextDB 试图补上的,正是这一层能力:先保存 Agent 的工作记忆,再从中整理出可以被团队复用的共享知识。

Agent 如何接入和使用

开通服务后,需要先创建 Workspace,再创建成员和 API Key。Workspace 可以理解为上下文、长期记忆和知识库的逻辑集合;API Key 则用于客户端鉴权,决定 Agent 能否连接到对应的 Workspace。

创建完成后,控制台会同时提供三种接入方式:自然语言、一行命令和 MCP 配置。需要注意的是,API Key 只会在创建时展示一次,所以记得先把它保存下来。

官方文档目前支持 Qoder、QoderWork、Claude Code、Codex、OpenClaw、OpenCode、Hermes 和千问平台快速接入,其他平台则需要手动配置。

以 Codex 为例,官方提供了通过自然语言安装的方式,可以直接把下面这段说明交给 Agent 执行:

1
2
请阅读 https://context-database-client.oss-cn-hangzhou.aliyuncs.com/install.md,
按照脚本说明安装 ctxdb CLI,并使用 API Key <API_KEY> 为你自己完成接入配置。

也可以直接在控制台复制当前系统对应的一行安装命令。

我这次选择的是 Codex。安装脚本会依次检查运行环境、安装 ctxdb CLI、写入 Agent 配置,并安装记忆和知识库两个 Skill。终端中各项检查通过后,CLI 会继续验证本地配置与服务端的连接状态。

ctxdb CLI 安装并写入 Codex 配置

当验证结果中出现 "ok": true"connected": true 时,说明 CLI、API Key 和服务端已经连通。这里还会列出自动捕获、自动召回、检索数量等当前配置。后续如果遇到接入问题,可以优先回到这一段检查连接状态和配置是否生效。

ctxdb CLI 验证连接与安装摘要

Codex 接入还有一步:新安装的 Hooks 需要人工确认。它们会在会话开始、用户提交提示词、任务结束等节点触发,用来完成上下文捕获和记忆召回。因为这些 Hooks 会介入 Agent 的执行流程,所以 Codex 不会默认直接信任。

可以先进入 Review 页面,查看每个 Hook 对应的生命周期事件、来源和用途,再决定是否启用。只有确认并信任这些 Hooks 后,自动捕获和自动召回才会按预期工作。

接入完成后,就可以直接让 Agent 创建知识库、上传文档和召回知识。知识库支持文本、代码、办公文档、图片、音频、视频等多种格式,具体大小和格式限制以官方文档为准。

到这一步,知识库中的检索结果才真正回到 Agent 的当前任务中。Agent 可以基于这些上下文继续写代码、分析问题或处理工单;而任务执行过程中产生的新结果,又会成为新的上下文,进入下一轮记忆整理。

Agent 上下文如何成为长期记忆

接入跑通之后,再回头看它解决的问题会更清楚:RDS ContextDB 想做的不是普通文档库,而是给 Agent 准备一套能记录、组织、召回和演进上下文的云端服务。

先说明一下,这里的 RDS ContextDB 与 GitHub 上其他同名的 ContextDB 开源项目没有关系。

从一次任务到下一次任务,信息大致会沿着这条路径流动:

1
Agent 上下文 → 长期记忆 → 知识库 → 检索 → Agent 使用

Agent 在任务过程中产生的会话记录、文档内容、业务数据和执行结果,会先作为上下文被记录下来。系统再从这些上下文中提取后续可能复用的信息,沉淀为长期记忆。

但它并不是一条“只进不出”的单向流水线。Agent 在后续任务中使用检索结果完成工作后,新的执行反馈还会反过来修正、补充或淘汰原有内容,形成官方所说的 Context Growth Loop。

也就是说,一次会话可以结束,但项目背景、处理经验、方案取舍和执行反馈仍然会留在 Workspace 中,供后续任务继续调用。这套机制更适合需要跨会话推进、持续积累上下文的长周期项目。

长期记忆如何组织

上下文被保存下来之后,还要解决另一个关键问题:下一次任务如何准确找到真正需要的部分。RDS ContextDB 主要通过“事实、实体、记忆规则”来组织 Agent 记忆。

事实是从上下文中拆解出来的原子化陈述,也是语义召回时的主要命中对象。比如某个配置不能随意调整、某个方案曾被否掉、某次故障最终定位到哪个原因,这些都更适合被整理成可以单独检索的事实。

实体则对应上下文中反复出现的人、组织、项目和工具。系统会围绕这些实体形成带有属性、别名和重要性评分的 Entity Card,并在此基础上继续构建实体关系图谱。这样一来,Agent 不只是记住一条条孤立信息,也能理解不同项目、人员和工具之间的关系。

记忆规则用来定义每个成员希望 Agent 记住什么。团队可以结合业务特点设置记忆边界,让系统更关注真正有复用价值的上下文,减少无关信息进入长期记忆。

控制台中也按照事实、实体和记忆规则拆分展示。刚完成客户端接入时,我看到的事实列表还是空的。这一点也提醒我们:客户端连通,只代表 ContextDB 已经具备接收上下文的能力,并不意味着系统会凭空生成记忆。它仍然需要经过真实任务和真实对话,让 Agent 有内容可以沉淀。

继续跑几轮对话后,事实列表才开始出现内容。这里可以看到每条事实对应的用户 ID、重要度、召回次数和时间信息。后续如果要排查“为什么某条记忆没有被召回”,这张表会比只看聊天窗口更直接。

这种组织方式比单纯保存整段聊天更适合检索。Agent 追问某个项目的历史决策时,不需要把几个月的会话全部塞进 Prompt,而是可以优先召回相关事实、实体关系和背景信息,再结合当前任务进行推理。

同一 Agent 下的记忆可以跨 Session 共享。不过官方当前也明确了一些限制:记忆暂不支持导出;不同成员之间记忆隔离,但同一成员的不同 API Key 之间不隔离。

这两点在团队正式使用前需要提前确认。前者会影响后续的数据迁移和备份方案,后者会影响 API Key 的划分方式,以及团队内部如何隔离不同成员、不同环境和不同业务线的上下文。

长期记忆如何进入知识库

记忆可以帮助一个 Agent 延续任务,但团队共享需要的是更稳定、更可审核的内容。RDS ContextDB 为此提供了两类资料入口,并用“记忆晋升”连接个人经验与团队知识库。

资料如何进入系统

团队已有资料和任务过程中刚形成的经验,进入 ContextDB 的方式并不相同。

已经沉淀成 PRD、技术方案、复盘记录或操作手册的内容,可以通过同步工具从钉钉、飞书和本地目录接入,也可以由 Agent 通过 Skill 上传。这条路径解决的是“已有资料如何纳入统一管理”。

控制台里的同步工具入口比较直观:先安装 @aliyunrds/ctxdb-sync,再启动本地同步进程,最后在浏览器中完成配置。它负责的是“已有资料怎么进入知识库”,而不是“会话记忆如何自动沉淀”。

ContextDB 知识库同步工具安装与启动方式

还没有形成文档的判断,则会先保留在 Agent 记忆中。当某个主题积累了足够多的信息后,团队可以发起记忆晋升,聚合相关事实,生成一份等待确认的文档草稿。

前者整理过去已经留下来的资料,后者接住每天正在发生的工作。两类内容最终都会进入同一套检索和治理流程。

记忆如何晋升为文档

我更关注的是第二条路径。

Agent 平时积累的记忆往往比较碎,可能是一条任务边界、一段排查结论、一次方案取舍,直接共享给团队时价值有限。记忆晋升的作用,就是围绕一个明确主题,把这些分散事实组织成一份可以审核、可以入库、可以复用的文档。

新建晋升任务时,需要指定成员、晋升主题、模板和目标知识库。这个动作本质上是在告诉系统:请围绕某个主题,从成员记忆中挑选相关事实,再整理成一份文档草稿。

提交后,任务会先进入生成中。列表中会展示主题、文档标题、状态、记忆数、质量得分和是否自动入库,方便判断这次晋升是否产出了足够可用的内容。

生成后的文档不会直接进入知识库。系统会列出事实冲突、证据不足等待确认项,用户可以继续编辑、修订,再决定批准或拒绝。

任务详情里可以看到生成文档、晋升内容摘要、待确认疑问和来源信息。这个页面的价值在于,它没有只给出一个“成功”状态,而是把进入知识库前需要人工判断的部分摊开了。

个人经验先接受检查,再成为团队知识。

批准时还需要选择目标知识库。这个确认动作看起来只是多了一步,但对团队知识管理很重要:记忆最初来自个人或某个 Agent,入库后却会变成团队可复用资料,目标位置不能完全交给系统猜。

同一页里也能看到任务被拒绝后的状态。对企业知识管理来说,拒绝不是异常,而是必要的治理动作。因为有些记忆只适合帮助当前 Agent 延续任务,并不一定适合作为团队知识长期沉淀。

知识库本身也有独立的评审流程。文档上传后,系统可以进行质量评估、自相矛盾检测和重写建议,再根据置信度阈值决定自动入库,还是进入人工审核。

这能避免知识库只负责“收”,却没人检查内容是否过期、是否冲突、是否真的可复用。当然,代价也很直接:评审和演进会调用模型、消耗 Credit,也需要团队设计清楚审核责任。

知识如何持续保鲜

文档入库后,ContextDB 可以把内容中的实体、关系和事实组织成知识图谱。检索不再只依赖语义相似度,也可以结合实体关系补充上下文。

批准后的文档会出现在知识库文件管理中,可以继续查看文件预览和 Chunk 内容。这一步说明,记忆晋升的结果已经从个人记忆区,进入了正式知识库的管理流程。

知识库图谱会把文档中的实体和关系抽取出来。它不替代原文证据,但可以帮助系统在检索时理解例如 “Memory”“KB”“ContextDB”“Codex”“ctxdb memory add” 这些节点之间的关联。

当新文档与已有知识发生冲突时,系统会标出矛盾点,交给人判断。低质量文档可以触发重写;达到配置阈值后,可以自动入库,也可以继续进入人工审核。

也就是说,ContextDB 可以持续积累成员的工作记忆;但只要内容要进入团队共享范围,就需要重新确认它是否准确、完整,是否适合作为后续任务的判断依据。

知识如何被检索

知识入库不是终点。Agent 遇到新任务时,ContextDB 会从长期记忆和知识库中查找相关事实、实体关系和文档内容,再把这些结果组合成当前任务需要的上下文。

也就是说,Agent 不需要读完整个知识库,也不需要重新翻查几个月的历史会话。检索层会先帮它缩小范围,把与当前问题真正相关的信息交回当前任务。

默认检索的是记忆还是知识库

这里很容易混在一起。

以 Codex 接入为例,Hooks 配好后,每次提交问题时,默认触发的是记忆召回。也就是拿当前 Prompt 去检索当前 Agent 配置下的长期记忆,再把命中的结果注入到本轮上下文中。

等价地看,它更接近下面这个动作:

1
ctxdb memory search "你的问题" --agent=codex

这类记忆偏个人,通常按 agent + user_id 隔离。它更适合保存用户偏好、项目路径、常用习惯、历史事实,以及前几轮任务中沉淀出的判断。

比如“这个项目的博客目录在哪里”“用户不希望复制图片”“某个 Agent 已经跑通过什么配置”,这些更适合放在 memory 里。

知识库则是另一层。它保存的是文档、接口说明、产品资料、复盘记录、图片和其他团队资料。检索知识库时,通常需要明确指定要查哪个 KB:

1
ctxdb kb search "RDS ContextDB 接入方式" --kb=某个知识库 --agent=codex

如果希望一次检索同时带上个人记忆和知识库内容,可以在记忆检索里加上 --knowledge

1
ctxdb memory search "RDS ContextDB 接入方式" --agent=codex --knowledge --verbose

这时,结果里会同时包含个人记忆,以及当前账号有权限访问的知识库 chunks。

所以边界可以这样理解:memory 偏个人经验,knowledge base 偏团队资料。

但“团队范围”并不是由命令本身决定的,而是由 ContextDB 后台的 Workspace、KB 权限和 API Key 共同决定的。只有同一 Workspace 内授权可见的知识库,才会进入对应成员或 Agent 的检索范围。

评测数字怎么看

这些设计最终还是要落到检索效果上。

阿里云公布过一组知识库问答评测:在 FinanceBench、SyllabusQA、Qasper 和 ClapNQ 四个公开数据集上,ContextDB 与 PageIndex、HippoRAG 2、LightRAG、OpenViking 使用同一大模型进行比较,平均准确率为 79.32%。

在这组评测中,ContextDB 的检索耗时为 1.64 秒,LightRAG 为 1.96 秒;单次问答的 Token 消耗约为 LightRAG 的三分之一。

这组结果适合用来观察产品的优化方向,但不能直接替代业务验证。因为文档类型、数据规模、模型版本和问题分布一变,最终效果都可能发生变化。

所以在真正接入团队流程前,最好还是拿自己的资料和高频问题做一轮小范围验证:看它能不能召回关键事实,能不能避开过期内容,能不能在复杂问题里给出稳定、可追溯的上下文。

使用前先看边界

Agent 能调用 ContextDB 之后,还需要进一步确认成本和数据边界。

RDS ContextDB 是按量付费服务,费用主要来自几部分:记忆与知识的写入、检索、上下文演进,以及源文件和索引带来的存储成本。

它确实减少了团队自建上下文服务的工作量,但也意味着数据会进入云端产品。接入企业资料之前,需要提前确认地域选择、成员权限、API Key 管理、审计要求,以及后续的数据退出方案。

尤其是知识库内容可以在同一 Workspace 内共享,而当前记忆暂不支持导出。这个限制不能等到真正迁移时才发现,否则后续替换方案和数据治理都会变得被动。

如果只是给一个本地 Agent 保存几条个人偏好,上这套服务可能偏重。它更适合的场景,是需要跨 Session、跨 Agent 管理项目背景,并且希望把执行过程中的经验经过审核后沉淀为团队知识。

常见落地场景也基本围绕这条主线展开:长周期研发项目沉淀决策与踩坑记录,Coding Agent 调用企业 API 和领域知识,运维与技术支持从历史工单、截图和复盘中查找处理经验。

真正接入前,可以先拿一个真实项目做小范围验证:导入少量文档,跑几次跨 Session 任务,故意加入一条冲突信息,再观察记忆召回、知识评审和权限隔离是否符合预期。

能记住只是起点。能整理、能复用、还能治理,才是企业上下文服务真正要解决的问题。

References