☰
AI Agent最佳实践:用代码让AI修复bug,构建高效智能应用(收藏版)
2026/10/21 2:27:11 网站建设 项目流程

本文深入浅出地讲解了AI Agent的工作原理和最佳实践,从模型编码、多轮对话到工具调用,详细阐述了Agent如何根据任务需求选择执行路径。文章还介绍了AI Agent的工程底座,包括运行控制器、模型、工具、状态、治理与外部系统等关键组成部分,并通过实例展示了如何实现一个具有明确完成标准的智能应用。对于想要了解AI Agent并实践开发的小白和程序员来说,本文提供了宝贵的指导。

大家接触AI也好长时间了,今天我们理论结合实际重新讲一讲 AI Agent 及最佳实践。

给 AI 一段代码,让它解释为什么报错;把整个项目交给 AI,让它找到问题、修改文件、运行测试。这两件事用的可能是同一个模型,完成任务的方式却相差很大。

一种情况,模型生成回答,后面的工作由人接手。另一种情况,由程序替它读取文件、执行命令,把结果送回来,它再决定下一步。我们讨论的 AI Agent,主要就工作在这样的循环里。

理解 Agent,最有用的起点,是看清一次任务中谁负责判断、谁负责执行、结果又怎样影响下一步。

假设有一个 企业级Java 项目,用户提出:“修复订单查询的空指针问题,保持接口行为不变,并验证相关测试。”下面用这个任务拆解系统怎样工作。

模型处理文本时,会先把文字编码成 Token。Token 可以对应一个字、几个字、一段英文,也可能只是字符的一部分。它与字数没有固定换算关系,具体切分由分词器决定。

这里先讨论文本输入。支持多模态的模型还可以接收图片、音频等信息,但这些输入的编码和用量计算各有规则,不能直接套用文本的切分方式。

例如,使用 OpenAI 开源分词器 tiktoken 的o200k_base编码,“今天天气怎么样”会被切成“今”“天天”“气”“怎么样”四段。这个结果属于特定编码,不能推广成所有模型都这样切。想核对自己使用的编码,可以查看 tiktoken 项目。

对于常见的自回归文本模型,生成过程可以理解为:参考当前输入和已经生成的内容,计算下一个 Token 的分布,按解码策略选出一个,再继续往下生成。模型学到的语言规律、知识与推理能力,会参与这个过程。

文字怎样变成 Token,再逐步生成回答

图里的循环发生在一次生成内部。后面还会出现另一种循环:模型提出操作,工具执行,结果回来后再调用模型。两者分别发生在生成和任务执行这两个层面。

“预测下一个 Token”描述了生成机制,却不足以概括模型的全部能力。模型可能经过指令训练、推理训练,也可以利用输入中的证据作判断。但流畅的回答仍不等于事实正确;训练中学到的知识也不会随着世界变化自动更新。需要最新信息时,应用得把搜索结果、文件或业务数据提供给它。

同一个问题得到不同答案,可能与采样、输入差异或服务执行条件有关。反过来,把随机性调低,也不能让模型获得原本缺失的事实。

这就引出了对话里最容易产生的错觉:界面一直开着,模型是不是就一直记着我们说过的话?

在常见的模型调用方式中,多轮对话依赖应用或模型服务维护上下文。第一次说“这个项目使用 Java 17”,第二次只问“能用虚拟线程吗”,如果第二次调用没有带上前面的条件,模型就缺少作出正确判断所需的信息。

最直接的实现,是把历史消息再次放进请求。系统也可以只保留近期消息、加载摘要、检索相关历史,或者通过服务端会话标识接续状态。因此,“每轮都把从第一句话开始的全部历史原封不动重发”,只是某种实现,不能当成多轮对话的统一规则。OpenAI 的会话状态文档同时介绍了手动传入历史与服务端接续方式。

模型本轮实际能参考的内容,就是当前上下文。它往往包括应用指令、用户需求、选中的对话记录、工具定义,以及文件或工具返回的数据。

聊天记录、任务状态与本轮上下文的区别

保存在系统里的内容,只有被选入本轮输入,才会成为模型这一次可用的信息。 你还能在聊天界面翻到某句话,并不说明这句话的原文仍在当前上下文里。

