Discord 頻道裡 @mention 一個 bot,它就能幫你寫程式、code review、分析架構。背後串接的是 Claude Code、Kiro CLI、Codex 這些 AI coding agent。Agent Broker 就是那個站在中間的翻譯官——用 Rust 寫的橋接服務,把 Discord 和任何支援 ACP 協定的 coding CLI 串在一起。

這東西解決什麼問題

團隊裡不是每個人都習慣開終端機跟 AI 互動。有些人就是活在 Discord 裡面,開會在 Discord、討論在 Discord、連摸魚都在 Discord。Agent Broker 的邏輯很直接:既然人在 Discord,那 AI 也該在 Discord。

核心架構長這樣:使用者在 Discord 打字 → Agent Broker 收到後轉成 ACP 協定的 JSON-RPC → 丟給後端 CLI(Claude Code、Kiro、Codex 都行)→ AI 回應串流回 Discord 即時顯示。每個 Discord thread 會 spawn 一個獨立的 CLI process,多輪對話的上下文靠 CLI 自己管理。

關鍵在 ACP(Agent Client Protocol)——Anthropic 主導的開放標準,基於 stdio 的 JSON-RPC 2.0。只要 CLI 支援 ACP,Agent Broker 就能接,不綁死特定廠商。

裝起來跑

系統需求:Rust toolchain、Discord Bot Token(要開 Message Content Intent 權限)、至少一個 ACP 相容 CLI。

1
2
3
4
git clone https://github.com/thepagent/agent-broker.git
cd agent-broker
cargo build --release
./target/release/agent-broker config.toml

最小配置檔:

1
2
3
4
5
6
7
8
[discord]
bot_token = "${DISCORD_BOT_TOKEN}"
allowed_channels = ["你的頻道ID"]

[agent]
command = "kiro-cli"
args = ["acp", "--trust-all-tools"]
working_dir = "/tmp"

Docker 和 Kubernetes Helm Chart 也有,大型團隊可以直接丟到 K8s 叢集裡跑。

想換 AI 後端?改 config 就好:

1
2
3
4
5
6
7
8
9
# 換成 Claude Code
[agent]
command = "claude"
args = ["acp"]

# 或者 Codex
[agent]
command = "codex"
args = ["acp"]

幾個有意思的設計

即時串流編輯——AI 回應不是等全部生成完才顯示,每 1.5 秒更新一次 Discord 訊息。這個體驗差很多,不用乾等一大坨文字突然冒出來。

Emoji 狀態回報——bot 會用 emoji reaction 告訴你 AI 目前在幹嘛:🤔 思考中、🔥 呼叫工具、👌 完成、😱 30 秒沒動靜。中間狀態有 700ms debounce,避免快速切換撞到 Discord API rate limit。這個小細節設計得蠻巧的。

自動訊息分割——Discord 有 2000 字元限制,Agent Broker 會按行邊界切割,不會把程式碼切到一半。

Rust 實作上也有幾個值得學的地方:用 tokio::sync::watch 做串流(只關心最新值,比 channel 更適合)、RwLock 保護 Session Pool 最大化並發、kill_on_drop(true) 確保 child process 跟著 parent 走不留孤兒。

適合什麼場景

團隊共享 AI 助手是最直覺的用法。部署一個 bot,所有人 @mention 就能用,不需要每個人各自裝 CLI。降低使用門檻這件事,對推廣 AI 工具到非工程角色很有幫助。

Code Review 機器人——在 review 頻道貼 PR 連結,AI 直接分析。GitHub URL 會被自動縮短成 owner/repo#123 格式當 thread 名稱。

On-call 即時除錯——值班工程師貼 stack trace,AI 馬上分析。Thread 自動歸檔,事後也能回顧。

教學和 Onboarding——新人在 Discord 問 codebase 相關問題,thread 自動保留變成可搜尋的知識庫。比起 Slack 的對話消失在洪流裡,這個歸檔效果好很多。

