☰
从聊天到自主干活:手把手教你用Claude Code搭Telegram Agent,全程0代码!
2026/10/3 6:28:35 网站建设 项目流程

1. 从聊天机器人到自主干活:Telegram Agent 到底差在哪

很多人对 Telegram Agent 的理解停留在“能自动回复消息的机器人”。这个认知不算错,但远远不够。一个真正能自主干活的 Telegram Agent,和普通聊天机器人的区别,不在于它用了哪个大模型,而在于模型周围有没有三样东西:可调用的工具、跨会话的持久记忆、以及一个跑到任务完成为止的循环。

我举个具体场景你就明白了。你在 Telegram 里给机器人发一句“帮我查一下今天 AI 圈最热的三个话题,挑一个写成 200 字的短帖,存到 notes.txt”。普通聊天机器人会直接编一段内容回你,它没有联网、没有文件系统、也不会真的去写文件。而一个 Agent 会自己判断:先调用搜索工具拿到实时信息,再按你预设的风格生成内容,最后调用文件写入工具把结果落盘,全程你只发了一条消息。

这就是“聊天”和“干活”的分水岭。聊天是一次性的问答,干活是多步骤、有工具、有状态的任务执行。你要搭的 Telegram Agent,目标就是后者。

那为什么用 Claude Code 来搭?因为 Claude Code 本身就是一个能读写文件、执行命令、理解项目结构的编码 Agent。你不需要自己一行行写 Python,只需要用大白话描述“我要一个什么样的机器人”,它会帮你把主程序、依赖文件、环境变量模板、甚至 systemd 服务文件全部生成出来。对零代码基础的人来说,这是目前门槛最低的路径。

整篇教程我会带你走完这条链路:先在 Telegram 里找 BotFather 拿到机器人令牌,再准备一个 Claude API Key,然后在本地或服务器上用 Claude Code 初始化项目,把 Webhook 和消息路由配好,最后跑一次从“接收指令”到“调用工具完成任务”的端到端验证。全程你复制粘贴命令和配置就行,不需要理解每一行代码在干什么。

有一个概念先建立起来:Agent 不是一种模型分类,它是一个光谱。最左边是纯聊天,往右是带工具的问答,再往右是多步骤工作流,最右边才是完全自主的 Agent。你这次搭的,大概落在“多步骤工作流 + 部分自主”这个位置——它能自己决定要不要调工具、能记住每个用户的会话历史、能在收到明确指令后完成一串动作。这已经足够帮你干掉大量重复劳动了。

2. 前置准备:BotFather 配置、API Key 与 Claude Code 初始化

动手之前,你需要三样东西:一个 Telegram 机器人令牌、一个 Claude API Key、一台能跑 Python 的机器(本地电脑或 Linux 服务器都行)。下面逐个说清楚怎么拿、怎么配。

第一样:Telegram 机器人令牌。打开 Telegram,搜索@BotFather,点进去发/newbot。它会问你机器人叫什么名字(显示名,随便起),再问用户名(必须以bot结尾,比如my_work_agent_bot)。两步走完,BotFather 会回你一段包含HTTP API Token的消息,形如7123456789:AAHxxxxxxxxxxxxxxxxxxxxxxxxxxxxx。这串东西就是你的机器人令牌,后面要写进.env文件,千万别泄露。顺手再发一个/setdescription和/setcommands,把/start、/clear、/notes、/costs这几个命令注册进去,这样用户在 Telegram 里输入斜杠就能看到菜单。

第二样:Claude API Key。这里我用 TaoToken 作为统一接入入口,它的 API 地址是https://taotoken.net/api,兼容 Anthropic 的接口格式,Claude Code 可以直接对接。你需要先去控制台创建一个 API Key,拿到形如sk-xxxxxxxx的字符串。创建入口在https://taotoken.net/console,Key 管理页面在https://taotoken.net/api-keys。如果你还没决定用哪个模型,可以先在模型对话页面https://taotoken.net/model-chat里试几句,确认响应正常再往下走。长期跑编码类 Agent 的话,Coding Plan 页面https://taotoken.net/coding-plan有更划算的套餐说明。

