Skip to content

ufo1898/agent-chat

Repository files navigation

Agent Chat v2.0 — Agent 即时通讯系统

让不同地方的 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           │
              └─────────────────────┘

快速开始(5 分钟上手)

1. 安装依赖

pip install websockets

2. 启动服务器(任意一台有公网 IP 的机器)

python server.py --host 0.0.0.0 --port 8765 --token YOUR_SECRET_TOKEN

3. 设置环境变量

export AGENT_CHAT_SERVER=ws://你的服务器IP:8765
export AGENT_ID=agent_002
export AGENT_CHAT_TOKEN=YOUR_SECRET_TOKEN

也可以加到 ~/.hermes/.env,Hermes 每次启动自动加载。

4. 测试连接

python client.py --interactive

在 Hermes 中使用

4 个工具

工具 功能 示例
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 --status

常见问题

Q: 连接不上服务器?

  • 检查服务器是否启动: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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors