---
title: "子代理"
description: "把有边界的工作交给子 agent：它们有自己的工具面、模型和权限姿态，可以并行、可以后台，父会话继续干活。"
---

> Documentation Index
> Fetch the complete documentation index at: https://colmugx.github.io/cetas/llms.txt
> Use this file to discover all available pages before exploring further.

# 子代理

子代理是主会话为一件有边界的工作拉起的子 agent。它拿到全新的模型选择、全新的权限姿态和独立的"写前先读"状态；同时它绕不过父级 —— 只有宿主能重建的核心工具才会被继承。

典型用法：对一个 diff 做只读评审、只带两个工具的窄口径修复、允许抓取但绝不写盘的调研子代理，或者在工作能干净切分时并行开几个。

## 工作怎么派下去

agent 通过 `subagent` 工具拉起子代理。彼此独立的子代理可以作为一波并行执行，耗时的可以放后台跑，父会话继续干活。父与子之间随时可以提问：子代理需要决策时会问，答案会回到同一个会话里。

每个子代理的记录在父会话生命周期内驻留内存，所以续接的对话能把它接回来，而不是从头再来。

## Kind：可复用的预设

一个 *kind* 就是一份子代理预设 —— 名字、描述、工具白名单、模型、推理档位、权限模式，外加一段提示模板。定义它有两个地方。

**文件**放在 `.cetas/agents/<name>.md`，可以按用户放，也可以按项目放：

```markdown
---
name: reviewer
description: 只读的 diff 评审员
tools: read, grep, glob
effort: low
mode: readonly
---

你在不动工作区的前提下评审改动。

来自调用方的指令：
<fillin>
{{instructions}}
</fillin>
```

frontmatter 里的 `name` 必须和文件名一致。未知 key 会被忽略；缺 `name` / `description`、列表项非字符串、块没有闭合、`mode` 不认识，都是解析错误 —— 坏 frontmatter 会被拒绝，不会被修。列表可以写成逗号分隔的字符串，也可以写成短横线列表。

**settings 里的条目**更轻，写在 `settings.json` 的 `subagent.kinds` 下，字段名一致，只是换成 JSON 语法。`body` 可以省略，省略时会用 `name` 和 `description` 生成一段通用模板。

按 kind 名的优先级：项目 `.md` → 用户 `.md` → settings 条目 → 内置。

## 工具白名单

三种状态：

| `tools` | 含义 |
| --- | --- |
| 不写 | 继承宿主默认的核心工具集 |
| `[]` | 一个工具都没有 |
| 一个列表 | 就是这些工具 |

## 默认模型与限额

子代理的默认模型、推理档位和全部限额走 settings 的 `subagent` 段，每个字段的默认值见 [Settings 参考](/cetas/reference/settings/)；不配就是默认值。模型选择的优先级链：显式传参 → kind 绑定 → `default_model` → 父级当前选择。

## 注意事项

- 子代理不继承宿主动态工具和装饰器。需要某个工具的 kind 要显式写出来，并且宿主能重建它。
- 子代理的权限姿态是自己的。父级是 `yolo` 时，一个 `readonly` 子代理依然写不了。
- `spawn_budget` 是防止跑偏的计划变成一百个 agent 的护栏；要抬就明确地抬。

Source: https://colmugx.github.io/cetas/configuration/subagents/index.mdx