第三样:安装 Claude Code。在终端里执行下面这条命令,全局安装 Claude Code CLI:

npm i -g @anthropic-ai/claude-code

装完之后,你需要让 Claude Code 知道走哪个 API 端点。设置两个环境变量,把 Base URL 指向 TaoToken,把 Key 填进去:

export ANTHROPIC_BASE_URL="https://taotoken.net/api" export ANTHROPIC_API_KEY="sk-你的Key"

如果你用的是 Claude Code 的配置文件方式,也可以写进~/.claude/settings.json,内容如下:

{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "sk-你的Key" } }

注意这里的三件套必须齐全:Base URL 是https://taotoken.net/api,Key 是你刚创建的sk-开头字符串,Model ID 在下一步的项目提示里指定。少任何一个,Claude Code 都会报连接失败或 401。

第四样:准备项目目录。随便找个空文件夹,比如~/telegram-agent,进去之后启动 Claude Code:

mkdir -p ~/telegram-agent && cd ~/telegram-agent claude

这时候 Claude Code 会进入交互模式,等你用自然语言描述需求。下一步就是把完整的项目提示粘进去。

3. 可复制配置:项目提示、.env 模板与 systemd 服务

这一步是整个搭建的核心。你不需要自己写代码,只需要把下面这段提示原封不动粘进 Claude Code,它会生成主程序、依赖文件、环境变量模板和服务配置。

项目初始化提示(直接粘贴):

帮我搭一个 Telegram 机器人,用 Claude API 当大脑。要求: - 语言:Python - Telegram 库:python-telegram-bot - Claude 模型:claude-sonnet-4-6 - Base URL 从环境变量 ANTHROPIC_BASE_URL 读取,默认 https://taotoken.net/api - 机器人收到消息,发给 Claude API,然后把回复返回 Telegram - 为每个用户保留会话历史,每个用户在自己的会话内有独立上下文 - 添加 /start 命令介绍机器人 - 添加 /clear 命令清除该用户的会话历史 - 添加 /notes 命令返回最近 10 条笔记 - 添加 /costs 命令显示累计 token 和估算成本 创建所有必要文件:主机器人文件 bot.py、requirements.txt、以及一个 .env 模板文件。 不要硬编码任何 API 密钥,全部从环境变量读取。

Claude Code 会依次生成bot.py、requirements.txt和.env.example。生成完之后,你把.env.example复制成.env,填入真实值。一个典型的.env长这样:

TELEGRAM_BOT_TOKEN=7123456789:AAHxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ANTHROPIC_API_KEY=sk-你的Key ANTHROPIC_BASE_URL=https://taotoken.net/api CLAUDE_MODEL=claude-sonnet-4-6 ALLOWED_USER_ID=你的Telegram用户ID TAVILY_API_KEY=可选的搜索Key

这里ALLOWED_USER_ID是限制只有你能用机器人的关键。怎么找自己的 Telegram 用户 ID?最简单的办法是先不加限制启动机器人,给它发一条消息,日志里会打印出你的from.id,把那串数字填回来即可。

安装依赖并首次启动:

pip install -r requirements.txt python bot.py

如果终端打印出类似Bot started, polling...的字样,说明机器人已经连上 Telegram 了。这时候你在 Telegram 里给机器人发/start,应该能收到欢迎语。

配置 systemd 后台服务。如果你跑在 Linux 服务器上,希望机器人开机自启、崩溃自动重启,让 Claude Code 再生成一个服务文件。继续在 Claude Code 里输入:

创建一个 systemd 服务文件,让这个机器人在我的 Linux VPS 上自动运行,崩溃后自动重启。 服务应满足:服务器启动时自动启动、崩溃后自动重启、从项目文件夹中的 .env 文件加载环境变量、 把日志保存到文件。还要给我写出精确的终端命令:安装服务、启动服务、检查是否在运行、查看日志。

