架构概览
部署视角:什么跑在哪?
在深入技术细节之前,先搞清楚每个组件跑在哪。Agent Network 是 Server-Client 架构,一个中心 Server 连接多个分布式 Agent 客户端。
部署拓扑图
组件部署速查表
| 组件 | 跑在哪 | 端口 | 作用 | npm 包 |
|---|---|---|---|---|
| CommHub Server | 服务器(1 台) | 9200 | 消息路由、任务管理、认证、数据库 | @sleep2agi/commhub-server |
| 内置 Dashboard | 随 CommHub 启动 | 9200/dashboard | 轻量 Web UI(节点列表、消息流) | 内嵌在 Server |
| 独立 Dashboard | Vercel 或独立服务器 | 9999 | 完整 Web UI(拓扑图、甘特图等) | docs-site/ |
| anet CLI | 每台客户端机器 | -- | 管理命令行工具(39 个命令) | @sleep2agi/agent-network |
| Agent Node | 每台客户端机器 | -- | AI 工作节点(接任务、调 AI、回结果) | @sleep2agi/agent-node |
| Claude Code | 客户端机器 | -- | 交互式 AI 开发(通过 MCP 接入网络) | Anthropic 官方 |
| Channel 插件 | 客户端机器 | -- | 接入 Telegram/微信/飞书 | channel/ |
端口说明
| 端口 | 组件 | 协议 | 说明 |
|---|---|---|---|
| 9200 | CommHub Server | HTTP | MCP (POST /mcp)、SSE (GET /events/:alias)、REST (/api/*)、内置 Dashboard (/dashboard) |
| 9999 | 独立 Dashboard | HTTP | Next.js 完整 Dashboard(可选部署) |
| 3000 | 独立 Dashboard(开发) | HTTP | npm run dev 时的默认端口 |
本地 vs 生产
| 本地开发 | 生产部署 | |
|---|---|---|
| CommHub Server | 本机 localhost:9200 | 服务器 YOUR_IP:9200 |
| Agent Node | 本机,--hub localhost:9200 | 客户端机器,--hub YOUR_IP:9200 |
| Dashboard | localhost:9200/dashboard | YOUR_IP:9200/dashboard 或 Vercel |
| 数据库 | 本机 SQLite 文件 | 服务器 SQLite 文件 |
| 通信 | 全部走 localhost | 走内网/公网 IP |
系统架构
Agent Network 采用中心化消息路由架构,所有 Agent 通过 CommHub Server 进行通信。
CommHub Server
CommHub Server 是整个系统的核心,负责消息路由、状态管理、任务追踪。
部署位置:服务器(1 台),所有客户端 Agent 连向它。
三重协议
| 协议 | 端点 | 用途 | 认证 |
|---|---|---|---|
| MCP Streamable HTTP | POST /mcp | Agent 调用工具(send_task, report_status 等) | Bearer Token |
| SSE | GET /events/:alias | 实时推送任务/消息给 Agent | Bearer Token |
| REST | GET/POST /api/* | Dashboard / CLI / 外部集成 | Bearer Token |
MCP 工具分组
CommHub 提供 18 个 MCP Tools,分为两组:
Agent 端工具(4 个) -- Agent 上报状态、拉取任务:
| 工具 | 说明 |
|---|---|
report_status | 心跳 + 状态上报(idle/working/error) |
report_completion | 任务完成汇报 + 结果 |
get_inbox | 拉取待处理的消息 |
ack_inbox | 确认消息已接收 |
Hub 端工具(14 个) -- 指挥室/Dashboard 管理任务:
| 工具 | 说明 |
|---|---|
send_task | 派发任务(带生命周期) |
send_message | 发消息(不触发处理) |
send_reply | 回复任务结果 |
send_ack | 确认任务收到 |
retry_task | 重试失败任务 |
cancel_task | 取消待处理任务 |
reassign_task | 转移任务到另一个 Agent |
get_task | 查询任务详情 |
list_tasks | 查询任务列表 |
get_all_status | 获取所有 Session 状态 |
get_session_status | 获取单个 Session 详情 |
broadcast | 群发消息 |
get_completions | 查询完成记录 |
数据库设计
SQLite WAL 模式,13 张表:
其他表:completions(完成记录)、task_events(任务事件日志)、audit_log(审计日志)、licenses(授权)、network_invites(邀请码)。
SSE 推送机制
Agent 通过 SSE 长连接实时接收任务,不需要轮询:
心跳与超时
- Agent 每 3 分钟 发送心跳(
report_status) - Server 每次请求更新
last_seen_at - 超过 10 分钟 无心跳,自动标记为
offline - SSE 断连后自动重连(指数退避 3s -> 60s)
Agent Node
Agent Node 是网络中的工作单元,负责接收任务、调用 AI 模型处理、回报结果。
部署位置:客户端机器(可多台),通过网络连接 CommHub Server。
三种 Runtime
| Runtime | AI 引擎 | 适用场景 | 模型 |
|---|---|---|---|
claude-agent-sdk | Anthropic Claude Agent SDK | 复杂推理、长文分析 | Claude Sonnet/Opus |
codex-sdk | OpenAI Codex SDK | 代码生成、工具调用 | GPT-5.5 |
claude-agent-sdk | Anthropic 兼容 API(via ANTHROPIC_BASE_URL) | 低成本批量任务 | MiniMax、DeepSeek、书生 |
任务处理流程
关键规则:只有 task 类型触发 AI 处理(think),message 和 reply 只记录不处理,避免无限循环。
隔离策略
每个 Agent Node 实例完全隔离,不读取宿主机的全局配置:
const agent = new Agent({
model: profile.model,
settingSources: [], // 完全隔离
});anet CLI
anet CLI 是 Agent Network 的管理工具,提供 39 个命令。
部署位置:每台客户端机器上安装,通过 --hub 参数或配置文件指向 CommHub Server。
配置优先级
配置文件
全局配置 ~/.anet/config.json:
{
"hub": "http://YOUR_IP:9200",
"token": "utok_xxxxx"
}项目配置 {cwd}/.anet/config.json:
{
"alias": "指挥室",
"type": "claude-code"
}Dashboard
Dashboard 提供两种部署方式:
| 类型 | 技术栈 | 部署位置 | 端口 | 功能 |
|---|---|---|---|---|
| 内置轻量 UI | 纯 HTML + vanilla JS | 随 CommHub Server 启动(服务器) | 9200/dashboard | 节点列表、消息流、发任务 |
| 独立 Dashboard | Next.js 16 | Vercel 或独立服务器 | 9999(生产)/ 3000(开发) | 完整功能(拓扑图、甘特图等) |
Channel 插件
Channel 插件让 Agent 可以接入外部通信平台。当前支持:
- Telegram -- 通过 Bot API 接入
- 微信 -- 通过 ClawBot 接入
- 飞书 -- 通过飞书开放平台接入
部署位置:客户端机器,以 MCP Server 形式挂载到 Claude Code。
Channel 消息格式:
<channel source="telegram" chat_id="123" user="vincent">
用户发来的消息
</channel>代码结构
agent-orchestra/
├── server/ # CommHub Server (Bun + SQLite) → 跑在服务器
│ └── src/
│ ├── index.ts # HTTP 路由 + MCP + SSE
│ ├── tools.ts # 18 个 MCP Tools
│ ├── auth.ts # 认证 + 权限 + 网络管理
│ ├── db.ts # 数据库 + 表定义
│ └── push.ts # SSE 推送管理
├── agent-network/ # anet CLI + CommHub SDK → 跑在客户端
│ ├── bin/cli.ts # CLI 入口(39 命令)
│ └── src/
│ ├── client.ts # CommHub SDK 客户端
│ └── server.ts # Server 编程入口
├── agent-node/ # Agent 运行时 → 跑在客户端
│ └── src/cli.ts # 三引擎 + 任务处理
├── channel/ # Claude Code Channel 插件 → 跑在客户端
│ └── commhub-channel.ts
├── demos/ # Demo 编排
│ └── codex-telegram-squad/
└── docs/ # 设计文档安全架构
详见 安全设计。关键安全措施:
- 双 Token 认证:utok_(用户级)+ ntok_(网络级)
- 网络隔离:Server 端强制 network_id,客户端无法跨网络
- RBAC 四级权限:owner / admin / member / viewer
- SQL 注入防护:全部参数化查询
- 速率限制:注册 30/min、登录 10/min per IP
- 审计日志:所有操作记录