Claude Code 中的 agents 目录详解:自定义子代理完全指南

很多人在使用 Claude Code 时,会注意到 ~/.claude/ 目录下有一个 agents 文件夹,但不清楚它的用途、文件格式,以及它和 CLAUDE.md 的区别。本文做一个系统性的梳理。

1. agents 目录是什么?

~/.claude/agents/ 用于存放自定义子代理(sub-agent)定义文件 。每个 .md 文件定义一个专门的 AI 助手,可以被 Claude Code 通过 Agent 工具按需调用。

子代理的核心价值:

  • 上下文隔离 --- 每个 agent 有独立的上下文窗口,不会污染主会话
  • 并行执行 --- 多个 agent 可以同时工作,提升效率
  • 专门化配置 --- 每个 agent 可以有自己的模型、工具集、权限策略

存放位置支持两级:

级别 路径 作用域
全局 ~/.claude/agents/ 所有项目可用
项目级 <project>/.claude/agents/ 仅当前项目可用

2. 文件格式规范

Agent 文件采用 Markdown + YAML frontmatter 格式,文件扩展名通常为 .md 或 .agent.md。

基本结构

markdown 复制代码
---
name: my-agent
description: 简短描述何时触发这个 agent
model: sonnet
tools: [Read, Grep, Glob, Bash]
maxTurns: 50
---

# Agent 的具体指令

这里写 markdown 格式的指令内容...

常用 frontmatter 字段

字段 类型 说明
name string Agent 标识名称
description string 描述何时触发(帮助 Claude 决定是否调用)
model string 使用的模型:sonnet / opus / haiku / inherit
tools list 允许使用的工具列表
disallowedTools list 明确禁止使用的工具
permissionMode string 权限模式:strict / relaxed / inherit
maxTurns number 最大对话轮次
skills list 可使用的 skills 列表
mcpServers list 可访问的 MCP 服务器
memory boolean 是否持久化上下文
color string UI 显示颜色(如 "#hexcode")

示例:一个代码审查 Agent

markdown 复制代码
---
name: code-reviewer
description: Use this agent to perform thorough code reviews on pull requests or changed files.
model: opus
tools: [Read, Grep, Glob, Agent]
maxTurns: 30
---

# Code Review Agent

You are a senior code reviewer. When reviewing code:

1. Check for correctness and potential bugs
2. Evaluate code style and consistency
3. Look for security vulnerabilities
4. Suggest performance improvements
5. Verify error handling completeness

Output a structured review report with severity levels: Critical / Warning / Info.

3. agents 目录名能改吗?

不能。 agents 是 Claude Code 硬编码的查找路径,无法更名。Claude Code 会固定在以下两个位置查找 agent 定义:

复制代码
~/.claude/agents/           # 全局
<project>/.claude/agents/   # 项目级

如果你需要在多个工具间共享 agent 配置,可以考虑使用符号链接(symlink)。

4. agents 与 CLAUDE.md 的区别

这是最容易混淆的地方。两者虽然都在 ~/.claude/ 目录下,但定位完全不同:

对比维度 CLAUDE.md agents/*.md
定位 全局指令和项目规范 专门化的子代理 worker
加载方式 每次会话自动加载 按需调用或触发时加载
上下文 共享主会话上下文 独立隔离的上下文窗口
执行方式 作为主 agent 的一部分运行 作为独立子进程运行
文件格式 纯 Markdown YAML frontmatter + Markdown
层级机制 支持(全局 → 项目 → 子目录) 不支持层级覆盖
并行能力 单线程执行 多个 agent 可并行

用一句话总结:

  • CLAUDE.md = "我是谁、我的规矩是什么"(身份和规范)
  • agents/ = "我手下有哪些专家可以调遣"(专门化工具人)

CLAUDE.md 适合放什么

markdown 复制代码
# CLAUDE.md 示例
- 项目使用 TypeScript + React
- 代码风格遵循 Airbnb 规范
- 提交信息使用 Conventional Commits 格式
- 构建命令:npm run build
- 测试命令:npm test

agents 适合放什么

  • Crash 分析专家(自动 GDB 调试)
  • 代码审查员(专注 review 逻辑)
  • 文档生成器(自动生成 API 文档)
  • 安全审计员(扫描漏洞模式)

5. 为什么 CLAUDE.md 不能放在 agents 目录里?

这是由两者完全不同的加载机制决定的:

原因一:加载时机不同

CLAUDE.md 在每次对话开始时自动注入到系统提示中,始终生效。而 agents 目录下的文件只在匹配到特定任务时才被加载。如果把 CLAUDE.md 放进 agents 目录,它就变成了一个"子代理定义",不再是全局指令了。

原因二:层级加载机制

CLAUDE.md 支持多级覆盖:

复制代码
Enterprise 策略(如有)
  └── ~/.claude/CLAUDE.md(个人全局)
        └── <project>/CLAUDE.md(项目级)
              └── <project>/src/CLAUDE.md(子目录级)

越具体的目录,CLAUDE.md 的优先级越高。agents 不具备这种层级关系。

原因三:文件格式不同

CLAUDE.md 是纯 Markdown,Claude Code 直接将其内容作为上下文注入。而 agent 文件需要 YAML frontmatter 来声明模型、工具、权限等配置,两者的解析逻辑完全不同。

原因四:架构职责分离

将"我应该遵守的规则"和"我可以调用的专家"混在一起,会导致职责不清。这是良好的软件设计原则 ------ 关注点分离。

6. 最佳实践

  1. CLAUDE.md 保持精简:只放始终需要的全局指令,避免超过 200 行
  2. Agent 按职责拆分:每个 agent 专注一个领域,不要做"全能 agent"
  3. 善用项目级 agents:通用 agent 放全局,项目特定的放项目目录
  4. 合理设置 maxTurns:避免 agent 无限循环,一般 30-50 轮足够
  5. 选择合适的 model :简单任务用 haiku/sonnet,复杂推理用 opus

总结

你想要... 用什么
设置全局编码规范 CLAUDE.md
定义项目构建命令 CLAUDE.md
创建专门的 crash 分析助手 agents/
创建并行工作的代码审查员 agents/
保存用户偏好设置 CLAUDE.md
隔离复杂任务避免上下文溢出 agents/

~/.claude/ 目录的设计体现了清晰的架构思想:CLAUDE.md 是记忆,agents 是能力。理解这个区别,才能更好地定制你的 Claude Code 工作流。

相关推荐
邵奈一5 小时前
2.5倍速不降智:Opus 5.5极速版开闸
大模型·ai编程·claude·opus5.5·极速模式
ZzT17 小时前
Claude Code 团队的代码评审:合并量翻倍,回滚率降了 40%
ai编程·claude
冬奇Lab1 天前
每日一个开源项目(第238篇):Impeccable - 让每个 AI 编程工具都学会审美的设计引擎
人工智能·开源·claude
孟健1 天前
Claude Code 桌面端魔改多 Agent:从日耗 6 美元到账单失控的实测复盘
架构·ai编程·claude
jerrywus2 天前
用 Pi 接入 Hindsight:安装配置、记忆检索与实战排查
chatgpt·agent·claude
一缕82年的清风2 天前
深度慢思考时代:为什么“教 AI 一步步做”正在成为最大的负优化?
claude
乘风gg2 天前
AI Coding 时代最值钱的东西,软件工程(上)
前端·ai编程·claude
ZzT3 天前
日合并 3 万次之后,Anthropic 换掉了 Git
ai编程·claude