Skip to content

Telegram Bot 与 OpenCode 集成技术可行性研究

摘要 (Executive Summary)

本研究验证了在 Bun 环境下将 Telegram Bot 与 OpenCode 集成,实现进程监听和远程控制的技术可行性。通过分析 OpenCode 的输出机制、Telegram Bot API 能力以及 Bun 的进程管理能力,结论表明该方案完全可行,无需修改 OpenCode 源码即可实现所有需求功能。

核心实现方案是使用 Bun 的 spawn API 启动 OpenCode 进程,通过流式读取 stdout/stderr 实时捕获输出,并基于预定义策略将信息发送到 Telegram。同时通过进程管理实现 /kill 指令来终止正在运行的 OpenCode 进程。

可行性结论

结论:完全可行

  • 方案 A(推荐):流式输出监听 - 实时性高、资源占用低
  • 方案 B(备选):日志文件监听 - 适合事后查询场景

目录 (Table of Contents)

关键发现 (Key Findings)

技术能力验证

组件能力验证状态
OpenCode标准输出流✅ 完全支持
Bun child_process进程管理✅ 完全支持
Telegram Bot API消息通知✅ 完全支持
输出解析模式匹配✅ 可实现
进程终止信号控制✅ 完全支持

推荐技术栈

  • 运行时:Bun v1.0+
  • Telegram Bot 库:grammY(TypeScript 优先、现代 API)
  • 进程存储:JSON 文件 + 内存缓存
  • 部署:PM2 或 Systemd

实施建议

分阶段实施

  1. 第一阶段(基础功能):

    • 进程启动和 stdout 监听
    • 简单通知(完整输出)
    • 基础 kill 指令
  2. 第二阶段(智能通知):

    • 输出解析和事件识别
    • 通知策略和节流
    • 消息格式化和分割
  3. 第三阶段(增强功能):

    • 多进程管理
    • 进程持久化和恢复
    • 高级通知(消息编辑、文件上传)

风险评估

风险级别缓解措施
OpenCode 输出格式变化设计鲁棒的解析器,多模式匹配
Telegram API 限流实现消息队列,避免突发大量消息
进程管理复杂度简化状态管理,避免过度设计
机器人异常中断使用 systemd/supervisor 保证运行稳定性

架构概览

用户 ←→ Telegram Bot ←→ OpenCode 进程

              流监听器 & 解析器

              通知策略引擎

              Telegram API

核心参考资料 (References)

结论

本研究确认了通过外部包装实现 OpenCode 与 Telegram Bot 集成的技术可行性。推荐使用流式输出监听方案(方案 A),该方案具有更好的实时性和用户体验。实施时建议分三个阶段逐步完善功能,从基础进程监听开始,逐步增加智能通知和高级特性。

附录:快速开始示例

bash
# 1. 初始化项目
bun init -y
bun add grammy

# 2. 创建简单监听器
# src/index.ts
import { spawn } from 'child_process';
import { Bot } from 'grammy';

const bot = new Bot(process.env.TELEGRAM_BOT_TOKEN!);

bot.command('run', async (ctx) => {
  const prompt = ctx.message.text.replace('/run', '').trim();
  const process = spawn('opencode', ['--prompt=' + prompt], {
    stdio: ['ignore', 'pipe', 'pipe']
  });

  process.stdout?.on('data', async (data) => {
    await ctx.reply(data.toString());
  });

  ctx.reply('🚀 已启动 OpenCode');
});

bot.start();

文档版本:1.0 创建日期:2026-01-21 研究类型:技术可行性研究