一日一撸码(No.2):把 Claude Code 装进 Telegram:一个周末的轻量级方案

5 阅读5分钟

起因:一个周末的小烦恼

上周末在咖啡馆坐着,突然想起有个 bug 没修。打开手机想用 Claude Code 看一眼,结果发现——它只能在终端里跑

回家开电脑?太麻烦了。用 OpenClaw?我试过,配置 Web 服务器、Nginx 反向代理、HTTPS 证书……折腾了一下午,最后发现我只是想改几行代码而已。

这时候我想:能不能直接在 Telegram 里跟 Claude 聊天?

Telegram 有现成的 Bot API,不需要自己搭服务器,消息推送也是长连接,安全性由 Telegram 保证。听起来很适合做这件事。

于是周末两天,撸了个 Telegram Bot 版本的 Claude Code 遥控器。

痛点:为什么不用 OpenClaw?

OpenClaw 是个很棒的项目,但它解决的是"把 Claude 搬到云端"的问题,适合团队协作或者需要完整 Web IDE 的场景。

我的需求更简单:

  • 只想在手机上偶尔操作一下,不需要完整的浏览器界面

  • 不想折腾服务器配置,端口暴露、防火墙、SSL 证书这些东西太重了

  • 已经在用 Claude Code CLI,只是想加个远程入口

所以我需要的是一个"轻量级的后门",而不是一个完整的 Web 应用。

项目特点

1. 零基础设施

不需要 Web 服务器、不需要端口暴露、不需要配置 HTTPS。Telegram 自带长连接,消息推送由 Telegram 服务器处理。启动一次就作为守护进程在后台运行,崩溃自动重启,macOS 上还能配置开机自启。

2. 默认安全

  • 文件访问沙箱化(--path 参数设置项目根目录)

  • 项目内文件自动允许访问,项目外需要 Telegram 内联按钮确认

  • 支持用户白名单(ALLOWED_USER_IDS

  • 超过 20 分钟的旧消息自动丢弃

3. 实时流式响应

Claude 的回复不是等全部生成完才显示,而是边思考边更新。你能看到 Claude 实时打字的过程,就像在终端里用 Claude Code 一样。长消息自动分段发送,体验很流畅。

4. 智能交互

  • Claude 的选项题自动转成 Telegram 内联键盘按钮,点一下就能选

  • 回复里的图片、PDF 等文件路径会自动发送为 Telegram 附件

  • 每个用户独立的 SDK 连接,支持并发消息(最多 3 条)

5. 功能完整

  • 支持所有 Claude Code 技能(/skill <name>)和斜杠命令(/commit/xhs-writer 等)

  • 支持模型切换(/model 在 Sonnet/Opus/Haiku 之间切换)

  • 支持会话恢复(/resume 查看和恢复历史对话)

  • 支持流式中断(/stop 立即停止 Claude 的回复)

上手指南

方式一:用 Claude Code 自动安装(推荐)


git clone https://github.com/terranc/claude-telegram-bot-bridge

cd claude-telegram-bot-bridge

claude

然后在 Claude Code 提示符里输入 /setup,它会自动帮你:

  • 检查系统环境(Python 3.11+、Claude CLI)

  • 收集 Bot Token 和用户白名单

  • 创建虚拟环境并安装依赖

  • 生成 .env 配置文件

完成后启动:


./start.sh --path /path/to/your/project

方式二:手动安装

如果你不想用 Claude Code,也可以直接运行安装脚本:


git clone https://github.com/terranc/claude-telegram-bot-bridge

cd claude-telegram-bot-bridge

./setup.sh

然后启动:


./start.sh --path /path/to/your/project

获取 Telegram Bot Token

@BotFather 创建一个 Bot,拿到 Token。

获取你的 Telegram 用户 ID

@userinfobot 发消息,它会告诉你你的用户 ID。

常用命令


# 前台运行(默认)

./start.sh --path /path/to/project

  


# 后台守护进程

./start.sh --path /path/to/project -d

  


# 调试模式(详细日志 + 聊天记录)

./start.sh --path /path/to/project --debug

  


# 检查运行状态

./start.sh --path /path/to/project --status

  


# 停止

./start.sh --path /path/to/project --stop

  


# macOS 开机自启

./start.sh --path /path/to/project --install

  


# 取消开机自启

./start.sh --path /path/to/project --uninstall

Telegram 内的命令

  • /new - 开始新对话

  • /model - 切换模型(Sonnet/Opus/Haiku)

  • /resume - 查看和恢复历史会话

  • /stop - 停止当前 Claude 回复

  • /skill <name> - 运行 Claude Code 技能

  • /skills - 列出所有可用技能

  • 其他斜杠命令(如 /commit/xhs-writer)直接发送即可

技术细节

架构

  • core/bot.py - Telegram Bot 主逻辑,命令处理、权限控制

  • core/project_chat.py - Claude SDK 集成,消息队列、工具权限回调

  • core/streaming.py - 流式响应处理,实时更新草稿消息

  • session/ - 会话管理,状态持久化到 JSON

  • utils/ - 配置、日志、聊天记录

数据存储

  • 运行时数据:PROJECT_ROOT/.telegram_bot/

  - sessions.json - 用户会话状态

  - logs/bot.log - 主日志(每日轮转)

  - logs/error_YYYYMMDD.log - 错误日志

  - logs/{user_id}_{session_id}_{date}.log - 调试聊天记录

  • SDK 对话历史:~/.claude/projects/{PROJECT_DIR_NAME}/*.jsonl

守护进程特性

  • 崩溃自动重启,记录退出码和运行时长

  • 60 秒内崩溃 5 次后停止重启(防止无限循环)

  • 基于 MD5 的依赖缓存,requirements.txt 未变时跳过重装

  • 14 天日志轮转

项目地址

GitHub: github.com/terranc/cla…

欢迎提 Issue 或 PR。如果你也觉得 OpenClaw 太重,可以试试这个方案。

后记

这个项目从想法到能用,大概花了一个周末。代码不复杂,但解决了我的实际问题。

有时候工具不需要很完美,够用就行。OpenClaw 是一辆卡车,我这个是一辆自行车——看你要运货还是通勤。

现在我在地铁上也能用手机跟 Claude 对话,让它帮我改代码、跑测试、查日志。实时流式响应让整个体验很流畅,就像在终端里用 Claude Code 一样。

下一步可能会加个语音输入功能,这样在路上也能用语音跟 Claude 对话。不过这是后话了。

先这样,继续撸代码去了 🚀