远程GitHub Copilot控制器

通过Telegram远程控制GitHub Copilot CLI,实现多会话管理、工具调用审批和项目目录选择。

  • by NobufumiMurata
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 NobufumiMurata/mcp-telegram-notify

使用说明

电报副驾驶台

控制 GitHub Copilot命令行界面 从Telegram远程。发送提示、管理会话和批准工具调用——所有这些都可以通过智能手机完成。

建筑

📱 Telegram
    ↕ (Bot API long-polling)
🐍 telegram-copilot-bridge
    ↕ (stdin/stdout NDJSON — ACP)
🤖 copilot --acp --stdio

特性

  • 远程提示 --从Telegram发送Copilot提示,在手机上接收结果
  • 多会话 --并行运行多个Copilot会话,在它们之间切换
  • 工具批准 --通过内联按钮批准或拒绝Copilot的工具调用
  • 自动驾驶模式 --自动批准所有免提操作的工具调用
  • 会话历史记录 --只需轻轻一点,即可恢复过去的副驾驶会话
  • 文件夹选择器 — /new 显示项目目录的内联按钮

安装

git clone https://github.com/NobufumiMurata/telegram-copilot-bridge.git
cd telegram-copilot-bridge
pip install -e .

先决条件: 安装 Copilot命令行界面 并验证:

winget install GitHub.Copilot   # or: npm install -g @github/copilot
copilot                         # then /login to authenticate

设置

1.创建Telegram Bot

  1. 打开电报和消息 @植物学家
  2. 发送 /newbot 并按照提示进行操作
  3. 复制机器人令牌

2.获取您的聊天ID和用户ID

向您的机器人发送任何消息,然后:

curl "https://api.telegram.org/bot<YOUR_TOKEN>/getUpdates"

根据回复,请注意:

  • "chat": {"id": ...} → your 聊天ID
  • "from": {"id": ...} → your 用户ID (为对抗主义者)

3.配置

复制示例文件并填写您的值:

cp .env.example .env
# .env
TELEGRAM_BOT_TOKEN=1234567890:AAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
TELEGRAM_CHAT_ID=-100000000000
TELEGRAM_ALLOWED_USERS=123456789

# Default AI model
COPILOT_MODEL=claude-opus-4.6

# Root folder for /dirs and /new folder picker
COPILOT_DIRS_ROOT=/home/user/projects

这 .env 文件在启动时自动加载(从当前目录)。 使用 TELEGRAM_ENV_FILE=/path/to/.env 指向不同的位置。 shell中设置的环境变量始终优先于 .env.

用法

# Start (reads .env automatically)
python -m telegram_copilot_bridge

# With options
python -m telegram_copilot_bridge \
  --cwd /path/to/project \
  --model claude-opus-4.6 \
  --timeout 120 \
  -v

CLI选项:

标志 描述 默认值
--cwd <dir> 会话的默认工作目录 当前目录
--model <name> AI模型(例如。 claude-opus-4.6) claude-opus-4.6
--timeout <min> 以分钟为单位自动关机(0=无超时) 0
--autopilot 自动批准所有工具调用 关闭(通过Telegram手动批准)
-v, --verbose 启用调试日志记录 关闭

电报命令

命令 操作
/new [dir] 启动新的Copilot会话(如果出现以下情况,则显示文件夹选择器 COPILOT_DIRS_ROOT 已设置)
/history [n] 列出过去的CLI会话(默认值:3)
/resume <id> 恢复上一个会话
/dirs [dir] 浏览目录
/model [name] 显示/设置AI模型
/mode 切换自动驾驶/手动批准
/list 列出活动会话
/switch <id> 切换活动会话
/status 会话状态
/stop [id] 停止会话
/done 停止所有会话并退出
/help 显示命令
(任何文本) 按提示发送到活动会话

环境变量

所有变量都可以在中设置 .env 或者在壳中。外壳值优先。

电报:

变量 描述 默认值
TELEGRAM_BOT_TOKEN Bot API令牌 (必填)
TELEGRAM_CHAT_ID 目标聊天ID (必填)
TELEGRAM_ALLOWED_USERS 逗号分隔的允许用户ID (允许所有人)
TELEGRAM_ENV_FILE 通往 .env 文件 .env 在CWD
TELEGRAM_CONFIG_PATH JSON凭据文件(回退) --

副驾驶:

变量 描述 默认值
COPILOT_CLI_PATH 副驾驶可执行文件的路径 copilot (来自PATH)
COPILOT_MODEL 默认AI模型 claude-opus-4.6
COPILOT_AUTOPILOT 自动批准工具调用(true/false) false
COPILOT_DIRS_ROOT 根目录 /dirs 和 /new 文件夹选择器 (使用--cwd)
COPILOT_ALLOWED_DIRS 逗号分隔的允许工作目录 (任意)
COPILOT_ALLOWED_TOOLS 逗号分隔的工具允许 shell(git),read,write
COPILOT_PERMISSION_TIMEOUT_SECONDS 权限审批超时(秒) 300 (5分钟)
HUB_LOCK_PORT 单例锁的TCP端口 47732

安全

  • 用户满负荷列表:仅来自的消息 TELEGRAM_ALLOWED_USERS 被接受。所有其他用户都被默默地忽略了。
  • 超时:可配置的自动关机超时(默认:无超时)。5分钟后权限请求超时(可通过配置 COPILOT_PERMISSION_TIMEOUT_SECONDS).
  • 回购中没有秘密:所有凭据通过 .env 文件或环境变量。
  • 工具列表:用途 --allow-tool (不是 --allow-all-tools)限制Copilot CLI的功能。
  • 目录限制:限制Copilot会话可以在哪些目录中操作 COPILOT_ALLOWED_DIRS.
  • Singleton锁:每台计算机只能运行一个实例(TCP端口锁定)。

局限性

  • VS代码本地运行不可观察 --无法检索Copilot在VS Code中的操作。MCP工具是来自VS Code的单向调用→ 只有桥。
  • 在网桥外部启动的CLI会话的状态不可用 --如果你启动 copilot 直接在服务器上,无法跟踪实时执行状态。活动显示在 /status (估计从 events.jsonl 修改时间)是唯一的选择。
  • 无法中继来自网桥外部启动的CLI会话的工具批准请求 --只有通过Hub启动的会话才能通过Telegram内联按钮转发工具批准请求。
  • 单实例限制 --每台机器只有一个集线器进程(TCP端口锁定)。
  • 电报消息长度限制 --超过4000个字符的响应将自动拆分。

许可证

麻省理工学院