AI三分钟第3弹|【全网首发】躺在被窝里用手机控制AI编程

什么是AI三分钟?

《AI三分钟》专栏旨在提供短小精悍的AI工具使用技巧或者知识

在这个时间碎片化、知识碎片化的时代

用最精炼的语言和最生动的故事

3分钟完成一项干货的科普

专栏封面

正文

image-20260214122347289

相信程序猿和其他被电脑奴役的打工人们都有一个美好的愿景:

“要是我能躺床上,对着我的手机动动嘴,然后电脑就帮我把活干完了该多好”

得益于AI时代

今天这个愿望老邋遢帮你实现了

无图无真相,上图:

  • 用手机指挥AI写代码

    image-20260214124522530

  • 上面AI写代码的任务,自动生成代码到了我们的工程目录下

    image-20260214124658252

    image-20260214124823419

不光是写代码,动动嘴它还能帮你发邮件、写日报、改bug、测试…

废话至此,看看怎么实现的

拿去用

本文的Github地址

在开始之前,确认自己有没有这些前置条件,若没有自行GPT:

  1. 魔法软件
  2. Telegram账户
  3. cursor IDE或者claude code账户

第一步:创建 Telegram Bot

  1. 在 Telegram 中搜索 @BotFather

  2. 发送 /newbot 创建新 Bot

  3. 按提示设置 Bot 名称和用户名

  4. 保存 Bot Token(格式示例:<数字>:<字符串>,请勿泄露)

  5. 发送 /setprivacy 选择你的 Bot,设置为 Disable(允许 Bot 接收所有消息)

第二步:获取你的 Telegram User ID

  1. 在 Telegram 中搜索 @userinfobot

  2. 发送任意消息,Bot 会返回你的 User ID(一串数字,请自行保存)

第三步:搭建 Bot 服务

  1. 创建项目目录并进入:

    mkdir -p telegram-bot/bot
    cd telegram-bot/bot
    
  2. 创建 Python 虚拟环境:

    python3 -m venv venv
    source venv/bin/activate
    
  3. 安装依赖:

    pip install python-telegram-bot python-dotenv
    
  4. 创建 .env 文件,填入你的 Bot Token(需代理时再填 USE_PROXYPROXY_URL):

    cat > .env << EOF
    TELEGRAM_BOT_TOKEN=你的Bot_Token
    USE_PROXY=true
    PROXY_URL=http://127.0.0.1:你的代理端口
    EOF
    
  5. 创建 bot_config.json 配置文件:

    mkdir -p ../config
    cat > ../config/bot_config.json << EOF
    {
      "allowed_user_ids": [你的User_ID],
      "admin_user_id": 你的User_ID,
      "rate_limit": {
        "max_messages": 5,
        "window_seconds": 60
      },
      "allowed_projects": {
        "my-project": "/path/to/your/project"
      },
      "max_task_length": 1000,
      "command_timeout": 300
    }
    EOF
    
  6. 创建主程序 telegram-bot.py

    #!/usr/bin/env python3
    import os
    import subprocess
    import logging
    from dotenv import load_dotenv
    from telegram import Update
    from telegram.ext import Application, MessageHandler, filters, ContextTypes
    
    load_dotenv()
    
    BOT_TOKEN = os.getenv("TELEGRAM_BOT_TOKEN")
    AGENT_PATH = os.getenv("AGENT_PATH", "/path/to/agent")  # Cursor CLI 路径,如 $HOME/.local/bin/agent
    PROJECT_ROOT = os.getenv("PROJECT_ROOT", "/path/to/your/project")  # 你的项目根路径
    
    logging.basicConfig(
        level=logging.INFO,
        format='%(asctime)s - %(levelname)s - %(message)s'
    )
    
    async def handle_message(update: Update, context: ContextTypes.DEFAULT_TYPE):
        user_id = update.effective_user.id
        message_text = update.message.text
        
        # 检查用户权限(从配置文件读取)
        # 这里简化处理,实际应该从 bot_config.json 读取
        
        # 执行 Cursor CLI
        await update.message.reply_text("⏳ 正在执行任务...")
        
        cmd = [AGENT_PATH, "-p", "--force", message_text]
        result = subprocess.run(
            cmd,
            cwd=PROJECT_ROOT,
            capture_output=True,
            text=True,
            timeout=300
        )
        
        if result.returncode == 0:
            await update.message.reply_text(f"✅ 任务完成\n\n{result.stdout}")
        else:
            await update.message.reply_text(f"❌ 任务失败\n\n{result.stderr}")
    
    def main():
        app = Application.builder().token(BOT_TOKEN).build()
        app.add_handler(MessageHandler(filters.TEXT, handle_message))
        app.run_polling()
    
    if __name__ == "__main__":
        main()
    
  7. 启动 Bot(如需代理,将端口改为你本地的魔法端口):

    export HTTP_PROXY=http://127.0.0.1:你的魔法端口
    export HTTPS_PROXY=http://127.0.0.1:你的魔法端口
    python3 telegram-bot.py
    

