English | 繁體中文
一個輕量、安全、雲端原生的 ACP harness,透過 stdio JSON-RPC 將 Discord、Slack 與任何相容於 Agent Client Protocol 的程式開發 CLI(Kiro CLI、Claude Code、Codex、Gemini、OpenCode、MiMo-Code、Kimi Code、Copilot CLI、Hermes、Grok Build、Devin、Antigravity、Pi 等)連接起來,帶來新一代的開發體驗。Telegram、LINE、Feishu/Lark、Google Chat、WeCom 與 Microsoft Teams 則由 gateway adapters 支援;可將 adapters 編入 unified binary,或部署為獨立的 Custom Gateway。
🪼 加入我們的社群! 歡迎到 Discord 和大家打招呼:🪼 OpenAB — Official 🎉
┌──────────────┐ Gateway WS ┌─────────────────┐ ACP stdio ┌─────────────────────────┐
│ Discord │◄────────────►│ │────────────►│ agent runtime │
│ User │ │ openab (Rust) │◄──JSON-RPC──│ (ACP process) │
├──────────────┤ Socket Mode │ thin ACP broker │ ├─────────────────────────┤
│ Slack │◄────────────►│ │ │ kiro-cli acp │
│ User │ └────────┬────────┘ │ claude-agent-acp │
├──────────────┤ ▲ │ codex-acp │
│ Telegram │◄webhook/API─►┐ │ │ └─ Codex app-server │
│ User │ │ │ WebSocket │ gemini --acp │
├──────────────┤ │ │ (standalone) │ copilot --acp │
│ LINE │◄webhook/API─►┤ │ or in-process │ cursor-agent acp │
│ User │ │ │ (unified) │ hermes-acp │
├──────────────┤ │ ┌──────┴───────────┐ │ opencode acp │
│ Feishu/Lark │◄─WS/webhook─►┼►│ gateway adapters │ │ mimo acp │
│ User │ │ │ standalone or │ │ kimi acp │
│ │ │ │ │ │ grok agent stdio │
├──────────────┤ │ │ embedded unified │ │ devin acp │
│ Google Chat │◄webhook/API─►┤ └──────────────────┘ │ agy-acp │
│ User │ │ │ pi-acp │
├──────────────┤ │ │ openab-agent │
│ WeCom │◄webhook/API─►┤ │ agentcore-acp │
│ User │ │ │ └─ AWS AgentCore │
├──────────────┤ │ │ custom ACP agent │
│ MS Teams │◄webhook/API─►┘ └─────────────────────────┘
│ User │
└──────────────┘
OpenAB 仍是 thin broker:所有 platform adapters 都會進入同一套
dispatcher 與 session pool,再透過單一 ACP stdio boundary 連接所選的
agent runtime。Gateway adapters 可作為 standalone companion 執行,也可
內嵌於 unified build,兩種部署方式都不會改變這個 boundary。Platform
edge 的 labels 會分別呈現 inbound delivery 與 outbound reply:webhook
platforms 使用 webhook/API,Feishu/Lark 則使用 WS/webhook。
- 多平台支援 — 支援 Discord 與 Slack,可單獨或同時執行
- Gateway adapters — 可透過獨立的 gateway 或 opt-in unified build 擴充至 Telegram、LINE、Feishu/Lark、Google Chat、WeCom 與 Microsoft Teams
- 可替換的 agent backend — 可透過設定在 Kiro CLI、Claude Code、Codex、Gemini、OpenCode、MiMo-Code、Kimi Code、Copilot CLI、Hermes、Grok Build、Devin、Antigravity、Pi 之間切換
- @mention 觸發 — 在允許的頻道中 mention bot,即可開始對話
- 以討論串進行多輪對話 — 自動建立討論串;後續訊息不需再次 @mention
- 多 agent 協作 — 支援 bot-to-bot 訊息,實現協調式工作流程(docs/multi-agent.md)
- 由 agent 控制回覆對象 — agent 可透過
[[reply_to:id]]指令選擇要回覆的訊息,讓多 bot 頻道中的對話脈絡更清楚(docs/output-directives.md) - 編輯式串流輸出 — token 產生時每 1.5 秒即時更新 Discord 訊息
- Emoji 狀態反應 — 👀→🤔→🔥/👨💻/⚡→👍+隨機情緒表情
- 圖片與檔案支援 — 透過聊天傳送圖片與檔案(docs/sendimages.md、docs/sendfiles.md)
- 排程訊息 — 由設定驅動的 cron job,可自動傳送 agent prompt(docs/cronjob.md)
- Slash commands — 內建 slash command 支援(docs/slash-commands.md)
- Session pool — 每個討論串一個 CLI process,自動管理生命週期
- ACP protocol — 透過 stdio 使用 JSON-RPC,支援 tool call、thinking 與 permission 自動回覆
- 支援 Kubernetes — 提供 Dockerfile、k8s manifests 與用於驗證資料持久化的 PVC
- 語音訊息 STT — 透過 Groq、OpenAI 或本機 Whisper server 自動轉錄 Discord 語音訊息(docs/stt.md)
- 生命週期 hooks — 在啟動(
pre_boot)與關閉(pre_shutdown)時執行自訂 script,可用於環境初始化、S3 同步與狀態備份(docs/hooks.md) - Tailscale 整合 — 透過生命週期 hooks,讓非特權 container 加入私人 tailnet,無需自訂 image(docs/tailscale.md)
執行 openab 前,請在 Discord Developer Portal 中啟用以下設定:
- Bot → Privileged Gateway Intents:
- ✅ Message Content Intent
- ✅ Server Members Intent
- OAuth2 → URL Generator → Bot Permissions:
- Send Messages、Embed Links、Attach Files
- Read Message History、Add Reactions
詳細步驟請參閱 docs/discord.md。
Discord
詳細步驟請參閱 docs/discord.md。
Slack
詳細步驟請參閱 docs/slack.md。
Telegram(透過 Custom Gateway)
完整設定指南請參閱 docs/telegram.md。需要獨立的 Custom Gateway service。
LINE(透過 Custom Gateway)
完整設定指南請參閱 docs/line.md。需要獨立的 Custom Gateway service。
Feishu/Lark(透過 Custom Gateway)
完整設定指南請參閱 docs/feishu.md。需要獨立的 Custom Gateway service。支援 WebSocket 長連線(預設,不需要公開 URL)與 HTTP webhook fallback。
Google Chat(透過 Custom Gateway)
完整設定指南請參閱 docs/google-chat.md。需要獨立的 Custom Gateway service。
WeCom(企業微信)(透過 Custom Gateway)
完整設定指南請參閱 docs/wecom.md。需要獨立的 Custom Gateway service。
helm repo add openab https://openabdev.github.io/openab
helm repo update
helm install openab openab/openab \
--set agents.kiro.discord.botToken="$DISCORD_BOT_TOKEN" \
--set-string 'agents.kiro.discord.allowedChannels[0]=YOUR_CHANNEL_ID'
# Slack
helm install openab openab/openab \
--set agents.kiro.slack.enabled=true \
--set agents.kiro.slack.botToken="$SLACK_BOT_TOKEN" \
--set agents.kiro.slack.appToken="$SLACK_APP_TOKEN" \
--set-string 'agents.kiro.slack.allowedChannels[0]=C0123456789'如需其他 Helm values,例如 fullnameOverride、nameOverride、envFrom 與 agentsMd,請參閱 charts/openab/README.md。
kubectl exec -it deployment/openab-kiro -- kiro-cli login --use-device-flow
kubectl rollout restart deployment/openab-kiro在 Discord 頻道中輸入:
@YourBot explain this code
bot 會建立一個討論串。之後只要直接在討論串中輸入即可,不需再次 @mention。
Slack: 在頻道中輸入 @YourBot explain this code,同樣會使用以討論串為基礎的工作流程。
| Agent | CLI | ACP Adapter | 指南 |
|---|---|---|---|
| Kiro(預設) | kiro-cli acp |
Native | docs/kiro.md |
| Claude Code | claude-agent-acp |
@agentclientprotocol/claude-agent-acp | docs/claude-code.md |
| Codex | codex-acp |
@agentclientprotocol/codex-acp | docs/codex.md |
| Gemini | gemini --acp |
Native | docs/gemini.md |
| OpenCode | opencode acp |
Native | docs/opencode.md |
| MiMo-Code | mimo acp |
Native | docs/mimocode.md |
| Kimi Code | kimi acp |
Native | docs/kimi.md |
| Copilot CLI |
copilot --acp --stdio |
Native | docs/copilot.md |
| Cursor | cursor-agent acp |
Native | docs/cursor.md |
| Hermes Agent | hermes-acp |
Native | docs/hermes.md |
| Grok Build | grok agent stdio |
Native | docs/grok.md |
| Devin | devin acp |
Native | docs/devin.md |
| Antigravity | agy-acp |
agy-acp | docs/antigravity.md |
| Pi | pi-acp |
pi-acp | docs/pi.md |
| Native Agent | openab-agent |
Built-in(Rust) | docs/native-agent.md |
🔧 同時執行多個 agent?請參閱 docs/multi-agent.md
在 Amazon Bedrock AgentCore 上遠端執行任何 coding agent,OAB image 中不需綑綁 CLI。
┌─────────┐ ┌─────────┐ ┌───────────────┐ ┌──────────────────────────┐
│ Discord │ │ │ ACP │ │ AWS │ AgentCore Runtime │
│ Slack │──────▶│ OAB │───────▶│ agentcore-acp │──────▶ │ ┌──────────────────┐ │
│Telegram │ │ │ stdio │ (adapter) │ SDK │ │ Firecracker μVM │ │
└─────────┘ └─────────┘ └───────────────┘ │ │ Kiro / Claude… │ │
│ │ /mnt/workspace │ │
│ └──────────────────┘ │
└──────────────────────────┘
[agentcore]
runtime_arn = "arn:aws:bedrock-agentcore:us-east-1:123456789012:runtime/my-agent"更小的 image(約 50MB)、持久化 filesystem、隔離的 microVM,以及按用量計費。完整設定請參閱 docs/agentcore.md。
📖 所有選項、預設值與 Helm mapping 的完整參考:docs/config-reference.md
[discord]
bot_token = "${DISCORD_BOT_TOKEN}" # supports env var expansion
allowed_channels = ["123456789"] # channel ID allowlist
# allowed_users = ["987654321"] # user ID allowlist (empty = all users)
[slack]
bot_token = "${SLACK_BOT_TOKEN}" # Bot User OAuth Token (xoxb-...)
app_token = "${SLACK_APP_TOKEN}" # App-Level Token (xapp-...) for Socket Mode
allowed_channels = ["C0123456789"] # channel ID allowlist (empty = allow all)
# allowed_users = ["U0123456789"] # user ID allowlist (empty = allow all)
[agent]
# command, args, and working_dir default from OPENAB_AGENT_COMMAND and $HOME
# env = { OPENAI_API_KEY = "${OPENAI_API_KEY}" }
[pool]
max_sessions = 10 # max concurrent sessions
session_ttl_hours = 24 # idle session TTL
[reactions]
enabled = true # enable emoji status reactions
remove_after_reply = false # remove reactions after replyDocker image 將 openab 與 kiro-cli 綑綁在同一個 container 中。
┌─ Kubernetes Pod ──────────────────────────────────────┐
│ openab (PID 1) │
│ └─ kiro-cli acp --trust-all-tools (child process) │
│ ├─ stdin ◄── JSON-RPC requests │
│ └─ stdout ──► JSON-RPC responses │
│ │
│ PVC (/data) │
│ ├─ ~/.kiro/ (settings, sessions) │
│ └─ ~/.local/share/kiro-cli/ (OAuth tokens) │
└───────────────────────────────────────────────────────┘
kubectl create secret generic openab-secret \
--from-literal=discord-bot-token="your-token"
kubectl apply -f k8s/configmap.yaml
kubectl apply -f k8s/pvc.yaml
kubectl apply -f k8s/deployment.yaml| Manifest | 用途 |
|---|---|
k8s/deployment.yaml |
單一 container pod,掛載 config 與 data volume |
k8s/configmap.yaml |
config.toml 掛載至 /etc/openab/ |
k8s/secret.yaml |
透過 env 注入 DISCORD_BOT_TOKEN |
k8s/pvc.yaml |
持久保存驗證資訊與設定 |
偏好以 AWS 原生 infrastructure 取代 Kubernetes?oabctl 是一個 CLI,可在 Amazon ECS Fargate 上佈建與管理 OpenAB agent——一個 command 即可初始化 cluster、IAM、S3 與 networking,另一個 command 則可部署 agent,包括自動佈建 Telegram/LINE webhook ingress(API Gateway → VPC Link → Cloud Map)。
oabctl bootstrap # one-time infra setup
oabctl create my-bot && oabctl apply -f my-bot/manifest.yaml --wait完整指南請參閱 docs/oabctl.md,內容涵蓋安裝、manifest schema、ingress/webhooks、secrets 與 bootstrap。
- sample-acp-bridge — ACP protocol 與 process pool 架構
- OpenClaw — StatusReactionController emoji pattern
MIT

