← All posts / Tools

給代理一個收件匣:AWS 開源 Pizza Bot,從 2,000 名內部用戶長出來的背景代理工作台

AWS 開源了 Pizza Bot:一套自架、Apache 2.0 授權的背景 AI 代理收件匣,以 DeepAgents 與 LangGraph 构建,用電子郵件的隱喻、可持久暫停的審批、cron 與 webhook 觸發,支援從 Bedrock 到 Ollama 的多家模型供應商。

給代理一個收件匣:AWS 開源 Pizza Bot,從 2,000 名內部用戶長出來的背景代理工作台

2026 年 9 月 10 日,AWS 低調發布了一篇部落格文章:〈介紹 Pizza Bot,一個讓 AI 代理在背景工作的開源收件匣〉。到了週末,這則消息已經擴散到整個科技媒體圈。它的核心概念簡單得近乎樸素,卻正好打中當前消費級 AI 工具最尷尬的未解難題:對於任何需要超過三十秒才能完成的工作,聊天視窗都是一個糟糕透頂的介面。

Pizza Bot 是一套自架的開源應用(Apache 2.0 授權、社群專案、背後沒有 AWS 支援合約或 SLA),讓 AI 代理在背景執行,並把產出放進一個電子郵件風格的收件匣。代理會在「完成了某件事」或「真的卡住了、只有人類能決定」的時候回來找你——而不是之前。

它大聲說出來的問題

AWS 這篇文章的開頭,是任何用過代理產品的人都會心一笑的診斷。給代理一件真正值得委派的任務,你就得等上好一陣子;問它「今天早上有哪些事需要我注意」,它得先讀完你的郵件、訊息和待辦清單才能回答;然後它做到一半停下來,因為有個步驟需要你的核准。與此同時,你正盯著一個聊天視窗(或終端機)不斷捲動。「那是 babysitting,不是協作。」

設計上的答案,借自我們最古老的非同步協作工具:電子郵件。你不會在寄出一封信後,緊盯著寄件備份等回音。即時聊天預設雙方都在場——這對快速交談成立,但任務一旦需要數分鐘、需要等你批准、或在你不在時照排程執行,這個預設就崩潰了。Pizza Bot 對待代理的方式,就像對待一位去做事的同事:有東西可讀、或只有你能拍板時,它才會回來。

實際上線的東西

介面圍繞三個佇列構成。Unread 收集等待你審視的完成品;Action 收集因審批或回答而暫停的工作——而且這些暫停是持久(durable)的,你可以一小時後、換一台裝置再回應,執行不會中斷;All 是完整對話歷史,對話串可歸入資料夾,但不會因此從全域佇列中隱藏。一旁的 Activity 面板顯示主代理委派給專家工作者(specialist)的任務,包括每個專家自己的完整紀錄,讓長時間任務在執行途中依然可讀。

底層執行環境是有狀態的。Pizza Bot 以 DeepAgents 建構於 LangGraph 之上,隨著執行過程逐步建立檢查點(checkpoint)——訊息、工具呼叫、等待批准的暫停,都落在磁碟上而非記憶體裡。一個 Hono API 伺服器掌管執行與儲存;Electron 桌面版、瀏覽器版與終端機 CLI 都透過 HTTP 與 server-sent events 和它溝通。因為工作活在伺服器上,關掉對話、重新載入頁面或切換裝置都不會中止執行,重新連線的客戶端會補播錯過的事件。

排程模型的設計尤其細膩。伺服器掌管 cron 排程與受密鑰保護的 webhook,記錄每一次觸發;而且在停機後醒來時,只會補跑一次錯過的排程,而不是把睡過頭的每一格都重播一遍。一台關了一個月的機器,會給你一個結果,而不是三十個。

本機優先、供應商中立、把信任講清楚

