Zing 论坛

正文

bot-relay-mcp:多智能体工作流的本地优先协调原语

bot-relay-mcp是一个基于TypeScript和SQLite的MCP(Model Context Protocol)协调工具,为AI编码代理和外部系统提供去中心化的消息中继和任务协调能力,支持25种工具,实现真正的本地优先多智能体协作。

MCP多智能体AI编码代理Claude CodeSQLite本地优先任务协调消息中继TypeScript零基础设施
发布时间 2026/04/20 17:38最近活动 2026/04/20 17:56预计阅读 3 分钟
bot-relay-mcp:多智能体工作流的本地优先协调原语
1

章节 01

导读 / 主楼:bot-relay-mcp:多智能体工作流的本地优先协调原语

bot-relay-mcp是一个基于TypeScript和SQLite的MCP(Model Context Protocol)协调工具,为AI编码代理和外部系统提供去中心化的消息中继和任务协调能力,支持25种工具,实现真正的本地优先多智能体协作。

2

章节 02

多智能体协调的基础设施挑战

随着AI编码代理(如Claude Code、Cursor、Cline等)的普及,开发者越来越需要在多个AI实例之间进行协调。然而,现有的解决方案往往依赖云服务、复杂的Service Mesh架构或特定的平台锁定,这带来了以下问题:

  • 隐私与安全:敏感代码和任务数据需要经过第三方服务器
  • 基础设施复杂性:需要部署和维护额外的服务组件
  • 平台锁定:特定于某个AI工具或云厂商的解决方案
  • 网络依赖:离线或受限网络环境下无法工作

bot-relay-mcp的出现正是为了解决这些痛点。

3

章节 03

项目概述

bot-relay-mcp由Maxlumiere开发,是一个本地优先的消息中继系统,专为AI编码代理和外部系统的协调而设计。它采用极简架构:两个接口,一个共享的SQLite数据库,零基础设施

当前版本v2.1已架构完整,提供25种工具,实现了智能路由、任务租约、会话感知读取、延迟健康监控、忙碌/勿扰状态、Webhook重试、频道功能等核心特性。

4

章节 04

双接口设计

bot-relay-mcp同时服务两类用户:

1. AI编码代理(stdio MCP接口)

  • Claude Code、Cursor、Cline、Zed等工具通过stdio MCP连接
  • 只需在~/.claude.json中添加一个配置项即可接入
  • 无需守护进程,无需云服务

2. 外部系统(HTTP+SSE接口)

  • n8n、Slack、Telegram、自定义脚本等通过HTTP+SSE连接
  • 支持可选的Bearer Token认证
  • 可触发代理动作或接收Webhook事件
5

章节 05

本地优先的SQLite存储

所有数据都存储在本地SQLite文件~/.bot-relay/relay.db中:

  • 无云服务:数据不离开本地机器
  • 无守护进程:直接通过npx运行,无需安装服务
  • 无Service Mesh:简单的文件级共享

文件权限设置(v2.1):

  • ~/.bot-relay/目录权限:0700(仅所有者)
  • relay.db和备份文件权限:0600(仅所有者读写)
  • config.json由操作员管理,启动时如果权限过于宽松会发出警告
6

章节 06

代理管理工具

  • register_agent:注册当前终端为命名代理,使用upsert机制可安全多次调用
  • unregister_agent:从relay中移除代理,幂等操作,成功时触发webhook
  • discover_agents:列出所有已注册代理及其状态(online/stale/offline)
  • spawn_agent:生成预配置为relay代理的新Claude Code终端,支持跨平台(macOS、Linux、Windows)
7

章节 07

消息传递工具

  • send_message:向指定代理发送直接消息
  • get_messages:检查邮箱,待处理消息自动标记为已读
  • broadcast:向所有注册代理广播消息(可按角色过滤)
8

章节 08

任务管理工具

  • post_task:向指定代理分配任务
  • post_task_auto:自动路由到负载最低且能力匹配的代理,无匹配时排队
  • update_task:支持accept/complete/reject/cancel/heartbeat操作,带状态机和CAS保护
  • get_tasks:查询任务队列(分配给我或我发布的)
  • get_task:获取单个任务的完整详情