更新时间:2026-05-11 GMT+08:00
分享

子代理

在华为云码道(CodeArts)代码智能体中,子代理是主代理的AI助手,用于处理特定类型的工作,并将结果返回给主代理。

子代理主要用于以下场景:

  • 长链路复杂任务:适用于流程冗长、逻辑复杂的任务,由子代理自主拆解任务、规划执行步骤并分布落地,例如全链路代码开发。
  • 上下文隔离:通过子代理隔离子任务上下文,避免主代理上下文冗余、Token膨胀及上下文溢出问题,例如批量数据解析。
  • 垂直领域专业能力:各子代理可配置专属角色提示词与私有知识库,形成领域专家能力,提升专业推理精度与任务准确率,例如安全审计专家子代理。
  • 权限隔离:为不同子代理独立配置访问权限,实现敏感数据、私有知识库、高低危接口、文件资源及项目数据的权限隔离,保障数据与系统安全,例如数据删除、系统指令等高风险操作权限隔离。

内置子代理

华为云码道已内置多款子代理,无需您配置,由智能体决定何时使用。

表1 内置子代理列表

名称

说明

general

通用代理,用于研究复杂问题和执行多步骤任务。

explore

快速代码库探索代理,专用于按模式查找文件、搜索代码关键字、回答代码库问题。

spec-task-agent

根据需求和设计生成实现任务。

spec-requirement-agent

基于项目描述和上下文生成EARS格式需求。

spec-design-agent

生成综合技术设计,将需求(做什么)转化为架构(如何做)。

developer-test-agent

专门用于单元测试生成、修复、覆盖率优化和审查的子代理。

使用示例请参见单元测试

仅JetBrains系列的开发工具(PyCharm、IntelliJ IDEA、WebStorm及CLion)包含该子代理。

子代理分类

华为云码道支持项目级个人级两种子代理。用户可根据具体开发场景与协作需求,选择最适合的子代理层级进行设置,实现灵活高效的代码管理。存在同名的项目级和个人级子代理时,项目级子代理优先级高于个人级子代理

表2 子代理分类

类型

作用域

说明

项目级

当前项目

仅针对当前项目的子代理,随代码库分发,存于本地。

存储位置:项目根目录的“./.codeartsdoer/agents”

个人级

当前用户下的所有项目

个人习惯或特定偏好的子代理,仅对本人生效。

存储位置:本地的“~/.codeartsdoer/agents”

子代理文件格式

子代理采用Markdown文件格式编写,文件头部配置YAML Frontmatter元信息,主体承载Prompt角色指令。

---
name: agent-name         # 子代理名称
mode: subagent           # 固定为子代理模式
description: Agent desc  # 代理功能描述
tools:                   # 工具权限配置
  tool1: allow           # 允许使用tool1
  tool2: deny            # 禁止使用tool2
---

# 提示词
这里是子代理的系统提示词内容

上述子代理各参数填写规范如下表所示:

表3 Markdown文件参数说明

参数

是否必选

参数类型

默认值

描述

name

String

不涉及

子代理的名称。

mode

String

subagent

设置代理的角色。

  • subagent:只能当作子代理被调用。
  • primary:只能当主代理,不能被调用。
  • all:既能当主代理,也能被调用。

description

String

不涉及

子代理的描述。

tools

tools Object

不涉及

控制代理可使用的工具权限,华为云码道支持的工具如表5,您也可以使用“*”匹配所有工具。

示例:

tools:
  "*": deny    #默认禁止所有工具

提示词

String

-

子代理的系统提示词。

表4 tools Object

参数

说明

allow

允许使用,无需审批。

deny

禁止使用该工具。

ask

使用工具前须向用户申请并获得审批。

表5 华为云码道支持的工具

工具

说明

read

读取文件

write

写入文件

edit

编辑文件

bash

执行命令

glob

文件模式匹配

grep

内容搜索

list

列出目录

task

子任务

webfetch

获取网页

