我如何让我的 AI 代理在不同仓库之间通信——并通过它交付了 SAMP
Source: Dev.to
情境
我在 lumen‑argus 项目上工作,这个项目跨越了三个不同仓库中的三个 Claude Code 会话。这些会话需要共享上下文——例如,“我刚刚重构了 auth 模块”,“schema 迁移已经落地,拉取 main”。几周来,我像原始人一样在终端窗口之间复制粘贴。
任务
为 AI 代理创建一个跨会话、跨仓库的消息系统,要求:
- 低成本且快速
- 本地运行(不依赖外部服务)
- 出现问题时可以用
cat直接阅读
约束条件
- 每条消息的 token 消耗必须接近零。
- 不允许新增服务器、守护进程或 MCP 握手。
- 必须兼容任何代理——今天的 Claude Code,明天的 Cursor 或其他未来项目。
行动
我评估了现有方案(例如 mcp_agent_mail、Agent Teams、broker 守护进程)。它们都会启动 HTTP 服务器、注册身份、运行 SQLite 存储,并在轮询钩子上消耗 token——对于每天只交换十几条消息的三个代理来说,这显得极其繁琐。
我借鉴了 Linus Torvalds 在 Git 中的做法,构建了 SAMP(Simple Agent Message Protocol):
-
按写入者划分的追加日志 – 每个代理对应一个文件:
log-.jsonl没有文件会有两个写入者,因此不需要锁定、不会交叉写入,Syncthing、Dropbox 或 iCloud 也不会产生合并冲突。
-
内容寻址 ID
import hashlib, json, time def make_id(ts, frm, to, thread, body): payload = json.dumps({ "ts": ts, "from": frm, "to": to, "thread": thread, "body": body }, sort_keys=True).encode() return hashlib.sha256(payload).hexdigest()[:16]相同内容 → 相同 ID,因而同步后自动去重。
-
mtime 短路 – 在解析任何内容之前,先
stat日志文件;如果没有变化,立即退出。
我把规范写成了供应商中立的文档,并发布了参考实现 agent‑message:
- 三个 Claude Code 斜杠命令:
/message‑send、/message‑inbox、/message‑reply - 一个
msgShell 辅助工具供人工交互 - 一个轻量的 Python 包装器,任何其他代理 CLI 都可以调用它
结果
- 一次 Bash 调用 完成 Claude Code 的发送/接收。无需 MCP 初始化,也没有 ack 循环。
- 零 LLM token 消耗——当人类(或 cron 任务、脚本)通过 Shell 辅助工具读写时,模型根本不参与。
- 约 30 ms 延迟 – 基本上只有 Python 3 启动时间;其余都是文件追加。
- 能离线工作,并通过 Syncthing、Dropbox 或 iCloud 在机器间同步,零冲突(设计即如此)。
- 一键安装 – 不需要
pip、npm或 Docker。
文档与源码
- 文档:
- GitHub:
- 规范:
如果你在 juggling( juggling 多个代理会话并在它们之间复制粘贴),不妨试试 SAMP。欢迎提交 PR 和 issue。