---
title: "自定义 Agent"
description: "用 Markdown 文件定义自己的 Agent。理解 Agent 定义的数据模型、工具过滤策略和与 AgentTool 的联动。"
keywords: ["自定义 Agent", "Agent 定义", "Markdown Agent", "角色定制"]
---

## 核心概念

自定义 Agent 是一个 Markdown 文件——frontmatter 定义配置，正文是 system prompt。不需要写代码。

```markdown
---
name: "reviewer"
description: "Code review specialist"
tools: "Read,Glob,Grep"
model: "haiku"
---

你是代码审查专家。你的职责是...
```

这个 Markdown 文件就定义了一个完整的 Agent：它使用什么工具、什么模型、什么行为规则。

## Agent 的三种来源

| 来源 | 位置 | 优先级 |
|------|------|--------|
| **Built-in** | 硬编码 | 最低（可被覆盖） |
| **Plugin** | 插件系统注册 | 中 |
| **User/Project** | `.claude/agents/*.md` | 最高 |

合并时按 `agentType` 去重，后者覆盖前者。这意味着你可以在 `.claude/agents/` 中放一个 `Explore.md` 来完全替换内置的 Explore Agent。

## 配置字段

### 工具控制

- `tools` — 允许的工具白名单（未指定 = 全部工具）
- `disallowedTools` — 显式禁止的工具（即使 `tools` 未指定也生效）

**设计考量**：`disallowedTools` 是比 `tools` 更安全的控制方式。如果只指定 `tools` 白名单，新增工具时需要更新白名单。`disallowedTools` 是黑名单思维——默认允许，只禁止危险的。

### 模型配置

- `model` — 指定模型（`haiku`/`sonnet`/`opus`/`inherit`）
- `effort` — 推理努力程度（`low`/`medium`/`high`）

`inherit` 使用主线程的模型——适合需要完整推理能力的任务。`haiku` 适合轻量任务（如搜索），更便宜更快。

### 行为控制

- `maxTurns` — 最大 agentic 轮次（防止无限循环）
- `permissionMode` — 权限模式（`plan`/`bypassPermissions` 等）
- `background` — 始终作为后台任务运行
- `isolation` — 在独立 worktree 中运行

### 持久化

- `memory` — 启用跨会话的持久记忆（`user`/`project`/`local`）
- `mcpServers` — 引用或内联定义 MCP 服务器
- `hooks` — Agent 专属的 Hook 配置
- `skills` — 预加载的技能

## System Prompt 的注入方式

Agent 的 Markdown 正文**完全替换**默认的 system prompt，而非追加。这意味着自定义 Agent 的行为完全由你定义——不受默认 prompt 的约束。

如果启用了 `memory`，记忆指令自动追加到 system prompt 末尾。

## 工具过滤流程

```
全部工具 → disallowedTools 移除 → tools 白名单过滤 → 可用工具
```

内置 Explore Agent 的工具限制是很好的例子：
- 禁止 `Agent`（不能嵌套调用子 Agent）
- 禁止 `FileEdit`/`FileWrite`（只读）
- 禁止 `ExitPlanMode`（不需要 plan mode）

这些限制让 Explore Agent 成为一个纯粹的搜索工具——它只能看，不能改。

## 与 AgentTool 的联动

当主 Agent 需要派生子 Agent 时：

```
查找 Agent 定义 → 检查 MCP 依赖 → 过滤工具 → 解析模型 → 构建隔离环境 → 注入 system prompt → 启动子 Agent
```

每一步都使用 Agent 定义中的配置——工具列表、模型选择、权限模式、隔离环境等。

## 内置 Agent 参考

| Agent | 角色 | 工具限制 | 模型 |
|-------|------|---------|------|
| General Purpose | 通用任务 | 全部工具 | 继承主线程 |
| Explore | 代码搜索 | 只读 | haiku |
| Plan | 规划研究 | 只读 + ExitPlanMode | 继承主线程 |
| Verification | 结果验证 | 由 feature flag 控制 | — |
| Code Guide | 使用指南 | 只读 | — |

## 接下来

- **子 Agent** — 理解子 Agent 的完整执行链路
- **Skills** — 理解 Skill 中指定 Agent 定义
- **MCP 配置** — 理解 Agent 中引用 MCP 服务器