websearch

搜索网页

question

询问用户

创建子代理

华为云码道支持添加项目级个人两种类型的子代理。除了直接创建子代理外,您还可以通过导入的方式,快速添加自定义子代理,灵活高效,轻松扩展能力。

当前项目定制的子代理,随代码库一并分发。项目级子代理添加后即生效,何时使用由智能体决定。

通过以下任一方法添加项目级子代理。

  • 新建一个项目级子代理。
    1. 参考快速启动操作,登录华为云码道。
    2. 打开华为云码道聊天窗口。
      • 华为云码道IDE:单击IDE顶部菜单栏中的展开AI侧栏图标 ,打开华为云码道聊天窗口。
      • Visual Studio Code:单击Visual Studio Code侧边栏图标 ,打开华为云码道聊天窗口。
      • JetBrains:以IntelliJ IDEA为例,单击IntelliJ IDEA侧边栏图标 ,打开华为云码道聊天窗口。

      不同工具中华为云码道的界面风格有所差异,本章以其在IDE工具中的界面为例进行介绍,实际操作请以所用工具的显示为准。

    3. 在“资源管理器”的“./.codeartsdoer/agents”文件夹上,单击鼠标右键选择“新建文件”,新建一个Markdown格式的文件。

      子代理名称由小写字母、数字和连字符(-)组成,开头和结尾不能是连字符,且连字符不可连续使用,长度1~64字符。例如code-reviewer。

    4. 在code-reviewer.md文件中编写子代理,完成后按快捷键(Windows/Linux:“Ctrl+S”;macOS:“Command(⌘)+S”)保存。
  • 将已存在的子代理放置到指定路径。

    将本地已存在的子代理放置到项目根目录的“./.codeartsdoer/agents”路径中。

个人级子代理添加后即生效,何时使用由智能体决定。

通过以下任一方法添加个人级子代理。

  • 新建一个个人级子代理。
    1. 在本地的“~/.codeartsdoer/agents/”路径中,新建一个Markdown格式的子代理文件。

      子代理名称由小写字母、数字和连字符(-)组成,开头和结尾不能是连字符,且连字符不可连续使用,长度1~64字符。例如code-analyzer。

    2. 在code-analyzer.md文件中编写子代理,完成后按快捷键(Windows/Linux:“Ctrl+S”;macOS:“Command(⌘)+S”)保存。
  • 将已存在的子代理放置到指定路径。

    将本地已存在的子代理放置到“~/.codeartsdoer/agents/”路径中。

子代理示例

以创建一个项目级子代理为例,向您介绍如何使用子代理。

  1. 在“资源管理器”的“./.codeartsdoer/agents”文件夹上,单击鼠标右键选择“新建文件”,新建一个Markdown格式的文件,文件名为code-analyzer.md。
  2. 在创建的code-analyzer.md文件中,添加如下内容并保存。

    ---
    name: code-analyzer
    mode: subagent
    description: 代码分析专家,只读取不修改
    tools:
      read: allow
      glob: allow
      grep: allow
      list: allow
    ---
    
    你是一个代码分析专家。你的任务是:
    1. 分析代码结构和质量
    2. 识别潜在问题和改进点
    3. 提供优化建议
    请仔细分析代码,但不要修改任何文件。

  3. 添加待检查的代码文件。

    在华为云码道聊天窗口的输入框中,输入“#”,选择“File”并从列表中选择您需要的文件(如LoginSystem.java)。如果需要添加多个文件,只需在输入框中再次输入“#”,即可打开上下文窗口继续添加。

    图1 添加代码文件

  4. 调用子代理检查代码质量。

    1. 在输入框中,输入相关指令,如“使用code-analyzer检查代码质量”,单击发送图标 或使用“Enter”快捷键发送。
      图2 输入指令
    2. 查看子代理调用结果。

      如下图所示,智能体自动调用子代理,并在回复中显示调用的子代理名称。

      图3 子代理使用示例

相关文档