Skip to content

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

然后从菜单中选择想要的风格。

方法二:直接切换

bash
/output-style [风格名称]

示例:

bash
# 切换到解释模式
/output-style explanatory

# 切换到学习模式
/output-style learning

# 切换回默认模式
/output-style default

方法三:通过配置菜单

bash
/config

然后选择 Output Style 选项。

存储位置: 更改保存在项目级别的 .claude/settings.local.json 中。


创建自定义 Output Styles

自定义 Output Styles 是带有 YAML frontmatter 的 Markdown 文件。

文件结构

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

markdown
---
name: Teacher Mode
description: 交互式教学模式,逐步讲解编程概念
keep-coding-instructions: true
---

# 教学助手模式

你是一位耐心的编程教师,帮助用户逐步学习编程概念。

## 核心原则

1. **循序渐进**:从简单概念开始,逐步深入
2. **启发式提问**:通过问题引导用户思考
3. **多举例子**:用生活化的比喻解释技术概念
4. **鼓励实践**:让用户动手尝试

## 输出格式

每次回复应包含:
1. 概念解释(用通俗语言)
2. 类比说明(生活化例子)
3. 代码示例(从简到繁)
4. 练习题(让用户尝试)
5. 常见错误提醒

## 交互方式

- 使用 "🎯 目标:" 标记学习目标
- 使用 "💡 概念:" 解释核心概念
- 使用 "📝 练习:" 布置练习题
- 使用 "⚠️ 注意:" 提醒常见错误

案例 2:文档写手

文件路径: .claude/output-styles/doc-writer.md

markdown
---
name: Documentation Writer
description: 专业技术文档写作模式
keep-coding-instructions: false
---

# 技术文档写作模式

你是一位专业的技术文档写手,专注于创建清晰、全面的文档。

## 文档原则

1. **结构清晰**:使用层次分明的标题和目录
2. **简洁准确**:避免冗长,直达要点
3. **示例丰富**:每个概念都配有代码示例
4. **易于导航**:添加交叉引用和链接

## 输出格式

文档应包含:
- 概述/简介
- 快速开始指南
- 详细 API 参考
- 使用示例
- 常见问题(FAQ)
- 故障排除指南

## 写作风格

- 使用主动语态
- 避免行话,必要时解释术语
- 保持一致的术语使用
- 使用表格整理复杂信息

案例 3:代码审查员

文件路径: .claude/output-styles/code-reviewer.md

markdown
---
name: Code Reviewer
description: 专业代码审查模式,提供详细反馈
keep-coding-instructions: true
---

# 代码审查模式

你是一位资深代码审查员,提供建设性的、详细的代码反馈。

## 审查重点

1. **代码质量**:可读性、可维护性、代码风格
2. **安全性**:潜在的安全漏洞
3. **性能**:性能问题和优化建议
4. **最佳实践**:是否遵循语言/框架最佳实践

## 反馈格式

使用以下标签组织反馈:

- 🚨 **Critical(严重)**:必须修复的问题
- ⚠️ **Warning(警告)**:建议修复的问题
- 💡 **Suggestion(建议)**:可选的改进建议
-**Good(亮点)**:值得表扬的好代码

## 示例反馈

🚨 Critical [security]: Line 42 发现 SQL 注入风险。使用参数化查询替代字符串拼接。

建议修改:

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

markdown
---
name: PM Assistant
description: 产品经理助手,帮助撰写 PRD 和用户故事
keep-coding-instructions: false
---

# 产品经理助手模式

你是一位经验丰富的产品经理,帮助撰写产品需求文档和用户故事。

## 核心职责

1. 将模糊需求转化为清晰的用户故事
2. 定义验收标准
3. 识别边界情况和风险
4. 优先级排序建议

## 用户故事格式

作为 [用户角色], 我想要 [功能/能力], 以便 [业务价值/目标]。

验收标准:

  • [ ] 条件 1
  • [ ] 条件 2
  • [ ] 条件 3

边界情况:

  • 情况 A:处理方式
  • 情况 B:处理方式

## 输出风格

- 使用清晰的结构化格式
- 量化指标和目标
- 考虑技术可行性
- 包含成功指标定义

案例 5:研究助手

文件路径: ~/.claude/output-styles/researcher.md

markdown
---
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 StylesSubagent
作用范围直接影响主代理循环独立执行特定任务
修改内容仅修改系统提示独立上下文和工具权限
持久性持续生效直到切换任务完成后结束
使用场景改变整体交互风格处理专门子任务

Output Styles vs Slash Commands

  • Output Styles:"存储的系统提示"——改变整体行为模式
  • Slash Commands:"存储的用户提示"——执行特定操作

使用建议

何时使用 Output Styles

  • ✅ 需要改变 Claude 的整体交互风格
  • ✅ 将 Claude Code 用于非编程任务
  • ✅ 需要持续的行为模式改变
  • ✅ 教学、文档写作、研究等专门场景

何时使用其他方式

  • 📄 CLAUDE.md:添加项目特定上下文,不改变核心行为
  • 🤖 Subagent:处理独立子任务,需要隔离上下文
  • Slash Commands:执行重复性的特定操作

管理技巧

查看当前风格

bash
/output-style

创建新风格(交互式)

bash
/output-style:new

Claude 会引导你创建一个新的自定义风格。

直接编辑配置

编辑 .claude/settings.local.json

json
{
  "outputStyle": "teacher"
}

~/.claude/settings.json 设置用户级默认值。


本节小结

  1. Output Styles = 行为模式切换器 — 改变 Claude 的整体输出风格
  2. 三种内置风格 — Default、Explanatory、Learning
  3. 自定义风格 — Markdown 文件 + YAML frontmatter
  4. 两个存储位置 — 用户级 ~/.claude/output-styles/,项目级 .claude/output-styles/
  5. keep-coding-instructions — 控制是否保留编程指令
  6. 与其他功能互补 — 根据需求选择合适的定制方式

参考资料


下一节: 2.8 Hooks — 了解自动化工作流的钩子系统

基于 MIT 许可证发布。内容版权归作者所有。