大家好,我是刘聪NLP。
我在5月初的时候,分享过一篇文章聊聊 Agent 的记忆系统,到底应该记什么?,
里面有分析到腾讯的一个开源项目TencentDB Agent Memory,那时还刚开源不久,GitHub 还只有 2.6k Star。

前两天,我重新打开这个项目,发现已经爆涨到19.8k Star了,
相较于之前的对于单用户的Agent记忆,
现在新增了Skill、Wiki、CodeGraph 和 Team Memory这些功能,开始支持一个团队的 Agent 的共享记忆、继承经验。
我前几天在写Codebuddy NPC的时候,就有聊到一个问题,现在AI Coding时代,单打独斗能力很强,但团队协作起来会很麻烦,
其中,很关键的一点,就是多Agent协同问题。

大多数人在多个 Agent 协同时,都是放进同一个大项目里,让Agent自己读代码、读文档、搜历史文件,
没问题,很简单,我也经常这么做,但项目越大,问题越明显。
比如,同一个背景会被不同 Agent 反复读取和总结,Token在无限消耗;

还有虽然很多大模型已经支持1M的上下文了,但在超过256k之后,很多模型的能力还是会衰减,所以与当前角色无关的资料进得太多,真正关键的约束很容易被忽略;新旧需求混在一起,模型页不一定能有效分析哪个更有用。
把所有信息一股脑塞给每个 Agent,很容易会造成很大的上下文污染。
所以,在OPC+多Agent协作的时代,一套有效的Agent记忆系统真的重要。
TencentDB Agent Memory的Team Memory可以拆成两层。
一层是记忆内容层,负责把不同信息整理成 Chat Memory、Skill、Wiki 和 CodeGraph;
另一层是记忆控制层,负责 Team、Agent、权限、版本、绑定和使用记录。

Chat Memory 依然采用 L0 到 L3 的分层记忆,分别对应原始记录、原子记忆、场景记忆和长期画像。
已经跑通的操作流程,可以被整理成 Skill,写清楚适用场景、触发边界、执行步骤和验证规则。
项目里的文档可以组织成 Wiki,让 Agent 搜索具体内容,沿着页面之间的链接继续查找。
代码则更适合交给 CodeGraph,可以保留文件、代码符号、调用关系和影响路径,帮助 Agent 理解代码结构,以及一次修改可能影响哪些地方。

接下来我们来看一下如何使用。
第一步是环境安装,
git clone https://github.com/Tencent/TencentDB-Agent-Memory.git
cd TencentDB-Agent-Memory/deploy/global-images
cp .env.example .env
$EDITOR .env
./start-all.sh
你需要在 .env 文件里填好 LLM API Key。两组模型参数,一组服务于记忆、Wiki 等内容的抽取和整理,一组用于代理 Agent 发出的模型请求。

如果嫌手动安装麻烦,就直接告诉你的claude code、codex、openclaw等一系列的agent工具,帮你安装,需要api key的时候,询问你。
AI时代,一切交给AI就好了,有问题截图给它修

第二步,在 Memory Hub 里创建 Team,比如我创建一个之前公众号排版网站项目的Team,

然后向团队里添加成员和 Agent,
我一共添加了三个 Agent。一个负责阅读资料和梳理需求,一个负责修改代码和交付页面,还有一个负责检查代码与内容。
Agent 的角色定位、规则和权限都可以自定义,不设置也能使用,但我更建议把分工写清楚。后面给不同 Agent 分配记忆时,角色越明确,哪些信息该给谁就越容易判断。

如果接入的不是一个从零开始的新项目,还可以提前把已有资料导入进来,
代码项目可以直接绑定已有的 Git 仓库,用来构建 CodeGraph,

本地已有的 Markdown 等文档,也可以上传后构建 Wiki,

这里注意,wiki的创建需要一段时间,主要看内容多少和关联关系,如下,你可以根据wiki轻松定位到项目的核心内容,
第三步,就是使用你的Agent工具,同步记录chat memory,这里以claude code举例,
这里需要配置Agent Memory提供的url和key,前面已经说过,在部署的时候,已经对你agent调用所需的llm进行了proxy

比如,我这里配的k3模型,模型选择看你自己前面配的什么模型
export ANTHROPIC_BASE_URL=http://127.0.0.1:8096/claude-code/default
export ANTHROPIC_AUTH_TOKEN='当前用户自己的 sk-mem Key'
claude --model k3
启动claude code后,会让先确认是否关联团队资产、关联Agent、Task这些,


选择完毕后,会自动加载本次对话需要的上下文信息,也就是会把之前的部分上下文带下来

我们拿增加渲染主题为例,

实际使用方式和普通 Claude Code 没什么区别,Agent 能力依然取决于你接入的模型,Team Memory只负责的是把相关背景和经验交给它,
任务完成后,里多了一套紫色像素风的公众号排版主题,如下

但神奇的一幕出现了,
打开管理后台,在SKill技能中,新增了一个“Adding a New Theme to a WeChat Article Typesetting Engine”,也就是为微信公众号文章排版引擎新增主题,

也就是说,记忆系统自动把刚才的开发任务归档成了一条可以复用的 Skill,以后再增加新的排版主题,就可以直接参考这套流程,不用重新摸索一遍。
自动构建的skill还挺全面,基本上就是开发的流程,里面涉及工作流程、输入输出、决策规则、验收标准、常见问题等。
agent工作一段时间之后,会在chat memory里,积累下一些东西,
比如,你的技术风格偏好,


这些偏好,在进行功能开发时,Agent 会主动参考
比如,加载其他项目,之前workbuddy蓝皮书,我想把所有数据保存到数据库里,加载agent之后,它会推荐使用SQLite,

我让其使用其他数据库时,
实现一个新功能,允许用户在页面上自定义样式,先看一下如何增加这个模块,并且把样式中的素材,都记录到mysql里
它会判断,之前偏好时SQLite,询问是否进行数据库的修改,依然建议沿用之前的技术,

面对记忆跟现实需求存在冲突的时候,会进行check让人自动选择。
团队积累下来的 Chat Memory 和 Skill,不会默认对所有人开放,需要共享的资产,要由用户主动开启分享或分配给相应 Agent。

否则,这些记忆和经验仍然属于个人或指定 Agent,不会直接灌给团队里的所有成员,
这也是我觉得项目做得比较好的地方,Team Memory 让有用的经验在团队里流动,同时尽量降低记忆串线、上下文污染和权限越界。
最后,
TencentDB Agent Memory已经把 Agent Memory 从记住我说过什么,推进到了让一支 Agent 团队积累经验。
单个 Agent 的记忆,解决的是连续性问题,Team Memory 解决的,是组织学习问题。
只有当成功方法可以被提炼,失败路径可以被保留,知识可以按角色流动,过期内容又能被收回,
多个 Agent 才算真正组成了一支队伍。
模型决定一个 Agent 这一轮能走多远,
记忆系统决定这支队伍走过的路、犯过的错,会不会再走一遍。