是什么

output styles 通过修改 system prompt 改变 Claude 的角色、语气和输出格式,适用于需要固定特定响应风格的场景。与 CLAUDE.md 不同,output styles 改变 Claude 的行为方式,而非项目约定。

核心机制

内置风格

风格行为
Default标准软件工程助手 system prompt
Proactive立即执行,做合理假设,偏向行动而非规划(不改变权限模式)
Explanatory在完成任务的同时提供”Insights”,解释实现选择和代码模式
Learning协作学习模式,添加 TODO(human) 标记让用户参与实现

切换方式

# 交互式菜单
/config → Output style
 
# 直接编辑 settings
{"outputStyle": "Explanatory"}

保存到 .claude/settings.local.json(local project 级别)。

自定义 Output Style 创建 Markdown 文件,frontmatter 定义元数据,正文是添加到 system prompt 的指令:

---
name: Diagrams first
description: Lead every explanation with a diagram
keep-coding-instructions: true
---
 
When explaining code, architecture, or data flow, start with a Mermaid diagram...

文件位置:

  • User 级:~/.claude/output-styles/
  • Project 级:.claude/output-styles/
  • Managed policy:managed settings 目录下的 .claude/output-styles/

keep-coding-instructions 字段

  • true:保留 Claude Code 的软件工程指令,只改变沟通方式
  • 不设置/false:完全替换,适合非软件工程场景(写作助手、数据分析等)

关键细节

  • Output style 在 session 开始时写入 system prompt,session 内切换下次 session 才生效(保持 prompt cache 稳定)
  • Proactive 风格等同于 auto mode 的行为指导,但不改变权限模式(仍有权限提示)
  • 文件名成为风格名称,除非 frontmatter 中设置了 name 字段

与其他概念的关联

  • settings - output style 的配置位置
  • permissions - Proactive 风格不改变权限,权限仍由 permissions 控制

实践要点

  • 频繁需要相同格式(如总是要图表)时用 output style,而非每次重复提示
  • 非编码场景(写作、分析):不设置 keep-coding-instructions,避免软件工程指令干扰
  • 团队共享的 output style 放 .claude/output-styles/(提交到 git)