AI Agent:深度解析与从零构建指南

@AnatoliKopadze
АНГЛІЙСЬКА2 місяці тому · 08 черв. 2026 р.
384K
200
30
14
526

Коротко

深入剖析 AI Agent 架构,并提供实操教程,教你部署一个具备持久化记忆和网络搜索功能的 Claude 驱动型 Telegram 机器人。

大家都在谈论 AI 代理。但如果你问大多数人代理到底是什么,得到的回答往往模棱两可,说是“能自主做事的 AI”。

实际情况比这更有用处。代理不是一种类别,而是一个光谱。

本指南将解释不同 AI 工具在这个光谱上处于什么位置,基本的 LLM 交互与真正的代理工作流之间有何区别,以及如何用 Claude Code 构建你自己的代理,并将其连接到 Telegram,这一切都无需你亲手编写代码。

开始之前,请在 X 上关注我,并加入我刚刚创建的 Telegram 频道,我每天都会在那里发布更多 AI 内容。两者都是免费的。

X - https://x.com/AnatoliKopadze

Telegram - https://t.me/kopadzemp

什么构成了代理

问 Claude “我今天该发什么?” 这不是代理。这是聊天。

告诉 Claude “找出当前 AI 领域最热门的三个话题,选一个最有互动潜力的,用我的风格写一篇帖子,然后保存到文件里”,并且让它在你完全不干预的情况下完成所有步骤——这才是代理。

区别不在于模型,而在于围绕它的结构。

一个代理拥有普通聊天所没有的三样东西:它可以自行调用的工具,如搜索、文件系统、代码执行、外部 API;能够跨任务持久化的记忆,而不仅仅局限在一个会话中;以及一个持续运行直到任务完成,而非生成一次回复就结束的循环。

你添加的这三样东西越多,你介入的程度就越少。这就是核心理念。

光谱:从聊天到代理

在一端是基本的聊天。你提问,Claude 回答,会话结束。没有工具,没有持续的目标,没有在现实世界中行动的能力。

向上一步:启用了工具的 Claude。当 Claude 在回答前搜索网络、读取附件或生成图片时,它已经具备了一点代理性。你没有一步步告诉它去做那些事,它自己决定需要这么做。

再往上:多步骤工作流。你给一个目标,Claude 将其分解成步骤,执行每一步,检查结果,并交付最终产出。你在步骤之间无需干预。

最顶端:完全自主的代理。代理按计划运行,监控输入,调用外部服务,并在没有人工参与的情况下完成复杂任务。你只需设定一次目标,然后检查输出结果。

从底端到顶端的差异并非模型不同,而是围绕模型的东西不同:它可以调用的工具、承载上下文的记忆,以及持续运行直到任务完成的循环。

你今天可以构建的代理类型

为了让您了解代理如今的实际形态,我在下面整理了一些例子。这些并非限制——你可以根据自身情况构建任何你需要的代理。

研究代理: 收集某个主题的信息,阅读多个来源,提取关键内容,并交付一份结构化的摘要。你给它一个问题,它给你一个答案——如果人工收集可能要花上好几个小时。

写作代理: 根据你定义的系统来创作内容。告诉它你的语调、格式、受众和主题。它负责处理草稿、重写和编辑,无需你管理每个句子。

代码代理: 编写代码、运行代码、读取错误、修复错误并继续。你描述代码应实现的功能,代理则处理实现和调试循环。

商务代理: 处理重复性的商务任务:撰写邮件、处理客户请求、筛选潜在客户、生成报告。一旦你定义好规则,它就能在自动模式下运行。

个人代理: 管理你的日程、组织任务、准备简报,并处理你每天手动完成的规划工作。

构建你的第一个代理——从这里开始

你将使用 Claude Code 来构建一个 Telegram 机器人,它运行在远程服务器上,并以 Claude 作为其大脑。Claude Code 会为你编写所有代码,你只需用纯英语描述你想要的。设置完成后,所有与机器人的通信都直接在 Telegram 中进行。

整个设置大约需要 10-20 分钟。你不需要懂编码。

系统提示模板——粘贴到提示 2 中

当你运行下方设置中的提示 2 时,你需要描述你想要什么样的代理。以下是现成的模板,复制适合你的那个,粘贴到提示 2 中“代理应具备以下能力:”的位置,Claude Code 就会构建出相应的代理。根据你的情况调整任何细节。

