[AI书房] 第25章 子智能体构建实战
Claude Code完全掌握
Claude Code完全掌握
第25章 子智能体构建实战
金京镇
用 /agents 命令创建智能体
在 VS Code 中打开 Claude Code,输入 /agents。屏幕上弹出一条提示:「请在终端中继续操作。」由于 IDE 扩展的限制,部分斜杠命令只能在终端中执行。这不是什么大问题。打开终端后命令会立即运行,子智能体管理界面随之出现。
在这个界面上能做的事情一目了然。
可以查看当前项目中注册的所有智能体,项目智能体和内置智能体分开显示。可以选中已有的智能体进行编辑或删除。也可以创建新的智能体。
选择「Create new agent」后,Claude Code 会以对话方式引导你完成智能体配置。这里有两个选项:手动配置,或者交给 Claude 自动生成。
如果选择让 Claude 来生成,我们要做的只是用自然语言描述这个智能体应该做什么、在什么时候被调用。描述越具体、越全面,生成的结果就越好。
在这一步还要决定是创建项目智能体还是个人(全局)智能体。项目智能体保存在该项目的 .claude/agents/ 文件夹中,只能在当前项目里使用。个人智能体保存在主目录的全局 Claude Code 配置中,在任何项目里都能调用。
还有一个选项叫临时智能体(Temporary Agent),它只存在于当前会话,结束后自动消失。实际使用频率不高,这里就不深入展开了。
[图 25-1] /agents 命令执行界面:终端截图中项目智能体列表与内置智能体列表分区显示
分享一个实战技巧。创建智能体时有时会遇到「该文件夹已存在」的报错。碰到这种情况,先把现有的 agents 文件夹临时改个名,创建好新智能体后,把原来的智能体文件移到新文件夹里,再删除旧文件夹就行了。这是一个已知 bug,不影响功能。
YAML 元数据配置
子智能体的本质就是一个 Markdown 文件。理解了这一点,整个概念就清晰了。Skill 是 Markdown 文件,子智能体同样是 Markdown 文件。
文件结构分为两部分:顶部的 YAML Front Matter 和下方的正文指令。
来看看 YAML Front Matter 中的主要字段。
name: "AI Trend Hunter" description: "追踪 AI 趋势并发掘内容创意的智能体。调研最新 AI 动向,找出可用于视频策划的信号。" tools: ["all"] model: "sonnet" memory: true color: "cyan"
name 是智能体的标识符。主会话通过这个名字来引用子智能体。
description 是决定智能体调用条件的关键字段。主会话收到用户请求后,会扫描所有已注册智能体的描述文本,判断该把任务委派给哪一个。这和 Skill 的描述文本决定触发精度是同一个原理。描述模糊,就会调用错误的智能体;描述具体,委派就精准。
tools 指定这个智能体可以使用的工具集。可以用 "all" 放开所有工具,也可以设置 "read-only" 之类的限制。还能通过 disallowed_tools 字段显式屏蔽特定工具。
model 决定子智能体使用哪个语言模型。能够为子智能体指定与主会话不同的模型,这是子智能体的核心优势之一。快速探索任务分配给 Haiku,代码生成分配给 Sonnet,复杂推理分配给 Opus,以此调节成本与质量的平衡。
启用 memory 后,子智能体会把自己的工作记录写入 agent-memory 文件夹。这部分内容后面单独讲。
color 是这个智能体在终端运行时显示的颜色。多个子智能体同时运行时,颜色有助于在视觉上区分它们。这个设置在 IDE 扩展中看不到,只有在终端里才能看到。
除此之外还有 permission_mode、max_turns、auto_compact 等 Front Matter 字段。auto_compact 的默认值大约是 95%,把这个比例调低,可以更积极地防止子智能体内部的上下文衰减。
[表 24-1] 主要 YAML Front Matter 字段
YAML Front Matter 下面是正文部分。正文是子智能体被唤醒时参考的系统提示词。当主会话决定「使用这个智能体」之后,智能体真正开始工作时读取的指令全文就在这里。
AI 趋势猎手智能体实战构建
把概念变成摸得着的实操。接下来我们从头到尾搭建一个名为「AI 趋势猎手」的子智能体。
在终端执行 /agents,选择「Create new agent」。创建为项目智能体,让 Claude 自动生成。
描述这个智能体要做什么:「追踪最新 AI 趋势,发掘值得做成内容的选题。通过 Perplexity API 和 X(原 Twitter)收集趋势信号,整理成可用于视频策划的格式。」描述越具体越好,后续随时可以修改,不必追求完美。
Claude Code 开始生成智能体。这个过程中有个细节值得留意:Claude Code 不是仅凭智能体描述来生成 Markdown 文件,而是参考当前项目的结构和内容来定制智能体。如果你在运营一个 YouTube 频道,制作关于 Claude Code 和自动化的内容,那么智能体的系统提示词中就会体现这些背景信息。
生成过程中需要做几个选择。
工具选择:指定这个智能体可以使用哪些工具。选「all」就放开全部工具;只选「read-only」和「MCP」则只允许文件读取和 MCP 连接服务器调用。一个研究型智能体真的需要文件修改权限吗?问自己这个问题,就是施加约束的起点。
模型选择:选 Sonnet。趋势研究需要快速扫描大量信息,Sonnet 的速度比 Opus 的深度推理更适合这个场景。
颜色选择:选一个在终端中识别这个智能体的颜色。
记忆设置:选择「Enable」。这个设置的含义在下一节详细讲。
创建完成后,.claude/agents/ 文件夹中会出现一个 Markdown 文件。打开文件,YAML Front Matter 里设置好了名称、描述、工具、模型、记忆和颜色,正文以「你是一名精英 AI 趋势猎手」开头的系统提示词已经写好,包含了任务、搜索目标、记忆使用方法,甚至还有历史上下文检索方式。
[图 25-2] 生成的 AI 趋势猎手智能体 Markdown 文件结构:YAML Front Matter 与系统提示词正文
现在来运行这个智能体。在终端中对主会话说「运行 AI 趋势猎手」,主会话会参考已注册智能体的描述文本,调用 AI 趋势猎手。终端中可以看到智能体运行的过程:执行网页搜索、收集信息、进行分析。
运行期间按 Ctrl+O 可以展开智能体的思维过程,还能看到主会话发给这个子智能体的提示词内容。按 Ctrl+B 可以把智能体切到后台,一边继续和主会话对话,一边等待子智能体完成工作。
运行结束后,结果会返回到主会话。输出是一份整理好的报告,包含热信号(Hot Signal)、温信号(Warm Signal)、推荐视频创意、关键趋势模式等内容。
有一点需要检查:生成的智能体描述文本可能过长。描述太长会浪费模型的 token 额度,但调用精度可能因此提高,所以要找到合适的平衡点。
使用 Agent Builder Skill 之类的工具跑一次审计(Audit),可以自动检测出工具限制未设置、最大轮次未设置、描述文本过于臃肿等问题。
智能体记忆
在首次运行 AI 趋势猎手之前打开 agent-memory 文件夹,可以看到 AI 趋势猎手对应的文件夹已经存在,但里面没有文件。记忆文件是在智能体首次运行之后自动生成的。
首次运行完成后,agent-memory/ai-trend-hunter/ 文件夹里会出现记忆文件。这个文件里存了什么?
子智能体每次都在全新的上下文中醒来,没有对话历史,没有上一次会话的记忆。但如果有记忆文件,情况就不一样了。醒来的子智能体会读取记忆文件,参考过去的学习内容。虽然不是完整的记忆,但「上次这个信息源很有价值」「这个选题已经做过了」这样的上下文是可以保留的。
[图25-3] 智能体记忆的运作流程:首次运行 → 自动生成记忆文件 → 后续运行时参照记忆文件 → 任务完成后更新记忆文件]
正是这种结构,避免了趋势研究智能体把两小时前已经报告过的内容再报告一遍的情况。记忆里留有「最近扫描」的信息,所以它会跳过重复内容,把注意力放在新出现的信号上。
记忆是子智能体跨会话积累学习成果的机制。如果你想打造一个越用越好用的智能体,启用记忆就是起点。
用子智能体守住主上下文
下面用数字来验证子智能体对上下文的保护效果。
AI趋势猎手智能体执行完毕了。它在搜索网页、分析来源、分类信号、撰写报告的过程中,大约消耗了40,000个token。
现在在主会话中执行 /context 命令。主会话当前的上下文使用量是29,000个token。
这个数字值得细细体会。假如没有子智能体,直接在主会话里完成同样的研究工作,主会话的上下文至少要增加40,000个token。加上原有的对话内容,上下文窗口的很大一部分都会被研究结果占满。之后再做别的事情,比如代码审查、文档撰写、调试,可用的上下文空间就会大幅缩减。
使用子智能体后,40,000个token的工作量在独立的上下文中处理完毕。传回主会话的只有热信号、温信号、推荐思路这类摘要。主会话的上下文得以干净地保留下来。
[图25-4] 上下文保护效果对比:直接处理时主会话69,000+个token vs 委派给子智能体时主会话29,000个token]
这是使用子智能体最实际的理由之一。上下文窗口是有限资源,子智能体就是保护这份资源的屏障。
Claude Code的内置子智能体
在构建自定义子智能体之前,先看看Claude Code自带的子智能体。如果你在使用Claude Code时曾在终端看到过「agent」字样,说明你已经遇到过这些内置子智能体了。
探索智能体(Explore)负责搜索和分析代码库。它使用Haiku模型运行,只有只读权限。成本低、速度快,但不能修改文件或生成代码。在需要了解代码库结构或查找特定模式时,系统会自动调用它。
规划智能体(Planning)负责调研和制定计划。它继承父级的模型。如果主会话用的是Opus,规划智能体也用Opus运行。它拥有只读权限,在计划模式(Plan Mode)下经常能看到它被调用。
通用智能体(General)在需要多步骤操作时被调用。它继承父级模型,可以使用所有工具。与前两个智能体不同,它能修改文件、执行命令、生成代码。
[表24-2] 内置子智能体对比
Claude Code的一位核心开发者曾公开过自己日常使用的自定义子智能体清单:构建验证器(Build Validator)、代码架构师(Code Architect)、代码精简器(Code Simplifier)、值班指南(On-call Guide)、应用验证器(Verify App)。
Claude Code的创造者本人就在自己的工具上运行这么多子智能体,这件事本身就证明了子智能体的实用价值。
Claude Code官方文档中也公开了子智能体示例,包括代码审查员(Code Reviewer)、调试器(Debugger)、数据科学家(Data Scientist)、数据库查询验证器(Database Query Validator)等的完整Markdown配置,设计自己的子智能体时可以参考。
到这里,我们掌握了构建和运行子智能体的实战技术。还有一件事需要确认:子智能体是一种单向结构,接收主会话的指令、独立完成工作、再把结果送回去。那么,智能体之间互相对话、互相分配任务、朝着共同目标协作的结构,又会是什么样子呢?
人工智能专家 金京镇律师
AI法律政策专家 · 前国会议员 · 著作等身
如果这本书曾在你身边短暂停留,请支持我们,让下一个故事得以面世。
(自愿赞助账户:韩国农协银行 302-1096-0948-81 户名:金京镇)


