一、原理概述:三类能力封装的本质差异
在构建智能体(Agent)系统时,开发者面临一个核心问题:如何让大模型稳定、高效地完成特定任务?目前业界普遍采用三种能力封装方式:提示词(Prompt)、技能(Skill)和子代理(Sub-Agent)。三者看似相似,实则遵循截然不同的运行逻辑。
提示词本质上是一段附加在模型输入前的指令文本,通过引导模型的注意力分布来影响输出;技能则是一套可复用的程序化能力模块,包含预定义的推理流程、工具调用逻辑和结果处理规则;子代理则是一个独立的智能体实例,拥有自己的系统提示、工具集合和对话记忆,在主代理的调度下异步执行任务。理解三者的区别,关键在于把握“信息如何被传递”和“状态如何被管理”这两个底层维度。
二、背景问题:为何需要多种能力封装方式
单一的大模型接口无法满足多样化的业务需求。一方面,模型存在上下文窗口限制,无法在一次请求中承载所有背景知识和任务规则;另一方面,不同任务对工具调用、权限控制、状态保持的要求差异巨大。例如,一个安全审查任务需要访问专用工具且不能泄露内部数据,而一个内容生成任务则只需模型发挥创造性。若将所有能力混入提示词,将导致系统臃肿、响应变慢且难以维护。因此,业界发展出分层的能力封装思想:提示词解决“即时指令”,技能解决“可复用流程”,子代理解决“独立执行域”。
三、核心概念:理解原理的四个基础名词
- 上下文窗口(Context Window) :模型单次推理能处理的最大Token数。它决定了一次请求中能够携带多少背景信息。
- 工具调用(Tool Calling) :模型输出特定结构化的指令,由外部系统执行实际操作(如查数据库、调用API),再将结果返回模型。
- 上下文隔离(Context Isolation) :指各执行单元拥有独立的记忆空间,互不干扰,防止数据泄露或指令冲突。
- 会话状态(Session State) :指对话历史、临时变量、用户偏好等随交互持续变化的信息。
四、系统组成:三类能力的模块拆解
1. 提示词系统
- 输入层:用户请求 + 预设指令模板
- 处理层:模型根据指令调整生成策略
- 输出层:符合指令格式的回复
- 关键特征:无持久化状态,每次都需携带完整指令
2. 技能(Skill)系统
- 注册中心:存储技能的名称、描述、调用参数schema
- 执行引擎:负责运行技能的编排逻辑,按步骤调用工具或访问数据
- 结果标准化层:将各类工具的输出统一为模型可理解的结构化格式
- 缓存层:存储常见请求的结果,减少重复计算
3. 子代理系统
- 主代理(Supervisor) :负责任务分解、子代理选择、结果汇总
- 子代理实例:每个拥有独立的模型配置、工具集和记忆空间
- 通信协议:定义主代理与子代理之间的消息格式、任务派发和结果回收机制
五、工作流程:三类能力的完整运行链路
提示词执行流程(单次请求)
- 用户输入拼接预设提示词 → 2. 模型解析指令 → 3. 模型生成输出(可调用工具)→ 4. 返回结果。此过程无状态,每次请求是独立的。
技能执行流程(多步骤编排)
- 主代理识别用户意图,匹配技能注册信息 → 2. 技能引擎启动,加载预设流程定义(如“先进行代码扫描,再执行依赖检查”)→ 3. 引擎依次执行各步骤,每步向模型发送“过程性提示词”获取决策,或直接调用工具 → 4. 结果按原流程定义进行校验和格式化 → 5. 返回最终结果。
关键机制:技能内部的流程模板是固定的,但每个步骤的输入参数来自实时上下文,从而兼顾标准化和灵活性。
子代理执行流程(任务下发与回收)
- 主代理会话中,用户提出复杂任务 → 2. 主代理的“任务分解器”将任务拆为多个子任务 → 3. 为每个子任务实例化一个子代理,配置专属工具和系统提示 → 4. 将子任务和相关上下文通过通信协议发送给子代理 → 5. 子代理独立运行(可进行多轮内部工具调用)→ 6. 子代理返回结论文本 → 7. 主代理汇总各子代理结果,生成最终回复。
关键机制:子代理的运行完全独立,不占用主代理的上下文窗口,因此可以执行长时间、多步骤的任务而不影响主代理的响应速度。
六、关键机制深度解析
1. 上下文传递机制对比
- 提示词:所有信息扁平化堆叠在输入中,随长度增加,模型对早期信息的关注度下降(即“迷失在中间”效应)。
- 技能:通过流程定义控制信息的传递顺序,每步只向模型暴露当前步骤所需的最小上下文,从而提升决策准确率。
- 子代理:实现物理级上下文隔离,主代理只保留子代理的初始指令和最终结论,过程细节全部封存于子代理记忆段。
2. 能力复用与迁移机制
技能的可移植性来源于其“流程模板 + 参数占位”的设计。安全审查技能被定义为:获取代码仓库路径参数 → 扫描敏感信息 → 匹配风险规则库 → 生成报告。该流程可被任何主代理调用,只要传入合法的仓库路径。而子代理则不具备这种通用性,它被定制为“某个特定项目”服务,包含专属提示和工具。
3. 资源与权限控制机制
子代理能够绑定独立的权限策略。例如,一个数据分析子代理只能访问特定数据库的读取权限,且其执行过程不暴露给主代理。技能则无法实现这种隔离,因为技能运行所需工具以主代理的身份执行,权限范围与主代理一致。
4. 性能与延迟的权衡
提示词方式延迟最低(单次请求),但若指令冗长,Token消耗大;技能方式增加了一次流程调度开销,但通过缓存和并行步骤可抵消部分延迟;子代理方式延迟最高(涉及实例创建、任务往返),但允许并行执行多个子任务,在复杂场景下总耗时反而更短。
七、示例说明:模拟一个“安全审查”场景
场景:用户要求系统对一份代码提交进行安全性评估。
- 使用提示词:会将完整的审查规则(约2000 Token)直接拼入输入,模型需要自行记住并逐步应用。若规则复杂,容易遗漏或产生幻觉。
- 使用技能:定义“安全审查技能”,其内部流程为:第1步调用静态扫描工具,第2步将扫描结果发送给模型判断严重等级,第3步根据等级选择对应的响应模板。主代理只需执行该技能命令,技能引擎自动控制流程。优势:规则在技能内部,更新规则不影响主代理;结果是结构化且一致的。
- 使用子代理:主代理启动一个“安全审查子代理”,为其配置扫描工具权限和独立记忆。用户询问中间过程,主代理只能从子代理接收最终报告。优势:审查过程含大量内部推理,不干扰主代理解答其他问题;缺点是每次审查需重新初始化,无法复用。
八、技术优势与限制
技能(Skill)的优势:
- 跨会话、跨代理复用,符合“write once, run anywhere”原则
- 封装流程细节,降低主代理的提示词复杂度
- 便于版本管理和灰度测试
技能的限制:
- 流程固定,难以应对需要实时探索的灵活任务
- 无法提供独立权限,不适合需要敏感数据隔离的场景
子代理的优势:
- 强隔离性,适合私有数据处理
- 可并行运行,提升吞吐量
- 拥有独立上下文,不受主代理解答历史的干扰
子代理的限制:
- 启动和通信开销大,不适合高频轻量调用
- 运维复杂,需要监控多个实例的生命周期
九、常见误区
- 误区:技能和子代理可以互换。实际二者解决的是不同维度的问题:技能解决“知识复用”,子代理解决“执行隔离”。
- 误区:提示词可以替代技能。提示词无状态,每次使用需重载全部规则,当规则超过模型记忆范围时,错误率骤升。
- 误区:所有任务都应该用子代理。对于只需单步工具调用的任务,使用子代理会浪费大量资源,提示词或技能已然足够。
- 误区:技能内部不可用子代理。相反,技能可以对子代理进行封装,技能负责流程控制,子代理负责具体执行,形成多层复合结构。
十、总结
提示词、技能和子代理构成了智能体系统的三层能力封装体系。提示词是最基础的指令传递单元,技能通过流程模板实现知识的结构化沉淀与复用,子代理通过实例化运行实现边界清晰的独立执行域。开发者在架构设计时应遵循:若一项能力需要被多个代理或多轮对话共享且流程确定性高,优先封装为技能;若一项任务需要独立权限、私密上下文或长时间运行,分配子代理;而提示词则应保持简洁,仅用于承载那些无需复用的临时指令。理解这三者之间的原理差异,是构建可扩展、易维护的智能体系统的关键前提。在实际工程中,它们并非对立,而是可以嵌套使用,例如在主代理中通过技能启动一个子代理,这也是目前业界公认的最佳实践方向。