研究代理

text
1你是一个研究代理。你的工作是收集、分析和综合我给你的任何主题的信息。
2
3当接到研究任务时:
41. 确定需要回答的 3-5 个最重要的子问题
52. 搜索每个子问题的相关信息
63. 评估每个来源的质量和相关性
74. 只提取直接回答问题的内容
85. 交付一份结构化摘要,包含:关键发现、支持证据以及你未能填补的空白
9
10格式:使用标题、要点和清晰的部分。
11如果你对某事不确定,请明确说明。
12不要添加填充内容。每个句子都应包含信息。

写作代理

text
1你是一个写作代理。你用我的口吻和风格来写作。
2
3我的风格:
4- 会话式、直接、不使用企业语言
5- 句子和段落简短
6- 使用具体数字和例子,而非模糊的断言
7- 始终以读者应该做或思考的事情结尾
8
9当接到写作任务时:
101. 如果没有提供主题、受众和期望长度,请先询问
112. 写出初稿
123. 根据我的风格规则进行复核
134. 交付最终版本,准备发布
14
15不要添加不必要的引言。从最重要的点开始。

代码代理

text
1你是一个代码代理。你的工作是编写、调试和改进代码。
2
3当接到编码任务时:
41. 确认你对代码应实现功能的理解
52. 编写带有清晰注释的解决方案
63. 识别任何边界情况或潜在故障
74. 如果出现错误,在寻求帮助前系统地调试它们
8
9规则:
10- 编写干净、可读性强的代码,使用有意义的变量名
11- 始终包含错误处理
12- 用通俗的语言解释每个主要部分的作用
13- 如果你对需求不确定,在继续之前先问一个澄清性问题

商务邮件代理

text
1你是一个商务邮件代理。你代表我撰写专业的邮件。
2
3我的沟通风格:
4- 直接且尊重对方
5- 没有不必要的繁文缛节
6- 在第一句话中就点明主题
7- 以清晰的下一步行动收尾
8
9当接到邮件任务时:
101. 确定邮件的目标(通知、请求、跟进、确认)
112. 写一个反映邮件目的的主题行
123. 将邮件草稿控制在最多 3-5 个短段落内
134. 以一个明确的行动项或下一步收尾
14
15始终写出可以直接发送的邮件,而不是留有空白待填写的模板。

个人规划代理

text
1你是我的个人规划代理。你帮助我组织工作、确定任务优先级并规划我的一周。
2
3当我分享我的任务或目标时:
41. 判断哪些是紧急的,哪些是重要的
52. 根据依赖关系建议一个切实可行的顺序
63. 估算每项任务所需的时间
74. 标记出任何可以委派或取消的任务
8
9当我描述一个项目时:
10- 将其分解为具体的下一步行动
11- 确定最应该优先做的一件事
12- 创建一个我可以遵循的简单清单
13
14一切保持实用。不要有打鸡血的空话。只要计划。

开始之前你需要准备什么

1 - 来自 console.anthropic.com 的 Claude API 密钥。这是一个开发者密钥,按使用量付费,而非固定的月费。对于一个每天发送 50 条消息的个人机器人,根据你选择的模型,每月费用约为 1-5 美元。

2 - 来自 BotFather 的 Telegram 机器人令牌。

3 - 一台运行 Linux 的 VPS。对于个人 Telegram 机器人,你不需要强大的配置——1 个 CPU、1GB 内存和 20GB 存储空间绰绰有余。DigitalOcean、Hetzner 或 Vultr 的任何基础套餐都可以,每月费用约为 4 到 6 美元。有了服务器后,在你的终端中运行 npm i -g @anthropic-ai/claude-code 来安装 Claude Code。

为你的机器人选择哪个 Claude 模型以及实际成本是多少:

Anatoli Kopadze - inline image

对于大多数个人机器人,Sonnet 4.6 是正确的选择,它足以胜任任何任务,并且日常使用成本低廉。如果你想降低成本,可以使用 Haiku 4.5。只有当你想构建一个复杂的分析型代理,且答案质量至关重要时,才应考虑 Opus 4.8。

构建你的第一个代理——步骤 1

打开你的 VPS 终端并启动 Claude Code。粘贴以下提示,让它构建所有内容。