这里还要区分内容与角色。系统或开发者指令、用户请求、工具返回的网页,都可能以文本形式出现,但它们的职责、优先级与可信程度不同。网页里写着“忽略之前要求”,不应因此变成应用的新规则。主流模型接口通过消息角色表达这些差异,具体规则应遵循所用接口的指令与角色约定。

回到改代码的例子。即使模型已经理解需求,它也不会凭空得到仓库文件。应用需要提供一个读取文件的工具,并告诉模型工具名称、用途和参数要求。

模型随后可能生成类似下面的请求。为便于阅读,这里采用简化的业务结构,真实接口的字段以各自协议为准:

{ "name": "read_file", "arguments": { "path": "src/main/java/example/OrderService.java" } }

收到它以后,外层程序先检查参数与访问权限,再执行文件读取,把结果关联到这次调用并送回模型。读取失败,也应返回明确的错误信息。

这里发生了一个重要变化:模型生成的部分内容,被系统当成了可以执行的操作请求。这就是工具调用。自定义工具一般由应用侧代码执行;托管搜索、代码执行等工具也可能由模型服务提供方运行。无论执行器部署在哪里,都需要模型之外的系统把请求变成真实操作。Function calling 文档给出了这一往返过程。

如果外层程序只执行一次读取,然后结束,那么它还不能持续完成改码任务。读完OrderService.java,模型可能发现问题在下游返回值;继续查调用方,又发现直接返回空集合会改变原接口的异常行为。接着,它需要补一个能复现问题的测试,再修改代码、运行回归。

下一步读哪个文件、是否需要修改、测试失败后查哪里,都取决于新得到的信息。当模型能够根据目标和环境反馈选择后续行动,并由运行时持续衔接这些操作时,就形成了常见的 Agent 工作方式。

与之相邻的是工作流:步骤和主要分支预先写好,模型只负责其中某些节点。这种区分关注谁控制执行路径。业务规则明确、错误代价高的部分,保留确定性流程往往更容易验证;需要探索未知材料的部分,可以交给模型选择。两者可以组合使用。Anthropic 对工作流与 Agent 的说明采用了类似划分。

Agent 如何根据工具反馈继续行动,以及何时暂停或结束

图中的外层循环还要处理模型之外的事件:用户追加要求、取消任务,某个动作需要授权,调用超时,或者剩余预算不足。收到工具结果之后,运行时也要先检查任务是否还允许继续。

“模型没再调用工具”只能说明这次生成没有提出更多工具请求。它可能给出了最终回答,也可能在等待用户补充信息,甚至发生了异常停止。任务结束还要结合响应状态与完成标准判断。在改码场景里,“已经修好了”只是模型的陈述;修改差异、测试退出码和测试报告,才是核对结果的依据。

把这些外层工作放在一起,就得到了通常所说的 Harness,也就是让模型持续工作的运行环境与控制程序。它组织输入、衔接调用、管理工具执行,也保存过程和实施约束。

“Agent = Model + Harness”适合作为工程拆解的视角,不必把它当成唯一正式定义。一个应用可以在同一套运行时里接入不同模型;同一个模型也可以服务不同应用。即便模型相同,上下文选择、工具设计、反馈质量和停止条件不同,任务表现也可能不同。

下面把底座展开。它是一张通用参考架构,按职责分区,不表示每一块都要部署成独立服务。手机上先沿粗箭头读主链路,细项可以打开原图放大;虚线标记的是按任务需要引入的能力。

AI Agent 工程底座全景:入口、运行时、模型、工具、状态、治理与外部系统

这张图最值得先看的位置,是中间的运行控制器。它掌握任务是否继续的决定权,并把模型调用、工具调用、状态记录连接起来。模型负责提出下一步建议,运行时负责按协议和授权执行;外部系统仍拥有自己的业务规则。

实现时可以从一条很小的链路开始:接收任务,准备上下文,调用模型,执行获准工具,记录结果,再决定继续或返回。加入轮次、时间和费用上限,就能避免没有边界地循环。

随后按真实需求补能力。任务需要中断后接续,再增加持久化检查点;经常查大量外部资料,再引入检索;确有跨会话复用价值,再建设长期记忆;出现适合独立处理的子任务,再考虑多 Agent。架构图给出了职责位置,具体系统不需要一次装满所有模块。

