在 AI 编程工作流里,越来越多开发者会同时使用 Claude Code、Codex、Cursor、OpenCode 等多个 Agent。前几个需求用 Claude 完成,后几个任务想切换到 Codex 继续,却发现历史上下文仍留在上一个 Agent 的私有会话里。表面上看,这只是需要“复制粘贴总结一下”;实际操作后才会发现,问题并不在文本搬运,而在于上下文所有权被不同工具切碎了。
私有会话格式让多 Agent 协作出现“失忆”
近期,掘金上一篇关于开源工具 cross-agent-sync 的实践文章梳理了这一问题。作者在日常开发中发现,同一台机器上同时打开多个 Agent 时,同一个项目的历史提示词、处理记录、图片附件无法自然流转。Claude 的 .jsonl 文件不能被 Codex 直接读取,Cursor 的 state.vscdb 又是另一套结构,附件目录也各不相同。
换句话说,当前 AI 编程工具缺少一个通用的 Session API。开发者切换 Agent 后,新会话往往不知道此前已经做过哪些判断、遇到哪些坑、哪些需求已经确认。如果没有统一入口,Agent 只能基于当前窗口猜测,或者要求用户重新描述一遍背景。
工具思路:不是再造一套 Memory,而是做 Session Handoff
作者给出的判断是:多 Agent 协作缺的不是 Memory,而是“跨 Agent 的 Session Handoff”。围绕这个思路,他开发了 cross-agent-sync,npm 包名为 cross-agent-sync,CLI 命令为 ass,当前版本为 0.2.2。工具定位是按仓库对齐多个 Agent 的会话,让用户可以查看、选择、恢复和交接上下文。
该项目在开发过程中本身就采用了多 Agent 协作:由 Claude 做一部分,再由 Codex 接续完成。作者将这种流程称为“狗粮测试”,也借此暴露出真实问题:存储形态不统一、SQLite 可能被意外写入、摘要长度难以控制、从历史对话中猜测决策并不可靠。
从踩坑到硬约束:只读、预算、主动记录决策
文章总结了几个关键设计取舍。首先是只读访问必须被强制,而不能只是文档承诺。因为一旦工具写坏某个 Agent 的会话库,用户很可能直接卸载。SQLite 如果默认可写,还可能生成 -journal 或 -wal 文件,带来副作用。
其次是摘要不能无限长。交接摘要最终要进入下一个 Agent 的上下文窗口,硬编码截断可能砍掉关键内容,静默省略又会让下一个 Agent 误以为“摘要里没有,就是会话里没有”。为此,工具提供 ass brief –budget tiny|small|standard|large|full 参数,用于控制交接内容的长度预算。
第三是从历史对话中自动猜测决策并不可靠。启发式规则放宽后会抓进整段叙述,收紧后又什么都抓不到。作者因此将 extractDecisions 默认关闭,改为 ass brief –guess 的可选项;正式路径则要求 Agent 或开发者主动写入决策、死胡同、约束和待办,例如使用 ass context –decision、–dead-end、–constraint、–todo。这些内容在切换 Agent 时会被置顶展示。
对 AI 编程工作流的启示
这一案例反映出多 Agent 开发环境中的一个共性问题:模型能力并不是唯一瓶颈,状态管理和上下文连续性同样关键。当开发者在不同 Agent 之间频繁切换时,会话隔离、附件丢失、决策记录缺失都会显著增加沟通成本。
cross-agent-sync 的当前能力包括列出会话、查看历史、读取最后一轮对话、恢复任务、通过 MCP 接入 Agent 等。安装方式包括 npm install -g cross-agent-sync 或 npx cross-agent-sync list,随后可运行 ass install、ass doctor、ass agents 进行接入和自检。工具要求 Node >= 18.17;读取 Cursor 或 OpenCode 的 SQLite 时,需要 Node >= 22.5,或系统安装 sqlite3。
作者还提到,未来计划适配 Trae、Windsurf、VS Code Copilot Chat 等更多 Agent,改进 Cursor 全局 MCP 写入、交接预算自适应、任务视图挂接关键 diff/commit,以及提升 doctor/detect 报告的可读性。但他强调,工具不会替用户静默选择会话,宁可报错,也不要猜。
原创文章,作者:点点,如若转载,请注明出处:https://www.dian8dian.com/duo-agent-xie-zuo-zhen-zheng-de-ping-jing-bu-shi-mo-xing