Skip to content

第 9 章 · 自定义指令与配置

本章目标:掌握 Claude Code 的全局/项目配置体系,学会选择合适的模型(Opus/Sonnet/Haiku)、定制 system prompt 和 output style。

9.1 配置文件层级

Claude Code 的配置分为三个层级,优先级从高到低:

text
┌─────────────────────────────────────────────┐
│ 优先级 1:命令行参数 (--model 等)              │
├─────────────────────────────────────────────┤
│ 优先级 2:项目配置 .claude/settings.json       │
│   (仅当前项目生效,可提交到 Git)               │
├─────────────────────────────────────────────┤
│ 优先级 3:用户配置 ~/.claude/settings.json     │
│   (所有项目共享的默认值)                      │
└─────────────────────────────────────────────┘

项目级配置示例

json
// .claude/settings.json — 可提交到仓库供团队共享
{
  "permissions": {
    "allow": [
      "Bash(npm run lint:*)",
      "Bash(npx jest:*)",
      "Edit"
    ],
    "deny": ["Read(.env*)"]
  },
  "model": "claude-sonnet-4-20250514",
  "env": {
    "NODE_ENV": "development"
  }
}

团队协作

.claude/settings.json 提交到 Git,团队成员 clone 后自动获得统一的权限规则和模型偏好。个人 API Key 等敏感信息放在用户级配置中。

9.2 模型选择策略

Claude Code 支持在多个模型间切换,各有取舍:

模型代号强项成本适用场景
Opusclaude-opus-4-20250514最强推理、复杂架构设计最高架构决策、疑难 bug
Sonnetclaude-sonnet-4-20250514平衡性能与成本中等日常编码、代码审查
Haikuclaude-haiku-20250306最快速度、最低延迟最低简单查询、批量操作

切换方式

bash
# 方式一:启动时指定
claude --model claude-sonnet-4-20250514

# 方式二:交互模式中切换
> /model

# 方式三:settings.json 持久设置
{
  "model": "claude-sonnet-4-20250514"
}

场景化模型搭配

bash
# 日常开发用 Sonnet
alias cc="claude --model claude-sonnet-4-20250514"

# 遇到难题升级到 Opus
alias cco="claude --model claude-opus-4-20250514"

# 快速查询用 Haiku
alias cch="claude --model claude-haiku-20250306 -p"

成本优化技巧

对于 -p(非交互模式)的一次性任务,如果问题简单,用 Haiku 可以节省 90% 以上的费用。把 Opus 留给真正需要深度推理的场景。

9.3 System Prompt 定制

CLAUDE.md 就是 Claude Code 的"system prompt"——它定义了 Claude 在项目中的行为边界和工作方式。

结构化的 CLAUDE.md

markdown
# 项目概述
这是一个基于 Next.js 14 的电商前端项目。

## 技术栈
- Next.js 14 (App Router)
- TypeScript strict mode
- Tailwind CSS + shadcn/ui
- Prisma ORM + PostgreSQL

## 编码规范
- 使用函数式组件和 hooks,禁止 class 组件
- 所有组件必须有 TypeScript 类型定义
- 样式只用 Tailwind utility classes,不写自定义 CSS
- 错误处理统一使用 Result<T, E> 模式

## 常用命令
- 开发服务器: pnpm dev
- 测试: pnpm test
- 类型检查: pnpm type-check
- Lint: pnpm lint

## 不要做的事
- 不要修改 prisma/schema.prisma 除非明确要求
- 不要安装新的 npm 包除非没有现有替代方案
- 不要修改 .github/workflows/ 目录下的文件

分层指令

大型项目可以在子目录放置额外的 CLAUDE.md:

text
project/
├── CLAUDE.md              ← 全局约定
├── src/
│   ├── CLAUDE.md          ← src 目录专属规则
│   ├── api/
│   │   └── CLAUDE.md      ← API 层专属规则
│   └── components/
│       └── CLAUDE.md      ← 组件层专属规则
└── docs/
    └── CLAUDE.md          ← 文档目录规则

当 Claude 在某个子目录工作时,会自动加载该目录及其父目录的 CLAUDE.md。

9.4 Output Style 设置

控制 Claude 回复的格式和详细程度:

bash
# 交互模式中切换输出风格
> /output-style

# 可选风格:
# default      — 标准回复格式
# explanatory  — 附带教学解释
# concise      — 尽量简短

自定义 Output Style

创建 .claude/output-styles/custom.md

markdown
# Code Review Mode

你是一位严格的代码审查员。回复遵循以下格式:
1. 先列出发现的问题(按严重程度排序)
2. 每个问题附带修复建议和代码片段
3. 最后给出总体评分(1-10)

始终使用中文注释。
bash
# 使用自定义风格
> /output-style custom-code-review

9.5 环境变量与高级配置

json
{
  "env": {
    "ANTHROPIC_MODEL": "claude-sonnet-4-20250514",
    "CLAUDE_CODE_MAX_OUTPUT_TOKENS": "8192",
    "DISABLE_TELEMETRY": "1",
    "HTTP_PROXY": "http://proxy.company.com:8080"
  }
}
变量用途
ANTHROPIC_MODEL覆盖默认模型
CLAUDE_CODE_MAX_OUTPUT_TOKENS单次回复最大 token 数
DISABLE_COST_WARNINGS关闭费用警告提示
HTTP_PROXY / HTTPS_PROXY企业网络代理

本章小结

  • 三层配置:CLI 参数 > 项目 settings.json > 用户 settings.json;
  • 模型三级:Opus(最强)/ Sonnet(平衡)/ Haiku(最快最便宜),按场景选用;
  • CLAUDE.md 是核心定制点,支持子目录分层;
  • /output-style 控制回复格式,可自定义审查风格等专用模式。

🧪 随堂测验

点击你认为正确的选项。答错时会展示正确答案与原因解析。

1. 三个配置层级中优先级最高的是?

2. 日常编写 CRUD 代码应选择哪个模型以获得最佳性价比?

3. 子目录中的 CLAUDE.md 什么时候会被加载?

4. 团队希望统一权限规则和模型偏好,最佳做法是什么?

🛠️ 动手实践

  1. 为你的项目创建一个结构化的 CLAUDE.md,包含技术栈、编码规范和常用命令。
  2. 分别用 Haiku 和 Sonnet 完成同一个代码审查任务,对比质量和费用。
  3. 创建一个自定义 output-style(如"教学导师模式"),观察 Claude 的回复变化。

完成练习后,进入下一章:MCP 集成与外部工具