
ai-memory 3.1.1 发布:让二十多种编码 Agent 共享一份 git 版 Markdown 记忆
Rust 编写的单二进制 Agent 记忆系统 ai-memory 发布 v3.1.1。本文结合发布说明与 README 介绍它的作用、工作机制与上手用法,并梳理这个纯修复版本在 Windows 稳定性、hook 恢复、凭据传输加固等方面的改动。
相关标签
发布概览
2026 年 10 月 17 日,Fabio Akita 的 ai-memory 发布 v3.1.1。这是一个用 Rust 写的单文件二进制,给各种编码 Agent CLI(Claude Code、Codex、Cursor、Gemini CLI、OpenCode、Devin、Kimi、Kiro 等二十多种 harness)提供一份共享的长期记忆,并让任务能在不同厂商的 Agent 之间交接。项目采用 MIT 许可,仓库已有约 10,846 star、767 fork。
3.1.1 是一个纯修复版本,没有引入新能力:重点集中在 Windows 上的稳定性、Hook 事件丢失、OIDC/LLM 凭据传输加固、TTL 过期页在不同视图中的一致性,以及若干客户端接线细节。
它到底解决什么问题
各家 Agent 其实都已经有了”记忆”:Claude Code 自己记笔记,Cursor 记得一部分,各家平台还在不断加。但它们有共同的边界——笔记只存在一台机器上、只属于一个 Agent,一旦换工具或换人接手,上下文就断了。
ai-memory 把这层记忆从单个 Agent 里抽出来:
- 跨 Agent:二十多种 harness 写入同一份记忆。任务做到一半退出 Claude Code,在同一目录打开 Codex,下一个 Agent 会拿到一份交接说明:停在哪、什么失败了、还有哪些没做完。交接是一个有类型的协议,每份交接有 owner,并且只能被领取(claim)一次。
- 跨项目:一份关于”你平时怎么干活”的小档案(包管理器习惯、测试布局、架构偏好)会在会话开始时带到每个新仓库,位置在每个仓库规则文件之下作为默认值。
- 跨机器:记忆存在你自己运行的服务器上——同一台笔记本、家里的 homelab,或者别处。桌面机上没做完的项目,在笔记本上接着做时,知识还在。
- 面向团队:所有人指向同一台服务器,一个人会话里学到的东西,其他人的 Agent 也能检索到。知识按项目共享,个人交接仍然私有;多用户认证、按人归属、审计日志都是内置功能,不是付费档位。
- 记忆就是普通 Markdown:真实来源是一个 git 托管的 wiki,里面全是
.md文件——可以直接grep、用 Obsidian 打开、手工编辑、rsync。数据库只是可重建的派生索引,没有需要维护的向量库,也没有锁在二进制块里的内容。 - 默认零 LLM 调用:抓取、搜索、交接全都不需要 API Key;只有想升级会话摘要质量和语义搜索时,才需要配置模型提供方。
如果拿它和同类方案对比,README 里的自我定位很明确:Mem0 之类的方案产出的是不透明的事实行,它产出的是你能读、能改的页面;Zep/Graphiti 那类时序知识图谱要单独搭图数据库,它一个二进制搞定;basic-memory 只做”文件优先的 Markdown”,它在此之上补了自动抓取和索引;Claude Code 内置记忆是单机单 Agent,它做了跨机器同步、检索和团队共享。
四个动作看懂它怎么工作
整条链路可以压成一条流水线:
capture ──▶ consolidate ──▶ recall ──▶ handoff
hooks 会话结束时把 搜索 + 简报 交给下一个 Agent
静默观察 观察变成 wiki 页 注入上下文 任意 harness
- capture:你正常干活,生命周期 hook 记录 prompts、工具调用、会话边界;数据在写入之前就经过一个有类型的隐私边界做脱敏。
- consolidate:会话结束时,观察被聚合成项目 wiki 里可读的 Markdown 页面。配了 LLM 可以由模型来写,不配也一样能用。
- recall:下一次会话,任何机器上的任何 Agent 都会拿到一份有长度上限的简报,并且可以搜索全部记忆——全文、实体、链接、(可选)向量,融合成一个排序。
- handoff:跨 Agent 的交接显式传递接力棒,而不是靠人复制粘贴。
记忆还会按计划衰减,而且不需要 LLM:常用的记忆衰减得更慢(打开、搜索、通过链接访问都算”使用”),冷掉的片段记忆可以被压缩成持久事实(文件路径、错误码、决策)而不是直接丢弃,近似重复会合并,疑似矛盾会被标记。所有操作都不硬删除,原始版本留在 git 里,restore-page 可以恢复。会改写或丢弃内容的部分(压缩、去重、按层级的衰减曲线)默认关闭,需要你显式开启。
怎么用:两条命令起步
Linux 和 macOS 上不需要 root,两条命令就能完成安装和服务接线:
curl -fsSL https://github.com/akitaonrails/ai-memory/releases/latest/download/install.sh | sh
ai-memory setup
install.sh 会按 OS/CPU 下载对应发布包,并用发布页公布的 SHA-256 校验(不匹配就拒绝安装),然后链接到 ~/.local/bin/ai-memory。ai-memory setup 接着创建数据目录(里面放一个仅本人可读的 bearer token 文件)、启动每用户服务(systemd --user 或 launchd LaunchAgent),并为它发现的每个 Agent 接好 MCP、hooks 和 Agent Skills。它会先展示计划、告诉你每个 Agent 是在哪里找到的,然后询问确认:回答 y,或者直接输入要接线的编号。--plan 只打印计划不改动任何东西,--yes 跳过询问,重复运行是幂等的。
装完之后重启你的 Agent,问一句”这个项目你记得什么?”,就能看到它通过 ai-memory 回答。
Windows(PowerShell,无需管理员):
$env:AI_MEMORY_VERSION='3.1.1'; irm https://github.com/akitaonrails/ai-memory/releases/download/v3.1.1/install.ps1 | iex
ai-memory setup
Docker:
docker pull akitaonrails/ai-memory:3.1.1
其它渠道还有 Arch 的 AUR(ai-memory-bin 预编译包或 ai-memory 源码包)、Fedora RPM、macOS 压缩包(内含菜单栏应用说明),以及从源码安装 cargo install --locked --git https://github.com/akitaonrails/ai-memory --tag v3.1.1。
日常使用时你基本不用想起它的存在。几个高频动作是自然语言发起的:问”我们上次停在哪了?”会从待处理的交接继续;问”我们讨论过 X 吗?”或”搜索记忆里的 Y”会去查 wiki;问”帮我梳理一下近况”会得到一段最近项目活动的摘要。用 CLI 的话,接手一个已有几个月历史的老项目时跑一次 ai-memory bootstrap 做回填;想让记忆可浏览,用 --enable-web 启动服务,会得到一个只读的 wiki 页面和 /api/v1 JSON 接口。
Claude Code 和 Codex 用户还可以把 Agent 侧接线换成插件方式(二进制仍然按上面的方式安装):
claude plugin marketplace add akitaonrails/ai-memory && claude plugin install ai-memory@ai-memory
codex plugin marketplace add akitaonrails/ai-memory && codex plugin add ai-memory@ai-memory
安全模型是渐进式的:服务默认只绑 loopback;ai-memory init 会把 root bearer token 生成到数据目录,由 hooks、CLI 和 mcp-bridge 读取,从不写进 harness 配置。要跨机器用,就逐步加 LAN bearer token、按用户账号、OIDC 设备认证、反向代理 TLS。抓取规则可以按仓库配置 [capture],排除路径或反转成白名单模式。
3.1.1 修了什么
Windows 上的结构性稳定性问题
Windows 可执行文件的默认主线程栈已经装不下不断增长的异步 CLI 命令树,导致原生 Windows 测试套件里每一个启动 ai-memory 的集成测试都在处理命令之前就 abort。3.1.1 让顶层分发在 Windows 上跑在一块显式指定大小的栈上。
同时修了 setup 在 Windows 上启动 logon host 的方式:改用纯可执行文件路径,传给 supervisor 和 server 的数据目录、配置参数也不再带 \\?\ verbatim 前缀。发布说明特别注明,这条路径清理本身不能解决 Bitdefender 的行为检测误报。
Hook 事件不再”卡住”
如果 harness 在 spool 文件已经 sync、但原子 rename 还没完成时杀掉进程,hook 事件会永远悬在那里。3.1.1 让后续的 drain 在五分钟宽限期之后接管完整且合法的 *.json.tmp 条目,并清理畸形的旧残留。另外,Claude Code 的 SessionEnd 安装超时从默认的 1.5 秒提到 15 秒——插件形式的 hook 因为 Claude 不允许插件抬高该预算,仍然依赖上述恢复机制(#1377)。
凭据传输与重定向加固
- 针对 CodeQL 告警 #176,共享的 refresh-grant 出口现在要求端点必须是 TLS 或 loopback,设备授权和 token 轮询在每次请求前重新校验端点,调用方篡改 discovery 对象不再能绕过登录时的 HTTPS 检查。
- LLM 与 embedding 请求不再跟随跨源重定向(#1396)。此前 reqwest 在跨主机跳转时会丢掉
Authorization,但保留其它所有头,于是x-api-key、x-goog-api-key和llm_headers里的自定义头会跟着跑到重定向目标去。同源重定向仍然可用,跨 scheme/host/port 的重定向现在直接失败并报出目标源。 auth login openai-oauth和auth login copilot不再把失败端点的整个响应体打出来,错误体先做长度限制、密钥与终端控制序列清洗,再截断显示(#1359)。
LLM 配置的一个”静默失效”
显式设置的 llm_base_url(或环境变量 AI_MEMORY_LLM_BASE_URL)对 anthropic 和 openai 两个提供方一直被丢弃:配置层按文档解析了覆盖值,但 provider 工厂从未把它应用上去,请求和 API Key 直接发往 api.anthropic.com / api.openai.com,日志里一个字都没有。修好之后,挂在这两家前面的网关或反向代理终于能收到流量(#1347)。文档也补明了不吃该覆盖值的后端:openai-oauth / codex 背后的 ChatGPT 后端,以及 cursor 的 CLI。
TTL 过期记忆在各处视图里保持一致
expires_at 已过的页面此前只在搜索里被隐藏,其它入口照样当活页展示。3.1.1 把 /web 的项目树与最近活动、namespace 列表、/api/v1 的 pages 与 recent、memory_read_page、GET /admin/read-page、ai-memory read-page 全部对齐:要么隐藏,要么在响应里带 expired: true、在页面元信息上打 expired 徽标(#1369–#1373)。按精确路径直接读取一个过期页仍然会返回内容,这是 TTL 设计里刻意的保留行为。
长会话与整编的边界
- 整编和 auto-improve 过去会把会话的所有 observation 一次性读进内存;现在改成读取一个有界投影,喂给 LLM 的字节完全一致(#1363)。
- 会话页的
## Prompts列表过去没有上限。超过 500 条时现在只列开头 250 条和结尾 250 条,按真实位置编号,中间一行说明省略了多少条(#1349)。 - 整编不再把非页面的
relations:目标写进 YAML frontmatter(此前会让 wiki watcher 在每轮对账时反复告警);同项目内指向不存在页面的relations:目标现在也会被丢弃(#1353、#1366、#1367、#1368)。
客户端接线细节
install-mcp现在给每个 stdio bridge 条目写入ai-memory二进制绝对路径作为command(#1362)。客户端如果启动时PATH里没有~/.local/bin,不会再起不来。Docker wrapper 仍保留裸命令形式。ai-memory setup不再用 OpenCode 1 的产物去接 OpenCode 2:它会跑一次opencode --version探测主版本,2 则写 V2 的{ id, setup }插件和嵌套mcp.servers条目;探测失败就不写任何 OpenCode 接线并作为 setup 问题报出(#1356)。ai-memory mcp-bridge不再因为客户端在initialize之前发server/discover就退出(#1355)。Antigravity CLI 1.4 和 Antigravity 2.24 会先发这个探测、收到错误再回落到initialize,此前 bridge 直接结束会话,回落时管道已关。- 托管式跨 harness 续跑现在能在配额耗尽、没有自愿交接的情况下继续:启动包里把服务端撰写的 resume 指令放在不可信 transcript 围栏之外,续跑的 dossier 仍然只留在启动方本机,服务端只会收到 harness 和会话标识,不接触本地 transcript 路径或内容。
发布产物
GitHub Release 提供各平台预编译包与安装脚本,全部附带 SHA-256 校验文件:
- Linux:
ai-memory-linux-x86_64.tar.gz、ai-memory-linux-aarch64.tar.gz - macOS:
ai-memory-macos-aarch64.tar.gz、ai-memory-macos-x86_64.tar.gz - Windows:
ai-memory-windows-x86_64.zip,以及ai-memory-wrapper/.cmd/.ps1 - Fedora:
ai-memory-3.1.1-1.x86_64.rpm、ai-memory-3.1.1-1.aarch64.rpm - 插件与 hooks:
ai-memory-claude-plugin.zip、ai-memory-hooks.tar.gz、ai-memory-install-hooks - 安装脚本:
install.sh、install.ps1 - 容器镜像:
akitaonrails/ai-memory:3.1.1
项目状态与许可
ai-memory 以 MIT 许可发布,主语言是 Rust,仓库 2026 年 5 月创建,目前约 10,846 star、767 fork。它刻意做成一个自包含的二进制:purge 命令会说清楚”删除”到底意味着什么,写入上限(约 700/s)是实测值而不是估的,审计日志记录每一次变更。
支持矩阵里标注为 Supported 的包括 Linux、macOS、WSL2、Claude Code、Codex、Command Code、Devin CLI、OpenCode V1/V2、Cursor、Gemini CLI、Oh My Pi / OMP、Kimi Code、Kiro CLI、GitHub Copilot CLI、Factory Droid、Antigravity CLI、Grok Build CLI 等;原生 Windows 仍是 Experimental,Zed、VS Code Copilot、Claude Desktop 走 MCP-only。
获取与升级
- 发布说明:https://github.com/akitaonrails/ai-memory/releases/tag/v3.1.1
- 仓库与文档:https://github.com/akitaonrails/ai-memory
- 从源码安装指定版本:
cargo install --locked --git https://github.com/akitaonrails/ai-memory --tag v3.1.1
已经在用旧版本的话,用原来的安装渠道升级——install.sh 重新跑一次并带上 AI_MEMORY_VERSION=3.1.1,或者拉取新镜像、yay -Syu、dnf install 新的 RPM。这个版本没有配置格式变更,升级后不需要迁移数据;ai-memory status 会告诉你当前服务的认证状态和版本。
更多资讯
想看更多优质内容?
浏览所有资讯