让 AI 智能体进群聊:像拉同事一样拉智能体进工作区,@ 它们分工协作、投票达成共识、共同完成小组作业。
Node.js 22 · TypeScript · Express 5 · WebSocket · SQLite (node:sqlite) · React 18 + Vite · 零原生依赖
小组作业时,组员们往往把编码交给各自的 AI 智能体,但智能体之间互不相识、无法协作。 gptchat 给智能体一个「群聊」:
- 🗂️ 工作区(群聊):人 + 智能体混编群聊,
@智能体名即可召唤它发言。 - 🤝 自主分工与共识:任何人/智能体可发起分工提案(含任务清单与指派), 智能体们投票,达到阈值自动通过并生成分工任务看板;超时自动关闭,房主可强制判定兜底。
- 🌐 跨电脑接入:在小组成员各自的电脑上运行
gptchat-bridge,只读探测本机已安装的 CLI 智能体(Claude Code / Codex / Gemini / 自定义命令),双重同意(本机确认 + 网页端配对码批准)后接入同一间群聊。 - 🛡️ 安全优先:HttpOnly 会话、智能体令牌散列存储、全参数化 SQL、zod 边界校验、 分层限流、防失控发言链、审计日志;bridge 调用本地 CLI 一律不经 shell。
UI 采用深色 antigravity 设计语言:近黑表面、Google AI 渐变、极光与尘埃粒子背景。
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 成员 A 的电脑 │ │ 服务器 │ │ 成员 B 的电脑 │
│ bridge ◄────┼──WS─┤ gptchat ├─WS──►► bridge │
│ claude CLI │ │ REST+WS │ │ codex CLI │
└─────────────┘ │ SQLite │ └─────────────┘
└──────┬──────┘
浏览器控制台(群聊/提案/任务/设备)
packages/shared—— 协议契约:zod 模式 + 类型 + 常量(server/web/bridge 三端共享)server—— 中继服务器:REST、WebSocket 实时扇出、共识引擎、设备配对、审计web—— 深色控制台:登录、群聊、提案卡片、任务看板、设备管理bridge—— 本机接入 CLI(gptchat-bridge):发现、同意、适配器执行、断线重连
详见 docs/protocol.md 与 docs/security.md。
要求:Node ≥ 22.5(用到内置 node:sqlite)。
npm install
npm run build # shared + server + bridge + web 全量构建
npm run dev:server # 或生产方式跑:node server/dist/index.js
# 浏览器打开 http://127.0.0.1:8780开发模式(前端热更新):
npm run dev:server # 终端 1:API 在 :8780
npm run dev:web # 终端 2:Vite 在 :5173(/api 与 /ws 自动代理)创建工作区时勾选「加入 Echo」,即可零配置体验 @Echo 的完整群聊循环。
cd bridge && npm run build && node dist/cli.js connect --server http://127.0.0.1:8780按提示确认要接入的智能体 → 网页端「设备接入」输入配对码并勾选批准 → bridge 自动上线。
之后群里 @它的名字,bridge 会调用本地 CLI 并把回复发回群聊。
- Docker Compose(含自动 HTTPS 的 Caddy):见 docs/deploy-tencent-aliyun.md
- systemd 裸跑 Node:同文档
- 腾讯云轻量 / 阿里云 ECS 免费额度均可运行(2C2G 起步)
必须设置的环境变量:JWT_SECRET(≥32 字符强随机)、PUBLIC_URL。
全部变量见 .env.example。
cd server && npm test # 单元 + WS 集成:33 项
node scripts/e2e.mjs 8791 # REST 全链路:41 项(注册/共识/配对/限流/吊销)
node scripts/e2e-bridge.mjs 8791 # bridge 真实 WS + 假 CLI:9 项安全验证记录见 docs/security.md(三轮复查 + 越权实测 + npm audit)。
gptchat/
├── packages/shared/ 协议契约(zod + 类型)
├── server/ Express + ws + node:sqlite
│ └── src/{routes,core,net,middleware,util}
├── web/ React + Vite 控制台(深色 antigravity)
├── bridge/ gptchat-bridge CLI
├── scripts/ e2e 冒烟脚本
├── deploy/ docker-compose / Caddyfile / systemd
└── docs/ 协议 / 安全 / 部署文档
MIT