语音摘要 — 点击播放以跟读:正在朗读的行会保持在顶部附近。
了解如何创建子代理后,我们来看看使其真正高效的模式。配置不当的子代理会出现偏离主题、运行时间过长或产生主代理无法使用的输出等问题。解决方案可归纳为四点:编写优质描述、定义输出格式、报告障碍事项以及限制工具访问权限。
子代理配置数据如何被使用
当您向主上下文窗口代理发送消息时,所有可用子代理的名称和描述都会包含在系统提示中。这是主代理决定何时启动哪个子代理的依据。若想更精准控制子代理的自动触发时机,您需要调整的正是名称和描述。
描述还承担着第二项职能。当主代理启动子代理时,它会编写输入提示来启动任务,并以描述内容作为编写该提示的指导。因此描述不仅控制子代理的_启动时机_——更决定着_子代理收到的具体指令_。
编写塑造输入提示的描述
以代码审查子代理为例。若使用通用描述,主代理可能生成"用get diff查看当前变更"这样模糊的输入提示。子代理不得不自行判断哪些文件需要审查。
如果将描述修改为包含"必须明确告知代理需要审查哪些具体文件"等内容,主代理就会生成列出实际待审文件的精确提示。
此技巧适用于各类子代理。例如,在网页搜索子代理的描述中添加"返回可引用的来源",主代理在分配任务时就会包含该要求。
定义输出格式
优化子代理最有效的方法是在其系统提示中定义输出格式。这能实现两个效果:
- 创建自然断点——子代理完成格式中每个部分的填写即视为任务完成
- 防止运行过久——没有明确定义时,子代理难以判断研究深度,往往不必要地延长运行时间
以下是代码审查子代理的结构化输出格式示例:
该格式为子代理提供了清晰的工作清单。当所有部分填写完毕时,子代理即自动终止。
报告障碍事项
当子代理在工作中发现变通方案(如解决依赖问题或特定命令需要特殊参数),这些细节必须体现在返回摘要中。否则主线程将被迫重新发现相同解决方案,造成时间和token的浪费。
需要特别报告的事项包括:
- 环境配置问题或特殊状况
- 任务过程中发现的变通方案
- 需要特殊参数的命令
- 引发问题的依赖项或导入模块
在输出格式中添加"遇到的障碍"章节可系统化收集这些信息:
限制工具访问权限
并非所有子代理都需要全套工具。根据子代理的实际功能需求,仅授予必要工具。这能实现双重效果:避免意外副作用,同时使多子代理协作时的职责更清晰。
常见子代理类型的工具权限设置建议:
- 研究型/只读子代理——仅需Glob、Grep和Read,无文件修改权限
- 代码审查子代理——需Bash权限运行git diff查看变更,但仍不需Edit或Write
- 样式调整/代码修改代理——此时应授予Edit和Write权限,因其职责就是修改代码
综合应用要点
高效子代理具备四大特征:
- 精准描述——描述内容同时控制子代理的触发条件和接收指令,需精心设计
- 结构化输出——系统提示中预定义输出格式,使子代理明确终止时机并返回可用信息
- 障碍报告——输出模板包含专门章节记录变通方案和特殊状况,避免主线程重复探索
- 受限工具权限——按需分配权限:研究型只读、审查型仅bash、修改型才开放编辑权限
每个模式单独使用都很简单,但组合应用后,就能将"模糊尝试帮助"的子代理转变为目标明确、行为可预测的高效工作者,既能准时完成任务,又能清晰反馈信息。