🚀 AI-Connect
AI-Connect 是一个基于 MCP 的通信桥梁,可实现不同机器上的 AI 编码助手之间的通信。
德语版本
🚀 快速开始
桥接服务器快速设置
桥接服务器运行在专用机器(如迷你 PC、树莓派、家庭服务器)上,并接受所有客户端的连接。
cd ~/projects
git clone git@github.com:Peuqui/AI-Connect.git
cd AI-Connect
python3 -m venv venv
source venv/bin/activate
pip install fastmcp websockets aiosqlite pyyaml
sudo tee /etc/systemd/system/ai-connect.service << 'EOF'
[Unit]
Description=AI-Connect Bridge Server
After=network.target
[Service]
Type=simple
User=YOUR_USERNAME
WorkingDirectory=/path/to/AI-Connect
ExecStart=/path/to/AI-Connect/venv/bin/python -m server.main
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable ai-connect
sudo systemctl start ai-connect
sudo systemctl status ai-connect
MCP 客户端快速设置(每台机器)
每台需要通过桥接进行通信的机器都需要 MCP 客户端。
1. 克隆项目并安装依赖
cd ~/projects
git clone git@github.com:Peuqui/AI-Connect.git
cd AI-Connect
python3 -m venv venv
source venv/bin/activate
pip install fastmcp websockets aiosqlite pyyaml
2. 创建配置文件
重要提示:host 必须是桥接服务器的 IP,而不是 0.0.0.0!
mkdir -p ~/.config/ai-connect
cat > ~/.config/ai-connect/config.yaml << 'EOF'
bridge:
host: "192.168.0.252"
port: 9999
peer:
name: "YOUR_PEER_NAME"
auto_connect: true
EOF
3. 将 MCP HTTP 服务器设置为服务
mkdir -p ~/.config/systemd/user
cat > ~/.config/systemd/user/ai-connect-mcp.service << 'EOF'
[Unit]
Description=AI-Connect MCP HTTP Server
After=network.target
[Service]
Type=simple
WorkingDirectory=/path/to/AI-Connect
ExecStart=/path/to/AI-Connect/venv/bin/python -m client.http_server
Restart=always
RestartSec=5
Environment=PYTHONUNBUFFERED=1
[Install]
WantedBy=default.target
EOF
systemctl --user daemon-reload
systemctl --user enable ai-connect-mcp.service
systemctl --user start ai-connect-mcp.service
4. 在 VSCode/Claude Code 中注册 MCP 服务器
创建或编辑 ~/.vscode-server/data/User/mcp.json(或 ~/.config/Code/User/mcp.json):
{
"servers": {
"ai-connect": {
"type": "sse",
"url": "http://127.0.0.1:9998/sse"
}
}
}
5. Claude Code 权限设置(可选)
若要跳过工具确认对话框,请在 ~/.claude/settings.json 中添加以下内容:
{
"permissions": {
"allow": [
"mcp__ai-connect__peer_list",
"mcp__ai-connect__peer_send",
"mcp__ai-connect__peer_read",
"mcp__ai-connect__peer_history",
"mcp__ai-connect__peer_context",
"mcp__ai-connect__peer_status",
"mcp__ai-connect__peer_wait"
]
}
}
6. 重启 Claude Code
配置完成后,重启 VS Code / Claude Code 以加载 MCP 客户端。
✨ 主要特性
- 多智能体通信:AI 助手可以跨机器交换消息。
- 所罗门原则:多智能体达成共识以做出更好的决策(AIfred/Sokrates/Salomo)。
- SSE 传输:使用稳定的 HTTP/SSE 连接,而非 STDIO。
- 离线消息:消息会被存储,直到接收方上线。
- 基于项目的对等名称:例如,"Aragon (myproject)" 或 "mini (AI-Connect)"。
⚠️ 重要提示
这是一个早期/粗糙的实现。它可以工作,但有局限性,请参阅下面的当前限制。
📚 详细文档
为何开发此项目
经过广泛研究,我们发现目前没有现有的解决方案能够让 AI 模型以简单、具备网络功能的方式直接相互发送消息并自主协调,且由 AI 自行决定何时进行通信。
现有的多智能体框架(需要在代码中以编程方式定义智能体)和编排工具(由人类或中央控制器分配任务)均无法实现多个 交互式 Claude Code 会话 在不同机器上进行点对点通信,也无法让 AI 自行决定何时寻求帮助或提供建议。
AI-Connect 填补了这一空白。它简单、具备网络功能且能够正常工作。但由于 Claude Code 的架构,它也存在一些局限性。
使用场景
- 代码审查:一个 Claude 负责实现代码,另一个进行严格审查。
- 突破困境:当一个 Claude 遇到难题时,向另一个寻求新的思路。
- 客户端 - 服务器设置:配置分布式系统,服务器运行在一台机器上,客户端运行在另一台机器上 - Claude 实例可以协调配置,检查需要在何处安装哪些软件,并保持所有内容同步,无需在会话之间手动复制粘贴。
- 多机器部署:任何在不同计算机上处理相关任务的场景。
概念
- 桥接服务器:在专用机器上 24/7 运行,通过 WebSocket(端口 9999)在对等方之间路由消息。
- MCP HTTP 服务器:在 每台 需要 Claude Code 进行通信的机器上运行(SSE,端口 9998)。
- 持久连接:每个 MCP HTTP 服务器都与桥接服务器保持永久的 WebSocket 连接。
重要提示:如果要在桥接服务器所在的机器上运行 Claude Code,该机器也需要安装 MCP HTTP 服务器!
可用的 MCP 工具
| 工具 |
描述 |
peer_list |
显示所有在线对等方 |
peer_send |
向对等方发送消息(或使用 * 进行广播) |
peer_read |
读取接收到的消息 |
peer_wait |
等待新消息(可设置超时时间) |
peer_history |
显示与对等方的聊天历史记录 |
peer_context |
与其他对等方共享文件上下文 |
peer_status |
显示与桥接服务器的连接状态 |
使用示例
"Show me the AI-Connect status"
"Who is currently online?"
"Ask mini what they think about this approach"
"Send mini the code from api.py lines 42-58"
"Did anyone write to me?"
"Ask everyone if someone has time for a review"
架构
AI-Connect/
├── server/ # 桥接服务器(运行在专用机器上)
│ ├── main.py # 入口点
│ ├── websocket_server.py # WebSocket 处理程序
│ ├── peer_registry.py # 对等方管理(在线/离线)
│ └── message_store.py # SQLite 历史记录 + 离线消息传递
│
├── client/ # MCP 客户端(运行在每台机器上)
│ ├── http_server.py # FastMCP HTTP/SSE 服务器
│ ├── server.py # FastMCP STDIO 服务器(可选)
│ ├── bridge_client.py # 持久 WebSocket 连接
│ └── tools.py # MCP 工具实现
│
├── skills/ # Claude Code 技能
│ └── advisor/ # 顾问模式技能
│ └── SKILL.md
│
└── config.yaml # 示例配置
关键细节
- SSE 传输:MCP HTTP 服务器使用 Server-Sent Events (SSE) 与 VSCode/Claude Code 建立稳定连接。
- 基于项目的对等名称:对等方以
Name (Project) 的形式注册,例如 "Aragon (myproject)" 或 "mini (AI-Connect)"。
- 唯一客户端 ID:如果有多个实例,会在名称后附加 PID,例如 "Aragon#12345 (myproject)"。
- 离线消息:当对等方离线时,桥接服务器会将消息存储在 SQLite 中,并在对等方上线后进行传递。
- 心跳机制:客户端每 25 秒发送一次 ping,服务器在 60 秒后移除不活跃的对等方。
所罗门原则(多智能体共识)
AI-Connect 支持 所罗门原则,通过多智能体共识做出更好的决策。
角色
| 角色 |
描述 |
| AIfred |
负责用户任务的智能体(主要工作者,论点) |
| Sokrates |
被咨询的空闲 Claude(批评者,反论点) |
| Salomo |
在出现分歧时介入的第三方 Claude(裁判,综合) |
工作流程
- AIfred 处理任务,遇到重要决策。
- 通过
peer_context 共享上下文,并通过 peer_send 发送问题。
- Sokrates 进行批判性分析并提出替代方案。
- 达成共识:继续执行。出现分歧:由 Salomo 决定。
投票规则
- 多数(2/3):用于正常决策。
- 一致(3/3):用于关键架构变更。
- 标签:
[LGTM] = 批准,[CONTINUE] = 尚未完成。
/advisor 技能
技能 skills/advisor/SKILL.md 可激活顾问模式:
mkdir -p ~/.claude/skills/advisor
cp skills/advisor/SKILL.md ~/.claude/skills/advisor/
然后使用 /advisor 激活顾问模式。Claude 实例将进入轮询循环,每 2 秒检查一次传入消息。重要提示:所有发送和接收的消息都会显示给用户 - 您可以查看 AI 实例之间的完整对话。
故障排除
检查桥接服务器
sudo systemctl status ai-connect
journalctl -u ai-connect -f
ss -tlnp | grep 9999
测试连接
nc -zv 192.168.0.252 9999
检查 MCP 客户端
claude mcp list
tail -f ~/.config/ai-connect/mcp.log
常见问题
| 问题 |
原因 |
解决方案 |
| "Not connected" |
主机配置错误 |
host 必须是桥接服务器的 IP,而不是 0.0.0.0 |
| 对等方无法相互看到 |
MCP 客户端未保持持久连接 |
更新代码 (git pull),重启 VS Code |
| 连接被拒绝 |
桥接服务器未运行 |
sudo systemctl start ai-connect |
| 超时 |
防火墙阻止 |
在防火墙中打开端口 9999 |
配置参考
~/.config/ai-connect/config.yaml
bridge:
host: "192.168.0.252"
port: 9999
peer:
name: "dev"
auto_connect: true
环境变量
| 变量 |
描述 |
AI_CONNECT_PEER_NAME |
覆盖配置中的 peer.name |
当前限制
这是一个早期/粗糙的实现。它可以工作,但远不够完善:
- 需要轮询:Claude Code 没有外部触发机制。要接收消息,实例必须通过
peer_read 主动轮询。/advisor 技能以 2 秒的循环进行轮询 - 就像汽车在怠速时消耗燃料一样。虽然可以工作,但会浪费令牌却没有实际作用。
- 无法使用外部触发:我们深入研究了 Claude Code 的 钩子系统。
UserPromptSubmit 钩子可以注入上下文,但仅在用户发送消息时有效 - 因此您仍需要输入一些内容才能接收消息。目前根本无法从外部中断或向正在运行的 Claude Code 会话发送信号。这是当前 Claude Code 架构的一个基本限制。
- 没有推送通知:当消息到达时,无法通知正在工作的 Claude 实例。接收实例必须处于空闲状态并进行轮询。
- 手动共享上下文:您需要显式使用
peer_context 来共享代码。没有自动感知其他实例正在处理的内容的机制。
核心问题
在 Claude Code(或 Anthropic)实现外部触发/中断功能之前,真正的实时多智能体协作最多只能是一种变通方法。轮询方法虽然有效,但不够优雅 - 而且会浪费令牌却没有实际作用。
如果您找到更好的方法,欢迎提交拉取请求!
⭐ 星标历史

📄 许可证
本项目采用 MIT 许可证。