如何在不同 Claude Code 和 Codex 之间切换而不丢失上下文
熟悉的场景:你坐在终端前用 Claude Code 调试分布式队列中的一个棘手 bug,花了一个半小时,尝试了五个行不通的假设,终于找到了正确的解决方案。然后会话越来越长,上下文被压缩,或者达到上限了。你切换到同一文件夹中的 Codex 或 OpenCode,混乱就开始了。新助手需要从头开始了解背景:为什么不能修改 NGINX 配置,哪些测试已经失败,以及二十分钟前选择的数据库结构是什么。
ai-memory 项目旨在彻底解决这个问题。它由社区知名的 Fabio Akita(社区称为 AkitaOnRails)创建。核心思路是为控制台 AI 代理提供共享的长期记忆机制,实现跨会话和不同模型间的自动上下文交接。
核心理念
通常意义上的「AI 记忆」指的是向量数据库,原始对话日志被转储为嵌入向量。但实际上这些日志充满了冗余内容:中间的工具调用、重复的测试运行、语法错误等。
ai-memory 的作者另辟蹊径,借鉴了 Karpathy 的 LLM Wiki 理念。记忆被组织成常规的 Wiki 结构,存储在 Git 仓库中的 Markdown 文件里。服务器拦截代理的生命周期事件,清除不必要的噪音,在会话结束时编译一份压缩摘要:记录完成的工作、得出的结论和剩余的开放任务。
当用不同的代理打开新终端时,工具会自动在首次提示前向其提供结构化摘要,无需手动复制粘贴内容。
技术实现与终端集成
服务器采用 Rust 编写,启动本地服务并支持 MCP(Model Context Protocol)、生命周期钩子和内置 Web 界面。
支持几乎所有主流的代理 CLI 工具:
- Claude Code
- OpenAI Codex
- Command Code
- Devin CLI
- OpenCode、Cursor、Zed
- Gemini CLI、Grok Build CLI、Kimi Code、Kiro CLI、Pi / OMP
数据存储在本地单一目录中:
每个项目通过仓库路径或标记文件 .ai-memory.toml 进行隔离。对于 monorepo 或多个 Git worktree 的情况,它们会被链接成统一上下文。
实践中的关键特性
代理间的无缝切换
ai-memory 拥有托管会话模式 ai-memory run。工作原理很简单:
代理启动时会读取「上次进度」块,其中包含最近的架构决策、待解决问题和测试结果。若未指定代理名称,ai-memory resume 命令会自动选择当前文件夹中最新的活跃会话。
ai-memory goto 命令更进一步,可以从任意文件夹调用,直接返回到最近工作的项目。
Wiki 而非日志堆砌
整个知识库以纯文本形式存储。可以在 Obsidian 中打开、通过 ai-memory wiki 命令 grep 读取,或在内置浏览器(端口 8080) 127.0.0.1:49374/web 中浏览。
需要记录重要项目规则时,只需告诉代理:「保存到永久记忆,我们使用 NATS JetStream 处理队列。」代理调用 MCP 工具 memory save memory_write_page,仓库中就会出现一个版本化的 Markdown 文件。
知识库搜索采用混合方式。首先运行 SQLite FTS5 全文搜索,然后进行实体匹配和页面间的图连接。如果连接了嵌入模型,还会添加向量搜索功能。
同时,ai-memory 能够区分稳定的架构规则和临时会话笔记,优先处理来自 rules/ _rules/ 和 architecture/ decisions/ 文件夹的稳定页面。
无需外部 LLM 即可工作
一个有趣的细节是:ai-memory 启动时完全不需要任何神经网络 API 密钥。在「零 LLM」模式下,搜索通过 FTS5 和实体进行,会话摘要使用确定性规则组装。
如果配置了密钥(Anthropic、OpenAI、Gemini 或通过兼容端点的本地 Ollama),该工具会启用智能页面合并、知识库冲突检测和项目后台自学习功能。
通过 Docker 快速启动
最快的方式是通过 Docker 在工作站上部署服务器:
Arch Linux 用户可以在 AUR 中使用带有 systemd 单元的现成包 ai-memory-bin。macOS 为 Apple Silicon 和 Intel 发布原生二进制文件。
如果服务器迁移到家庭服务器或本地网络,安全配置通过 Bearer 令牌实现。服务器监听请求、验证授权,并通过操作员槽位在多个开发者之间隔离记忆。
适用场景
该工具解决三个具体任务。
第一——多代理开发。在 Claude 中起草任务、在 Codex 中重构、在 Gemini 中进行代码审查会更快。没有共享记忆层,这个工作流会变成无尽的上下文复制例程。
第二——让代理加入旧仓库。ai-memory init 命令 ai-memory bootstrap 读取提交历史、README 和项目文档,生成初始知识库页面。
第三——本地审计。随时可以打开 Web 界面检查生成的笔记、通过 ai-memory revert 恢复错误编辑 ai-memory restore-page,或清理过时数据。
总结
ai-memory 的务实方法很有吸引力。作者没有构建另一个带有外部向量数据库的重量级堆栈,而是采用了快速的 Rust、可靠的 SQLite 和简单的 Git 与 Markdown。
如果经常使用终端 AI 助手,厌倦了每天向模型重新解释项目上下文,这个仓库值得一看。从本地运行开始,与主 CLI 代理配对,评估任务间上下文转移的便利程度。
相关项目