Agent-Comm-Hub
<p align="center">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://img.shields.io/badge/Node.js-22-green?logo=node.js">
<img src="https://img.shields.io/badge/Node.js-22-green?logo=node.js" alt="Node.js 22">
</picture>
<img src="https://img.shields.io/badge/Python-3.9+-blue?logo=python" alt="Python 3.9+">
<img src="https://img.shields.io/badge/MCP_Protocol-1.0-orange?logo=robot" alt="MCP Protocol">
<img src="https://img.shields.io/badge/288_Tests-Passing-3fb950?logo=vitest" alt="288 Tests">
<img src="https://img.shields.io/badge/Zero_External_Services-success?logo=server" alt="Zero External Services">
<img src="https://img.shields.io/badge/Web_Panel-Live-7c3aed?logo=htmx" alt="Web Panel">
<a href="https://github.com/liuboacean/agent-comm-hub/actions/workflows/ci.yml">
<img src="https://img.shields.io/github/actions/workflow/status/liuboacean/agent-comm-hub/ci.yml?branch=master&logo=githubactions&label=CI" alt="CI">
</a>
<img src="https://img.shields.io/badge/License-MIT-yellow" alt="MIT License">
<a href="https://pypi.org/project/agent-comm-hub/">
<img src="https://img.shields.io/pypi/v/agent-comm-hub" alt="PyPI">
</a>
<a href="https://www.npmjs.com/package/@liuboacean/agent-comm-hub">
<img src="https://img.shields.io/npm/v/@liuboacean/agent-comm-hub" alt="npm">
</a>
<a href="https://glama.ai/mcp/servers/liuboacean/agent-comm-hub">
<img src="https://glama.ai/mcp/servers/liuboacean/agent-comm-hub/badges/score.svg" alt="Glama score">
</a>
<a href="https://codeguilds.dev/packages/agent-comm-hub">
<img src="https://img.shields.io/badge/Available_on-CodeGuilds-6366f1" alt="Available on CodeGuilds">
</a>
</p>
<h1 align="center">
🤖 Agent Communication Hub
</h1>
<p align="center">
<strong>让 AI Agent 不再各自为战</strong><br>
<em>实时消息 · 任务调度 · 共享记忆 · 信任进化 · Web 仪表盘</em><br>
<code>58 个 MCP 工具 · 零外部服务 · 5 分钟部署</code>
</p>
<p align="center">
<a href="#readme">中文</a> · <a href="docs/README_EN.md">English</a>
· <a href="https://github.com/liuboacean/agent-comm-hub">GitHub</a>
</p>
<br>
---
## 👀 一眼看明白
```mermaid
graph LR
A[Claude Code] <--> H((ACH Hub))
B[WorkBuddy] <--> H
C[OpenClaw] <--> H
D[自定义 Agent] <--> H
H --> DB[(SQLite)]
H --> Web[Web 仪表盘]
style H fill:#4f46e5,color:#fff
style Web fill:#7c3aed,color:#fff
```
**任何 MCP 兼容的 AI Agent** → 连接 Hub → 立即获得:消息总线、任务队列、共享记忆、进化引擎。
> 🚀 **5 分钟启动**:`docker run -d -p 3100:3100 ghcr.io/liuboacean/agent-comm-hub`
---
## 💡 为什么需要它?
多个 AI Agent(Claude Code、WorkBuddy、OpenClaw、Hermes 等)天然是**信息孤岛**:
| 问题 | 传统方案 | 为什么不行 |
|------|---------|-----------|
| ❌ Agent 间无法通信 | Webhook / 共享文件 | 脆弱、不可靠、手动维护 |
| ❌ 无法跨 Agent 调度任务 | 各自为战 | 没人协调,任务丢失 |
| ❌ 无法共享上下文 | 每轮对话都从零开始 | 记不住团队经验 |
| ❌ 无法团队进化 | 每个 Agent 独自踩坑 | 同样的问题反复修 |
**Agent Communication Hub(ACH)** 是它们的**共享神经中枢**——一条消息总线 + 任务调度器 + 团队记忆库 + 经验进化引擎。
---
## 🚀 三步上手
```bash
# 0. 安装 Python SDK(可选)
pip install agent-comm-hub
# 1. 启动 Hub(一行命令)
docker run -d -p 3100:3100 --name ach ghcr.io/liuboacean/agent-comm-hub
# 2. 注册 Agent
python3 -c "
from hub_client import SynergyHubClient
hub = SynergyHubClient('http://localhost:3100')
result = hub.register(invite_code='INVITE-001', name='my-agent')
hub.set_token(result['api_token'])
print(f'✅ Agent 注册成功,ID: {result[\"agent_id\"]}')
"
# 3. 发条消息试试
python3 -c "
from hub_client import SynergyHubClient
hub = SynergyHubClient('http://localhost:3100')
hub.set_token('your-token')
hub.send_message(to='other-agent', content='收到,任务完成。')
print('✅ 消息已发送')
"
```
> 🔗 然后打开 **http://localhost:3100/dashboard** 查看实时仪表盘
---
## ✨ 核心能力
### 📊 数据快照
| 指标 | 值 |
|------|:--:|
| MCP 工具 | **58 个** |
| Python SDK 方法 | **68 个** |
| TypeScript SDK 方法 | **35 个** |
| 单元测试 | **288 个 ✅** |
| 数据库表 | **32 张** |
| client-sdk 运行时依赖 | **0(Python/TS 纯标准库)** |
| 服务端运行时依赖 | **5 个轻量依赖**(express / better-sqlite3 / zod / eventsource / @modelcontextprotocol/sdk) |
| 消息延迟 | **< 50ms** |
| 部署方式 | Docker / npm / SkillHub |
### 🧩 功能矩阵
| 类别 | 工具 | 一句话 |
|------|------|--------|
| 🔐 **身份认证** | 6 | 注册 / 心跳 / RBAC / 信任评分 |
| 💬 **消息通信** | 5 | P2P / 广播 / FTS5 搜索 / 去重 |
| 📋 **任务调度** | 8 | 7 状态机 / Pipeline / 并行组 |
| 🧠 **共享记忆** | 5 | 三级作用域(私密/团队/全局)|
| 🔀 **编排协调** | 11 | 依赖链 / 质检门 / 任务交接 |
| 📈 **进化引擎** | 12 | 经验共享 / 策略审批 / 信任闭环 |
| 🛡️ **安全审计** | 6 | 哈希链审计 / 4 级 RBAC / CORS |
| 📎 **文件传输** | 3 | 上传 / 下载 / 列表 |
| 🔧 **高可用** | 3 | DB 分裂检测 / 自动合并 / 看门狗 |
---
## 🖥️ 内置 Web 管理面板
启动 Hub 后打开 **http://localhost:3100/dashboard**,即可实时管理你的 Agent 集群:
| 页面 | 能干什么 |
|------|---------|
| **总览仪表盘** | 一眼看清在线 Agent、Pipeline 状态、消息吞吐 |
| **Agents** | 查看所有 Agent 列表(名称、角色、最后活跃时间、信任分)|
| **消息吞吐** | 5 分钟消息量 + 被限流的 Agent Top |
| **健康检查** | 版本 / 运行时间 / DB 状态 / 备份状态(本地 + 远程)|
| **审计日志** | 全量操作追溯,谁在什么时候做了什么 |
> 纯静态 HTML(零前端框架),内联 CSS+JS,启动即用。
---
## 🏗️ 架构
```
┌─────────────────────────────────┐
│ Agent Communication Hub │
│ localhost:3100 │
│ │
┌─────────┐ SSE/MCP │ ┌──────┐ ┌──────┐ ┌────────┐ │ SSE/MCP ┌─────────┐
│ Claude │◄─────────►│ │Auth │ │Msg │ │Memory │ │◄─────────►│WorkBuddy│
│ Code │ │ │RBAC │ │Bus │ │FTS5 │ │ │ │
└─────────┘ │ └──────┘ └──────┘ └────────┘ │ └─────────┘
│ ┌──────┐ ┌──────┐ ┌────────┐ │
┌─────────┐ │ │Task │ │Orch │ │Evol │ │ ┌─────────┐
│OpenClaw │◄─────────►│ │Sched │ │Str │ │Engine │ │◄─────────►│ Hermes │
└─────────┘ │ └──────┘ └──────┘ └────────┘ │ └─────────┘
└────────────┬────────────────────┘
│
┌──────▼──────┐ ┌─────────────┐
│ SQLite │ │ Web Panel │
│ (WAL 模式) │ │ /dashboard │
└─────────────┘ └─────────────┘
```
---
## 🔧 SDK 快速上手
### Python — 零外部依赖
```python
from hub_client import SynergyHubClient
hub = SynergyHubClient(hub_url="http://localhost:3100", agent_id="my-agent")
hub.set_token("your-api-token")
hub.send_message(to="other-agent", content="任务完成,交接。") # 发消息
hub.store_memory(content="用户偏好 JSON", scope="collective") # 存记忆
task = hub.create_task(title="评审 PR #42", assignee="claude-code") # 派任务
hub.share_experience(title="修复方案", content="...", category="debug") # 分享经验
hub.on_message = lambda msg: print(f"收到: {msg}")
hub.connect_sse() # 实时监听
```
### TypeScript — 零外部依赖
```typescript
import { AgentClient } from "./client-sdk/agent-client.js";
const client = new AgentClient({
agentId: "my-agent",
hubUrl: "http://localhost:3100",
token: "your-api-token",
onMessage: async (msg) => { /* 处理消息 */ },
onTaskAssigned: async (task) => { /* 处理任务 */ },
});
await client.start();
await client.sendMessage({ to: "other-agent", content: "搞定了!" });
```
---
## 🆚 对比其他方案
| 特性 | ACH | 自建 Webhook | 共享数据库 | 消息队列(RabbitMQ) |
|------|:---:|:-----------:|:----------:|:-----------------:|
| 5 分钟部署 | ✅ | ❌ | ❌ | ❌ |
| MCP 原生支持 | ✅ | ❌ | ❌ | ❌ |
| 共享记忆 + FTS5 搜索 | ✅ | ❌ | ❌ | ❌ |
| 任务调度 + Pipeline | ✅ | ❌ | ❌ | ❌ |
| 进化引擎(经验复用) | ✅ | ❌ | ❌ | ❌ |
| 内置 Web 面板 | ✅ | ❌ | ❌ | ❌ |
| 审计哈希链 | ✅ | ❌ | ❌ | ❌ |
| 零外部服务 | ✅ | ✅ | ✅ | ❌ |
| Python + TS SDK | ✅ | ❌ | ❌ | ❌ |
---
## 📦 部署方式
### 🐳 Docker(推荐,一键启动)
```bash
docker run -d -p 3100:3100 --name ach ghcr.io/liuboacean/agent-comm-hub
```
### 📦 Docker Compose(含 Prometheus + Grafana 监控)
```bash
cd deploy/
docker compose up -d
# Hub: http://localhost:3100 | Grafana: http://localhost:3000 (admin/admin)
```
### 🔧 源码安装
```bash
git clone https://github.com/liuboacean/agent-comm-hub.git
cd agent-comm-hub
npm install && npm run build
npm start # 生产模式
# 或 npm run dev # 开发模式
```
### 🎯 作为 Skill 安装
```bash
# ClawHub
claw install agent-comm-hub
# SkillHub(30+ 平台)
skillhub install agent-comm-hub
```
---
## ⚠️ Node 版本要求(重要)
本项目依赖原生模块 **`better-sqlite3`,它是按 Node 22(NODE_MODULE_VERSION 127)编译的**。因此:
- 🔒 **运行 Hub(`dist/src/server.js` 或 `dist/src/stdio.js`)必须用 Node 22 启动**。若使用 Node 24(或更高),会因 ABI 不匹配立即抛出 `ERR_DLOPEN_FAILED` 崩溃,无法启动。
- 🧪 **CI 中的 Node 24 仅用于跑单元测试**(且涉及 stdio 启动的冒烟用例已条件化 `skip`)。运行环境必须 **Node 22**(`<23`,better-sqlite3 原生 ABI `NODE_MODULE_VERSION 127` 要求),`package.json` 的 `engines.node` 即声明为 `">=22 <23"`。**不要用 Node 24 跑服务**,否则 `better-sqlite3` 会因 ABI 不匹配报 `ERR_DLOPEN_FAILED` 启动崩溃。
- ✅ **推荐做法**:用版本管理器固定 Node 22(如 `nvm use 22`),或在启动脚本/hub 配置中显式写死 Node 22 二进制绝对路径。
---
## 🔌 给 Agent 配置 MCP
### Stdio(推荐)
```json
{
"mcpServers": {
"agent-comm-hub": {
"command": "/path/to/node22/bin/node",
"args": ["dist/src/stdio.js"],
"env": { "HUB_AUTH_TOKEN": "your-key", "DB_PATH": "./comm_hub.db" }
}
}
}
```
> ⚠️ **必须用 Node 22 二进制启动**(例如绝对路径 `/path/to/node22/bin/node`),**不要**用 Node 24。本项目原生模块 `better-sqlite3` 是按 Node 22(NODE_MODULE_VERSION 127)编译的,使用 Node 24 启动 `dist/src/stdio.js` 或 `dist/src/server.js` 会立即 `ERR_DLOPEN_FAILED` ABI 崩溃。
### HTTP + SSE
```json
{
"mcpServers": {
"agent-comm-hub": { "url": "http://localhost:3100/mcp" }
}
}
```
---
## 🛡️ 安全体系
| 层级 | 措施 |
|:----|------|
| **认证** | Token + SHA-256 哈希存储,原始 Token 不落盘 |
| **授权** | 4 级 RBAC:public → member → group_admin → admin |
| **审计** | 区块链式哈希链 `prev_hash → record_hash`,DB 触发器保障 |
| **信任** | 自动评分,0-100 分影响策略审批等级 |
| **网络** | CORS 白名单制 / X-Frame-Options / CSP / HSTS |
---
## 📁 项目结构
```
agent-comm-hub/
├── web/dist/index.html # Web 管理面板(零前端框架)
├── src/ # 核心源码(TypeScript)
│ ├── server.ts # Express + SSE + MCP 入口
│ ├── db.ts # SQLite WAL 数据库
│ ├── backup.ts # 自动备份模块
│ ├── identity.ts # 注册 / 心跳 / RBAC
│ ├── memory.ts # 三级记忆 + FTS5 搜索
│ ├── orchestrator.ts # 依赖链 / Pipeline
│ ├── evolution.ts # 经验共享 / 策略审批
│ └── security.ts # Token / 审计 / CORS
├── client-sdk/
│ ├── hub_client.py # Python SDK(68 方法,零依赖)
│ └── agent-client.ts # TypeScript SDK(35 方法)
├── deploy/ # Docker Compose + 监控
├── tests/ # 288 个测试
└── docs/ # 完整文档
```
---
## 📚 文档导航
| 文档 | 适合谁 |
|------|--------|
| [API 参考](docs/API_REFERENCE.md) | 开发者(HTTP/SSE/MCP 端点 + Bearer 鉴权) |
| [编排指南](docs/advanced-orchestration-guide.md) | 搭 Pipeline 高级玩家 |
| 进化引擎指南 | 实验性,欢迎 PR(计划从 A 层 `evolution-guide.md` 同步) |
| Hermes 集成指南 | 实验性,欢迎 PR(计划从 A 层 `hermes-integration-guide.md` 同步) |
| [DB 三层防护](docs/hub-db-split-three-layer-protection.md) | 运维/稳定性保障 |
| [Agent 协调时序图](docs/agent-coordination-flow.mermaid) | 想看清「任务从 A 到 B 全自动流转、哪里卡 HITL」的人 |
| [English README](docs/README_EN.md) | English speakers |
> 📌 **文档同步说明(B 层为权威源)**:服务端仓库(`agent-comm-hub-src`)是文档的单一权威来源。当前 `package.json` 的 `docs:sync` 脚本依赖 `scripts/sync-docs.ts`,**该文件尚未提供**,因此 A 层 Skill 分发包(`~/.workbuddy/skills/agent-comm-hub/`)需**手动同步**:将本仓库的 `docs/`、`SKILL.md`、`README.md` 复制到 A 层对应位置。后续若补充 `scripts/sync-docs.ts`,可用 `npm run docs:sync` 自动同步。
---
## 🆕 更新历史
<details>
<summary><strong>v3.0.24</strong> (2026-08-14) — 宿主执行器闭环收口(HostExecutor 注入)</summary>
- ⚡ **真实宿主执行器(HostExecutor)** — 新增 `client-sdk/adapters/host-executor.ts`,提供 `LlmHostExecutor` / `HttpHostExecutor` 参考实现,`defaultHostExecutor()` 按环境变量自动选择;`AbstractHostTaskBridge` 新增可注入 `executor` 字段
- 🔧 **消灭 setTimeout 占位** — WorkBuddy / Hermes 桥 `runTask()` 委托 `this.executor.execute()`,任务到达即触发宿主真实能力,自主执行闭环真正打通
- 📝 **文档** — `docs/HOST_INTEGRATION.md` §4 重写,含 HostExecutor 注入模型与自定义执行器示例
</details>
<details>
<summary><strong>v3.0.23</strong> (2026-08-14) — Agent 自主执行闭环 + 人在环授权</summary>
- 🤖 **Feature A:Agent 自主执行闭环** — 新增 `AgentRuntime`(client-sdk/runtime.ts),自动驱动 `in_progress → execute() → completed/failed`,含 inFlight 去重 / 崩溃恢复 / loopGuard,消灭人工「传话」
- 🔐 **Feature B:人在环授权队列** — 新增操作级授权(`auth_requests` 表 + `request_authorization`/`resolve_authorization` 工具,deny-by-default,TTL 10min)+ Web `AuthQueue` 面板,敏感操作一键批准/拒绝
- 🧹 **清理陈旧产物** — 移除 `client-sdk/` 下 3 个 5 月旧编译 `.js`(`agent-client.js` / `hermes-integration.js` / `workbuddy-integration.js`)及其 `.map`,修正 `client-sdk/package.json` 入口引用
</details>
<details>
<summary><strong>v3.0.22</strong> (2026-07-23) — 在线状态 / 审计归档 / 备份路径</summary>
- 🟢 **在线状态统一判定** — 新增 `isAgentOnline()` =(存在 SSE 实时连接)**或**(心跳 90s 内);`get_online_agents`、派单候选排序、`/health/detailed`、`/api/agents`、指标全部改用统一判定,SSE 连着即在线、可派单
- 💓 **心跳监控不再误杀 SSE 在线 Agent** — 仍有 SSE 连接的 Agent 不因心跳陈旧误标离线、不再广播离线通知;SSE 连接建立即同步 `agents.status`
- 🗂️ **`audit_log` 行数上限自动归档** — 超 `AUDIT_LOG_MAX_ROWS`(默认 3000,env 可调)自动将最旧溢出行**镜像**到 `audit_log_archive`(WORM 安全,不删源表);新增启动即跑 + 每小时维护调度器
- 📦 **备份路径稳定化** — `backup.ts` 的 `BACKUP_DIR` 由 `process.cwd()/backups`(易失 workspace)改为 `~/agent-comm-hub/backups`,与 launchd 备份脚本同目录,支持 `BACKUP_DIR` 覆盖
</details>
<details>
<summary><strong>v3.0.21</strong> (2026-07-23) — 安全加固(稳定性 / 安全 / 质量)</summary>
- 🔌 **P1-1 SSE 重连竞态** — `registerClient`/`removeClient` 增连接级 `connId` 校验,旧 socket 的 `close` 不再误删当前实时连接,重连后消息/任务不再静默丢失
- 💾 **P1-2 并发写 `SQLITE_BUSY`** — `busy_timeout=5000` + `foreign_keys` + WAL 自动检查点,消除并发写静默丢数据
- 🛡️ **P1-3 限流绕过** — 认证前置单 IP / 全局限流(防令牌爆破与未认证 `/mcp` 耗尽资源);`/mcp` 增并发在途上限(默认 50)防 DoS
- 🔍 **P1-4/5 FTS 值碰撞** — `memories_fts` 增 `memory_id` 精确关联键(启动迁移旧表),内容相同的两条记忆不再互相串台
- 🔐 **P2 质量** — 信任分按 `target` 列计吊销(管理员不再误扣);受保护端点仅接受 `Bearer`,移除 `?token=` 与 `x-api-key` 令牌泄漏面
</details>
<details>
<summary><strong>v3.0.20</strong> (2026-07-23) — 构建产物固化</summary>
- 🏗️ **构建产物固化** — `dist/package.json` 生成写入 `build` 脚本与启动脚本,消除「安装即崩溃」(`version.ts` 启动依赖 `../package.json`)
</details>
<details>
<summary><strong>v3.0.19</strong> (2026-07-21) — 文档与版本一致性修复</summary>
- 📝 **文档工具数统一为 58** — 与 `src/security.ts` 的 `TOOL_PERMISSIONS` 矩阵一致,修正 README/SKILL.md 残留的 56/53
- 📚 **新建 `docs/API_REFERENCE.md`** — 准确的 HTTP/SSE/MCP 端点速查(含 Bearer 鉴权与 SSE `Last-Event-ID` 断线重连);修正 README 三处死链
- 🏷️ **SKILL.md 文件传输工具名更正** — `send_file`/`receive_file` → `upload_file`/`download_file`
</details>
<details>
<summary><strong>v3.0.18</strong> (2026-07-14) — 安全加固集(ClawScan 67 findings + IDOR)</summary>
- 🔒 **修复 ClawScan 审计 67 findings** — fail-closed 权限矩阵 + stdio 强制认证
- 🛡️ **IDOR 对象级授权加固** — `assertOwns` + `HUB_2004` 防越权访问
- 🧩 **版本单一真相源** — 抽离 `src/version.ts`;`/health` 收敛
</details>
<details>
<summary><strong>v3.0.12</strong> (2026-07-08) — README 同步 + 测试卫生</summary>
- 📄 **同步中英文 README** — 对齐 v2.5.1(Node 22 约束锁定 + 测试计数)
- 🧹 **测试卫生** — 修复 unit 测试在仓库根生成 `undefined*` 游离文件
</details>
<details>
<summary><strong>v2.5.1</strong> (2026-07-08) — 稳定性修复 + Node 22 约束锁定</summary>
- 🐛 **`get_db_stats` 修复** — ESM 模块误用 `require("fs")` 导致 `require is not defined`,改 `import * as fs`
- 🔄 **DB 路径容错** — `resolveDbPath` 新增空库自动回退,修复误连空库导致的记忆库/进化引擎"数据归零"假象
- 🔒 **Node 22 锁定** — 启动脚本固定 Node 22,匹配 better-sqlite3 原生模块(Node 24 会 ABI 崩溃)
- 🧪 **防护测试** — 新增 stdio/Hub 必须用 Node 22 的契约测试,防止被误改回 Node 24
- 🧹 **测试卫生** — 修复 unit 测试在仓库根生成 `undefined*` 游离文件(`isValidDbPath` 守卫)
</details>
<details>
<summary><strong>v2.5.0</strong> (2026-07-07) — Web 管理面板 + 备份模块</summary>
- 🖥️ **Web 管理面板** — 纯静态 HTML 仪表盘,6 个实时页面
- 🔄 **在线状态改进** — 二元标签 → 最后活跃时间,不再跳变
- 📦 **备份模块** — 本地 + 远程 rsync 备份状态展示
- ⏱️ **持久化运行时间** — 重启不归零
- 📊 **新增 API** — `GET /api/agents`
- 🔧 **`.gitignore` 清理** — 移除已跟踪的编译产物
</details>
<details>
<summary><strong>v2.4.7</strong> (2026-06-09) — 标签分词修复 + 全链路日志</summary>
- 🔍 FTS5 标签分词修复(空格拼接替代 JSON)
- 📊 12 处静默吞异常 → logError 全链路可观测
- 🔐 `authed()` 统一认证中间件重构
</details>
<details>
<summary><strong>v2.4.6</strong> (2026-06-09) — FTS5 索引守护 + 外部化路径</summary>
- 🔒 FTS5 索引每次存储后自动校验
- 🛣️ 支持 `HUB_ROOT` 环境变量
- 📨 新增 `generate_invite` 邀请码工具
- 🧪 新增 19 个测试用例
</details>
---
## 🤝 参与贡献
- 🐛 发现 bug → [提 Issue](https://github.com/liuboacean/agent-comm-hub/issues)
- ✨ 有新想法 → [Feature Request](https://github.com/liuboacean/agent-comm-hub/issues)
- 📖 改进文档 → PR 欢迎
- 🔧 贡献代码 → Fork + PR
---
## 📄 许可证
MIT — 可自由用于个人和商业项目。
---
<p align="center">
<strong>基于 MCP 协议 + SSE · 零外部服务 · 零厂商锁定</strong><br>
<sub>让每一个 AI Agent 都拥有团队协作能力 🤖✨</sub>
</p>
TDQS
Scored across 58 tools
Many tools have distinct purposes (e.g., propose_strategy vs share_experience, store_memory vs recall_memory), but there is notable overlap between search_memories and recall_memory (both are FTS5 full-text search), and between get_task_status and update_task_status (one is status query, one is status update but names are close). Also, propose_strategy and propose_strategy_tiered are nearly identical in purpose, differing only in approval process, which could cause confusion despite descriptions clarifying slightly.
Most tool names follow a clear verb_noun pattern (e.g., accept_handoff, get_task_status, create_pipeline, activate_agent). There are minor deviations: 'check_consumed' vs 'mark_consumed' are consistent, but 'get_db_stats' is a bit non-standard (could be 'get_database_stats'), and 'score_applied_strategies' mixes an adjective into the noun phrase. However, the overall consistency is high.
58 tools is far beyond the typical 3-15 range. The server covers a wide domain (agent management, messaging, memory, strategies, tasks, pipelines, attachments, admin), but the count is excessive and likely overwhelms an agent's tool selection. Many tools are variants (e.g., 5 pipeline-related tools) that could be consolidated, but 58 is still a heavy load.
The tool set covers the core lifecycle for all its domains: agent registration/activation/deactivation, messaging with ack processing, memory CRUD and search, strategy proposal/approval/feedback, task assignment/status/dependencies, pipeline creation/management, and file attachments. Minor gaps exist: no direct way to delete a message, no audit log query, and no tool to explicitly list consumed resources (only check_consumed for a specific one), but agents can work around these.