我如何让我的 AI 代理在不同仓库之间通信——并通过它交付了 SAMP

发布: (2026年4月25日 GMT+8 14:18)
4 分钟阅读
原文: Dev.to

Source: Dev.to

情境

我在 lumen‑argus 项目上工作,这个项目跨越了三个不同仓库中的三个 Claude Code 会话。这些会话需要共享上下文——例如,“我刚刚重构了 auth 模块”,“schema 迁移已经落地,拉取 main”。几周来,我像原始人一样在终端窗口之间复制粘贴。

任务

为 AI 代理创建一个跨会话、跨仓库的消息系统,要求:

  • 低成本且快速
  • 本地运行(不依赖外部服务)
  • 出现问题时可以用 cat 直接阅读

约束条件

  1. 每条消息的 token 消耗必须接近零。
  2. 不允许新增服务器、守护进程或 MCP 握手。
  3. 必须兼容任何代理——今天的 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
  • 一个 msg Shell 辅助工具供人工交互
  • 一个轻量的 Python 包装器,任何其他代理 CLI 都可以调用它

结果

  • 一次 Bash 调用 完成 Claude Code 的发送/接收。无需 MCP 初始化,也没有 ack 循环。
  • 零 LLM token 消耗——当人类(或 cron 任务、脚本)通过 Shell 辅助工具读写时,模型根本不参与。
  • 约 30 ms 延迟 – 基本上只有 Python 3 启动时间;其余都是文件追加。
  • 离线工作,并通过 Syncthing、Dropbox 或 iCloud 在机器间同步,零冲突(设计即如此)。
  • 一键安装 – 不需要 pipnpm 或 Docker。

文档与源码

  • 文档:
  • GitHub:
  • 规范:

如果你在 juggling( juggling 多个代理会话并在它们之间复制粘贴),不妨试试 SAMP。欢迎提交 PR 和 issue。

0 浏览
Back to Blog

相关文章

阅读更多 »