其中最容易混在一起的,是上下文、记忆与任务状态。

上下文回答“这一次给模型看什么”。任务状态回答“系统已经做到了哪一步”。长期记忆回答“哪些信息值得在未来的任务中再次使用”。它们可以共享存储设施,却不能用一份越来越长的聊天记录替代全部职责。

例如,模型需要知道“订单接口必须保持原有异常语义”,这是本轮的重要约束。运行时需要知道“测试命令已经发出,还没收到退出状态”,这是执行状态。以后还要遵守这个项目的 Java 版本与编码规范,则可以把这些稳定信息存成项目资料或可检索记忆。

跨会话记忆一般需要外部存储和读取过程。记录偏好或项目约定后,系统还得判断本次任务是否相关、信息是否过期、来源是否可靠。把过时约定自动塞回上下文,可能比没有记忆更糟。RAG,也就是检索增强生成,可以用于找回资料;它既不是全部记忆机制,也不是每个 Agent 的必需组件。

历史越长,组织上下文就越重要。上下文窗口有容量限制,输入还要与输出及相关推理内容共享预算,具体计算方式由模型接口决定。超过限制后,系统可能拒绝请求、截断内容或触发压缩,不能笼统地说模型“直接罢工”。

即使没有达到容量上限,也会遇到问题:大量重复日志占据输入,旧指令与新要求相互冲突,真正决定答案的条件没有被检索出来。继续追加信息,未必能改善结果。

处理长任务,可以丢弃已无用的工具输出,把关键决策写成结构化笔记,或者将较早历史压缩为摘要。摘要应保留当前目标、约束、已完成事项、尚未解决的问题,以及能找回原始材料的位置。Anthropic 的上下文工程文章讨论了压缩与外部笔记的用途和取舍。

压缩会引入信息丢失的风险,但“聊久了回答变差”不能只归因于压缩。实际排查时,先确认本轮是否拿到了必要事实,再看工具反馈是否完整、指令是否冲突、摘要是否遗漏关键条件。必要时重新读取原文件或测试结果,比反复提醒模型“认真一点”更直接。

任务状态还涉及一个更现实的问题:恢复对话,不会让外部世界退回原点。

文件可能已经被修改,邮件可能已经发出,远程系统也可能已经受理了请求。检查点能保存进度,但恢复过程中如果某一步被重放,副作用就可能重复发生。支持持久化执行的框架,也需要认真处理重放与副作用的关系,例如 LangGraph 的持久化机制。

因此,写入操作需要利用下游实际支持的幂等键、业务流水号或回执查询。请求超时,只说明调用方没有及时收到结果,不能直接推断远端未执行。应该先查询状态,再决定是否重试。模型可以帮助理解结果,业务执行边界应由程序落实。

到这里,Agent 已经能读取材料、执行操作并持续推进。接下来要解决的是接入更多能力。

假设排查订单问题时,还需要查询日志系统、读取接口文档。应用当然可以直接调用内部 API,也可以运行已有 CLI。只是每接入一套系统,都可能要重新实现一套连接逻辑。

MCP,全称 Model Context Protocol,是一种标准化的连接协议。宿主应用通过 MCP 客户端连接 MCP 服务端,发现并调用服务端提供的能力。工具之外,协议还可以提供资源和提示模板。

以工具为例,tools/list用于发现工具,tools/call用于请求执行。客户端、服务端还要遵守所用协议版本的能力与传输约定。接入成功以后,工具是否对某个用户开放、是否需要确认、返回结果怎样进入模型上下文,仍然属于宿主与业务系统的职责。

MCP 没有规定所有工具定义必须在每一轮全部交给模型。 它规范的是连接与交换方式。一次全部提供、先搜索再加载、只暴露本任务所需的一组工具,属于应用的上下文策略。官方架构说明明确划分了这个边界,也介绍了渐进式工具发现。

所以,工具很多导致上下文变长,应该检查宿主怎样发现和选择工具,不能仅凭“接入了 MCP”就断定必然浪费某个固定比例的上下文。

Skill 解决的是另一个问题:如何把一类任务的工作方法、注意事项和配套资源整理成能被 Agent 使用的材料。

Skill、MCP、CLI 与工具调用分别位于哪里

