电报副驾驶台
控制 从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
- 打开电报和消息 @植物学家
- 发送
/newbot并按照提示进行操作 - 复制机器人令牌
2.获取您的聊天ID和用户ID
向您的机器人发送任何消息,然后:
curl "https://api.telegram.org/bot/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 \
-vCLI选项:
| 标志 | 描述 | 默认值 |
|---|---|---|
--cwd | 会话的默认工作目录 | 当前目录 |
--model | AI模型(例如。 claude-opus-4.6) | claude-opus-4.6 |
--timeout | 以分钟为单位自动关机(0=无超时) | 0 |
--autopilot | 自动批准所有工具调用 | 关闭(通过Telegram手动批准) |
-v, --verbose | 启用调试日志记录 | 关闭 |
电报命令
| 命令 | 操作 |
|---|---|
/new [dir] | 启动新的Copilot会话(如果出现以下情况,则显示文件夹选择器 COPILOT_DIRS_ROOT 已设置) |
/history [n] | 列出过去的CLI会话(默认值:3) |
/resume | 恢复上一个会话 |
/dirs [dir] | 浏览目录 |
/model [name] | 显示/设置AI模型 |
/mode | 切换自动驾驶/手动批准 |
/list | 列出活动会话 |
/switch | 切换活动会话 |
/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个字符的响应将自动拆分。
许可证
麻省理工学院