第四步:测试 Bot

  1. 在 Telegram 中找到你的 Bot

  2. 发送 /start 或任意消息

  3. Bot 应该回复"⏳ 正在执行任务…"然后返回结果

进阶功能:项目触发词和会话记忆

如果你想让 Bot 支持快速切换项目,可以添加以下功能:

  1. 项目触发词:发送你配置的触发词(如 项目A后端前端)快速切换项目

  2. 会话记忆:Bot 会记住你选择的项目,后续消息自动在该项目下执行

  3. 增量输出:长任务每 30 秒自动发送进度更新

完整实现代码可参考我的GitHub开源地址


只是寻找解决方案的朋友看到这里就足够了,后文是知识点讲解

讲清楚

Telegram Bot 的工作原理

Telegram Bot 就像一个「24小时在线的助手」,它通过 Telegram Bot API 接收你的消息,然后执行你指定的操作(比如运行 Cursor CLI),最后把结果发回给你。

整个流程可以想象成「你给助手发指令 → 助手去执行 → 助手把结果告诉你」:

  1. 你发送消息:在 Telegram 中给 Bot 发消息

  2. Bot 接收消息:Bot 通过 getUpdates API 轮询获取新消息

  3. Bot 处理消息:解析你的指令,调用 Cursor CLI 执行任务

  4. Bot 返回结果:把执行结果格式化后发回给你

项目触发词的设计思路

想象一下,你有很多个项目要管理,每次都要输入完整路径太麻烦。触发词就像「快捷方式」:

  • 你说「后端」,Bot 就知道你要操作对应的后端项目

  • 你说「前端」,Bot 就知道你要操作对应的前端项目

  • Bot 会记住你的选择,下次发消息时自动使用上次的项目

类似于下面的效果

image-20260214130827313

会话记忆的过期机制

Bot 的记忆不是永久的,而是「今天有效,明天失效」。这样设计的好处是:

  • 避免「昨天选了项目 A,今天忘记切换,结果在错误项目执行任务」

  • 每天重新选择项目,确保操作的是你当前想操作的项目

  • 过期时间设置为「第二天 0 点」,符合「一天」的直觉

增量输出的实现原理

长任务执行时,Bot 不是等任务完成才告诉你结果,而是「边执行边汇报」:

  1. Bot 启动子进程执行 Cursor CLI

  2. 用线程实时读取进程的输出

  3. 每 30 秒检查一次,如果有新输出就发给你

  4. 如果没有新输出,就发「正在处理中」让你知道 Bot 还在工作

  5. 任务完成后发送最终结果

架构思维导图

Telegram Bot 架构

消息接收

Telegram Bot API

getUpdates 轮询

消息解析

任务执行

Cursor CLI 调用

子进程管理

输出捕获

结果返回

格式化输出

增量更新

最终结果

安全机制

用户认证

输入验证

速率限制

高级功能

项目触发词

会话记忆

自动过期


记住它
流程图

创建 Telegram Bot

获取 Bot Token

获取 User ID

搭建 Bot 服务

安装依赖

配置环境变量

编写主程序

启动 Bot

测试功能

进阶功能

项目触发词

会话记忆

增量输出

核心知识点
  • Telegram Bot API:Telegram 提供的 Bot 开发接口,通过 HTTP 请求与 Bot 通信

  • Bot Token:Bot 的唯一身份标识,用于调用 Telegram Bot API

  • User ID:Telegram 用户的唯一标识,用于用户认证和权限控制

  • 轮询(Polling):Bot 定期调用 getUpdates API 获取新消息的方式

  • 代理(Proxy):网络请求的中转服务器,用于访问被墙的服务

  • 项目触发词:用简短的关键词快速切换项目,提高操作效率

  • 会话记忆:Bot 记住用户选择的项目,自动应用到后续操作中

  • 增量输出:实时获取任务执行过程中的输出,而不是等任务完成才返回

  • 速率限制:限制用户发送消息的频率,防止滥用和服务器压力过大

  • 输入验证:检查用户输入是否包含危险字符或命令,防止命令注入攻击

结语

点关注不迷路,UP带你上高速

动动您发财的小手,给老邋遢点一波免费的关注,不胜感激~

引用

版权信息

© 2026 老邋遢(笔名) 版权所有

原创内容,转载请注明出处

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