例如,一个“查询线上日志”的 Skill 可以写清:先确定环境和时间范围,用请求 ID 查关联记录,必要时扩展到上下游,输出结论时保留原始日志位置。至于查询动作,可以调用 MCP 工具,也可以使用已有 CLI 或应用内置函数。

Skill 提供工作方法,工具完成具体动作,MCP 可以连接其中的工具服务。它们可以出现在同一条任务链上,不能简单画成互相替代的三个方案。

按 Agent Skills 规范,一个 Skill 至少包含SKILL.md,也可以附带脚本、资料与资源文件。它的渐进加载通常分成三层:先看到名称和简短描述;确定与任务相关后加载主要说明;执行时再读取必要资料或运行配套脚本。

Skill 的目录结构与按需加载过程

这能减少一开始就加载大量无关内容的情况,但不代表使用 Skill 永远更省 Token。说明很长、描述模糊导致误触发、反复读取同一批文件,都可能增加消耗。已经加载的内容是否以及何时移出后续上下文,也取决于宿主策略。

Skill 本身不会授予新的访问权限,更不会自动学进模型参数。一个涉及数据库的 Skill,仍然需要可用工具、有效连接和相应授权。把一套操作说明写进 Markdown,与让业务系统允许这套操作,是两件需要分别完成的事。

还剩两个常被混为“模型能力”的因素:思考强度和缓存。

支持推理的模型可以使用内部推理 Token 来拆解问题、比较方案或检查中间结果。这些内容不一定完整呈现在界面上,界面显示的思考摘要也不能当作全部内部计算过程。

思考强度通常用于调节模型投入的推理工作量,具体选项和行为因模型而异。更高强度可能增加耗时与消耗,但不能保证每道题都答得更好。OpenAI 的推理文档说明了推理 Token、预算与输出之间的关系。

用回订单修复的例子:判断多处调用之间的行为约束,可能值得投入更多推理;按已经确认的命令运行测试,主要依赖执行器。遇到文件没读到、工具没权限或接口超时,先修复这些条件,继续增加思考预算解决不了输入和执行缺口。

缓存则主要影响重复计算。

在基于 Transformer 的自回归生成中,KV Cache 保存注意力计算所需的键和值,供后续 Token 复用。它与“保存聊天记录”处在不同层面,可以结合 Hugging Face 的缓存说明理解。

模型服务还可以在请求之间复用相同前缀的计算结果,这通常称为提示缓存。比如连续两轮请求都以同一套应用指令、工具定义和既有历史开头,第二轮只是追加了测试结果,那么已有前缀就可能被复用。

这里缓存的是可复用的计算状态。模型仍然根据本次完整输入生成回答,不是找到上一次的答案原样返回。

是否命中,还取决于前缀内容、缓存条目是否存在、有效期限,以及服务规定的缓存边界。前缀相同是重要条件,却不构成命中保证。应用可以让稳定内容尽量保持一致,把变化信息放在后面;不能为提高命中率保留已经错误的上下文。提示缓存文档详细说明了这些条件。

上下文压缩也会改变其中一部分前缀,可能使刚压缩后的请求少命中一些缓存;同时,它又减少了后续输入量。应该比较一段任务的总耗时和总费用,单看命中率不足以判断好坏。

如果只发了一句“继续”,消耗却明显增加,应该查本次输入量、缓存命中、推理 Token 和工具循环次数。仅凭界面上的一句话,既看不出实际工作量,也不能断定一定是缓存过期。

当系统能真正修改文件、发送请求,权限问题就必须进入架构。

提示词可以表达要求,执行器还需要落实访问范围。沙箱通过操作系统、容器或虚拟机等机制,限制程序能读写哪些文件、访问哪些网络资源。它给获准操作划出执行范围,让程序不必单靠模型理解规则来约束行为。Anthropic 的沙箱设计说明了文件系统与网络隔离如何配合。

但沙箱中的程序仍可能改坏允许修改的文件。一个获准访问真实账号的工具,也仍然可能产生真实业务影响。因此,工具授权、凭据范围、写入确认与回执检查需要单独设计。

在这个订单项目里,可以允许 Agent 读取仓库、修改指定目录、运行相关测试;访问生产数据则走受限接口,发布或变更生产配置按明确授权执行。代码检查和测试有问题,就让任务报告当前进度和阻塞原因,不要把“循环已经结束”显示成“业务已经完成”。

