介绍 Custom Agents(6分钟阅读)

TLDR AI 产品

摘要

Google 在 Antigravity 2.0 和 CLI 中引入了 Custom Agents,这是一项功能,允许专门的AI代理通过减少上下文膨胀和允许分工来提高编码生产力。

Google 已经在 Antigravity 2.0 和 Antigravity CLI 中引入了 Custom Agents,Antigravity IDE 也将很快推出。Custom Agents 是专门的、基于文件的配置,定义一个特定角色,带有其自己的作用域内指令、工具和约束。该系统保持用户活跃上下文的清洁,最小化令牌开销,并为特定任务提供可预测的合作伙伴。Custom agents 不替代技能和动态子代理 - 它们只是提供更多可定制性,以实现另一个层次的优化。
查看原文
查看缓存全文

缓存时间: 2026/08/17 15:32

# Google Antigravity 博客:介绍自定义智能体 来源:https://antigravity.google/blog/introducing-custom-agents 软件工程已从编写代码行转向编排智能体。这一转变为通过分工实现真正的生产力解放带来了机遇,即将复杂项目分解为能够执行、验证并行任务的专业化智能体。 这就是我们为何在 Antigravity 2.0 和 Antigravity CLI 中引入**自定义智能体**并提供一流支持的原因,Antigravity IDE 也将紧随其后推出相关功能。 本文将详细阐述自定义智能体是什么、如何在几秒内完成设置,以及我们为自定义智能体赋予了哪些 Antigravity 特有的功能。 ## 什么是自定义智能体,为何它们如此重要? 通用型编码助手虽好,但存在两大主要局限: 1. **缺乏专业化**:通用型助手并不了解您特定项目的测试规范或依赖管理规则,除非您每次都重新解释。 2. **上下文窗口膨胀**:每次聊天都加载包含您所有编码规范、代码检查工具及测试规则的庞大单一提示词,会导致令牌预算灾难。 自定义智能体解决了这些问题。它们是基于文件的专用配置,定义特定角色及其作用域内的指令、工具和约束条件。这保持了您的活动上下文整洁,最小化了令牌开销,并为特定任务提供了可预测的协作伙伴。 或许您阅读至此会想:技能和动态子智能体不是已经解决了这些问题吗?在很大程度上确实如此!自定义智能体并未取代技能和动态子智能体,它们只是为另一层级的优化提供了更高的可定制性: - 技能显然通过提供额外上下文和指令来专门化自定义智能体,并且借助其渐进式发现机制,有助于缓解上下文窗口膨胀问题——即使并非必需,也不会默认在完整提示词中添加全部额外文本。相反,我们让智能体根据当前任务决定是否读取完整技能。但是,如果您思考在所有可能执行的任务中需要的全部技能集,这仍是一个非常庞大的列表,其描述本身也会占用大量上下文。自定义智能体让您能为当前专业化任务指定实际相关的技能子集。这一点同样适用于 MCP 服务器、钩子及其他现有定制点。此外,自定义智能体还允许您自定义系统指令、默认工具以及智能体循环中更“核心”的部分。 - 我们在几个月前引入了动态子智能体,它们也有助于解决上述问题,让主智能体能将部分工作委托给子智能体,以避免污染主智能体的上下文。“动态”部分在于主智能体可以指定发送给子智能体的提示词。而通过自定义智能体,我们更进一步:允许主智能体将任务委托给具有如前所述特定定制化配置的自定义智能体,同时还可包含模型和权限等其他详细信息。 ## Antigravity 2.0 和 CLI 中今日可用的功能 自定义智能体现已完全集成在可视化的 **Antigravity 2.0 桌面应用**和 **Antigravity CLI** 中。 类似于技能,我们采用了包含 YAML 前置元数据头的 Markdown 文件格式,同样支持对自定义智能体的渐进式发现。您可以将这些文件保存在本地工作区的 `.agents/agents/` 目录下,或全局保存在 `~/.gemini/config/agents/` 下。 通过将项目特定的智能体提交到 `.agents/agents/`,它们会自动对克隆仓库的每个团队成员可用——无需手动设置,即可为您的整个团队提供标准化、即时的工作流助手。 以下是简单智能体的**基础蓝图**: ``` --- name: dependency-modernizer description: 帮助升级本地包并验证项目测试是否通过。 model: flash tools: - view_file - replace_file_content - manage_task - run_command --- # 核心指令 您是一个依赖项现代化工具。您的职责是检查配置文件、 更新目标依赖项、运行测试套件并验证构建是否通过。 ``` 设置专用智能体只需一个 Markdown 文件。前置元数据告知产品如何运行智能体,而 Markdown 正文则直接编译为其系统提示词。有关前置元数据中可出现的所有字段,请参阅文档(https://antigravity.google/docs/subagents)。 ## Antigravity 自定义智能体的独特之处 如果您使用过该领域的其他工具,这种 Markdown 加 YAML 前置元数据的布局会显得非常熟悉。我们有意对齐文件规范,以便尽可能轻松地移植您现有的自定义智能体。 尽管如此,这些智能体在 Antigravity 底层的运行方式在结构上有所不同。让我们以基础的 `dependency-modernizer` 示例为基础进行扩展,以突出 Antigravity 中自定义智能体的一些独特可能性。 ### 1. 真正的对称性:主智能体与子智能体 在该领域的其他工具中,自定义智能体仅限于**作为子智能体**。作为用户,您与主默认智能体交互,它会在后台根据前置元数据描述决定何时启动您的工作智能体。您无法直接*以*自定义智能体的身份启动主会话。 Antigravity 通过简单的配置标志引入了**执行对称性**: ``` # 将以下内容添加到 YAML 前置元数据中: mainAgent: true subagent: true ``` - **作为主智能体**:您可以直接从 Antigravity 2.0 图形界面的下拉菜单中选择 `dependency-modernizer`,或通过 CLI 运行它(`agy --agent dependency-modernizer`)。特定的核心指令会直接编译到系统提示词中,并且您采用前置元数据中的所有智能体执行参数,从而允许您直接与自定义智能体对话。 在 Antigravity 2.0 中直接选择并运行自定义智能体作为主智能体 - **作为子智能体**:同一个智能体可以像常规方式一样,被协调器智能体动态调用为工具。 执行由协调器智能体委派的自定义智能体作为子智能体 ### 2. 作用域安全策略(`commandExecutionPolicy`) 运行一个执行命令行操作(如依赖安装或测试套件)的智能体可能令人沮丧。如果安全策略过于宽松,您可能面临运行未验证代码的风险;如果策略过于严格,您会陷入不断需要批准提示的循环中。 虽然 Antigravity 和其他工具都支持基本的、非此即彼的权限级别(如 `acceptEdits` 或 `bypassPermissions`),但我们增加了一个专用的执行过滤器: ``` # 将以下内容添加到 YAML 前置元数据中: permissionMode: acceptEdits commandExecutionPolicy: auto ``` 将 `commandExecutionPolicy: auto` 设置为允许智能体在后台自主执行标准测试和编译命令。高风险命令(如删除文件)仍严格受手动批准控制。这使得现代化工具能够在后台进行快速的试错循环,而无需不断提示您批准。 ### 3. 丰富的生命周期钩子(嵌套拦截器) 该领域的其他工具支持限定在子智能体范围内的基本生命周期钩子。Antigravity 更进一步,在智能体定义中引入了健壮的嵌套生命周期钩子模式。 我们可以在精确的执行边界为现代化工具添加设置和验证检查: ``` # 将以下钩子添加到 YAML 前置元数据中: hooks: PreInvocation: - type: command command: scripts/setup.sh PreToolUse: - matcher: run_command hooks: - type: command command: scripts/verify-local-env.sh ``` 在此示例中: - **PreInvocation**:在智能体开始思考之前运行设置脚本以准备环境。 - **PreToolUse(带匹配器)**:拦截特定的工具调用。此处,每当智能体尝试运行终端命令时,我们都会先运行一个验证脚本,以确保您的本地环境正常。 有多个位置可以放置钩子,详情请参阅我们的文档(https://antigravity.google/docs/hooks)。这种细粒度的控制可以防止智能体对本地执行环境做出假设,从而在编译循环开始之前就阻止它们。 ## 展望未来 自定义智能体只是我们迈向整个产品栈统一定制化叙事的下一步,让 Antigravity 能够以更高效的方式协助处理更复杂的任务。 要开始使用,请查阅文档中的《自定义智能体指南》(https://antigravity.google/docs/subagents),并尝试在您今天的工作区中定义您的第一个自定义智能体。 祝编程愉快!:)