生成的telegram-agent.service大致如下,你把它放到/etc/systemd/system/下:

[Unit] Description=Telegram Claude Agent After=network.target [Service] Type=simple WorkingDirectory=/root/telegram-agent EnvironmentFile=/root/telegram-agent/.env ExecStart=/usr/bin/python3 /root/telegram-agent/bot.py Restart=always RestartSec=5 StandardOutput=append:/root/telegram-agent/bot.log StandardError=append:/root/telegram-agent/bot.log [Install] WantedBy=multi-user.target

然后依次执行:

sudo systemctl daemon-reload sudo systemctl enable telegram-agent sudo systemctl start telegram-agent sudo systemctl status telegram-agent

看到active (running)就说明服务起来了。查看日志用journalctl -u telegram-agent -n 50,或者直接tail -f /root/telegram-agent/bot.log。

添加持久记忆。默认情况下机器人重启会丢失会话历史。让 Claude Code 补一段逻辑:

机器人在重启后会丢失会话历史。修复这个问题。每次用户发消息后, 把该用户的会话历史保存到磁盘上的 JSON 文件。机器人启动时自动加载回来。 每个用户只保留最近 20 条消息,避免上下文窗口过长。

这样即使服务重启,用户之前的对话上下文也能恢复。

4. 端到端验证:从接收指令到调用工具完成任务

配置写完不代表跑通,必须做一次完整的验证。我建议按下面这个顺序走一遍,每一步都有明确的预期结果。

验证一:基础对话。在 Telegram 里给机器人发“你好,介绍一下你自己”。预期是几秒内收到一段回复,内容由 Claude 生成。如果超过 30 秒没反应,去看日志,大概率是 API Key 或 Base URL 配错了。

验证二:会话隔离。用另一个 Telegram 账号给机器人发“我叫小明”,然后用你自己的账号发“我叫什么”。预期是机器人回答“你没有告诉我你的名字”,说明每个用户的上下文是独立的。

验证三:工具调用。这是最关键的一步。给机器人发一条需要多步骤的指令,比如:

帮我搜索今天 AI 领域的一条重要新闻,用 100 字总结,然后保存到笔记里。

如果机器人接入了搜索工具,你会看到它先返回“正在搜索……”,然后给出总结,最后回复“已保存到笔记”。接着你发/notes,应该能看到刚才那条内容带时间戳列出来。这一步跑通,说明你的 Telegram Agent 已经具备“接收指令 → 调用工具 → 完成任务 → 落盘”的完整闭环。

验证四:成本追踪。发/costs,预期返回今天使用的 token 数和估算的美金成本。这个数字不需要精确到分,能看出量级就行。

验证五:权限限制。用一个不在ALLOWED_USER_ID里的账号给机器人发消息,预期收到“这个机器人是私有的”然后被忽略。这一步能防止别人蹭你的 API 额度。

如果五步都过了,恭喜你,一个能自主干活的 Telegram Agent 就跑起来了。接下来你可以按需加技能,比如定时日报、网页搜索、笔记管理,每加一个技能,就是在 Claude Code 里描述一段需求,让它改代码、重启服务。

5. 常见报错排查:401、local proxy failed 与 reading choices

搭建过程中最容易卡住的不是写代码,而是各种连接和鉴权报错。下面这几个是我实际踩过的坑,对照日志里的关键词就能定位。

报错一:401 Unauthorized。日志里出现401或authentication_error,几乎都是 Key 的问题。检查三件事:.env里的ANTHROPIC_API_KEY是不是sk-开头、有没有多余空格、Base URL 是不是写成了https://taotoken.net/api(注意结尾没有斜杠)。如果你在 Claude Code 里也遇到 401,检查~/.claude/settings.json里的ANTHROPIC_BASE_URL和ANTHROPIC_API_KEY是否和.env一致。三件套里 Base URL、Key、Model ID 任何一个不对都会报这个错。