做底座时,还应保存足够的执行记录:本轮采用了哪些上下文,模型请求了哪个工具,参数是什么,执行耗时多久,结果属于成功、失败还是未知。敏感字段按需要脱敏。缺少这些记录,Agent 出错后就很难分清是没拿到资料、选错操作,还是下游根本没有执行成功。

这些记录也能成为评估材料。可以挑选一组真实任务,核对最终产物、必要步骤和成本;修改提示词、工具描述或上下文策略以后,再看这些任务的表现有没有变化。模型自述“完成得很好”,不能代替这个

大模型的知识又多又杂,到底怎么学?

做这行久了,被问最多的问题就一个:大模型的知识又多又杂,我到底先学啥?翻了一堆资料,看啥都像重点,结果啥都没学进去。今天把我自己一路摸出来的顺序捋一遍,零基础、应届生、转行的都适用。跟着走,至少方向不乱、不瞎忙,学完拿得出手。

第一阶段(10天):初阶应用

这一阶段就一个目标:把大模型真正"玩明白",不是只会聊天那种,而是能调教它、能用代码把大模型和业务接起来。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范
  • …
第二阶段(30天):高阶应用

这阶段正式进实战,目标很实在:做出两个能拿出手的东西——一个私有知识库,一个 agent 对话机器人。

  • 为什么要做 RAG

  • 搭建一个简单的 ChatPDF

  • 检索的基础概念

  • 什么是向量表示(Embeddings)

  • 向量数据库与向量检索

  • 基于向量检索的 RAG

  • 搭建 RAG 系统的扩展知识

  • 混合检索与 RAG-Fusion 简介

  • 向量模型本地部署

  • …

走完这 30 天,Python 或 JavaScript 背景的基本能独立做一套 RAG 应用,简历上也敢写"大模型应用开发"了。

第三阶段(约20天):动手微调

学到这,你已经开始 “造” 模型了 —— 通过微调,搞出垂直领域的专用小模型。

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建
  • …

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你从 “只会用” 变成 “能造” 的 AI 小子。那么你还想往下探索吗?

想要入局AI大模型赛道、抢占行业红利的朋友,微信扫描下方CSDN官方认证二维码,即可100%免费领取全套学习资料!

第四阶段(20天):商业闭环,部署落地

技术学完,落地才算数。这阶段带你搞明白大模型怎么真正跑起来、用起来。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案
  • …

想要入坑大模型的朋友,给大家准备了一份2026 年最新 AI 大模型全套学习资料:

1、大模型系统化学习路线

2、大模型学习视频教程

3、大模型学习书籍&电子文档

4、AI大模型最新行业报告

5、大模型项目实战&配套源码

6、2026大模型大厂面试真题

7、为什么要学习大模型?

我国在A大模型领域面临人才短缺,数量与质量均落后于发达国家。2023年,人才缺口已超百万,凸显培养不足。随着AI技术飞速发展,预计到2025年,这一缺口将急剧扩大至400万,严重制约我国AI产业的创新步伐。加强人才培养,优化教育体系,国际合作并进是破解困局、推动AI发展的关键。

8、适合谁学?
  • 传统后端 / Java / 前端开发,想转型 AI 应用
  • 大学生、应届生,想拿更好的 offer
  • 产品经理、运营,想武装职业竞争力
  • 技术负责人,想给团队落地提效

学习是反人性的,但回报是真金白银。技术会更新,赛道会切换,但只要你先动手,机会就永远站在你这边。

9、这些资料真的有用吗?

这份资料由我和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理,现任上海殷泊信息科技CEO,其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证,服务航天科工、国家电网等1000+企业,以第一作者在IEEE Transactions发表论文50+篇,获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。

资料内容涵盖了从入门到进阶的各类视频教程和实战项目,无论你是小白还是有些技术基础的技术人员,这份资料都绝对能帮助你提升薪资待遇,转行大模型岗位。

想要入局AI大模型赛道、抢占行业红利的朋友,微信扫描下方CSDN官方认证二维码,即可100%免费领取全套学习资料!

好了,就写到这。路线是死的,人是活的,卡住了随时来问我。觉得有用就点个收藏,别让它进收藏夹吃灰——动起来比啥都强。

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

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

立即咨询