GEOZ

亚马逊内部两千人在用的 Pizza Bot:把 AI 任务当邮件收件箱处理

2026/9/21
亚马逊内部两千人在用的 Pizza Bot:把 AI 任务当邮件收件箱处理

AIAI Summary (BLUF)

Pizza Bot 是一个异步 AI 工作收件箱,让你启动或安排任务后离开,完成的工作会出现在 Unread 中,待决策事项出现在 Action 中。它支持多种模型提供商,提供桌面、浏览器和 CLI 三种运行方式,并强调本地优先和安全性。

核心洞察

这个项目最让我意外的地方是它来自亚马逊内部,而且已经有两千多人在用。它的思路挺特别:把 AI 任务当成邮件来处理,跑完的丢进收件箱,需要你拍板的放进待办。如果你受够了盯着对话框等 AI 回复,这东西值得看看。

核心结论

  1. Pizza Bot 来自亚马逊内部,已有超过两千名内部用户使用,采用 Apache-2.0 许可证开源。

  2. 核心设计思路是把 AI 任务当作邮件处理:完成的任务进入未读收件箱,需要人工审批的进入待办队列,支持异步执行、断点续跑和定时/webhook 触发。

  3. 支持多种模型供应商,包括 Amazon BedrockAnthropicGoogle GeminiOpenAIOpenRouterOllama,可通过 PIZZA_MODEL=: 指定模型。

  4. 运行需 Node.js 24 或更新版本,提供 Electron 桌面、浏览器、终端 CLI 和独立后端四种运行方式。

  5. 安全设计上默认本地优先,api-server 绑定 127.0.0.1,本地文件夹需在设置中显式授权(默认只读),数据默认存储在 ~/.pizza-bot-oss。

为什么叫 Pizza Bot

一句话说清楚:给长时间运行的 AI 任务一个收件箱。

启动一个任务或者排个定时,然后该干嘛干嘛去。回来的时候,完成的工作已经在未读里等着你,需要做决定的都在待办里排好了。

它解决什么问题

  • 异步干活。切换对话不会中断正在跑的任务。
  • 回到正确的队列。完成的工作进未读,需要审批的进待办。
  • 整理对话。可以把线程分组到文件夹里,但不影响全局的未读和待办队列。
  • 断点续跑。客户端断开了也不怕,检查点机制保证任务能接着跑。定时任务和 webhook 触发不需要你开着对话窗口。
  • 派活给专家。技能可以变成独立的子代理,进度会显示在活动面板里。
  • 自带模型。支持 Amazon Bedrock、Anthropic、Google Gemini、OpenAI、OpenRouter 和 Ollama。
  • 关键操作要你点头。人工审批、长期记忆、文件附件、桌面通知都内置在工作流里。
  • 本地访问要显式授权。在设置的文件页面里逐个添加只读或可写文件夹,默认情况下 Pizza Bot 拿不到你的主目录。

下载

每个 release 都附带了安装包,还有一个 SHA256SUMS 文件可以校验。

平台 包格式 备注
macOS(Apple 芯片、Intel) .dmg、.zip 已签名和公证
Windows(x64) -setup.exe
Linux(x64、arm64) .deb、.rpm 未签名,用 SHA256SUMS 校验

快速开始

需要 Node.js 24 或更新版本。

npm install
npm run build
npm run dev

npm run dev 会启动 Vite 前端和 Electron 桌面壳。桌面壳会自己 fork 并管理 api-server,跟打包后的应用进程模型一致。开始跑任务之前,先去设置的模型供应商页面配好模型。

想了解隔离数据根目录、浏览器和 CLI 开发、桌面打包、远程后端这些,看从源码运行那篇文档。

运行方式

方式 适合场景 入口
Electron 桌面 本地收件箱,内嵌后端 npm run dev
浏览器 Web 开发或静态部署 浏览器开发文档
终端 CLI 脚本、终端、远程后端 CLI 文档
独立后端 远程 Electron、浏览器、容器、Linux 服务 后端指南

运行中的 api-server 至少需要接入一个模型供应商,HTTP 客户端不需要。在设置的供应商页面配置 Amazon Bedrock、Anthropic、Google Gemini、OpenAI、OpenRouter 或 Ollama。Bedrock 支持 AWS profile、AWS access key 或 Bedrock API key,可以覆盖区域,否则用 AWS_REGION 或 us-west-2。Bedrock 会把原生目录和区域 Mantle 目录合并,根据模型声明的 API 族走 Converse、OpenAI Responses 或 Chat Completions、Anthropic Messages。OpenAI 和 Anthropic 也支持自定义 base URL 来对接兼容端点;OpenAI 可以显式选 Responses 还是 Chat Completions,Anthropic 支持 x-api-key 或 bearer 认证。用 PIZZA_MODEL=<provider>:<id> 选模型。桌面端用 Electron safeStorage 保护输入的密钥;服务端配置只持久化环境变量引用。

扩展

