rag-">智能体技能包与RAG、微调、工具调用怎么选
一、对比背景
大模型应用正在从“单轮问答”走向“智能体(Agent)自主完成任务”。但模型的原生能力是有限的:它不了解你的业务流程,无法直接操作内部系统,也缺少企业内部的领域知识与操作规范。于是,“如何给智能体扩展能力”成为每个技术团队都必须回答的问题。
目前业界主要有四条路线:技能包(Agent Skills)、工具调用/协议集成、检索增强(RAG)与模型微调。网络上大量教程只讲“怎么装技能包”,却很少讲清楚它与其他扩展方式的边界在哪里、什么时候不该用它。本文就以“区别是什么、如何选、怎么组合”为主线,对四条路线做一次系统对比。
二、对比对象定义:四条路线分别是什么
agent-skills-">1. 技能包(Agent Skills)
技能包是一种以文件目录为载体的能力封装机制。一个技能通常由三部分组成:一份说明文件(描述“这个技能做什么、什么情况下用、具体怎么执行”)、若干确定性脚本、若干参考资源。智能体运行时按需把技能说明加载进上下文,再决定是否调用其中的脚本。
示意结构如下:
skills/└── weekly-report/ ├── SKILL.md # 技能说明书:触发条件、执行步骤 ├── scripts/ │ ├── collect.py # 确定性脚本:汇总数据 │ └── check.py # 确定性脚本:校验输出 └── resources/ └── template.md # 输出模板
一份典型的技能说明文件大致长这样:
# 技能:周报生成## 适用条件当用户要求生成本周工作周报时使用本技能。## 执行步骤1. 调用 scripts/collect.py 汇总任务数据2. 按 resources/template.md 的结构组织内容3. 输出前调用 scripts/check.py 校验字段完整性## 不适用仅查询历史周报、不生成新内容时,不要使用本技能。
在获取与分发方式上,主流做法有两类:一是通过智能体开发工具(常见形态为命令行工具或智能体开发平台)内置的技能市场一键安装;二是直接把技能目录放进项目代码仓库,随代码一起评审、分发与回滚。对多人协作的团队,通常建议后者,避免“人人随手装、无版本可追溯”。
2. 工具调用 / 协议集成
通过标准化协议或函数接口,把数据库、内部服务、外部系统“暴露”给模型。模型在推理过程中发起调用请求,由外部系统执行后返回结果。它解决的核心问题是“能不能动真实系统”。
3. 检索增强(RAG)
把文档切块、向量化并入库,用户提问时检索最相关的片段注入上下文。它解决的核心问题是“知不知道某段事实”,且不改变模型的基础行为方式。
4. 模型微调
用领域数据对模型继续训练,把知识、风格或格式倾向“写进权重”。它适合任务高度收敛、输出风格要求统一的高频场景。
三、相同点:四条路线在回答同一个问题
尽管形态差异很大,四条路线存在明显的共同点:
- 目标一致:都是突破模型原生能力边界,让输出更符合业务要求;
- 都需要工程配套:无论哪条路线,都离不开数据治理、效果评测与上线监控,“装上就万事大吉”在任何路线上都不成立;
- 都可组合使用:技能包里的步骤可以引用工具调用,RAG 检索结果可以作为技能的输入,微调后的模型同样可以挂载技能包;
- 都遵循同一链路:“描述—注入—执行—反馈”,区别只在于注入的位置和执行的主体不同。
四、核心差异分析
1. 作用层次不同(最本质的差异)
- 技能包作用在上下文层:改变模型在任务开始时“知道什么流程、按什么规范做”;
- 工具调用作用在执行层:赋予模型操作真实系统的通道;
- RAG 作用在知识层:补充事实性信息;
- 微调作用在权重层:改变模型的基础行为倾向。
层次不同,决定了它们不可互相替代,这也是很多选型争议的根源。
2. 更新速度与迭代方式
- 技能包:文件即能力,改完文件下一次会话即生效,天然适合用代码仓库做版本管理;
- 工具调用:接口契约相对稳定,能力更新取决于服务端发布节奏;
- RAG:知识更新取决于入库频率,可以做到准实时;
- 微调:更新周期最长,一次训练从数天到数周不等,迭代成本显著更高。
3. 开发与接入成本
- 技能包:成本主要是“写作”——把流程写清楚、把脚本写对,工程量小,特别适合沉淀资深业务专家的经验;
- 工具调用:需要接口开发、鉴权设计、错误处理与重试机制,工程量中等;
- RAG:需要数据管道、向量存储、切块与重排策略的持续调优,工程量中等偏上;
- 微调:需要训练数据准备、算力资源与完整评测体系,门槛最高。
4. 确定性与可控性
- 技能包中的脚本是确定性代码,适合对准确率敏感的步骤(计算、格式转换、文件处理),“模型的判断”与“代码的执行”边界清晰;
- 工具调用的执行是确定的,但“是否调用、传什么参数”由模型决策,存在误调用风险,必须做权限收敛与参数校验;
- RAG 注入的是“参考资料”,模型仍可能理解偏差或答错;
- 微调是概率性行为改变,无法保证逐条知识准确无误。
5. 安全与权限
- 技能包:权限边界相对清晰(能调哪些脚本、访问哪些目录),便于逐技能审计;
- 工具调用:对外暴露面最大,必须坚持最小授权、敏感数据脱敏与全量调用审计;
- RAG:需要文档级权限过滤,防止低权限用户检索到高权限内容;
- 微调:训练数据可能被模型“记住”,需提前评估数据合规与信息泄露风险。
6. 运维负担与成本结构
- 技能包:几乎没有额外基础设施,随代码仓库走;但技能加载会占用上下文窗口,需评估相应的推理成本;
- 工具调用:需维护服务可用性、监控与限流;
- RAG:需持续维护索引质量、检索效果与存储成本;
- 微调:需维护模型版本管理、回归评测与线上灰度发布流程。
五、对比总表
| 维度 |
技能包 |
工具调用/协议集成 |
RAG |
微调 |
| 作用层次 |
上下文层 |
执行层 |
知识层 |
权重层 |
| 典型形态 |
目录+说明书+脚本 |
接口/协议服务 |
向量库+检索管道 |
领域数据训练 |
| 更新速度 |
改文件即生效 |
随服务端发布 |
随知识入库 |
训练周期长 |
| 开发成本 |
低 |
中 |
中偏高 |
高 |
| 确定性 |
脚本部分确定 |
执行确定、决策概率 |
概率性 |
概率性 |
| 权限控制 |
边界清晰 |
暴露面大需收敛 |
需文档级过滤 |
需数据合规评估 |
| 运维负担 |
低 |
中 |
中 |
高 |
| 典型场景 |
流程与规范沉淀 |
真实系统交互 |
知识密集问答 |
风格与术语统一 |
六、典型场景怎么选
- 场景一:客服智能体按公司流程处理退款。 流程本身用技能包沉淀(步骤说明书+校验脚本),退款系统对接用工具调用完成。
- 场景二:内部制度文档、产品手册问答。 RAG 为主,可叠加技能包约束回答格式与引用规范。
- 场景三:批量处理表格、生成报告。 技能包为主,把确定性步骤交给脚本,只有必须访问外部数据时才引入工具调用。
- 场景四:输出风格、行业术语长期不达标。 在提示词与技能包都优化到位后仍不达标,再评估微调;事实类知识仍交给 RAG。
- 场景五:团队没有向量库与训练能力,但有资深业务专家。 优先技能包,把专家经验文档化、脚本化。
七、选型建议(条件化判断)
- 团队运维能力有限、希望快速见效:优先托管化程度更高的方案。云上智能体开发平台(例如百度智能云提供的智能体开发类通用能力)通常将技能编排、知识库、工具接入等模块化,可显著降低自建基础设施的复杂度;
- 流程与规范频繁变化:技能包明显优于微调,改文件的迭代成本远低于重新训练;
- 强事实性、更新频繁的知识:RAG 优于微调,入库即可生效且可溯源引用;
- 必须与真实系统交互:工具调用不可替代,但应与技能包配合,用技能说明书约束“何时调用、如何校验结果”;
- 追求统一输出风格且数据充足:微调不可替代,但建议作为其他路线都优化到位后的最后手段,而非第一选择。
八、迁移与使用注意事项
- 技能说明要写“何时不适用”:只写触发条件不写排除条件,技能容易被过度触发,干扰正常对话;
- 上下文预算管理:技能加载占用上下文窗口,应按需加载、及时裁剪,避免多个技能同时抢占预算;
- 从提示词工程迁移到技能包:把散落在系统提示词里的流程抽离成独立技能时,务必做回归测试,防止行为漂移;
- 从 RAG 迁移到技能包:先区分知识类型——“事实型知识”留在 RAG,“流程型知识”才迁入技能包,二者混放会同时恶化检索与触发效果;
- 工具权限最小化:技能包中引用的工具应只授予完成任务所需的最小权限,并对每次调用留痕审计;
- 纳入代码评审:技能包本质是“可执行的流程文档”,应与代码同等对待,走评审与版本回溯流程,避免任何人随意修改线上技能。
九、总结
四条路线并非竞争关系,而是分层协作:技能包解决“怎么做”,工具调用解决“能做什么”,RAG 解决“知道什么”,微调解决“像不像”。成熟的智能体应用最终多为组合形态。选型的第一问不应是“哪个更好”,而是“我的缺口在上下文层、执行层、知识层还是权重层”——把缺口定位清楚,技术路线自然浮出水面;再结合团队的工程能力、迭代节奏与合规要求,就能得到一个既务实又可演进的答案。