> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cowagent.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# subagent - 子 Agent

> 创建临时的子 Agent 执行独立任务，支持并行，只返回结论

`subagent` 让主 Agent 在对话过程中临时创建执行单元，把一个独立任务交给它，在自己的上下文中完成后返回结果。功能效果和使用场景见[子 Agent](/zh/multi-agent/subagent)，本页介绍工具的类型、配置与实现细节。

## 内置类型

创建时会选择一种类型，类型决定系统提示词和可用的工具范围：

| 类型                | 适用场景                           | 工具范围                                                                                      |
| ----------------- | ------------------------------ | ----------------------------------------------------------------------------------------- |
| `general-purpose` | 既需要调查也需要操作的多步任务：搜索、阅读、执行命令、写文件 | 主 Agent 的全部工具（禁用工具除外）                                                                     |
| `explore`         | 只读的调查：查找文件、检索代码或文档、从网上收集信息     | `read`、`ls`、`search_files`、`web_search`、`web_fetch`、`vision`、`memory_search`、`memory_get` |

## 自定义类型

在工作区的 `subagents/` 目录下放置一个 `.md` 文件即可新增一种类型，格式与技能一致：

```markdown theme={null}
---
name: research-report
description: 针对一个主题查阅大量网络资料，返回一份带来源的简短报告。适用于需要打开很多页面、但只需要结论的场景。
tools: web_search, web_fetch, read, write
---
你是一名研究助理，每次接收一个主题，返回一份报告。

工作方式：
1. 先广泛检索，再深入查看其中最有价值的两三个来源。
2. 优先使用一手来源（官方文档、厂商定价页、原始公告），而不是转述文章。
3. 数字、日期、价格需要用第二个来源交叉验证。

报告不超过 400 字，依次包含：
- 结论：两三句话回答问题
- 发现：分条列出，每条末尾附来源 URL
- 未证实：无法从一手来源确认的内容

查不到的内容写"未找到"，不要用推测填补。
```

字段说明：

| 字段            | 说明                                       |
| ------------- | ---------------------------------------- |
| `name`        | 类型名称                                     |
| `description` | 主 Agent 据此选择类型，因此应说明「什么情况下使用它」，而不是「它是什么」 |
| `tools`       | 可用工具，省略表示继承主 Agent 的全部工具                 |
| 正文            | 子 Agent 的系统提示词，说明工作方式和返回内容               |

限定 `tools` 是最可靠的约束方式：只有 `read, ls, search_files` 的类型无法修改任何文件。写了 `tools` 的类型不会继承技能，需要用到技能时省略该字段，在正文中限定工作范围。

工作区首次启动时会在 `subagents/` 下生成 `README.md` 和 `example.md.template`，把后者复制为 `.md` 文件即可启用。模板每轮对话重新读取，新增文件在下一条消息生效，无需重启。

<Tip>
  工具名按精确匹配，`tools` 白名单不包含 MCP 工具。需要使用 MCP 工具时请省略该字段。
</Tip>

## 禁用的工具

以下工具对所有子 Agent 不可用：

| 工具                            | 原因                                        |
| ----------------------------- | ----------------------------------------- |
| `send`、`scheduler`            | 会以主 Agent 的名义向用户渠道发送消息或创建任务，超出单个任务的范围     |
| `env_config`、`evolution_undo` | 会修改 Agent 自身配置                            |
| `subagent`                    | 避免开放全部工具的类型无限递归，实际允许的嵌套层数由 `max_depth` 控制 |

## 相关配置

子 Agent 默认开启。可在 Web 控制台与桌面端的「配置 → Agent 配置」中开关，修改后下一轮对话生效，无需重启。更细的限制在 `config.json` 中调整：

```json theme={null}
"subagent": {
  "enabled": true,
  "max_depth": 1,
  "max_concurrent": 3,
  "timeout_seconds": 300
}
```

| 参数                | 说明                               | 默认值    |
| ----------------- | -------------------------------- | ------ |
| `enabled`         | 是否启用子 Agent                      | `true` |
| `max_depth`       | 嵌套层数，`1` 表示只有主 Agent 可以创建子 Agent | `1`    |
| `max_concurrent`  | 单次最多并行的子 Agent 数量                | `3`    |
| `timeout_seconds` | 单次调用的总时长上限，包含其中所有并行任务            | `300`  |

## 实现设计

* **上下文隔离**：子 Agent 以空白消息历史启动，不加载人设文件，不接入记忆管理器。主对话中只保留一次调用记录和最终结论。
* **并行执行**：单次调用中的多个任务在各自线程中执行，共享同一份时长预算；同一轮中发出的多次调用也会同时启动。
* **步数减半**：子 Agent 的最大步数为主 Agent 的一半。任务范围已经明确，不需要与整场对话相同的预算；超出时会要求它对已完成的部分作出总结。
* **超时可追溯**：超时的任务会被取消并标记为超时，结果数量始终与任务数一致，主 Agent 能够区分「没有查到」和「没有执行完」。
* **展示与上下文分离**：返回给模型的是结构化数据，展示给用户的是排版后的报告，两者由同一份结果生成，展示内容不进入模型上下文。
