[控场AI]
· 7 分钟阅读· 3,835 字

用Pi和Telegram自建开源常驻AI智能体,复刻OpenAI Dots

用Pi和Telegram自建开源常驻AI智能体,复刻OpenAI Dots

用开源 Pi 框架 + Telegram 网关,在自己的 VPS 上复刻 OpenAI Dots 的常驻多智能体系统。

本文介绍了一套完全开源、私有可控的多智能体方案,用以替代 OpenAI Dots 等闭源常驻智能体服务。核心设计极为轻量:每个 AI 智能体对应一个文件夹,由 `agents.md` 定义人格与上下文、Skills 挂载专属工具集、独立目录作为工作区,并可绑定任意模型(通过 OpenRouter 等)。消息网关(pi-gateway)作为常驻后台进程,通过「来源 + 智能体 + 会话 ID」三元组路由来自 Telegram 的消息,会话状态本地 SQLite 存储。部署流程涵盖 uv 安装、BotFather 创建 bot、白名单配置与实例启动,最终实现两个并行运行的专属智能体:具备 Google Workspace 权限的私人助理 Bunny,以及接入 Firecrawl 的研究助理 Andre。整套方案的价值在于模型、数据与运行环境全部自主掌控。

OpenAI 推出的 Dots 代表了一种新的 AI 使用范式——它们是常驻型(always-on)智能体,专注于各自的垂直场景。你可以让一个 Dot 充当研究助理,另一个充当拥有邮件和日历访问权限的私人秘书。它们在后台持续运行,并在发现重要信息时主动给你发消息。

问题是,这类服务依赖闭源模型和托管平台。一位 YouTube 创作者给出了完全开源的替代方案:用自己掌控的模型、运行在自己的常驻机器上,照样复刻出一套功能等价的多智能体系统。本文梳理其完整实现思路,核心工具是 Pi 终端框架配合 Telegram 作为消息入口。

智能体的本质:一个目录就是一个 Agent

整套方案的设计哲学非常轻量。在作者的 VPS 上,所有智能体都放在一个 agents 目录下,而每一个智能体本质上就是一个独立的文件夹。

每个文件夹里包含三类关键要素:

  • agents.md 文件:定义该智能体的上下文与人格。例如个人助理的 agents.md 会写明「你是一名私人助理,通过 Google Workspace CLI 帮助用户管理工作」,从而让它具备读写 Gmail、整理收件箱、创建日历事件等能力。
  • Skills(技能):通过 npx skills add 为智能体挂载工具。作者给研究助理挂上了 Firecrawl 的抓取、解析、搜索技能,给个人助理挂上 Google Workspace 的日历、Drive、邮件技能。安装时可指定「仅对当前项目生效」,实现每个智能体独享工具集。
  • 独立工作区:每个目录就是该智能体自己的「电脑」,它可以在其中读写文件、执行研究,互不干扰。

个人助理的 agents.md 定义了它的角色与职责

作者演示中建立了两个智能体:研究助理 Andre(底层用 Kimi K3 模型)和私人助理 Bunny(底层用 Space Bunny 隐身模型)。前者负责联网检索,后者已接入他的 Gmail 与日历,能读邮件、发邮件、建日程。想加多少个都行,各自给定专属工具、专属 prompt,并用你自己的 API Key 和任意模型驱动。

Pi 终端框架(Project Pi)是一个以「目录即工作区」为核心设计理念的 AI 智能体运行时。它的工作方式类似于将传统 CLI 工具链与大语言模型调用粘合在一起:每次进入某个目录启动会话时,框架会读取该目录下的 agents.md 作为系统提示,并加载已挂载的 Skills 作为可调用的工具集(tool calls)。Skills 的安装机制本质上是将外部 API 的调用逻辑封装成模型可识别的函数描述符(function schema),让模型能够以结构化输出触发真实的网络请求或本地命令。Firecrawl 是一个专为 LLM 流水线优化的网页抓取与内容清洗服务,能将任意网页转换为干净的 Markdown 供模型读取,避免 HTML 噪声干扰推理质量。

消息网关:让智能体随时可达

仅靠 SSH 连接 Pi 显然不够——你不可能随时坐在终端前。真正让 Hermes、OpenCLO 这类工具「出圈」的关键,并不只是集成多,而是它们能像一个真人联系人一样,从你日常使用的任何平台直接对话:Telegram、WhatsApp、邮件、Slack 等等。

这背后的核心组件叫 message gateway(消息网关),是一个运行在常驻机器上的后台进程。无论你用的是 VPS、家用台式机,还是本地的 DGX Spark,只要它保持开机,这个进程就会持续监听来自各集成平台的消息。

