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 工作流。

相关推荐
安逸sgr21 小时前
【端侧 AI 实战】BitNet 详解:1-bit LLM 推理优化从原理到部署!
人工智能·python·scrapy·fastapi·ai编程·claude
摆烂工程师1 天前
2026年新国内如何注册 Claude 账号保姆教程(成功率95%)
人工智能·ai编程·claude
LSssT.1 天前
OpenCode全解:从安装到使用
ai·opencode
JohnCHsu1 天前
耗时2小时58分,理想的AI编程助手Claude Code 部署与本地自托管模型配置
ai·agent·claude
安逸sgr1 天前
【Agent 架构设计】记忆系统深度解析:从 RAG 到 Hindsight 的演进之路!
人工智能·microsoft·大模型·claude·cursor
悟空码字1 天前
Windows本地部署OpenClaw:避坑指南+最佳实操
程序员·aigc·claude
itpretty2 天前
在 Claude Code 里手搓一个工作流
人工智能·ai编程·claude
147API2 天前
Claude JSON 稳定输出:Schema 校验与修复回路(Kotlin)
开发语言·kotlin·json·claude
小凡同志2 天前
Claude Code Command 指南
ai编程·claude