轻量级云原生 ACP 桥接工具,将 Discord、Slack 等聊天平台与 Kiro CLI、Claude Code、Codex 等 AI 编程 CLI 连接,实现聊天即编码的团队协作体验。
OpenAB(Open Agent Broker)是一个用 Rust(99.1%)编写的轻量级、安全、云原生的 ACP(Agent Client Protocol)桥接工具。它将 Discord、Slack 等聊天平台与任何 ACP 兼容的编程 CLI(如 Kiro CLI、Claude Code、Codex、Gemini、OpenCode、Copilot CLI、Cursor 等)连接起来,使团队成员可以在即时通讯频道中通过 @bot 直接与 AI 编程助手交互。
核心架构#
核心通信基于 ACP 协议(基于 stdio 的 JSON-RPC),OpenAB 作为中间层在上游对接聊天平台适配器,在下游通过 Session Pool 管理多个 CLI 进程。适配器模式(ChatAdapter trait + AdapterRouter)实现了平台无关的消息路由。
┌──────────────┐ Gateway WS ┌──────────────┐ ACP stdio ┌──────────────┐
│ Discord │◄─────────────►│ │──────────────►│ coding CLI │
│ User │ │ openab │◄── JSON-RPC ──│ (acp mode) │
├──────────────┤ Socket Mode │ (Rust) │ └──────────────┘
│ Slack │◄─────────────►│ │
│ User │ └──────┬───────┘
├──────────────┤ │ WebSocket (outbound)
│ Telegram │◄──webhook──┐ │
│ LINE │◄──webhook──┤ ┌──────▼───────┐
│ Feishu/Lark │◄───WS──────┤ │Custom Gateway│
│ Google Chat │◄──webhook──┘ │(standalone) │
└──────────────┘ └──────────────┘
聊天平台适配#
- Discord 原生适配:基于 serenity 库,支持 @提及触发、线程化对话、Edit-streaming(每 1.5 秒实时更新消息展示 token 流式输出)、Emoji 状态反应(👀→🤔→🔥/👨💻/⚡→👍 + 随机表情,含防抖和卡顿检测)、语音消息 STT(Groq/OpenAI/本地 Whisper)
- Slack 原生适配:Socket Mode 连接,支持 @提及触发、线程化对话
- Custom Gateway 扩展:独立组件,通过 Webhook/WebSocket 对接 Telegram、LINE、飞书/Lark、Google Chat
- 多平台同时运行:单实例可同时启用 Discord + Slack 适配器
Agent 后端管理#
支持 7 种 Agent 后端,可通过配置文件切换:Kiro CLI(默认)、Claude Code、Codex、Gemini、OpenCode、Copilot CLI(⚠️稳定性待确认)、Cursor。支持多 Agent 模式,可同时运行不同后端。
每个聊天线程对应一个独立的 CLI 进程会话,Session Pool 按线程 key 管理连接,支持自动生命周期管理(可配 max_sessions 和 session_ttl_hours)。
配置与部署#
配置文件支持 TOML 格式及 ${ENV_VAR} 环境变量展开,也支持从远程 URL 加载配置(--config https://...)。频道和用户级权限通过白名单机制控制。
部署方面提供 Dockerfile、Kubernetes manifests 和 Helm chart(helm repo add openab https://openabdev.github.io/openab),PVC 持久化认证信息,适合团队级基础设施长期运行。本地开发可通过 cargo run 直接启动。
核心源码结构#
| 路径 | 职责 |
|---|---|
src/main.rs | 多适配器启动、清理、关闭 |
src/adapter.rs | ChatAdapter trait, AdapterRouter |
src/config.rs | TOML 配置解析 + ${ENV_VAR} 展开 |
src/discord.rs | Discord 适配器(基于 serenity) |
src/slack.rs | Slack 适配器(Socket Mode) |
src/media.rs | 图片压缩 + STT 下载 |
src/acp/protocol.rs | JSON-RPC 类型定义 + ACP 事件分类 |
src/acp/connection.rs | CLI 进程生成 + stdio JSON-RPC 通信 |
src/acp/pool.rs | Session pool 管理 |
待确认信息#
- 当前版本为 v0.8.3-beta.2,仍处于 beta 阶段,API 和配置格式是否存在 breaking changes 待确认
- Custom Gateway 的具体部署方式在 README 中未详述
- 语音消息 STT 的详细配置选项指向 docs/stt.md,未在 README 中展开
- 未见 Session Pool 并发上限、内存占用、延迟等基准性能数据