
有一个问题一直困扰着我:Codex 额度不够用时,我怎么把项目交给其他AI工具继续。一个开发任务做到一半,换个 AI 工具,代码还在,聊天里的判断却带不过去。新工具看得见文件,不一定知道哪些方案已经试过、哪些文件还没提交、哪一步只是打了包而没有部署。
就比如我的情况:200刀的年付Plus会员,在不开GPT6 Astra的情况下也经常到限额,我手上其实还有Github education benefits会员、Wordbuddy年付会员(几个月前积分买一送一,和Codebuddy共享额度,配合腾讯生态非常好使)。我最初想过直接复制聊天记录,后来觉得不合适:聊天太长,里面有不少试探和走错的路;更麻烦的是,额度可能突然用完,上一位智能体未必来得及写总结。既然没有一个问题是孤单的,所以我去调研了一番。
比较过的方案
最省事的还是我一开始用的:AGENTS.md + HANDOFF.md + Git。一个文件写规则,一个文件写当前交接,任何能读文件的工具都能用,也不依赖额外服务。它的问题很直接:HANDOFF.md 得有人维护,忘记写就会过时。如果只是两个人、两个工具轮流接一个小项目也不是不能用。
我也看过 shared-agent-memory。它用一个 MCP 服务让不同智能体共享记忆,目标和我的需求很接近。它更轻,但我不想在这次实验里同时承担工具选型和长期维护两件事(说人话就是用的人太少),所以先没有采用。
claude-mem 的长处是自动捕获会话中的操作与摘要。若主要围绕 Claude Code 工作,这种方式很有吸引力。我的首要目标是让 Codex 桌面版与 VS Code 智能体先共用一套容易检查的项目笔记,因此没有从自动捕获开始。它并非不能和别的工具配合,只是这次我没有做跨工具实测。
Mem0 和 Graphiti 更适合把记忆当成应用或智能体系统的一部分来建设。前者有 SDK、服务和云端方案,后者侧重随时间变化的知识图谱。它们能做更多事,但我眼前要解决的是“换工具后接上一个开发任务”,暂时用不到那套基础设施。
Serena 我也感兴趣。它擅长按符号和引用关系找代码,适合回答“这个方法在哪、谁调用它”。我的问题还包括“上次为什么决定这样改”。代码导航能帮忙核对,却不能代替人写下决策理由。项目大到找代码成了主要瓶颈时,我会再考虑加它。
最后我选的 Basic Memory,理由嘛:笔记是普通 Markdown,可以直接打开;MCP 让不同客户端有机会读写同一项目;本地目录也便于我自己检查和备份。代价是要认真决定写什么,并验证每个客户端确实连到了同一个项目。它不会凭空知道旧项目的历史,也不会自动把所有会话变成高质量记忆。
交接拆成三块:
| 放在哪 | 留下什么 | 接手时怎么用 |
AGENTS.md | 项目规则、源码仓库位置、验证与交付约定 | 先读,知道怎么在这个项目里做事 |
| Basic Memory | 决策理由、任务断点、已知问题 | 按任务查,不搬整段聊天 |
| Git 与当前文件 | 已提交、未提交和未跟踪的真实状态 | 核对记忆有没有过时 |
举个常见的偏差:记忆写着“功能已完成”,但工作区里还有半成品和未跟踪的新文件。只读记忆会误判,只看 git diff 又会漏掉未跟踪文件。交接时要把两边对上。
我拿一个开发中的老项目做了次实验:让 Codex 桌面版和 VS Code、Codebuddy读取同一份项目记忆。现在,3个工具已经能互相读到对方写的记录,也能结合 Git 说清一个真实任务的进度。
关于新项目
下面用 D:\relay-demo 作为示例目录,relay-demo 作为 Basic Memory 项目名。它们只是演示值,照做时换成自己的项目。先找一个已有 Git 仓库的小项目练习,不必一开始就用重要业务项目。
第一步:安装并建记忆项目。 Windows PowerShell 里先确认 uv 可用;没有的话按 uv 官方安装说明安装。然后执行:
Set-Location D:\relay-demo
uv tool install basic-memory
New-Item -ItemType Directory -Force .ai-memory | Out-Null
bm project add relay-demo (Resolve-Path .ai-memory).Path
bm project list
Get-Command basic-memory | Select-Object -ExpandProperty Source最后一行记下可执行文件的实际路径。若已经装过 Basic Memory,安装那行可跳过。记忆目录先别急着和业务源码一起提交;个人试验可把 .ai-memory/ 加入源码仓库的 .gitignore。之后要团队共享,再审阅笔记内容和版本策略。
第二步:在项目根目录写 AGENTS.md。 不用写成长篇制度。至少说清楚源码 Git 仓库在哪、开工前看哪些状态、什么时候写任务断点。例如:
# 项目协作规则
- 源码 Git 仓库在 D:\relay-demo;检查状态时从这里运行 Git。
- 开始开发前,按当前任务查 Basic Memory,并检查 git status、工作区差异、暂存区差异和未跟踪文件。
- 记忆只是历史上下文;当前代码和验证结果用于核对记忆。
- 完成一个有意义的阶段或准备换工具时,写短 checkpoint:目标、已完成、证据、待验证、明确下一步。
- 不把密码、令牌、生产凭据、大段源码或完整聊天写入记忆。老项目的源码仓库可能藏在工作区子目录里,这一行尤其要写准。否则智能体在工作区根目录运行 git status,得出的只是报错或另一个仓库的状态。
第三步:把三个客户端接到同一个 Basic Memory 项目。 我目前使用的是 MCP;安装 Codex CLI 或 Basic Memory 的 Codex 插件,并非这一步的前提。
Codex 项目配置可以放在 .codex/config.toml:(注意mcp_servers.basic-memory.env段落utf8的设置)
[mcp_servers.basic-memory]
command = "basic-memory"
args = ["mcp", "--project", "relay-demo"]
cwd = 'D:\relay-demo'
[mcp_servers.basic-memory.env]
PYTHONUTF8 = "1"
PYTHONIOENCODING = "utf-8"VS Code 工作区配置放在 .vscode/mcp.json,注意顶层键是 servers:
{
"servers": {
"basic-memory": {
"type": "stdio",
"command": "basic-memory",
"args": ["mcp", "--project", "relay-demo"],
"cwd": "D:\\relay-demo",
"env": {
"PYTHONUTF8": "1",
"PYTHONIOENCODING": "utf-8"
}
}
}
}CodeBuddy是第三种情况:它的 MCP 配置只有用户级一份,放在 C:\Users\<用户名>\.codebuddy\mcp.json,顶层键是 mcpServers,不是 servers:
{
"mcpServers": {
"basic-memory": {
"type": "stdio",
"command": "C:\\Users\\kerge\\.local\\bin\\basic-memory.exe",
"args": ["mcp", "--project", "relay-demo"],
"cwd": "D:\\relay-demo",
"env": {
"PYTHONUTF8": "1",
"PYTHONIOENCODING": "utf-8"
}
}
}
}我实测到两处不同。第一,它不读取工作区里的 .codebuddy\mcp.json:文件建好后重新加载窗口,MCP 面板依然是 “No MCP Tools”;从客户端代码看,能确认的项目级入口只有项目根目录的 .mcp.json,而且首次出现需要手动批准。第二,改完配置通常要执行一次 Ctrl+Shift+P → Developer: Reload Window,热加载并不稳定(我第一次写入是三秒内生效,后来几次都要重载)。
结果是:Codex 和 VS Code 的配置跟着项目走,CodeBuddy 的配置跟着这台电脑走。多项目时它不会自动切换记忆项目,只能在用户级配置里给每个项目各写一条,用 --project 绑定、用服务器名区分(例如 basic-memory-relay-demo);同时在 AGENTS.md 里写明当前项目固定用哪个,Basic Memory 的默认项目还能在漏传 project 参数时兜底。
有些桌面程序找不到 PowerShell 里的 basic-memory。遇到这种情况,就把三处 command 换成前面 Get-Command 查到的完整 .exe 路径;JSON 中的反斜杠要写成 \\。修改配置后重启或重新加载客户端,再确认智能体里真的出现 Basic Memory 工具。我的第一次接入就卡在启动握手和编码上,命令能在终端运行,不等于 MCP 已经连接成功。
第四步:做一轮小接力验收。 先让第一个工具读 AGENTS.md,写一条项目入口和一个小任务 checkpoint。新开任务,要求它只读恢复;再到 VS Code 查询同一条笔记,结合 Git 解释当前进度。最后让 VS Code 写一条测试记录,回第一个工具读出来。测试记录确认后可按项目习惯清理,但别把“两个界面都显示已配置”当成验收。
这四步跑通后,再决定要不要安装插件和自动钩子。Basic Memory 的 Codex 插件有会话生命周期钩子和专门的 checkpoint 工作流;单独接入 MCP 不会自动启用它们。我目前靠 AGENTS.md 要求智能体在重要阶段主动写 checkpoint。
关于老项目中途接
我实际测试的是一个已经开发中的项目。源码仓库原位保留,只新增工作规则和记忆目录。第一次让智能体阅读项目入口文档、目录结构、必要的配置,再检查源码仓库的 git status、相关 git diff、暂存区和未跟踪文件,提炼出一条项目入口记忆。
业务任务则另建笔记,写清目标、已完成事项、证据路径和待验证问题。尤其要分开“源码已改”“测试日志存在”“本地已打包”“服务器已部署”“线上效果已验证”这几种状态。前一项成立,不能自动推出后一项成立。
记忆目录可以用独立的本地 Git 保存修订历史;但本地提交仍挡不住整块硬盘损坏。是否做异机备份、是否把部分记忆交给团队共享,应另外决定。
现在换工具时发这段话
先读取项目根目录的 AGENTS.md。
按当前任务名称查询 Basic Memory 中的项目入口、相关决策和最近的任务断点。
到 AGENTS.md 指定的源码仓库,检查 git status、工作区 diff、暂存区 diff,
并留意未跟踪文件;必要时查看相关提交记录。
先告诉我:当前目标、已完成内容、尚未验证的内容、下一步建议。
把记忆与当前文件核对后再继续,暂时不要修改文件。我强调“当前任务名称”,因为同一个项目里可能并行做几件事。只读最新的一条 checkpoint,容易接错任务。
常用提示语
平时不用把所有要求都重发一遍;AGENTS.md 已经写了开工核对和阶段性留断点的规则。下面这些话用于明确当前任务,或在交接、查漏时收紧范围。把【任务名】换成具体名称即可。
平时开工:
继续【任务名】。先读 AGENTS.md,查这项任务的记忆,核对源码仓库的 Git 状态、差异和未跟踪文件。告诉我当前进度与下一步,核对后继续。主动换工具前:
我要把【任务名】交给另一个工具。请核对当前文件与 Git 状态,按 AGENTS.md 留下任务断点,写清未提交修改、验证结果和接手后的第一步。告诉我笔记标题。额度突然用完,换工具补查:
接手【任务名】。先读 AGENTS.md 和最后一次相关断点,再检查 Git 状态、差异及未跟踪文件。找出断点之后实际留下了什么,哪些步骤无法确认。若中断时正在构建或部署,检查产物和日志;先报告,暂不修改文件。记忆与代码对不上:
只读核对【任务名】的记忆与当前代码、Git 状态。列出冲突、证据和核对日期;先不要改代码,也不要覆盖旧笔记。交付之前:
核对【任务名】的源码修改、验证、构建、发布包、实际部署和线上效果。逐项给出证据;没有证据的写“未验证”。先报告缺口,不要把本地打包当成已经上线。正常完成一个阶段时,智能体应按 AGENTS.md 自己写 checkpoint,不需要我反复发“请保存记忆”。如果它没有报告写入结果,我才补一句:“核对本阶段成果,并告诉我 checkpoint 的标题。”Basic Memory 的 MCP 负责读写笔记,本身不会判断何时该留断点。
补充说明
目前定了五类:决策、checkpoint、约束、已知问题、重要发现。每条笔记要能回答“这次做了什么、证据在哪、还差什么”,完整设计文档仍放在项目文档里。关系链接也只在确有联系时添加,不为凑知识图谱造边。
中文检索需要多试一步。我在现有的小批量笔记上碰到过:某些连续中文词组用全文搜索没有命中,换成任务标题或混合搜索才找到。一次没搜到,不等于笔记不存在;找到后还得读原文,与当前文件核对。这只是这次实验的观察,不代表所有项目都会如此。
目前我亲自验证过 Codex 桌面版、VS Code 智能体和 CodeBuddy 通过 MCP 读写同一记忆项目,也验证过第二个工具能结合项目规则与 Git 状态说明任务缺口。其中 CodeBuddy 已确认连到同一个项目,但它的 MCP 配置是用户级的,不随工作区切换,换项目时需要靠配置条目或规则约束。Claude Code、Cursor 等工具虽然也有接入路径,我还没有逐个完成接力验收;自动 checkpoint 钩子和异机备份也没装好。
所以下次额度不够时不用等着额度充值时再说一句“继续”。我会给出任务名,让新工具先读规则、查记忆、核对文件,把它理解的现状说给我听。说对了,再让它动手。这样才算真正接上。
本文的安装与配置步骤参考 Basic Memory 本地入门、Basic Memory CLI 说明、VS Code MCP 配置、CodeBuddy MCP 配置 和 Codex 的 AGENTS.md 说明。