相似文章

# 设计智能体团队 ## 规划你的多智能体系统 在构建多智能体系统时,前期投入时间进行规划至关重要。以下是需要考虑的几个关键问题: ### 任务分解 将复杂任务分解为更小、更易管理的子任务,通常是设计智能体团队的第一步。考虑以下几点: - **识别自然边界**:任务在哪些地方可以自然地被拆分? - **定义输入和输出**:每个子任务需要什么信息,又会产生什么结果? - **确定依赖关系**:哪些任务必须按顺序执行,哪些可以并行运行? ### 智能体角色 每个智能体应该有一个明确定义的角色和职责范围。常见的智能体角色包括: - **编排者(Orchestrator)**:协调其他智能体并管理整体工作流 - **专家(Specialist)**:执行特定领域的任务,如代码生成、数据分析或网络搜索 - **评审者(Reviewer)**:检查其他智能体的输出并提供反馈 - **聚合者(Aggregator)**:将多个智能体的结果合并为一个连贯的输出 ## 通信模式 智能体之间的通信方式会显著影响系统的性能和可靠性。 ### 层级结构 在层级结构中,一个主智能体将任务委派给子智能体: ``` 主智能体 ├── 子智能体 A ├── 子智能体 B │ ├── 子智能体 B1 │ └── 子智能体 B2 └── 子智能体 C ``` 这种模式适用于可以清晰分层分解的任务。 ### 顺序处理 智能体按照预定顺序依次处理任务: ``` 智能体 1 → 智能体 2 → 智能体 3 → 最终输出 ``` 这种模式适用于每个步骤都依赖前一步骤输出的流水线式工作流。 ### 并行处理 多个智能体同时处理任务的不同部分: ``` ┌→ 智能体 A ─┐ 输入 ───┼→ 智能体 B ─┼→ 聚合者 → 输出 └→ 智能体 C ─┘ ``` 这种模式可以显著减少复杂任务的总处理时间。 ## 工具设计 为智能体配备合适的工具对系统成功至关重要。 ### 工具粒度 - **过于细粒度**:需要许多工具调用,增加延迟和出错风险 - **过于粗粒度**:灵活性降低,难以复用 - **恰到好处**:工具完成一项明确定义的任务,且完成得很好 ### 工具文档 优秀的工具文档对智能体正确使用工具至关重要: ```python def search_web(query: str, num_results: int = 10) -> list[dict]: """ 在网上搜索给定查询的相关信息。 参数: query: 搜索查询字符串 num_results: 返回的最大结果数(默认:10) 返回: 包含 'title'、'url' 和 'snippet' 键的字典列表 示例: results = search_web("最新的 AI 研究论文", num_results=5) """ ``` ## 管理智能体状态 在多智能体系统中,状态管理是一个重要挑战。 ### 共享状态 某些信息需要在智能体之间共享: - **对话历史**:之前发生了什么 - **任务进度**:哪些子任务已完成 - **共享资源**:所有智能体需要访问的数据 ### 局部状态 其他信息应该对每个智能体保持私有: - **中间结果**:智能体工作的临时输出 - **内部推理**:思维链步骤 - **特定工具缓存**:特定于该智能体工具的缓存数据 ## 错误处理与可靠性 多智能体系统引入了新的故障模式,需要认真考虑。 ### 常见故障点 - **智能体失败**:单个智能体无法完成其任务 - **通信错误**:智能体之间的消息丢失或损坏 - **死锁**:智能体相互等待,无法继续 - **级联失败**:一个智能体的失败触发其他失败 ### 缓解策略 - **重试逻辑**:自动重试失败的操作 - **超时处理**:设置智能体响应的最大等待时间 - **回退机制**:当首选方法失败时使用替代方案 - **人工介入点**:当系统无法自动恢复时通知人类 ## 评估多智能体系统 测试和评估多智能体系统比测试单个智能体更复杂。 ### 需要测量的指标 - **任务完成率**:系统成功完成任务的频率 - **端到端延迟**:从输入到最终输出的总时间 - **成本效率**:每次成功任务完成的 API 调用次数 - **错误率**:单个智能体和整个系统的错误率 ### 测试策略 - **单元测试**:单独测试每个智能体 - **集成测试**:测试智能体对之间的交互 - **端到端测试**:在真实条件下测试整个系统 - **混沌测试**:故意引入故障,验证错误处理机制 ## 最佳实践 根据在生产环境中构建多智能体系统的经验,以下是一些关键建议: 1. **从简单开始**:先用单个智能体验证你的方法,只在确实需要时才引入多个智能体 2. **明确职责**:确保每个智能体有清晰且不重叠的职责 3. **设计可观测性**:从一开始就内置日志记录和监控功能 4. **迭代优化**:从基础设计开始,根据实际性能数据不断改进 5. **考虑成本**:多智能体系统会成倍增加 API 调用次数——确保收益值得付出这些成本 6. **记录你的架构**:清晰地记录每个智能体的角色、工具和通信模式

Reddit r/openclaw

Google Antigravity 已推出对构建自主专业化智能体团队的支持,其中包括 Sentinel、Orchestrator、Explorer、Worker、Reviewer、Critic 和 Auditor 等角色,每个角色各司其职,而非依赖单一的通用智能体。