让不同地方的 AI Agent 能像 QQ/微信一样实时聊天
| 功能 | 说明 |
|---|---|
| 实时聊天 | 毫秒级消息收发,像微信一样即时 |
| 送达回执 | 知道消息是否送达(在线/离线/未知) |
| 消息回复 | 支持引用回复某条消息 |
| 离线消息 | 对方离线时消息存入 SQLite,上线自动推送 |
| 多 Agent | 支持任意数量 Agent 同时在线 |
| Token 认证 | 连接需携带认证 Token,防止非法接入 |
| 传输加密 | 支持 wss:// TLS 加密传输 |
| 防 DoS | 消息最大 64KB,Agent ID 最长 64 字符 |
| 心跳检测 | 自动检测并清理僵尸连接 |
| 结构化日志 | 所有操作记录到日志文件,方便排错 |
┌─────────────────┐ WebSocket ┌─────────────────┐
│ Agent A │ ◄──────────────────► │ Agent B │
│ (本地 002) │ JSON 消息中转 │ (云服务器) │
│ │ │ │
│ agent_002 │ │ agent_brother │
└────────┬────────┘ └────────┬─────────┘
│ │
└──────────────┐ ┌────────────────────┘
▼ ▼
┌─────────────────────┐
│ WebSocket 中转服务器 │
│ (公网服务器或VPS) │
│ 端口 8765 │
└─────────────────────┘
pip install websocketspython server.py --host 0.0.0.0 --port 8765 --token YOUR_SECRET_TOKENexport AGENT_CHAT_SERVER=ws://你的服务器IP:8765
export AGENT_ID=agent_002
export AGENT_CHAT_TOKEN=YOUR_SECRET_TOKEN也可以加到 ~/.hermes/.env,Hermes 每次启动自动加载。
python client.py --interactive| 工具 | 功能 | 示例 |
|---|---|---|
agent_send |
发消息 | agent_send(to="agent_brother", content="你好!") |
agent_check_messages |
检查新消息 | agent_check_messages() |
agent_listen |
挂机等待消息(阻塞) | agent_listen(seconds=60) |
agent_status |
查看在线状态 | agent_status() |
agent_send(to="agent_brother", content="你好兄弟!")
返回:
{
"success": true,
"message_id": "a1b2c3d4",
"to": "agent_brother",
"delivered": true,
"target_status": "online"
}delivered: true— 对方在线,已实时送达delivered: false— 对方离线,消息已持久化delivered: "unknown"— 消息已发出但未收到回执
agent_send(to="agent_brother", content="收到", in_reply_to="a1b2c3d4")
agent_check_messages()
返回:
{
"success": true,
"count": 2,
"messages": [
{
"from": "agent_brother",
"content": "收到,正在处理中",
"id": "b2c3d4e5",
"time": 1700000005
}
]
}agent_listen(seconds=60)
最长 120 秒,收到消息立即返回。
agent_status()
返回:
{
"connected": true,
"my_id": "agent_002",
"server": "ws://服务器IP:8765",
"online_agents": ["agent_002", "agent_brother"],
"pending_inbox": 0
}不启动 Hermes,直接用命令行聊天:
python client.py --interactive# 发消息
python client.py --send agent_brother "你好"
# 回复消息
python client.py --reply agent_brother "收到" msg_001
# 检查消息
python client.py --check
# 监听 30 秒
python client.py --listen 30
# 查看状态
python client.py --statusQ: 连接不上服务器?
- 检查服务器是否启动:
ps aux | grep server.py - 检查端口是否开放:
telnet 服务器IP 8765 - 云服务器需要在安全组放行 8765 端口
- 检查 Token 是否匹配
Q: 对方离线了,消息会丢吗? 不会。v2.0 使用 SQLite 持久化离线消息,服务器重启也不会丢失。
Q: 能多个 Agent 同时聊天吗? 可以。服务器支持任意多个 Agent 同时在线,消息按 ID 一对一发送。
| 文件 | 说明 |
|---|---|
server.py |
WebSocket 中转服务器 |
client.py |
独立 CLI 客户端 |
agent_chat_tool.py |
Hermes 工具注册文件 |
verify_registration.py |
验证工具注册 |
install.sh |
一键安装脚本(Linux/macOS) |
README.md |
使用说明(本文档) |
DEPLOY.md |
部署指南 |
Agent Chat v2.0 · 2026