跳到主要内容

在 goose 中如何在子智能体和子配方之间选择

· 阅读需 6 分钟
·
W Ian Douglas
Staff Developer Advocate

子智能体与子配方

当你用 goose 做复杂项目时,常常需要把工作拆成多个任务,并用 AI 智能体运行它们。goose 给你两种强大的方式:子智能体和子配方。两者都可以并行运行多个 AI 实例,但工作方式不同。选哪一个可能让人困惑,所以我们来带你做决定。

我两种方法都在用,选择取决于你想完成什么。让我拆解何时使用每种方法,并展示真实例子。

核心差异:复用还是不复用​

子智能体是你在提示里用自然语言创建的临时 AI 实例,往往是一次性任务,然后就消失。

子配方是预先写好的、充满指令的文件,定义可复用的工作流,你可以用自定义参数反复运行。

一句话:子智能体用于快速、一次性的委派。子配方用于结构化、可重复的过程。

另外,两者仍处于「实验」状态,所以它们的功能和能力始终有可能随时间变化。

子智能体:快速而灵活​

当你在 goose 会话里,只想委派任务、不想要设置开销时,子智能体表现出色。使用起来就是这么简单:

Build a simple task management web app doing these 3 tasks in parallel:

- one task writes the backend API code (Node.js/Express with basic CRUD operations for tasks)
- one task writes comprehensive tests for the API endpoints
- one task creates user documentation explaining how to use the API

Each task should work independently and complete their part simultaneously.

goose 自动生成三个独立的 AI 实例,每个处理不同的组件。你得到实时进度跟踪,它们都从那条提示并行工作。你立刻就能跑起来:没有设置,没有配置文件,只有自然语言指令。

什么让子智能体很好​

  • 用自然语言快速设置——不必写配方文件。只要在提示里描述你想要什么。
  • 进程隔离——失败不影响你的主工作流。每个子智能体独立运行。
  • 上下文保留——把详细工作卸到单独的实例,让主聊天保持干净。
  • 灵活执行——很容易在提示里指定并行或顺序执行。
  • 外部集成——可以使用 Codex 或 Claude Code 等外部 AI 智能体。
  • 实时进度——实时监控仪表板显示任务完成状态。

子智能体的限制​

  • 可复用性有限——每个子智能体都从零创建。没有保存的配置。
  • 共用 LLM——所有子智能体与父会话使用同一个 LLM 模型。
  • 工具限制——子智能体不能管理扩展,它们只能使用启动子智能体之前主会话已经能访问的东西。
  • 不持久——配置不会为将来的使用保存。

子配方:结构化且可复用​

子配方解决可复用性问题。主「父」配方可以是 YAML 或 JSON,但子配方只能用 YAML 格式编写。这些文件定义结构化工作流,带有参数、验证、要使用的扩展,甚至允许你为这项工作选择不同的提供商/模型。

详细的子配方例子和实现指南,请看我们的子配方博客和 YouTube 上的高级配方技巧视频。

什么让子配方强大​

  • 高度可复用——配方文件可以在项目之间分享并进行版本控制。
  • 结构化参数——带验证和文档的类型安全参数处理。
  • 模板支持——使用模板语法动态注入参数。
  • 完整工具访问——子配方可以使用 goose 可用的任何扩展和工具。
  • LLM 自定义——每个子配方可以指定自己要使用的 LLM 模型。
  • 条件逻辑——基于对话上下文的智能参数传递。
  • 工作流编排——带有依赖和执行顺序控制的复杂多步过程。

子配方的取舍​

  • 设置复杂度——需要仔细创建 YAML 文件并定义参数。
  • 学习曲线——需要理解配方语法和结构。
  • 文件管理——必须组织和维护配方文件。

决策框架​

在这些情况下使用子智能体:

  • 你需要快速、一次性的任务委派
  • 任务可以独立完成,并且不需要重复

在这些情况下使用子配方:

  • 构建可以与团队分享的可复用工作流
  • 需要结构化的参数处理

两种方法共同的好处和限制​

这两个功能共享一些限制。我们已经提到了实验性和仍在演进的性质,但还有几点更重要的需要注意:

  • 子配方和子智能体在隔离中运行任务,彼此不共享状态。这种隔离有助于防止冲突,并让任务自包含。如果你确实需要在进程之间共享信息,就必须在提示和指令中非常明确地说明。

  • 两者都不能再生成类似的工作者:子智能体不能创建更多子智能体,子配方也不能调用其他子配方。这防止进程失控,但限制了深层嵌套。

  • 无论你使用子智能体还是子配方,总共最多只能同时运行 10 个并行工作者。这不是用户可配置的,但这个限制让资源用量可控;它可能限制非常大规模的并行。

开始使用​

我的建议:先从子智能体开始实验,理解你的工作流需求。它们更容易上手,因为你不必先写配置文件。

一旦你识别出想重复的模式,就可以把那个子智能体会话工作流转换成配方和子配方结构。这给你从实验到生产的最佳进阶。

选择在你​

选择取决于你的具体需求和工作流要求。不会重复的快速任务偏向子智能体。有多个步骤或自定义的复杂工作流偏向子配方。

你的工作流要求应该驱动这个决定。

在我们的 Discord 社区或 GitHub discussions上和我们分享你的子智能体提示或子配方想法。