兩個定位選擇,讓 Pizza Bot 與 hosted assistant 的浪潮區隔開來。第一,它自架、零遙測:伺服器預設只綁定 127.0.0.1,要開放非本機連線必須同時設定 API token 與明確的 origin 白名單。所有狀態——對話串、檢查點、記憶、附件、設定、日誌——以 SQLite 資料庫和普通檔案的形式,存在你擁有的一個資料夾裡(預設 ~/.pizza-bot-oss)。一個資料夾,就是全部值得備份的東西。

第二,模型供應商是一份菜單,不是命令:Amazon Bedrock、Anthropic、Google Gemini、OpenAI、OpenRouter,或透過 Ollama 跑本地模型。文章也很坦白:提示詞與附件會送達你選定的供應商,而你啟用的 MCP 伺服器可以代你行動——「安裝時值得把這一點記在心裡」。憑證交給作業系統的密鑰存放區而非明文設定檔,且永不下發給瀏覽器客戶端。本機磁碟預設不可觸及,除非你逐一授權特定資料夾,並自選唯讀或可寫。

擴充性則建立在生態系既有的慣例上。工具來自 MCP 伺服器(Claude Code 相容的 .mcp.json 可以直接丟進來用),專家工作者以 Agent Skills 定義——就是 Anthropic 提出的 Markdown SKILL.md 慣例。每個 skill 宣告自己的一小份工具清單,以及 interruptOn 審批策略,allowedDecisions 決定你會看到哪些按鈕;其中「edit」決定讓你直接修正代理提出的內容,而不是否決重來。讓每個專家的工具清單保持简短正是重點:委派任務保持聚焦,代理的整體觸及範圍一目了然、便於審查。

出身,以及隨之而來的但書

Pizza Bot 不是溫室裡長出來的實驗。它誕生於 Amazon 內部——作者表示,超過 2,000 名員工使用過早期版本,用於會議準備與後續跟進、郵件草擬、Slack 摘要、CRM 記錄、每日優先級排序與網路研究。名字來自 Amazon 的「兩個披薩團隊」——小而權責完整的團隊。公開版本從零重寫為開源專案,作者把這件事歸功於編碼代理,讓一個小團隊做得起來(「主廚」Joseph Dolivo 與 Igor Fil,外加四位具名貢獻者)。

但書也講得直白。它是社群專案而非 AWS 服務——讓它持續運作、備份、更新,是你自己的事。而且它「年輕得很具體」:在 Amazon 內部,它第一天的實用性大多來自一個內部市集,裡面是針對 Amazon 自家工具打造的現成 skills 與 MCP 伺服器;這些在重寫時全部移除,因為對外人沒有用。為我們其他人所用的系統重建這座圖書館,正是團隊明說最需要幫忙的地方。

GitHub 儲存庫(撰稿時 76 個 commits、109 顆星且持續增加、macOS 版已簽署並公證、每個 release 附 SHA256SUMS)展現的是一個真產品而非 demo 的形狀:monorepo 裡有 api-server、CLI、桌面外殼與網頁客戶端;隔離的 runtime 套件;LangGraph 相容性與協定一致性測試。

為什麼這件事重要

2026 年的多數代理工具,瞄準的是「正在建造某個東西」的人。Pizza Bot 瞄準的是「只是需要把事情做完」的人——而它的創始介面假設只用一句話就講完:這個介面假設你沒有在看。作者宣稱,目前市面上沒有別的產品從這裡出發。就算這句話未必字面為真,它也為消費級代理的走向下了正確的註腳:從「你要出席的 session」,走向「你會回來看的 thread」。

收件匣這個隱喻做的事,比表面看起來多。電子郵件不需要解釋——對話串、未讀狀態、搜尋、釘選、通知——因為十億人已經知道怎麼讀一個佇列。把代理的勞動映射到這套文法上,就把 ambient AI 從「你要監督的東西」變成「你要分流的東西」。配上持久審批、檢查點化的執行、以及本機優先的資料主權,Pizza Bot 是迄今對「當代理產品不再假裝自己是聊天機器人時,長什麼樣子」這個問題,最完整的開源答案之一。