为什么Atlas能做到"一份记忆,三个代理"?揭秘共享Agent内存的底层机制
【免费下载链接】atlasSource control for agents. Use multiple coding agents, track their changes and query them in one place项目地址: https://gitcode.com/GitHub_Trending/atlas115/atlas
Atlas 是一款面向多编码代理(Coding Agent)的共享 Agent 内存管理工具:它让 Claude Code、Codex 和 Atlas 三个代理共用同一份项目记忆——任何代理做出的决策、踩过的坑、沉淀的架构事实,其他代理都能立刻"想起来"。这篇文章带你快速看懂它背后的共享内存机制:一个只追加的事件日志、一个本地 RAG 向量引擎,以及一套把项目记忆升级为"全局记忆"的保守晋升规则。
一份日志:所有代理往同一条"记忆总线"上写
在 Atlas 里,每个代理都是一个独立的 ACP 子进程,各自拥有隔离的上下文窗口——Claude 写下的计划,Codex 原本根本看不见。Atlas 的做法是在项目里放一条共享内存总线:
- 写入:后台会把每个代理的实时输出分类成带类型的事件(决策、文件变更、失败教训、架构说明……),只追加写入
<项目>/.atlas/shared-memory/events.jsonl,绝不记录原始对话,也不会重复记录; - 读取:日志会被折叠成一个有界、无矛盾的"当前事实"视图(同主题的旧决策会被新决策自动取代),供其他代理直接消费。
关键设计在捕获层:只提取代理自己的结构化信号(计划更新、完成态的文件编辑工具调用),再对完成的消息做一次保守的关键词扫描(如 "decided to"、"anti-pattern"),并且所有内容在落盘前都会先做密钥脱敏。这样日志既干净又安全,详见 memory_delta.rs 和 shared_memory.rs。
一个引擎:本地向量索引 + 图记忆,三代理共用检索
日志解决"写",那"查"呢?Atlas 用一个独立的低层 Rust 引擎 atlas-memory 承担全部检索:
- 本地嵌入:设备上的 MiniLM 模型把项目文件、聊天记录、决策笔记嵌入成向量,持久化到 usearch HNSW 索引(
<项目>/.atlas/memory/下); - 图记忆:结构化的事实(关系、主题标签)存在 Cersei 图记忆里,作为辅助召回源;
- 融合检索:查询时先做向量余弦检索(相似度低于 0.30 直接丢弃),再与图召回结果按 RRF 加权融合去重。图命中的权重被刻意压得很低(10:1 以下),保证永远无法压过一条强向量命中。
最巧妙的是"接缝"设计:三个代理都通过同一个冻结的MemorySearchFn(cwd, query, limit)回调检索——Atlas 代理主动调用search_memory工具,Claude/Codex 则把命中结果直接推入提示词。未来换引擎,代理侧一行都不用改。索引全程在后台线程执行(文件监听 2 秒防抖、聊天结束后增量更新),永不阻塞对话热路径,见 memory_indexer.rs 与 retrieve.rs。
一条晋升规则:从"项目记忆"到"全局记忆"
跨项目怎么共享?Atlas 在~/.atlas/memory/下维护一份全局记忆,晋升规则完全确定且保守:
- 只认
UserPreference(用户偏好)和Constraint(约束)两类记忆; - 置信度必须≥ 0.8;
- 同一内容必须在≥ 2 个不同项目中出现过。
三条全满足才会晋升到全局图,并写进人类可读的MEMORY.md(始终少于 200 行)。检索时,只有当本项目记忆"稀薄"(少于 3 条命中)才会掺入全局记忆,且权重最低——项目本地经验永远优先。这条规则实现见 global.rs。
记忆如何流转:一次完整生命周期
| 时机 | 发生什么 |
|---|---|
| 代理切换后首次发送 | 把项目记忆包(事实 + 近期会话摘要)注入新代理的提示词,新会话直接继承上下文 |
| 会话进行中 | 结构化信号持续追加到共享事件日志 |
| 一轮对话结束 | 后台增量更新向量索引,可选地把长会话蒸馏成持久记忆 |
| 项目重新打开 | 一次性幂等导入旧版共享日志到图记忆,旧文件保留以便回滚 |
导入逻辑简单可靠:成功一次后写标记文件,之后打开项目直接跳过,绝不重复导入,见 shared_import.rs。
小结
Atlas 的"一份记忆、三个代理"并不靠魔法,而是三块拼图:一条只追加、带类型、先脱敏的共享事件日志负责写;一个本地 HNSW + 图记忆融合的 RAG 引擎负责读,并用冻结接口让三个代理无差别接入;一条高门槛、可回滚的晋升规则让真正有价值的偏好跨项目流动。对新手来说,无需任何配置——打开项目,这套共享 Agent 内存就已经在工作了。
【免费下载链接】atlasSource control for agents. Use multiple coding agents, track their changes and query them in one place项目地址: https://gitcode.com/GitHub_Trending/atlas115/atlas
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考