2.7 Output Styles:自定义输出风格
什么是 Output Styles
Output Styles 是 Claude Code 中用于自定义 AI 输出风格和行为模式的功能。 通过 Output Styles,你可以将 Claude Code 转变为任何类型的 AI 助手——不仅限于软件工程任务,还可以是教学助手、文档写手、研究员等。
核心价值
| 特性 | 说明 |
|---|---|
| 行为定制 | 根据需求改变 Claude 的输出风格 |
| 场景适配 | 同一工具适应不同使用场景 |
| 工作流优化 | 保持核心能力的同时调整交互方式 |
| 灵活切换 | 随时在不同风格间切换 |
工作原理
Output Styles 直接修改 Claude Code 的系统提示(System Prompt),从而改变其行为模式:
┌─────────────────────────────────────────────────────────────┐
│ Claude Code 系统提示 │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌───────────────────────────────────────────────────────┐ │
│ │ 原始系统提示(可选保留) │ │
│ │ │ │
│ │ Output Style 指令会追加到系统提示末尾: │ │
│ │ • 定义输出风格和行为 │ │
│ │ • 指定交互方式 │ │
│ │ • 设置特定场景的规则 │ │
│ │ │ │
│ └───────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌───────────────────────────────────────────────────────┐ │
│ │ 根据风格生成响应 │ │
│ │ • 调整语气 • 改变执行方式 • 添加 TODO 标记 │ │
│ └───────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘关键特点:
- 所有 Output Styles 都会排除"高效输出"指令(如简洁回复)
- 自定义风格默认排除编程指令(除非设置
keep-coding-instructions: true) - 风格会在对话中触发提醒,确保 Claude 遵循风格指令
内置 Output Styles
Claude Code 提供三种内置输出风格:
1. Default(默认)
标准软件工程模式,专为高效完成编程任务设计。
特点:
- 简洁直接的输出
- 专注于代码实现
- 最小化解释
2. Explanatory(解释模式)
在完成编程任务的同时,提供教育性的"洞察(Insights)"。
特点:
- 解释实现选择的原因
- 说明代码库模式
- 帮助理解技术决策
示例输出:
💡 Insight: 这里使用 useMemo 是因为 filterItems 是一个开销较大的计算。
通过记忆化,只有当 items 或 searchTerm 变化时才会重新计算,
避免了每次组件渲染都重新过滤整个列表。
[然后是具体的代码实现...]3. Learning(学习模式)
协作式、边做边学的模式。Claude 不仅分享洞察,还会要求你自己编写小段代码。
特点:
- 交互式学习体验
- 使用
TODO(human)标记让你实现代码片段 - 引导式教学方法
示例输出:
让我们一起实现这个功能。我先搭建框架,然后你来完成核心逻辑:
```javascript
function validateUser(user) {
// TODO(human): 实现用户名验证
// 要求:用户名长度 3-20 字符,只能包含字母和数字
// TODO(human): 实现邮箱格式验证
// 提示:可以使用正则表达式
return isValid;
}💡 Hint: 对于用户名验证,可以使用 /^[a-zA-Z0-9]{3,20}$/ 正则表达式。
---
## 使用 Output Styles
### 方法一:交互式菜单
```bash
/output-style然后从菜单中选择想要的风格。
方法二:直接切换
/output-style [风格名称]示例:
# 切换到解释模式
/output-style explanatory
# 切换到学习模式
/output-style learning
# 切换回默认模式
/output-style default方法三:通过配置菜单
/config然后选择 Output Style 选项。
存储位置: 更改保存在项目级别的 .claude/settings.local.json 中。
创建自定义 Output Styles
自定义 Output Styles 是带有 YAML frontmatter 的 Markdown 文件。
文件结构
---
name: 我的自定义风格
description: 这个风格用于什么场景的简短描述
keep-coding-instructions: false
---
# 自定义风格指令
这里是你的自定义指令内容...
## 行为规范
定义 AI 在此风格下应该如何行动...
## 输出格式
定义期望的输出格式...存储位置
| 级别 | 路径 | 作用域 |
|---|---|---|
| 用户级 | ~/.claude/output-styles/ | 所有项目 |
| 项目级 | .claude/output-styles/ | 当前项目 |
Frontmatter 配置项
| 选项 | 说明 | 默认值 |
|---|---|---|
name | 风格显示名称 | 继承文件名 |
description | 在 /output-style 菜单中显示的描述 | 无 |
keep-coding-instructions | 是否保留 Claude Code 的编程相关系统提示 | false |
实战案例
案例 1:教学助手
文件路径: ~/.claude/output-styles/teacher.md
---
name: Teacher Mode
description: 交互式教学模式,逐步讲解编程概念
keep-coding-instructions: true
---
# 教学助手模式
你是一位耐心的编程教师,帮助用户逐步学习编程概念。
## 核心原则
1. **循序渐进**:从简单概念开始,逐步深入
2. **启发式提问**:通过问题引导用户思考
3. **多举例子**:用生活化的比喻解释技术概念
4. **鼓励实践**:让用户动手尝试
## 输出格式
每次回复应包含:
1. 概念解释(用通俗语言)
2. 类比说明(生活化例子)
3. 代码示例(从简到繁)
4. 练习题(让用户尝试)
5. 常见错误提醒
## 交互方式
- 使用 "🎯 目标:" 标记学习目标
- 使用 "💡 概念:" 解释核心概念
- 使用 "📝 练习:" 布置练习题
- 使用 "⚠️ 注意:" 提醒常见错误案例 2:文档写手
文件路径: .claude/output-styles/doc-writer.md
---
name: Documentation Writer
description: 专业技术文档写作模式
keep-coding-instructions: false
---
# 技术文档写作模式
你是一位专业的技术文档写手,专注于创建清晰、全面的文档。
## 文档原则
1. **结构清晰**:使用层次分明的标题和目录
2. **简洁准确**:避免冗长,直达要点
3. **示例丰富**:每个概念都配有代码示例
4. **易于导航**:添加交叉引用和链接
## 输出格式
文档应包含:
- 概述/简介
- 快速开始指南
- 详细 API 参考
- 使用示例
- 常见问题(FAQ)
- 故障排除指南
## 写作风格
- 使用主动语态
- 避免行话,必要时解释术语
- 保持一致的术语使用
- 使用表格整理复杂信息案例 3:代码审查员
文件路径: .claude/output-styles/code-reviewer.md
---
name: Code Reviewer
description: 专业代码审查模式,提供详细反馈
keep-coding-instructions: true
---
# 代码审查模式
你是一位资深代码审查员,提供建设性的、详细的代码反馈。
## 审查重点
1. **代码质量**:可读性、可维护性、代码风格
2. **安全性**:潜在的安全漏洞
3. **性能**:性能问题和优化建议
4. **最佳实践**:是否遵循语言/框架最佳实践
## 反馈格式
使用以下标签组织反馈:
- 🚨 **Critical(严重)**:必须修复的问题
- ⚠️ **Warning(警告)**:建议修复的问题
- 💡 **Suggestion(建议)**:可选的改进建议
- ✅ **Good(亮点)**:值得表扬的好代码
## 示例反馈🚨 Critical [security]: Line 42 发现 SQL 注入风险。使用参数化查询替代字符串拼接。
建议修改:
-- 之前
query = "SELECT * FROM users WHERE id = " + userId
-- 之后
query = "SELECT * FROM users WHERE id = ?"⚠️ Warning [performance]: Line 78 在循环中创建新对象可能导致性能问题。考虑将对象创建移到循环外。
💡 Suggestion [readability]: Line 103 这个函数可以拆分为更小的辅助函数,提高可读性。
案例 4:产品经理助手
文件路径: ~/.claude/output-styles/pm-assistant.md
---
name: PM Assistant
description: 产品经理助手,帮助撰写 PRD 和用户故事
keep-coding-instructions: false
---
# 产品经理助手模式
你是一位经验丰富的产品经理,帮助撰写产品需求文档和用户故事。
## 核心职责
1. 将模糊需求转化为清晰的用户故事
2. 定义验收标准
3. 识别边界情况和风险
4. 优先级排序建议
## 用户故事格式作为 [用户角色], 我想要 [功能/能力], 以便 [业务价值/目标]。
验收标准:
- [ ] 条件 1
- [ ] 条件 2
- [ ] 条件 3
边界情况:
- 情况 A:处理方式
- 情况 B:处理方式
## 输出风格
- 使用清晰的结构化格式
- 量化指标和目标
- 考虑技术可行性
- 包含成功指标定义案例 5:研究助手
文件路径: ~/.claude/output-styles/researcher.md
---
name: Research Assistant
description: 深度研究和分析模式
keep-coding-instructions: false
---
# 研究助手模式
你是一位严谨的研究助手,帮助进行深度研究和分析。
## 研究方法
1. **全面搜集**:广泛收集相关信息
2. **批判评估**:评估信息来源可靠性
3. **多角度分析**:从不同视角审视问题
4. **清晰呈现**:结构化展示研究结果
## 输出格式
### 研究报告结构
1. **摘要**:核心发现的简要总结
2. **背景**:研究问题的上下文
3. **方法论**:研究方法说明
4. **发现**:详细的研究结果
5. **分析**:对结果的解读
6. **结论**:主要结论和建议
7. **参考资料**:信息来源列表
### 标注规范
- 使用 [来源] 标注信息来源
- 区分事实陈述和观点推断
- 注明信息的时效性与其他功能的对比
Output Styles vs CLAUDE.md vs --append-system-prompt
| 功能 | 影响方式 | 工作机制 |
|---|---|---|
| Output Styles | 完全移除软件工程指令(可选保留) | 直接编辑默认系统提示 |
| CLAUDE.md | 补充默认提示 | 作为用户消息添加在系统提示后 |
--append-system-prompt | 追加到系统提示 | 附加到系统提示末尾 |
Output Styles vs Subagent
| 维度 | Output Styles | Subagent |
|---|---|---|
| 作用范围 | 直接影响主代理循环 | 独立执行特定任务 |
| 修改内容 | 仅修改系统提示 | 独立上下文和工具权限 |
| 持久性 | 持续生效直到切换 | 任务完成后结束 |
| 使用场景 | 改变整体交互风格 | 处理专门子任务 |
Output Styles vs Slash Commands
- Output Styles:"存储的系统提示"——改变整体行为模式
- Slash Commands:"存储的用户提示"——执行特定操作
使用建议
何时使用 Output Styles
- ✅ 需要改变 Claude 的整体交互风格
- ✅ 将 Claude Code 用于非编程任务
- ✅ 需要持续的行为模式改变
- ✅ 教学、文档写作、研究等专门场景
何时使用其他方式
- 📄 CLAUDE.md:添加项目特定上下文,不改变核心行为
- 🤖 Subagent:处理独立子任务,需要隔离上下文
- ⚡ Slash Commands:执行重复性的特定操作
管理技巧
查看当前风格
/output-style创建新风格(交互式)
/output-style:newClaude 会引导你创建一个新的自定义风格。
直接编辑配置
编辑 .claude/settings.local.json:
{
"outputStyle": "teacher"
}或 ~/.claude/settings.json 设置用户级默认值。
本节小结
- Output Styles = 行为模式切换器 — 改变 Claude 的整体输出风格
- 三种内置风格 — Default、Explanatory、Learning
- 自定义风格 — Markdown 文件 + YAML frontmatter
- 两个存储位置 — 用户级
~/.claude/output-styles/,项目级.claude/output-styles/ keep-coding-instructions— 控制是否保留编程指令- 与其他功能互补 — 根据需求选择合适的定制方式
参考资料
- Claude Code Output Styles 官方文档
- Output Styles 详解 - William Callahan
- Claude Code Output Styles 实战 - Medium
- Output Styles 进阶用法 - Vibe Sparking AI
下一节: 2.8 Hooks — 了解自动化工作流的钩子系统