Pizza Bot: 针对长时间运行 AI Agent 的本地优先收件箱
Pizza Bot 是一个针对长时间运行 AI Agent 工作的本地优先收件箱。它允许用户启动或调度任务并在稍后返回查看,已完成的工作会收集在 Unread 队列中,而需要人工干预的任务则会收集在 Action 队列中。该系统由 Amazon 开发并基于 Apache 2.0 许可发布,确保即使在用户断开连接或离开界面时,Agent 也能在后台持续工作。
核心架构与工作流
Pizza Bot 利用基于 DeepAgents 和 LangGraph 的有状态运行时。该系统设计为异步模式,这意味着用户可以在不停止活动运行的情况下切换对话。
任务管理
- Unread Queue: 已完成的 AI 工作存储在此,供用户审查。
- Action Queue: 存储持久化的审批请求和需要人工在环(human-in-the-loop)决策的任务。
- Folders: 用户可以将对话线程组织到文件夹中,而不会将其从全局的 Unread 和 Action 队列中移除。
- Persistence: 检查点(checkpointed)运行在客户端断开连接后依然存在,并且可以通过 cron 或 webhooks 触发任务,而无需活跃的对话。
部署选项
Pizza Bot 根据用户需求提供多种运行方式:
- Electron Desktop App: 带有嵌入式后端的本地收件箱。
- Browser: 用于 Web 开发或静态部署。
- Terminal CLI: 用于脚本、终端和远程后端。
- Standalone Backend: 用于远程 Electron 客户端、容器或 Linux 服务。
技术规格与可扩展性
模型提供商支持
Pizza Bot 支持广泛的模型提供商,包括 Amazon Bedrock, Anthropic, Google Gemini, OpenAI, OpenRouter, 和 Ollama。
桌面应用程序使用 Electron safeStorage 来保护密钥,而服务器配置仅持久化环境变量的引用。
通过 MCP 和 Skills 实现可扩展性
该平台通过 Model Context Protocol (MCP) 服务器和 "Skills" 实现可扩展性。
- MCP Servers: 可以通过 UI 或配置文件添加。
- Skills: 在特定的数据根目录(data root)下定义,一旦其声明的工具被启用,它们就会变得可用。自定义 Skill 可以通过相同的 ID 覆盖内置或插件 Skill。
- Plugins: 将 MCP 服务器和 Skills 组合在一起的包。
安全与数据隐私
Pizza Bot 默认采用本地优先原则。api-server 绑定到 127.0.0.1,应用程序状态——包括线程、检查点、记忆和日志——都存储在本地的 <PIZZA_DATA_ROOT> 下(默认为 ~/.pizza-bot-oss)。必须由用户显式授予本地文件夹访问权限,系统默认不具备主目录访问权限。
社区见解与反馈
来自 Hacker News 社区的用户反馈突出了该应用程序的优势与挑战:
"The fact that I can just install a single app and go rather than spending hours and hours on setup, configuration, etc makes me way more likely to use this going forward."
虽然用户称赞了安装的便捷性,但也有人指出在使用 llama.cpp 等本地模型进行设置时存在 "jankiness"(卡顿感),并建议改进用户界面,使 MCP 服务器与 Skills 之间的连接更加直观。一位用户请求能够针对每个任务覆盖模型提供商,以便在特定复杂任务中混合使用本地模型(廉价/私密)和高能力模型(例如 Claude)。
其他社区成员质疑了使用独立收件箱而非使用现有工具(如电子邮件或工单追踪器,例如 Linear)的必要性,并认为专门的 Agent 收件箱是 Agentic 工作流的必然演进。
Sources
相关
- 项目
- 项目
- 项目
- Dispatch
- 项目