报错二:local proxy failed 或 connection refused。这个通常出现在你本地网络无法直连 API 端点的时候。先确认ANTHROPIC_BASE_URL拼写正确,再用curl https://taotoken.net/api测一下连通性。如果 curl 也失败,说明是网络层的问题,不是代码问题。注意不要在代码里硬编码任何代理地址,全部走环境变量。

报错三:reading 'choices' 或 response parsing error。这个报错说明返回的 JSON 结构和你代码里解析的字段对不上。常见原因是模型 ID 写错了,比如把claude-sonnet-4-6写成了别的名字,导致接口返回了错误结构。检查.env里的CLAUDE_MODEL,确保和你在模型对话页面测试时用的 ID 一致。另外,如果你用的是 OpenAI 格式的解析代码去接 Anthropic 格式的接口,也会出现这个错,让 Claude Code 帮你把解析逻辑改成 Anthropic 的content[0].text结构。

报错四:OAuth 相关错误。如果你在 Claude Code 里看到OAuth token expired或类似提示,说明它还在尝试用官方登录态而不是 API Key。解决办法是显式设置ANTHROPIC_API_KEY环境变量,并在启动 Claude Code 时确认它读取的是 API Key 模式。可以在终端里echo $ANTHROPIC_API_KEY确认变量已生效。

报错五:Telegram 侧无响应但日志正常。如果日志显示消息已收到、API 也返回了,但 Telegram 里收不到回复,检查 Webhook 或 polling 模式是否冲突。用python-telegram-bot的 polling 模式时,不要同时设置 Webhook,否则消息会被 Webhook 抢走。让 Claude Code 确认一下代码里用的是run_polling()还是set_webhook(),二选一。

排查的核心思路就一条:先看日志关键词,再对照三件套(Base URL、Key、Model ID),最后才怀疑代码逻辑。90% 的问题都出在前两步。

6. 把 Agent 用起来:技能扩展与长期维护

跑通之后,这个 Telegram Agent 的价值取决于你给它加多少技能。每加一个技能,本质上就是在 Claude Code 里描述一段新需求,让它改代码、重启服务。下面几个是我觉得最实用的方向。

网页搜索技能。让 Agent 能查实时信息,而不是只靠模型记忆。你可以在 Claude Code 里说:“用搜索 API 给机器人添加网页搜索能力,当用户问需要最新信息的问题时自动搜索,把结果包含在回复里。” 这样它就能处理“今天有什么新闻”这类问题。

笔记与待办技能。让 Agent 把你说的话存下来,之后随时调取。比如“保存这个:周五前提交报告”,之后发/notes就能看到。这个功能配合定时提醒,能变成一个轻量的个人助理。

定时日报技能。让 Agent 每天早上主动给你发一条消息,包含今日重点、一句提醒和一条效率小知识。用APScheduler或schedule库实现,Claude Code 会帮你写好定时逻辑。

成本控制技能。每次 API 调用后记录 token 数,累计到costs.json,发/costs查看。这样你能清楚知道这个 Agent 每月花多少钱,避免额度失控。

长期维护方面,记住三个命令:sudo systemctl restart telegram-agent重启服务、sudo systemctl status telegram-agent看运行状态、journalctl -u telegram-agent -n 50看最近日志。改完代码一定要重启,否则跑的还是旧逻辑。

如果你想让 Agent 更自主,可以逐步把“需要你明确指令”变成“按计划自动执行”。比如让它每天早上自动搜索一次行业新闻、整理成摘要发给你,全程不需要你发消息。这就是从“多步骤工作流”往“完全自主 Agent”迈进的一步。

最后说一句实在的:Agent 的价值不在于它多智能,而在于它把你从重复劳动里解放出来。你花 20 分钟搭的这个 Telegram Agent,之后每天能帮你省下的时间,远超搭建成本。想继续深入的话,可以去 TaoToken 的接入文档页面https://taotoken.net/doc看更多接口细节,或者在模型对话页面https://taotoken.net/model-chat里先试不同模型的效果,再决定你的 Agent 用哪个。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询