opencode-telegram-bot:用 Telegram 远程操控本地 OpenCode,不开放任何端口
通过 Telegram 的 OpenCode 移动客户端:从您的手机运行和监控 AI 编码任务,同时一切都在您的计算机上本地运行。计划任务支持。
秒懂
- 它是什么?
- 这个 TypeScript 项目把 OpenCode CLI 变成 Telegram 聊天里的遥控器,任务在本地跑,手机只发指令和收结果。它没有公网端口,靠轮询 Telegram API 通信,适合想在外出时继续手头编码任务的开发者。
- 适合谁用?
- 适合已经日常使用 OpenCode CLI、并且愿意把 Telegram 作为控制面的开发者。它解决了「人不在电脑前但任务需要继续」的问题,代价是你要信任 Telegram Bot API 这条链路,以及把本地 OpenCode 服务暴露给一个第三方消息平台。
- 能商用吗?
- 可以。MIT 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
- 还在维护吗?
- 在维护。仓库最近一次提交在 2 天前。
- 用什么语言写的?
- 主要是 TypeScript(依据 GitHub 的语言统计)。
以上回答依据项目的 GitHub 数据(最近同步于 2026年9月14日)和我们的分析,不构成法律意见。
开源项目深度解析
它解决的是哪种麻烦
OpenCode 是一个跑在本地机器上的 AI 编码 CLI。你人在外面,想让它继续处理一个任务,或者想临时改个模型,总不能掏出笔记本。这个 bot 把 OpenCode 的常用操作搬进 Telegram:发一段提示词,任务在本地执行,结果以文件形式发回手机。它不做任何云端执行,OpenCode 服务始终跑在你自己的机器上。目标用户很明确:已经用 OpenCode、并且愿意把手机当作第二块屏幕的人。不是给那些想完全脱离本地环境的人准备的。
通信机制:没有开放端口,只有轮询
README 里强调「No open ports, no exposed APIs」。这个 bot 不监听任何公网端口,它只主动连接两个地方:本地的 OpenCode API(默认 http://localhost:4096)和 Telegram Bot API。Telegram 那边是长轮询,本地是 HTTP 请求。这意味着你不需要配置路由器端口转发,也不需要反向代理。代价是延迟取决于 Telegram 服务器的轮询间隔,实时性不如直接 SSH。但换来的是攻击面小很多,至少没有公网端口可扫。
从零启动:npx 一条命令加一个向导
安装非常简单。前提是 Node.js 22.14+、OpenCode 已安装、以及一个 Telegram Bot token。先用 BotFather 创建 bot,再用 @userinfobot 拿到你的数字 ID。然后在本地跑 `opencode serve` 启动 OpenCode 服务。接着执行 `npx @grinev/opencode-telegram-bot@latest`。如果环境变量或 .env 里没提供配置,它会启动一个交互式向导,依次问界面语言、bot token、用户 ID、OpenCode API URL,以及可选的服务器用户名密码。之后就能在 Telegram 里直接发任务了。另一种方式是全局安装:`npm install -g @grinev/opencode-telegram-bot`,然后 `opencode-telegram start`,前台运行适合 systemd 或 Docker 托管。内置守护模式用 `--daemon` 参数,但 README 建议外部进程管理器时不要用。
日常操作:会话、模型、权限都在聊天里
功能列表很长,但核心是几个。你可以新建会话或继续旧会话,像在 TUI 里一样。切换模型时,收藏和历史记录排前面,也能按 provider 浏览全部。Plan 和 Build 模式可以随时切换。子代理的进度会实时显示,包括当前任务、agent、模型和工具步骤。最实用的是交互式问答:当 OpenCode 的 agent 需要确认权限或问问题,你直接在 Telegram 里点按钮回答。还有个细节叫「输入流控制」,当交互流程进行中,bot 只接受相关输入,防止你误发消息打断上下文。
定时任务与队列:把手机变成调度器
README 明确说定时任务支持把它变成「a lightweight OpenClaw alternative for OpenCode users」。你可以安排提示词稍后运行或按固定间隔重复。这适合那些需要周期性跑的任务,比如每天清晨自动检查代码库。另一个相关功能是消息队列:在 /settings 里开启后,agent 忙时你发的消息会排队,等它空闲再一条条发送。队列可以从底部键盘管理。这两个功能合起来,让 bot 不只是遥控器,更像一个简单的任务调度台。但注意,定时任务依赖本地机器一直开机且 OpenCode 服务在跑,电脑休眠任务就停了。
安全模型:白名单之外还有哪些边界
安全设计是「strict user ID whitelist; no one else can access your bot, even if they find it」。也就是说,即使有人发现了你的 bot 用户名,没有匹配的 Telegram User ID 也发不了指令。这是 Telegram bot 常用的做法,但要注意它只验证发送者的 ID,不验证消息内容。如果你把 bot 加进群组,群里的其他人不会通过验证,但如果你自己不小心在群里发指令,可能会触发意外操作。另外,OpenCode 服务若配了用户名密码,bot 支持在配置里带上。但 README 没有提消息加密,Telegram 的 MTProto 加密只覆盖传输层,服务端日志理论上可见。
替代方案与适用边界
最直接的替代是 OpenClaw,README 自己就把它当作定时任务的参照。OpenClaw 是更通用的 AI 助手框架,不限于 OpenCode,但配置更重。另一个替代是直接用 SSH 从手机连到电脑,跑 OpenCode TUI,但那样你需要在手机上装终端模拟器,而且没有 Telegram 的按钮交互和通知推送。这个 bot 的优势是把交互封装成聊天界面,门槛低。代价是它只服务 OpenCode,换 CLI 就得换工具。还有一点:它需要 Node.js 22.14+,如果你机器上 Node 版本旧,得先升级。
维护成本与许可证
项目用 MIT 许可证,可以自由使用和修改。维护方面,最近一次发布是 v0.24.1,2026 年 8 月,说明还在活跃更新。但 README 有一句提醒:main 分支可能包含未发布的更改,npm 最新版不一定包含 README 描述的所有功能。这意味着如果你依赖某个新特性,得先查 npm 版本号。升级路径是重新跑 npx 或 npm install -g 更新包。配置通过环境变量或 .env 管理,升级一般不会动配置。但定时任务和队列这类功能依赖 bot 进程持续运行,如果你用 systemd 托管,需要自己写 unit 文件,README 提供了 docs/LINUX_SYSTEMD_SETUP.md 作为参考。
编辑结论
适合已经日常使用 OpenCode CLI、并且愿意把 Telegram 作为控制面的开发者。它解决了「人不在电脑前但任务需要继续」的问题,代价是你要信任 Telegram Bot API 这条链路,以及把本地 OpenCode 服务暴露给一个第三方消息平台。不适合对代码完全保密、或者想要完整 TUI 体验的人。采用前先验证三件事:你的 Telegram User ID 是否严格匹配白名单,OpenCode 服务是否只监听 localhost,以及定时任务在电脑休眠或网络断开时的行为是否符合预期。这个项目把远程控制做得足够窄,没有试图替代 OpenCode 本身,这反而是它最可靠的地方。
社区笔记