给代理赋予个性

text
1为我构建一个使用 Claude API 作为其大脑的 Telegram 机器人。
2
3要求:
4- 语言:Python
5- 用于 Telegram 的库:python-telegram-bot
6- Claude 模型:claude-sonnet-4-6
7- 机器人接收消息,将其发送给 Claude API,并将 Claude 的响应返回给 Telegram
8- 维护每个用户的会话历史——每个用户在会话内拥有自己的上下文
9- 添加一个 /start 命令来介绍机器人
10- 添加一个 /clear 命令来重置该用户的会话历史
11
12创建所有必要的文件:主机器人文件、requirements.txt 和一个用于 API 密钥的 .env 文件模板。
13不要硬编码任何 API 密钥——从环境变量中读取它们。

部署为后台服务

text
1创建一个 systemd 服务文件,使这个机器人能在我的 Linux VPS 上自动运行,并在崩溃时自动重启。
2
3该服务应:
4- 在服务器启动时自动启动
5- 在崩溃时自动重启
6- 从项目文件夹中的 .env 文件加载环境变量
7- 将日志保存到一个我稍后可以查看的文件中
8
9同时,给我写下用于安装服务、启动服务、检查服务是否正在运行以及查看日志的确切终端命令。

添加会话之间的持久记忆

text
1机器人重启时会丢失会话历史。修复这个问题。
2
3在每条消息之后,将每个用户的会话历史保存到磁盘上的一个 JSON 文件中。当机器人启动时,自动加载它。
4添加一个最大历史长度限制——每个用户只保留最近 20 条消息,这样上下文窗口就不会过长。

为你的 Claude Code 机器人添加技能

技能是你随时间推移为机器人添加的能力。每项技能都是你给 Claude Code 的一个新提示,它会编写代码使其工作。以下是最有用的一些技能。

技能:网络搜索

你的代理可以查找实时信息,而不仅仅依靠记忆来回答。

text
1使用 Tavily API 为机器人添加网络搜索功能。
2
3当用户询问需要当前信息——新闻、价格、近期事件——的问题时,机器人会自动搜索网络并将结果包含在其响应中。
4
5机器人应自行决定何时搜索,何时依靠记忆回答。将 TAVILY_API_KEY 添加到 .env 文件模板中。
6使用 Claude 的工具使用功能来干净地实现这一功能。

技能:保存笔记

你的代理可以将你告诉它的任何内容保存到文件中——想法、任务、研究发现——并在以后检索它们。

text
1为机器人添加笔记保存功能。
2
3当用户说“保存这个”、“记住这个”或“笔记:”时,机器人将内容连同时间戳保存到一个 notes.txt 文件中。
4添加一个 /notes 命令,返回最近保存的 10 条笔记。
5添加一个 /clearnotes 命令,删除所有已保存的笔记。

技能:仅限你的账户使用

默认情况下,任何找到你的机器人的人都可以使用它并消耗你的 API 额度。此设置将其锁定为仅供你使用。

text
1为机器人添加用户限制,使其仅供我使用。
2将我的 Telegram 用户 ID 添加到 .env 文件中,作为 ALLOWED_USER_ID。
3如果其他任何人给机器人发消息,它应回复“此机器人为私人所有。”并忽略该用户的所有后续消息。
4另外,添加我如何找到自己 Telegram 用户 ID 的方法——可以通过机器人本身或其他方式。

技能:跟踪 API 成本

Claude API 按 token 收费。此功能添加一个简单的成本跟踪器,让你随时了解自己的花费。

text
1为机器人添加基本的成本跟踪功能。
2在每次 Claude API 响应后,记录所使用的输入 token 数和输出 token 数。
3在 costs.json 文件中保持一个运行中的总计。
4添加一个 /costs 命令,显示:今日累计使用的 token 总数、历史累计使用的 token 总数,以及基于 claude-sonnet-4-6 定价的预估美元成本。

技能:定时每日简报

代理每天早晨自动给你发送一条消息,无需你询问。

text
1为机器人添加定时每日简报功能。
2每天早上 8:00,机器人向我发送一条消息,内容包括:
31. 一句鼓舞人心的话(简短,不肉麻)
42. 提醒我查看当天最重要的优先事项
53. 一个关于生产力或 AI 的随机实用小知识
6发送到 .env 文件中的我的 Telegram 用户 ID。
7使用 schedule 或 APScheduler 库来实现此功能。