常驻机器可以是 VPS、Spark 或 DGX Spark

网关的路由逻辑清晰直接:当 Telegram 发来一条消息,网关会生成一个由三部分构成的 ID——消息来源(如 Telegram)、智能体名称(如 PA agent)、以及对应的 Pi 会话 ID。这条消息随后被存入本地的 SQLite 数据库(数据库同样跑在常驻机器上)。

如果 SQLite 中没有匹配会话,网关就新建一个;若已有对应会话,则把消息路由到那个特定目录下的 Pi 会话中。由于 Pi 是按目录工作的,消息被送进该目录后,自然就带上了我们之前定义好的技能、工具和上下文。在 Telegram 里发送 /new 即可开启一个全新会话,网关识别到它不在数据库中后会创建新条目。整个机制简单却实用。

消息网关的设计模式在分布式系统中并不陌生,本质上是一种「事件驱动的异步消息代理」。它解耦了消息来源(Telegram、WhatsApp 等)与实际执行层(Pi 会话),使得两侧可以独立演化。SQLite 在此充当轻量级的持久化状态机——相较于 Redis 或 PostgreSQL,SQLite 无需独立服务进程,单文件即可存储整个会话映射表,对个人部署场景的维护成本极低。值得注意的是,这种「来源 + 智能体名 + 会话 ID」三元组路由方案,与 Twilio 等商业 CPaaS 平台的 webhook 路由逻辑在架构上高度相似,区别仅在于本方案将计算和数据主权保留在用户自己的机器上。

动手部署:从 bot father 到启动实例

作者强调无需自己从零编写网关,他开源了一个极简的 pi-gateway 工具,总共只用了约 34 次提交就完成到当前状态,非常轻量。部署流程大致如下:

安装与初始化

通过 uv tool install pi-gateway 安装后,进入目标智能体目录(如 PA assistant),执行 pi-gateway init 进行初始化。

创建 Telegram Bot

在 Telegram 中找到官方的 BotFather,发送指令创建新 bot,为其命名(如 bunny)并设定一个以 bot 结尾的唯一用户名。BotFather 会返回一个 token,复制粘贴到网关配置中。

通过 BotFather 创建专属 Telegram 机器人

安全与绑定

为避免任何人都能访问你的智能体,务必配置白名单 User ID。通过 userinfobot 查到自己的 Telegram ID 后填入,确保只有你能对话。接着指定该 bot 绑定的工作目录(决定了它加载哪套上下文)和使用的模型(如从 OpenRouter 调用的 Space Bunny),并设定思考等级。

启动与管理

用 pi-gateway start -i bunny 启动指定实例,pi-gateway status 查看运行状态,pi-gateway instances 列出所有在跑的 bot。回到 Telegram 点击 bot 的 start,一个运行在终端框架、具备 Google Workspace 全部访问权限的私人助理就上线了。

照同样流程,作者又创建了研究助理 Andre,绑定 researcher 目录和 Kimi K3 模型。两个风格迥异、各有专长的智能体就此并行运行,随时可在手机上呼叫。

可扩展的方向

该演示版网关目前只支持 Telegram,但作者将其余部分留作「作业」,鼓励开发者在开源仓库基础上继续扩展:

  • 定时自动化:让智能体每天清晨自动检查并总结邮件、分类整理,方便你快速归档。

可设置每天早晨自动检查邮件的自动化任务

  • 更多工具:通过 MCP 或自定义工具为 Pi 智能体挂载更多能力。
  • 更多平台:参照 OpenCLO、Hermes 等开源项目的做法,自行接入 WhatsApp、邮件、Slack 等入口。

这套方案真正的价值在于可控与私有:模型、数据、运行环境全部掌握在自己手里,SQLite 本地存储会话,Key 自备,模型随选。对于看重隐私或希望跑本地模型的人来说,它提供了一条脱离闭源托管服务的可行路径。

**MCP(Model Context Protocol)**是 Anthropic 于 2024 年底提出的开放协议,旨在标准化 LLM 与外部工具、数据源之间的连接方式。其设计目标类似于 USB 对硬件外设的标准化:开发者只需按协议实现一个 MCP Server,任何支持 MCP Client 的模型或框架都能直接调用,无需为每个模型单独适配。相较于各框架私有的工具调用格式,MCP 的标准化特性使得工具生态可以在不同智能体框架间复用,这也是作者建议通过 MCP 扩展 Pi 智能体能力的原因——已有大量现成的 MCP Server 覆盖文件系统、数据库、GitHub、Notion 等常见场景,可直接挂载而无需自行开发。

分享:

相关推荐