Appearance
Agent 开发 FAQ
这篇文章集中回答一下学习和开发 Agent 时经常遇到的问题。
学习 Agent 需要什么基础
没有编程基础,可以学 Agent 吗?
可以。
如果只是想先理解 Agent 是什么、MCP 怎么用、Agent 能做什么,完全可以借助 AI 辅助阅读和实践。
但如果目标是自己开发真实 Agent,后面还是需要逐渐补上基本编程能力,例如变量、函数、API、JSON、Git、命令行等。
不需要等到编程全部学完才开始学 Agent,但是也不要认为完全不用学编程。
学 Agent 一定要先学 Python 吗?
不一定。
如果完全没有编程基础,Python 确实是一个比较合适的起点,大量大模型和 Agent 示例也会优先提供 Python 版本。
但如果已经熟悉 Java、TypeScript、Go 等语言,没有必要先停下来重新系统学习一遍 Python。
Agent 开发真正需要理解的是:
text
模型怎么调用
Tool 怎么执行
Context 怎么传递
Agent 怎么继续下一步而不是必须使用某一种语言。
学 Agent 之前必须先学 Transformer、RAG 和微调吗?
不需要。
如果目标只是开始开发 Agent,可以先学习模型调用、Tool Calling、Agent Loop,再进入 Framework 和项目。
Transformer、RAG、微调也有价值,但它们属于不同方向的知识。
其中:
- LLM 原理适合希望理解模型底层或准备相关面试时深入
- RAG 在知识库、文档检索等项目中非常重要
- 微调则只在一部分业务和岗位中真正需要
具体可以参考 Agent 开发学习路线。
应该先自己写 Agent,还是直接学习框架?
建议至少亲手跑通一次最小 Agent,再进入框架。
不需要自己造一个完整的 LangGraph,也不需要实现复杂 Runtime。
只要真正理解一次:
text
Model
↓
Tool Call
↓
执行 Tool
↓
Tool Result
↓
Model 再决定下一步就足够了。
我们后面学习 Framework 时,会更容易判断框架到底替你解决了什么。
具体可以参考 从零实现一个最小 AI Agent 和 从零实现一个最小 Coding Agent。
Agent Framework 要全部学一遍吗?
不用。
比起同时学习很多框架,更推荐先选择一个适合当前方向的主框架,完整做一次项目。
等真正遇到状态管理、Context、Tool、Workflow 等问题以后,再去比较不同框架的实现,区别会清楚很多。
RAG、Memory、MCP 这些是不是 Agent 必备能力
一个 Agent 一定需要 RAG 吗?
不一定。
RAG 主要解决的是:
怎样让模型获取外部知识。
而 Agent 更关注:
怎样根据任务动态决定下一步并采取行动。
企业知识助手、文档问答 Agent 可能非常依赖 RAG,但 Coding Agent、Browser Agent 等完全可能不需要复杂 RAG。
所以不要因为开发 Agent,就默认必须先搭一个向量数据库。
一个 Agent 一定需要 Memory 吗?
不一定。
如果任务只有几轮,并且所有必要信息都能放在当前 Context 中,可能根本不需要额外的长期 Memory。
Memory 更适合解决跨会话、长期任务、用户偏好、历史事实等持续保存的问题。
还要注意:
text
当前 Context
Session 中的历史
长期 Memory不是完全相同的概念。
没有必要因为 Agent“忘了东西”,就立刻增加一个向量数据库当 Memory。
最好在真正需要的时候再加。
一个 Agent 一定需要 MCP 吗?
不需要。
如果系统只有几个自己开发的 Tool,直接通过普通 Tool Calling 接入完全没有问题。
MCP 更适合解决:
外部工具、资源和能力如何以统一方式被不同 Agent 或应用接入。
所以 MCP 是一种非常重要的能力标准,但不是“没有 MCP 就不算 Agent”。
MCP 会取代普通 Tool Calling 吗?
其实不应该这样理解。
Tool Calling 解决的是:
模型怎么表达“我要调用这个工具”。
MCP 更关注的是:
应用怎么和外部工具、资源等能力建立标准化连接。
它们处在不同层面。
很多系统最终可能同时存在:
text
Model
↓
Tool Calling
↓
Agent Runtime
↓
MCP Client
↓
MCP Server所以 MCP 不是 Tool Calling 的“高级版本”。
MCP 接得越多,Agent 就越强吗?
不一定。
Agent 可以访问的能力更多,理论上能够做的事情确实更多,但同时模型也要在更多工具之间做选择。
如果十几个 Tool 功能非常相似:
text
search
search_docs
search_web
search_database
find
query反而可能增加错误选择。
真正重要的是:
Tool 的边界是否清晰,以及当前任务到底需要哪些 Tool。
这个问题和 MCP 数量本身没有直接关系。
Agent、Workflow 和 Multi-Agent 怎么选
Workflow 和 Agent 是不是二选一?
不是。
真实系统完全可以同时使用两者。
例如:
text
固定流程
↓
到达需要判断的节点
↓
交给 Agent 决定
↓
继续固定流程对于高确定性的步骤,Workflow 通常更稳定。
只有那些确实需要模型根据当前情况动态判断的地方,才有必要交给 Agent。
所以两者更多是组合关系,而不是谁取代谁。
接了 Tool 的聊天机器人,就一定算 Agent 吗?
不一定需要纠结这个 Tool 。
相比“它到底算不算 Agent”,更值得关注的是:
- 模型是否能够根据任务主动选择 Tool
- 是否能够看到真实 Tool Result
- 是否能根据结果重新决定下一步
- 是否能够持续推进任务直到结束
一个系统即使叫“Agent”,如果只是固定调用一次搜索再回答,本质上可能还是普通AI应用。
Multi-Agent 一定比单 Agent 更强吗?
不一定。
多个 Agent 可以进行角色分工,但同时会增加:
text
任务怎么拆
谁负责什么
Context 怎么传
结果冲突怎么办
状态怎么同步这些额外问题。
如果一个 Agent 已经可以稳定完成任务,没有必要为了“架构更高级”强行拆成多个 Agent。
合理的顺序应该是:
text
先把单 Agent 做稳
↓
发现明确的职责或 Context 问题
↓
再判断是否需要 Multi-AgentPlanner、Reviewer、Researcher 都需要单独做成 Agent 吗?
也不一定。
“规划”“审查”“研究”是一种职责,不意味着一定要对应三个独立 Agent。
有时候一个 Agent 通过不同阶段的 Prompt 或 Tool 就能完成这些工作。
只有当不同职责真的需要独立 Context、工具集合、权限或者执行周期时,拆成不同 Agent 才更有意义。
实际开发为什么总会遇到各种问题
为什么 Agent Demo 看起来很好,放进真实项目以后却不稳定?
因为 Demo 往往只展示了一条比较理想的成功路径。
进入真实项目以后会出现:
text
Tool 失败
参数错误
Context 过长
模型做错判断
网络超时
权限不足
任务无法完成这时候问题就不再只是“模型能不能回答”。
还需要 Runtime、Tool、Context、错误处理和安全边界一起工作。
这也是 从最小 Coding Agent 到 Pi 主要讨论的问题。
Agent 总是调用错 Tool,是不是模型不够强?
不一定。
在换模型之前,可以先检查:
- Tool 名字是不是容易混淆
- Description 是否把使用场景说清楚
- 参数 Schema 是否合理
- 当前 Context 是否包含正确的信息
- Tool Result 是否真实反映执行结果
很多看起来像“模型不会用 Tool”的问题,其实首先是 Tool 设计问题。
这类情况可以参考 Agent 开发常见误区。
Agent 一直循环,不结束怎么办?
Agent Runtime 本来就应该存在停止机制。
常见的停止条件包括:
text
任务已经完成
出现无法继续的错误
达到最大 Step
执行超时
用户主动 Abort不能只告诉模型:
“完成任务以后记得停止。”
然后期待它永远正确判断。
Agent 应该知道怎么继续,也必须能够在合适的时候停下来。
Tool 调用失败以后,应该自动重试吗?
要看失败类型。
例如临时网络错误,可以考虑有限次数重试。
如果是:
text
参数本身错误
权限不足
文件不存在
业务条件不满足盲目执行相同重试通常没有意义。
更合理的做法是把真实错误返回给模型,让它判断是否需要调整参数、换一个 Tool,或者直接停止。
Agent 是不是一定要全自动运行?
不是。
很多真实系统本来就应该在关键节点让人确认。
例如:
- 删除数据
- 修改生产环境
- 支付
- 对外发送正式消息
- 执行高风险命令
Human-in-the-loop 并不意味着 Agent“不够智能”。
对于高风险任务来说,可控通常比完全自动更重要。
Agent 的成本和运行环境
Agent 会不会非常烧 Token?
有可能。
普通聊天可能只调用一次模型,而 Agent 往往会不断重复:
text
Model
↓
Tool
↓
Model
↓
Tool
↓
Model并且每一轮都可能携带部分历史 Context、Tool Schema 和 Tool Result。
所以成本不仅取决于:
一次调用用了多少 Token。
还取决于:
一整个任务调用了多少次模型,以及每一轮携带多少 Context。
任务变长以后,Context 管理也会越来越重要。
Tool 越多,Token 消耗也一定越大吗?
不一定线性增长,但 Tool Schema 本身通常也需要进入模型可以看到的上下文。
如果同时暴露大量复杂 Tool:
text
名称
Description
参数 Schema它们都会占用一定 Context,并增加模型选择工具时的复杂度。
所以 Tool 不是接得越多越好。
更合适的是只暴露当前任务真正可能需要的能力。
开发 Agent 一定需要 GPU 吗?
不需要。
完全可以直接使用云端模型 API:
text
OpenAI
Anthropic
Gemini
DeepSeek
Qwen API
……Agent 本身可以运行在普通电脑或者普通服务器上。
GPU 的需求通常出现在:
text
本地部署模型
模型微调
模型训练
推理优化开发 Agent 一定需要本地部署模型吗?
不需要。
对于学习和很多业务项目,先使用模型 API 往往更简单。
只有出现:
- 数据不能离开本地环境
- 需要部署私有模型
- 调用量很大,需要重新计算成本
- 需要特殊模型能力
- 需要自行控制推理服务
这些需求时,本地部署才会变得更加重要。
相关内容在 LLM 栏目继续深入。
做 Agent 一定需要微调模型吗?
通常不需要。
Agent 项目效果不好时,常见的检查顺序应该是:
text
任务设计
↓
Context
↓
Prompt
↓
Tool
↓
模型能力而不是第一步就训练一个新模型。
只有当确认问题确实来自模型能力,并且有足够高质量数据时,才值得进一步评估 Fine-tuning。
微调是一种模型能力调整手段,不是 Agent 的标准组件。
学到什么程度才可以开始做项目
是不是要把 Agent 所有概念都学完,才能开始项目?
不需要。
Agent 领域变化很快,如果等待:
text
Memory 学完
MCP 学完
RAG 学完
Multi-Agent 学完
所有框架学完很可能永远没有真正开始。
更实用的方式是:
text
先理解基本结构
↓
做一个小项目
↓
遇到真实问题
↓
再回来补对应知识很多概念只有进入项目以后,才会知道它为什么存在。
第一个 Agent 项目应该做多复杂?
不用复杂。
第一次真正做 Agent,更适合选择:
- 目标明确
- Tool 不多
- 结果容易验证
- 出错代价低
的任务。
例如一个能够读取文件、修改代码并运行测试的最小 Coding Agent,就比一开始做一个“自动管理整个公司”的 Multi-Agent 系统更适合学习。
学完入门以后,下一步应该去哪?
如果目标是继续开发:
text
入门
↓
框架
↓
项目就可以作为主线。
「原理」适合遇到感兴趣的问题时深入。
「LLM」和「RAG」适合拓宽专项知识。
准备求职时,再重点进入「面试题」。
完整说明可以参考 Agent 开发学习路线。
最后
Agent 领域会不断出现新的框架、新协议和新名词。
遇到一个新概念时,可以先问三个问题:
text
它解决什么问题?
我的项目现在有没有这个问题?
如果用它,会不会带来更好的效果?如果这三个问题还回答不出来,就不要着急把它加进系统。