五分鐘上手
- Bun 1.3 以上。
- PostgreSQL。
init建立的專案附有docker-compose.yml,可以直接啟動一個。 - 一個 Discord bot:一個含 bot 使用者、已開啟 Message Content intent,並已邀請進你的伺服器的應用程式。
- 模型登入:你選的模型的供應商 API key(
anthropic/...用ANTHROPIC_API_KEY),或用 Pi 做過的登入。 - 一個能從網際網路連到這個行程的位址,例如通道(tunnel),因為 Discord 會從該位址取得 agent 的頭像。
建立並啟動專案
Section titled “建立並啟動專案”-
建立專案。
init會寫出一個可運作的專案,不會向你要任何祕密資訊。 Bun 不存在或版本太舊,或它要建立的檔案已經存在時,它不會寫入任何東西。終端機視窗 npx pi-roundtable init my-bot # 或:bunx pi-roundtable init my-botcd my-bot -
安裝依賴,並啟動 PostgreSQL。
終端機視窗 bun installdocker compose up -d -
把
.env.example複製成.env,然後填入內容。 Bun 會自行載入.env,.gitignore也已讓它不進 Git。終端機視窗 cp .env.example .env -
執行
doctor。全新的專案只會因為你還沒填的憑證而失敗,而且會指出是哪些。終端機視窗 bunx roundtable doctor -
啟動 bot。
終端機視窗 bunx roundtable start
.env.example 說明了每個值的來源。
| 變數 | 內容 |
|---|---|
DISCORD_TOKEN |
bot 的 token,在應用程式的 Bot 頁面取得 |
DISCORD_GUILD_ID、DISCORD_ENTRY_CHANNEL_ID |
伺服器,以及負責統籌的 agent 所在的頻道(開啟開發者模式後,按右鍵複製 id) |
OWNER_ID、OWNER_NAME |
你自己:唯一能改動一切的人 |
DATABASE_URL |
PostgreSQL;預設值與 docker-compose.yml 一致 |
MODEL |
agent 使用的模型,格式為 <provider>/<id> |
PUBLIC_URL |
能從網際網路連到這個行程的位址 |
doctor 檢查什麼
Section titled “doctor 檢查什麼”bunx roundtable doctor 依序檢查下列項目,逐項印出通過或失敗,並說明如何修正:
- Bun 的版本。
.env對.env.example列出的每個變數都有值。roundtable.config.ts符合其 schema,失敗時指出是哪個鍵。- 每個外掛都能載入,且沒有兩個外掛同名。
- 是否有外掛填入
images槽位。沒有並不算失敗:agent 會用顯示名稱產生頭像。 - PostgreSQL 連得上,且能執行 migration。
- Discord token 有效、bot 已在你的伺服器裡、Message Content intent 已開啟,而且 bot 在入口頻道有它需要的權限(包含 Pin Messages)。 bot 不在伺服器裡時,修正方式是一個邀請連結,連結要求的正是這些權限。
- 模型登入存在。
PUBLIC_URL是格式正確的位址;加上--reachable時它還必須有回應,這只有在 bot 執行中才成立。
任何一項失敗,它就以非零狀態結束,並且不更動它檢查過的任何東西。
start 做什麼
Section titled “start 做什麼”bunx roundtable start 先執行不需要網路的檢查,其中任何一項失敗就停下來,並印出與 doctor 相同的訊息;全部通過則啟動 bot。
啟動後,agents.ts 裡的 agent 都有了自己的頻道,/roundtable schedule list 可以列出排程。
想知道第一句話寫在哪裡,看第一次對話。
收到 SIGTERM 或 SIGINT 時,它會先讓進行中的工作完成再停止。