设置完成后需要了解的有用信息

如何更新代理的个性。打开主机器人文件,找到顶部的系统提示变量,修改它,保存文件,然后用 sudo systemctl restart your-bot-name 重启服务。新的个性会立即生效。

如何检查机器人是否在运行。在你的终端中运行 sudo systemctl status your-bot-name。如果显示“active (running)”,则表示正在工作。如果显示“failed”,请检查日志。

如何读取日志。运行 journalctl -u your-bot-name -n 50 来查看最近 50 行日志。如果出现问题,你可以在这里找到错误信息。

如何添加新技能。在你的项目文件夹中打开 Claude Code,描述你想要的功能:“为机器人添加 X 功能。”Claude Code 会读取你现有的代码,干净地添加新功能,并告知你是否需要重启。

每个代理都会遇到的记忆问题

这是人们最常遇到的问题。代理会在会话之间、处理长任务期间、收到过多消息后丢失上下文,然后开始犯错,或重复已经完成的工作。

发生这种情况的方式有三种:

长任务最终会超出 Claude 的上下文限制,代理开始丢失对话的开头部分:最初的目标、已经做出的决定、你设定的约束条件。

当你关闭一个会话并打开一个新会话时,代理从零开始。

如果代理在任务中途被中断,它无法知道自己停在了哪里。

有四件事可以解决这个问题:

告诉代理在每完成一个重要步骤后写一条进度记录:完成了什么,决定了什么,还需要做什么。在下一次会话开始时粘贴这条记录,以恢复完整的上下文。

每十到十五条消息,让代理总结一下目前的状态。这强制它在上下文溢出之前进行压缩。

在对话变得过长之前,让代理把所有内容压缩成一个简短摘要,然后继续。这样对话线索得以保持完整。

将你的代理始终需要的关键事实直接添加到机器人代码的系统提示中。Claude 在每次对话开始时都会读取这个提示,因此无论对话进行多久,这些信息始终在上下文中。

检查点提示

text
1在我们继续之前,请写一个简短的检查点:
21. 到目前为止你完成了什么?
32. 本次会话的关键决定或发现是什么?
43. 还有哪些工作需要完成?
54. 如果要在新会话中继续这项任务,你需要哪些上下文?
6
7控制在 200 字以内。

记忆文件提示

text
1在完成每个主要步骤后,按以下格式写一条记忆笔记:
2
3已完成的步骤:[完成了什么]
4关键决定:[做出了什么选择以及原因]
5当前状态:[任务目前处于什么阶段]
6下一步:[接下来应该做什么]
7
8这条笔记将用于在新会话中恢复任务,而不会丢失上下文。

上下文恢复提示

text
1我们将从之前的会话中恢复一项任务。以下是上下文:
2
3[在此处粘贴你的记忆笔记]
4
5基于此:
61. 确认你对当前进展的理解
72. 确定下一步
83. 提出任何需要澄清的问题以继续
9
10不要重复已完成的工作。

滚动摘要提示

text
1对话变长了。将所有重要内容压缩成一个摘要:
2
31. 原始目标
42. 已经完成的工作和发现
53. 做出的关键决定
64. 还需要做什么
7
8写完摘要后,从此处继续。将此摘要视为新的起点。

你现在知道了代理是什么,它们能做什么,以及如何自己构建一个。希望这对你有用。

如果你想了解 AI 领域的最新动态,请在 X 和 Telegram 上关注我。

X - https://x.com/AnatoliKopadze

Telegram - https://t.me/kopadzemp

Переробити в YouMind

Перетворіть одну віральну статтю на повноцінний робочий процес

Збирайте джерела, розшифровуйте патерни, створюйте матеріали, пишіть чернетки та поширюйте контент в одному AI-робочому просторі.

Дослідити YouMind
Для авторів

Перетворіть свій Markdown на охайну статтю для 𝕏

Коли ви публікуєте власні лонгріди, зображення, таблиці та блоки коду роблять форматування в 𝕏 складним. YouMind перетворює повну чернетку в Markdown на чисту статтю для 𝕏, готову до публікації.

Спробувати Markdown для 𝕏

Більше патернів для аналізу

Останні віральні статті

Переглянути більше віральних статей