这是一个非常经典且触及 AI 架构本质的问题。在目前的 AI Agent(智能体)架构中,Sub-agent(子智能体)Skills(技能/工具) 的界限可以通过“自主性”和“上下文管理”这两个核心维度来清晰区分。

以下是具体的拆解:

1. 核心定义的区别

你可以用“员工 vs. 工具”的模型来理解:

  • Skills (技能/Tools): 是“工具箱里的锤子”

  • 定义: 它是被调用的原子能力,通常是确定性的或者是单步的。

  • 特点: 它本身没有“脑子”(推理能力),不知道为什么要用自己,只负责接受输入,产出输出。

  • 例子: GoogleSearch()ReadFile()Calculator()RunPythonScript()

  • 交互模式: Agent 觉得需要搜索 -> 调用 Search Skill -> 获得结果。

  • Sub-agent (子智能体): 是“外包团队的专员”

  • 定义: 它是一个具有独立推理能力的实体,负责处理一个完整的子任务。它拥有自己的 System Prompt(人设)和独立的执行循环(Loop)。

  • 特点: 它有“脑子”,懂得规划。它可以在内部进行多次尝试、自我纠错,直到完成目标后再向主 Agent 汇报。

  • 例子: CodeReviewerAgent(专门负责查错的)、SQLOptimizerAgent(专门优化查询的)。

  • 交互模式: 主 Agent 把“优化这段代码”的任务丢给 Sub-agent -> Sub-agent 自己思考、调用 Skills、测试、修改 -> 最终只返回优化好的代码给主 Agent。


2. 关键差异点:上下文压缩与隔离

在架构设计中,Sub-agent 存在的一个核心意义就在于上下文(Context)的压缩与隔离

维度 Skills (技能) Sub-agent (子智能体)
上下文 (Context) 无状态或并在主线程

使用 Skill 的过程、参数和返回结果通常直接暴露在主 Agent 的对话历史里。
独立隔离

Sub-agent 有自己的对话历史。它在内部思考了10轮,最后只把结论返回给主 Agent。主 Agent 的 Context 不会被中间过程污染。
自主性 (Agency) 被动

必须由 Agent 明确调用。
主动/半主动

一旦接受任务,它自己决定怎么做,甚至可以调用它自己的 Skills。
容错率

工具报错通常直接抛出异常,需要主 Agent 来处理。


Sub-agent 可以在内部看到报错,自己尝试修复,修好了再汇报。
复杂度 原子级操作 (Atomic)。 任务级流程 (Workflow)。

3. 场景举例:代码重构

假设要开发一个“代码重构功能”:

  • 如果用 Skills 模式:
    主 Agent 的思维链是:“我先读取文件 A(Skill 1),分析后发现需要改名,我调用重命名工具(Skill 2),然后我再运行测试(Skill 3)…”

  • 后果: 主 Agent 的上下文里塞满了文件内容、中间步骤、测试日志,Token 消耗巨大且容易迷失(Lost in the middle)。

  • 如果用 Sub-agent 模式:
    主 Agent 的指令是:“@RefactorAgent,帮我重构下这个模块。”

  • RefactorAgent (Sub-agent) 接手。它自己在“小黑屋”里读文件、改代码、跑测试、报错、再改、再跑…(这些繁琐的过程主 Agent 都不用管)。

  • 最后 RefactorAgent 完成工作,只回复:“搞定了,这是最终的 Diff。”

  • 优势: Context 被极致压缩。主 Agent 只看到了“请求”和“结果”,中间的“思考过程”被封装在了 Sub-agent 内部。

总结

  • 如果你只是想执行一个动作(查天气、发邮件、读文件),应该定义为 Skill
  • 如果你是想委托一个职责(写测试用例、做代码审查、处理复杂的客户投诉),并且希望它能自我管理过程、不占用主线程的上下文空间,应该定义为 Sub-agent
Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