一个面向 OpenCode 的 Telegram 机器人,可以把一个 Telegram 超级群组变成多会话的移动工作区。
本项目是原始单聊天版本 grinev/opencode-telegram-bot 的 fork。
- 如果你想要更简单的单聊天工作流,请使用上游项目。
- 如果你想要一个 General 控制话题,再配合多个 forum topic 并行运行 OpenCode 会话,请使用这个 fork。
无需开放公网端口,也不需要暴露 Web UI。机器人只会连接你本地的 OpenCode 服务和 Telegram Bot API。
你可以在一个群里并行跑多个 session topic,也可以在多个群里分别对应不同项目并行使用。
支持平台:macOS、Windows、Linux
机器人界面语言:English (en)、Deutsch (de)、Espanol (es)、Francais (fr)、Russkiy (ru)、简体中文 (zh)
Fork 同步说明:FORK_SYNC.md
说明:英文版
README.md仍是当前权威文档。如中英文内容有差异,请以英文版为准。
- 一个 Telegram 群通常对应一个仓库 / 项目工作区。
- General 话题是控制通道,用于
/projects、/sessions、/new和状态检查。 - 每个新建的 OpenCode 会话都会对应一个独立的 forum topic。
- 每个 topic 都维护自己的 session、model、agent 和 pinned status 状态。
- 多个 topic 可以同时运行,多个群组也可以同时对应不同项目。
- 私聊更适合轻量控制和状态查看,不是主要的多会话工作流入口。
上游项目主要面向单聊天工作流,而这个 fork 主要面向 Telegram forum topics 场景。核心差异是:这里把 General 作为控制通道,把每个独立话题作为一个 OpenCode 会话通道,更适合移动端并行处理多个任务。
如果你只想在一个聊天窗口里切换会话,上游会更简单;如果你想在一个群里同时管理多个会话线程,这个 fork 更合适。
- 安装 Node.js 20+
- 从 opencode.ai 或 GitHub 安装 OpenCode
- 通过 @BotFather 创建一个 Telegram bot
- 通过 @userinfobot 获取你的 Telegram 数字用户 ID
- 为一个 OpenCode 项目 / 仓库创建一个新的 Telegram supergroup。
- 把 bot 拉进这个群。
- 给 bot 管理员权限,并允许 Manage Topics。
- 在群设置中启用 Topics。
- 在 @BotFather 中执行
/setprivacy,并选择 Disable。 - 保留默认的 General 话题,它就是控制通道。
在机器人所在的那台机器上运行 OpenCode:
opencode serve默认 API 地址:http://localhost:4096
npx opencode-telegram-group-topics-botnpm install -g opencode-telegram-group-topics-bot
opencode-telegram-group-topics-bot config
opencode-telegram-group-topics-bot startgit clone https://github.com/shanekunz/opencode-telegram-group-topics-bot.git
cd opencode-telegram-group-topics-bot
npm install
npm run build
node dist/cli.js config --mode sources
npm run devdist/cli.js 是由 npm run build 生成的 CLI 入口。
向导会询问:
- 界面语言
- Telegram bot token
- 允许访问的 Telegram user ID
- OpenCode API URL
- 可选的 OpenCode server 用户名 / 密码
- 在私聊里打开你的 bot,并执行
/start。 - 确认 bot 有回复。
- 打开你的 Telegram 群,在 General 中执行
/start。 - 执行
/status,确认 bot 能连接 OpenCode。 - 在 General 中执行
/projects,为当前群选择项目。 - 在 General 中执行
/new,创建新的 session topic。 - 打开新 topic,发送一个 prompt。
如果这些都正常,说明你的群组工作区已经可以使用。
- 用
opencode serve启动 OpenCode - 启动 bot
- 打开 Telegram 群并进入 General
- 用
/projects确认当前群对应的项目 - 用
/new创建新的 session topic - 在对应 topic 里工作
- 需要回到历史会话时,在 General 使用
/sessions
- 这个 fork 就是为并行工作设计的:一个群里多个 topic,同时多个群对应多个项目。
- Telegram 在高频更新时会有消息速率限制,尤其是多个 topic 同时刷新的时候。
- 机器人会尽量平滑处理这些限制,必要时放慢或错开更新。
- 即使 Telegram 更新变慢,OpenCode 里的任务仍会继续执行。
- 在高并发场景下,你看到的 topic 内实时输出可能会变少,但不会丢失 OpenCode 的实际工作结果。
| Command | 说明 |
|---|---|
/status |
查看服务健康状态、当前项目、会话和模型信息 |
/new |
创建新的 session topic |
/abort |
中止当前任务 |
/sessions |
浏览并切换最近会话 |
/projects |
切换 OpenCode 项目 |
/rename |
重命名当前会话 |
/commands |
浏览并执行自定义命令 |
/task |
为当前项目创建定时任务 |
/tasklist |
查看和删除当前项目的定时任务 |
/opencode_start |
远程启动 OpenCode 服务 |
/opencode_stop |
远程停止 OpenCode 服务 |
/help |
显示可用命令 |
当没有阻塞性的交互流程时,session topic 中的普通文本消息会被当作 prompt 发送给 OpenCode。
- source mode 会把配置存放在仓库根目录。
- installed mode 会把配置存放在系统应用数据目录。
OPENCODE_TELEGRAM_HOME可以覆盖前两者,强制指定自定义配置目录。
installed mode 下的配置路径:
- macOS:
~/Library/Application Support/opencode-telegram-group-topics-bot/.env - Windows:
%APPDATA%\opencode-telegram-group-topics-bot\.env - Linux:
~/.config/opencode-telegram-group-topics-bot/.env
| 环境变量 | 说明 | 必须 | 默认值 |
|---|---|---|---|
TELEGRAM_BOT_TOKEN |
来自 @BotFather 的 bot token | Yes | - |
TELEGRAM_ALLOWED_USER_ID |
你的 Telegram 数字用户 ID | Yes | - |
OPENCODE_API_URL |
OpenCode 服务地址 | No | http://localhost:4096 |
OPENCODE_SERVER_USERNAME |
服务认证用户名 | No | opencode |
OPENCODE_SERVER_PASSWORD |
服务认证密码 | No | - |
OPENCODE_MODEL_PROVIDER |
默认模型提供方 | Yes | opencode |
OPENCODE_MODEL_ID |
默认模型 ID | Yes | big-pickle |
BOT_LOCALE |
机器人界面语言(en、de、es、fr、ru、zh) |
No | en |
LOG_LEVEL |
日志级别(debug、info、warn、error) |
No | info |
请务必妥善保管 .env,其中包含你的 bot token。
如果你需要更完整的环境变量说明,请参考英文版 README.md 的 Configuration 章节。
Bot 没有响应
- 确认
TELEGRAM_ALLOWED_USER_ID是你真实的 Telegram 用户 ID - 确认 bot token 正确
- 确认你已经在 BotFather 中关闭了 privacy mode,便于群组内使用
OpenCode 服务不可用
- 确认
opencode serve已经运行 - 确认
OPENCODE_API_URL指向正确地址
无法创建新的 session topic
- 确认当前群是启用了 Topics 的 supergroup
- 确认 bot 具有管理员权限,且允许 Manage Topics
- 确认你是在 General 中执行
/new,而不是在已有 session topic 中执行
模型选择器里没有模型
- 在 OpenCode TUI 中先添加 favorites
- 确认
OPENCODE_MODEL_PROVIDER和OPENCODE_MODEL_ID对当前环境有效
Linux 权限问题
- 检查 CLI 是否可执行:
chmod +x $(which opencode-telegram-group-topics-bot) - 检查配置目录是否可写:
~/.config/opencode-telegram-group-topics-bot/
只有 TELEGRAM_ALLOWED_USER_ID 对应的 Telegram 用户可以使用这个 bot。
由于 bot 运行在本地,并连接本地 OpenCode 服务,所以除 Telegram 本身外,不需要额外暴露公网服务。
- 英文主文档:
README.md - Fork 同步说明:
FORK_SYNC.md - 产品范围与状态:
PRODUCT.md - 贡献说明:
CONTRIBUTING.md
MIT • 原项目 © Ruslan Grinev • Fork 修改 © Shane Kunz
