Jj Mailbox

利用 jj (Jujutsu) 版本控制系统作为基于文件的邮箱,在 AI 智能体间收发消息,实现跨机器零配置协作。

安装

概览

jj Mailbox 是一个基于文件的智能体间消息系统,它利用 Jujutsu(简称 jj)版本控制系统作为底层存储机制,构建了一个去中心化的协作通信平台。该系统通过将消息以 JSON 文件的形式存放在本地或共享的版本库中,实现了无需复杂网络配置的跨机器协作能力。每个参与协作的智能体都拥有一个专属的收件箱目录,通过写入特定格式的 JSON 文件即可向其他智能体发送消息,而接收方则通过读取自身收件箱中的新文件来获取信息。这种设计使得整个通信过程完全本地化,不依赖任何中心化服务器或第三方服务。 该系统的核心运行依赖于几个关键组件:首先是 jj-mailbox CLI 工具(通常以 jj-mailbox.sh 脚本形式提供),它是一个用 bash 编写的命令行接口,内部调用 python3 进行 JSON 解析和处理;其次是 Jujutsu 版本控制系统本身及其 git 后端支持;最后是若干环境变量的配置,包括指定邮箱仓库路径的 JJ_MAILBOX_REPO、当前智能体名称的 JJ_MAILBOX_AGENT 以及同步间隔的 JJ_MAILBOX_INTERVAL。值得注意的是,默认情况下所有操作都在本地磁盘上完成,只有在需要多机协同时才需启用 jj-mailbox sync 命令进行 git 远程仓库的推送和拉取操作。 从架构上看,jj Mailbox 将通信空间划分为多个逻辑区域:inbox/ 目录下按智能体名字组织各自的收件箱,其中 new/ 子目录存放待处理的新消息,processed/ 则用于归档已读消息;agents/ 目录记录所有活跃智能体的元数据,包含 profile.json 和 status.json 文件;shared/ 区域则为全局可访问的内容池,细分为 tasks/(共享任务板)、knowledge/(知识库)和 artifacts/(产出物)三个用途明确的分区。这样的结构既保证了私密消息的安全隔离,又支持团队范围内的信息共享与协同工作。

核心功能特点

  1. 基于 Jujutsu 版本控制的文件型消息系统,实现去中心化智能体通信
  2. 支持本地多智能体协作及跨机器扩展,仅需配置 git 远程即可同步
  3. 结构化消息格式包含发件人、收件人、主题、正文及引用链等完整字段
  4. 内置 inbox/agents/shared 三大分区,分别处理私聊、状态管理和公共内容
  5. 提供命令行工具自动管理消息收发与状态更新,支持手动直接操作文件
  6. 严格遵循不可变历史原则,禁止修改他人已处理的消息以确保可追溯性

适用场景

jj Mailbox 特别适用于需要多台设备或多进程间保持实时通信的开发场景。例如,在一个分布式 AI 训练项目中,主控制器可以持续监控模型训练进度,并将阶段性结果通过 shared/artifacts/ 发布给评估模块;同时,各个子任务执行器在完成计算后会将自己的输出存入共享区,并发送简短的状态通知到主控制器的 inbox 中。这种方式避免了传统 RPC 或消息队列带来的部署复杂度,也无需担心单点故障问题。 另一个典型应用场景是在容器化微服务架构中进行轻量级的服务发现与协调。假设你有多个 Docker 容器运行着不同类型的 worker 节点,它们可以通过挂载同一个 jj 仓库卷的方式接入 jj Mailbox 网络。当某个服务启动时,它会在 agents/ 下注册自己的 profile.json;当有新任务分配下来时,调度器只需在 shared/tasks/ 新建一个 JSON 文件即可触发下游服务的响应,整个过程无需暴露端口或维护复杂的 API 网关。 此外,对于希望减少外部依赖、追求极致轻量级的个人开发者而言,jj Mailbox 同样具有吸引力。比如你可以用它来同步笔记、代码片段或者临时想法——只需要在不同终端上设置相同的 JJ_MAILBOX_REPO 路径,就能实现跨设备无缝衔接的工作流。由于所有内容都以明文 JSON 文件形式存在,你甚至可以直接用文本编辑器查看和编辑消息记录,极大提升了灵活性和透明度。