要注意的坑

版本 0.1.0,非常早期。README 說只有 Kiro CLI 實際測過,Claude Code 和 Codex 理論可用但未驗證。

比較大的風險是權限全自動批准——收到 CLI 的權限請求時一律回 allow_always。生產環境用的話,AI agent 可能執行你不預期的操作。這邊建議搭配 Claude Code 的 Hooks 機制做攔截,至少把危險指令(rm -rfgit push --force)擋下來。

其他限制:沒有使用者級別的權限控制(只有 channel allowlist)、單一 replica 無法水平擴展、stderr 直接丟 /dev/null 出問題不好除錯、不支援圖片和檔案附件。

跟 Claude Code 官方 Discord Plugin 比一下

Anthropic 自家其實有出一個 claude-plugins-official/discord plugin,也能把 Discord 接到 Claude。兩條路乍看解決同一個問題,但定位完全不同。

一句話講清楚:Discord Plugin 是「Claude 用 Discord 當 UI」,Agent Broker 是「Discord 用 CLI agent 當後端」。

前者的 Claude 是主角,Discord 只是它的 I/O 通道之一(跟 iMessage、terminal 對等)。後者的 Discord 是主角,底下可以接任何 ACP 相容的 CLI,Agent Broker 只負責翻譯。

架構面

面向 Claude Code Discord Plugin Agent Broker
語言 Bun(TypeScript) Rust(單一 binary)
角色 Claude Code 內建的通道擴充 獨立的橋接服務
協定 MCP(Model Context Protocol) ACP(Agent Client Protocol)
Session 模型 所有 thread 共享同一個 Claude session 每個 thread 各自 spawn 獨立 CLI process
生命週期 綁 Claude Code session,session 結束 bot 就下線 常駐服務,Docker / K8s 長期運行

使用體驗面

面向 Discord Plugin Agent Broker
啟動 claude --channels plugin:discord@...(每次手動) ./agent-broker config.toml 或 Helm 一次部署
換 AI 後端 只能是 Claude(綁死) 改 config 就能換(Claude / Codex / Kiro)
Emoji 狀態 Claude 自己決定何時呼叫 react 工具 硬編碼在 Rust 裡,自動切換
串流更新 Claude 自己決定何時 edit_message 內建 1.5s debounce 即時編輯
Stall detection 沒有,靠 prompt 規則 內建(10s 🥱 → 30s 😱)

怎麼選

Discord Plugin 適合個人遠端遙控——你主要在 terminal 操作 Claude Code,Discord 只是手機不在電腦旁邊時的備用遙控器。不想多維護一套服務、不需要 24/7 在線、單人用的話,Plugin 綽綽有餘。

Agent Broker 適合團隊共享場景——多人 Discord server 共用一個 AI bot、需要 always-on、想比較不同 AI CLI 的回應品質(A/B test)、有 K8s 基礎設施。每個 thread 獨立 context 也避免了不同任務互相污染。

兩者不互斥。你可以同時跑:Plugin 當個人通道,Agent Broker 當團隊服務。

有個有意思的觀察:Agent Broker 把串流節奏、emoji 狀態、stall detection 這些行為硬編碼在 Rust 裡,而 Plugin 把決策權留給 Claude 自己。所以你其實可以把 Agent Broker 的 UX 巧思寫進 Claude 的 memory 規則,用 prompt 模擬硬編碼行為——某種意義上是用軟體設計填補 AI 的不確定性。

延伸思考

ACP 協定如果真的成為標準,Agent Broker 這類「協定橋接」的中間層會越來越多。Discord 只是第一站,Slack、Teams、LINE 都是潛在的前端。把 AI coding agent 從終端機搬到團隊日常溝通的地方,某種程度上是在降低 AI 的使用摩擦力——不用切換工具,不用學新介面,在你本來就待的地方就能用。

相關連結:Agent Broker GitHub | Agent Client Protocol (ACP) | claude-plugins-official/discord