AI 支援機器人

使用 discli serve 打造一套完整 AI 支援機器人,提供互動元件、即時串流回應、每位使用者對話歷史,以及斜線指令。

問題背景

你的 Discord 伺服器越來越大,會不斷出現重複問題。你需要一台可以 24/7 回應,且能理解上下文、準確回答的機器人,而不是依賴硬編碼回應或固定決策樹。此外,你還要有更豐富的互動體驗:回饋按鈕、常用任務的斜線指令,以及讓使用者即時看到回答逐步產生的串流回應。

解法

使用 ai_serve_agent.py,這是一套整合 Claude Agent SDKdiscli serve 的整體式 AI 機器人,提供:

  1. 透過 CLI 指令取得完整 Discord 控制:傳送、回覆、編輯、刪除、加反應、管理討論串、頻道、身分組等
  2. 互動元件:用元件區塊提供按鈕、選單、與表單
  3. 即時串流回應:使用者可看到 Claude 逐字輸出,不必等完整回覆
  4. 每位使用者對話歷史:每位使用者都有自己的上下文視窗,機器人能記住先前問題
  5. 斜線指令:啟動時自動註冊 /ask/help/summarize/clear

架構

Discord Server
|
v
discli serve (persistent bidirectional JSONL connection)
|
v
ai_serve_agent.py
├── 路由事件(訊息、斜線指令、元件互動)
├── 維護每位使用者對話歷史
├── 轉交 Claude Agent SDK 進行推理
└── 將操作寫入 stdin(send、reply、stream、components、modals)
|
v
Discord Server(回覆、嵌入、按鈕、表單)

完整可執行範例

完整範例程式位於 examples/ai_serve_agent.py,啟動方式如下:

安裝相依套件

Terminal window
pip install discord-cli-agent claude-agent-sdk

先設定機器人權杖:

Terminal window
discli config set token YOUR_BOT_TOKEN

啟動機器人

Terminal window
python examples/ai_serve_agent.py

機器人會連線到 Discord、註冊斜線指令,並開始監聽事件。

使用者可做什麼

送出訊息

使用者可在任意頻道提及機器人:

@bot How do I reset my password?
@bot 如何重設密碼?
@bot 伺服器規範是什麼?
@bot 幫我總結這個頻道最近的 10 則訊息

機器人會讀取對話上下文,送交 Claude 推理後即時串流回傳結果。

使用斜線指令

指令說明
/ask question:如何重設密碼?直接向機器人提問
/help顯示可用指令與功能
/summarize摘要目前頻道最近的對話
/clear清除與機器人的對話歷史

互動元件

機器人可在回覆中加入按鈕、選單,以及結構化輸入表單。當使用者點擊按鈕或送出表單時,機器人會接收互動事件並做對應回應。

主要特色

即時串流回應

當機器人產生長回覆時,會採用串流方式回傳,讓使用者看到文字即時呈現,而非等待完整回覆一次送達:

{"action": "stream_start", "channel_id": "123", "reply_to": "456"}
{"action": "stream_chunk", "stream_id": "abc", "content": "這裡是 "}
{"action": "stream_chunk", "stream_id": "abc", "content": "回答內容..."}
{"action": "stream_end", "stream_id": "abc"}

每位使用者對話歷史

每位使用者的問題與機器人回覆會存放在記憶體中,這讓機器人可自然地處理後續追問:

使用者:discli 是什麼?
機器人:discli 是給 AI 代理和人類使用的 Discord CLI。
使用者:我該如何安裝?
機器人:你可以用 pip 安裝:pip install discord-cli-agent

/clear 指令可清除該位使用者的對話歷史。

互動元件整合

機器人可在回覆內加入按鈕、選單、表單。完整協定請參考 元件與表單 指南。

邊際案例與常見陷阱

Warning

Discord 的 2000 字元上限。 串流模式會自動處理;若內容超過上限,stream_end 會自動拆成多則訊息。

Warning

速率限制。 Discord 大致將每個頻道每 5 秒限制為約 5 則訊息。若伺服器繁忙且同時間大量提及機器人,回應會排隊。建議加入冷卻時間或節流機制。

Warning

Claude API 成本。 每次提及或每個斜線指令都會觸發 Claude API 請求。流量高時成本會累積,建議加入每位使用者冷卻時間以避免濫用。

Warning

錯誤處理。 範例機器人只含基本錯誤處理。正式環境應補上備援訊息、重試邏輯與監控機制。

擴充方向

元件與表單

在回覆中加入按鈕、選單與表單。參考 元件與表單

記憶體與知識庫

將歷史問答存入資料庫,並將相關項目帶入 Claude 的上下文。這能讓機器人保有歷史能力,而無需重新訓練模型。

多模型路由

簡單問題使用較小模型(例如 Haiku),複雜問題再路由到 Opus。可依問題長度或關鍵字規則判斷。

討論串式回覆

不要直接在主頻道回覆,為每筆支援需求建立一條討論串以保持主頻道整潔。參考 以討論串承接支援