AI 支援機器人
使用 discli serve 打造一套完整 AI 支援機器人,提供互動元件、即時串流回應、每位使用者對話歷史,以及斜線指令。
問題背景
你的 Discord 伺服器越來越大,會不斷出現重複問題。你需要一台可以 24/7 回應,且能理解上下文、準確回答的機器人,而不是依賴硬編碼回應或固定決策樹。此外,你還要有更豐富的互動體驗:回饋按鈕、常用任務的斜線指令,以及讓使用者即時看到回答逐步產生的串流回應。
解法
使用 ai_serve_agent.py,這是一套整合 Claude Agent SDK 與 discli serve 的整體式 AI 機器人,提供:
- 透過 CLI 指令取得完整 Discord 控制:傳送、回覆、編輯、刪除、加反應、管理討論串、頻道、身分組等
- 互動元件:用元件區塊提供按鈕、選單、與表單
- 即時串流回應:使用者可看到 Claude 逐字輸出,不必等完整回覆
- 每位使用者對話歷史:每位使用者都有自己的上下文視窗,機器人能記住先前問題
- 斜線指令:啟動時自動註冊
/ask、/help、/summarize、/clear
架構
Discord Server | vdiscli serve (persistent bidirectional JSONL connection) | vai_serve_agent.py ├── 路由事件(訊息、斜線指令、元件互動) ├── 維護每位使用者對話歷史 ├── 轉交 Claude Agent SDK 進行推理 └── 將操作寫入 stdin(send、reply、stream、components、modals) | vDiscord Server(回覆、嵌入、按鈕、表單)完整可執行範例
完整範例程式位於 examples/ai_serve_agent.py,啟動方式如下:
安裝相依套件
pip install discord-cli-agent claude-agent-sdk先設定機器人權杖:
discli config set token YOUR_BOT_TOKEN啟動機器人
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 指令可清除該位使用者的對話歷史。
互動元件整合
機器人可在回覆內加入按鈕、選單、表單。完整協定請參考 元件與表單 指南。
邊際案例與常見陷阱
Discord 的 2000 字元上限。 串流模式會自動處理;若內容超過上限,stream_end 會自動拆成多則訊息。
速率限制。 Discord 大致將每個頻道每 5 秒限制為約 5 則訊息。若伺服器繁忙且同時間大量提及機器人,回應會排隊。建議加入冷卻時間或節流機制。
Claude API 成本。 每次提及或每個斜線指令都會觸發 Claude API 請求。流量高時成本會累積,建議加入每位使用者冷卻時間以避免濫用。
錯誤處理。 範例機器人只含基本錯誤處理。正式環境應補上備援訊息、重試邏輯與監控機制。