第 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 支持在多个模型间切换,各有取舍:
| 模型 | 代号 | 强项 | 成本 | 适用场景 |
|---|---|---|---|---|
| Opus | claude-opus-4-20250514 | 最强推理、复杂架构设计 | 最高 | 架构决策、疑难 bug |
| Sonnet | claude-sonnet-4-20250514 | 平衡性能与成本 | 中等 | 日常编码、代码审查 |
| Haiku | claude-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-review9.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. 团队希望统一权限规则和模型偏好,最佳做法是什么?
🛠️ 动手实践
- 为你的项目创建一个结构化的 CLAUDE.md,包含技术栈、编码规范和常用命令。
- 分别用 Haiku 和 Sonnet 完成同一个代码审查任务,对比质量和费用。
- 创建一个自定义 output-style(如"教学导师模式"),观察 Claude 的回复变化。
完成练习后,进入下一章:MCP 集成与外部工具。