Agent SDK 基于 Claude Code 构建,SDK Agent 可以访问相同的文件系统功能:项目指令(CLAUDE.md)、Skills、Hooks、Slash Commands 等。通过 settingSources 控制加载哪些文件系统配置。

核心机制

settingSources 三个来源:

来源加载内容位置
"project"项目 CLAUDE.md、rules、skills、hooks、settings.json<cwd>/.claude/ 及父目录
"user"用户 CLAUDE.md、rules、skills、settings~/.claude/
"local"CLAUDE.local.md、settings.local.json<cwd>/.claude/ 及父目录

默认行为:省略 settingSources 等同于 ["user", "project", "local"],传空数组禁用文件系统配置。

不受 settingSources 控制的输入:

  • Managed policy settings(始终加载)
  • ~/.claude.json 全局配置(始终读取)
  • Auto memory(~/.claude/projects/<project>/memory/,默认加载到 system prompt)

功能选择指南:

目标使用SDK 配置
项目级持久指令CLAUDE.mdsettingSources: ["project"]
按需加载的参考资料SkillssettingSources + skills 选项
可复用工作流Skills(可调用)同上
隔离子任务Subagentsagents 参数 + allowedTools: ["Agent"]
工具调用拦截/审计Hookshooks 参数或 settings.json
外部服务集成MCPmcpServers 参数

关键细节

async for message in query(
    prompt="Help me refactor the auth module",
    options=ClaudeAgentOptions(
        setting_sources=["user", "project"],  # 加载 CLAUDE.md、skills、hooks
        allowed_tools=["Read", "Edit", "Bash"],
    ),
):
    ...

CLAUDE.md 加载层级:项目根目录、父目录(向上到仓库根)、子目录(按需加载)、用户级(~/.claude/CLAUDE.md)。多层级叠加,无硬性优先级,冲突时 Claude 自行解释。

Hooks 两种类型:

  • 文件系统 Hooks(settings.json):支持 shell 命令、HTTP、MCP 工具、prompt 评估、Agent 验证器,在主 Agent 和子 Agent 中都运行
  • 编程式 Hooks(代码中注册):只在主会话中运行,支持返回结构化决策

与其他概念的关联

实践要点

  • 多租户部署必须设置 settingSources: [] 并禁用 auto memory(CLAUDE_CODE_DISABLE_AUTO_MEMORY=1),防止主机配置泄漏
  • CLAUDE.md 注入到对话而非 system prompt,与任何 system prompt 配置兼容
  • 每个功能都会增加上下文窗口占用,按需启用
  • 子 Agent 与 Agent Teams 不同:子 Agent 是临时的、隔离的;Agent Teams 是多个独立 Claude Code 实例协作(CLI 功能)