从界面或者 <PIZZA_DATA_ROOT>/.mcp.json 添加 MCP 服务器。在 <PIZZA_DATA_ROOT>/skills 下添加 Agent Skills,或者安装把 MCP 服务器和技能打包在一起的插件。技能在声明的工具启用并连接后才会生效。自定义技能可以用相同的 id 替换内置或插件技能,不需要改原始文件;删掉自定义的就会恢复显示内置或插件版本。内置的 Pizza Bot 指南可以解释功能、推荐工作流、帮忙做设置、指向项目文档。

配置细节、环境变量参考、技能编写、审批门控、插件安装这些看扩展 Pizza Bot 那篇。

项目结构

apps/        api-server (Hono) | cli | desktop-shell (Electron) | web (React)
packages/    core | runtime-langgraph | inference-providers | plugin-api | plugin-sdk | storage | logging
plugins/     打包的插件包和它们的打包工作区
skills/      可选的内置 Agent Skills
tests/       LangGraph 兼容性和协议一致性

生产环境的图引擎隔离在 packages/runtime-langgraph 里;前端消费的是协议投影,不直接导入运行时或模型绑定。

文档

  • 运行 - 桌面、浏览器、CLI 和打包命令。
  • 扩展 - MCP 服务器、技能和插件。
  • 架构 - 系统边界、事件模型、持久化、传输和设计决策。
  • 独立后端 - 认证、远程 Electron、静态浏览器部署、Docker、Compose 和 Kubernetes。
  • 贡献 - 开发环境搭建、CI 检查、worktree、发布和分层规则。
  • 安全 - 网络默认值、凭据、本地数据和插件信任。
  • 日志 - 诊断、保留、查看和脱敏。
  • 路线图 - 探索方向和评估原则。
  • 行为准则 - 社区参与期望。

安全和数据

  • 默认本地优先。api-server 绑定到 127.0.0.1;非回环绑定需要认证和明确的来源白名单。
  • 应用状态留在本地。线程、检查点、记忆、附件和日志都在 <PIZZA_DATA_ROOT> 下(默认是 ~/.pizza-bot-oss)。模型和工具请求发往你配置的供应商和端点。
  • 本地文件夹需要显式授权。在设置的文件页面添加的每个文件夹默认只读,除非你允许写入。远程授权指定的是后端主机上的路径。
  • MCP 服务器和插件是受信任的。它们的命令和物化器可以以你的用户账户权限执行。只安装你信任的来源。

完整的安全模型和漏洞报告流程看 SECURITY.md。

贡献者

Pizza Bot 由它的行政主厨和副主厨设计、构建并开源。

行政主厨

Joseph Dolivo (@JoeDo)、Igor Fil (@igorfil)

副主厨

Flávio Schuindt (@flavioschuindt)、Jacob Wert (@jwert-aws)、Michael Karachewski (@michaelkarachewski)、Itzik Paz (@spideron)

Pizza Bot 还得到了亚马逊内部两千多名用户的反馈和打磨。他们的 bug 报告、想法和直言不讳的反馈帮助 Pizza Bot 做好了面向更广泛社区的准备。感谢每一位贡献者。

许可证

Apache-2.0。署名声明见 NOTICE。

常见问题(FAQ)

Pizza Bot 是什么?它和普通 AI 对话工具有什么区别?

Pizza Bot 是一个异步 AI 工作收件箱,启动或安排任务后即可离开,完成的工作进入 Unread,待决策事项进入 Action。它把 AI 任务当邮件处理,支持多模型提供商和桌面、浏览器、CLI 三种运行方式,强调本地优先与安全。

Pizza Bot 支持哪些模型提供商?怎么配置?

支持 Amazon Bedrock、Anthropic、Google Gemini、OpenAI、OpenRouter 和 Ollama。在设置的模型供应商页面配置即可,用 PIZZA_MODEL=: 选模型。桌面端用 Electron safeStorage 保护密钥,服务端只持久化环境变量引用。

Pizza Bot 如何保证本地数据安全?

默认本地优先,api-server 绑定 127.0.0.1,非回环绑定需认证和来源白名单。线程、检查点、记忆、附件和日志都留在 PIZZA_DATA_ROOT 下。本地文件夹需在设置的文件页面显式授权,默认只读,MCP 服务器和插件则视为受信任。

晓婷深圳
本文由 晓婷 审核,最后更新于 2026年9月21日
联系编辑 →
← 返回文章列表
分享到:微博

版权与免责声明:本文仅用于信息分享与交流,不构成任何形式的法律、投资、医疗或其他专业建议,也不构成对任何结果的承诺或保证。

文中提及的商标、品牌、Logo、产品名称及相关图片/素材,其权利归各自合法权利人所有。本站内容可能基于公开资料整理,亦可能使用 AI 辅助生成或润色;我们尽力确保准确与合规,但不保证完整性、时效性与适用性,请读者自行甄别并以官方信息为准。

若本文内容或素材涉嫌侵权、隐私不当或存在错误,请相关权利人/当事人联系本站,我们将及时核实并采取删除、修正或下架等处理措施。也请勿在评论或联系信息中提交身份证号、手机号、住址等个人敏感信息。