换口吻别塞 CLAUDE.md:Output styles 怎么用
你嫌它话多、或者希望它多解释一步,第一反应常是往 CLAUDE.md 里塞「请简洁」「请多讲原理」。那会把口吻和项目知识搅在一起。Output styles 专门管「怎么说」,不管「这个仓库有什么规矩」。
它改什么,不改什么
Output style 影响的是回复风格与教学程度:要不要主动往下推、要不要解释、篇幅长短。它不会替代项目说明、也不会变成 Skills 或子 Agent。
| 机制 | 管什么 |
|---|---|
| Output styles | 口吻、节奏、解释深度 |
CLAUDE.md | 项目事实、铁律、目录约定 |
| Skills | 用到才加载的流程与清单 |
| Agents / 子代理 | 分工与权限边界 |
项目知识仍写进 CLAUDE.md;流程沉到 Skills;MCP、Skills、Hooks 的分工见 这篇对照。口吻单独用 style,别混进铁律文件。
内置几种
常见内置:
- Default:普通协作口吻
- Proactive:更主动推进下一步(不等于自动放行权限)
- Concise:能短则短(需要 Claude Code v2.1.237+)
- Explanatory:多讲一点「为什么」
- Learning:偏教学,适合边改边学
Proactive 只是说话更积极,不是 Auto mode,也不是 bypassPermissions。权限与沙箱仍按 permissions / sandbox 那套规则走。开了 Proactive 也不会替你点「允许」;该 ask 的还是会 ask。
Concise 适合你已经很熟的仓库、只想要短 diff 说明。版本不够时菜单里可能看不到,先升级再选。
怎么切换
旧命令 /output-style 已移除。现在走配置面板:
- 会话里输入
/config - 找到 Output style
- 选内置或自定义
选中后会把 outputStyle 写进 .claude/settings.local.json(本机本地设置)。换机器或清本地设置时,记得重新选一次。团队若希望统一口吻,可以约定「每人本地选 Concise」,或把自定义 style 文件提交到项目的 .claude/output-styles/,再各自在 /config 里点选。
自动记忆、项目说明不会跟着 style 变;记忆怎么用见 自动记忆。
自定义 style
可以自己写 Markdown 风格文件,放在:
- 个人:
~/.claude/output-styles/ - 项目:
.claude/output-styles/
文件里通常描述:语气、段落长度、要不要给下一步建议。需要保留默认编码指引时,打开或保留 keep-coding-instructions,避免自定义口吻把「怎么改代码」的基础指令冲掉。
自定义适合固定团队口径(例如「先给结论再给 diff 摘要」),不要把「禁止动 production」这种安全铁律写进 style——那是权限和 CLAUDE.md 的事。
和 CLAUDE.md 怎么分工
| 你想要的 | 写哪 |
|---|---|
| 少废话、多解释、偏教学 | Output style |
| 用什么包管理器、目录别乱建 | CLAUDE.md |
| 发布清单、评审步骤 | Skills |
| 某类任务交给专用角色 | Agents |
把「请 Concise」反复贴进 CLAUDE.md,上下文每次都带着;换成 style,知识文件可以保持干净。CI 或 -p 非交互场景要稳定口吻时,先确认本机 / 环境的 outputStyle 是否已设,再谈脚本旗标,见 -p / --bare。
实操小结
- 换口吻用
/config→ Output style,别塞CLAUDE.md - Concise 确认版本 ≥ 2.1.237;Proactive ≠ 自动权限
- 自定义放
~/.claude/output-styles或项目.claude/output-styles,注意keep-coding-instructions - 项目事实、流程、权限仍分别用 CLAUDE.md / Skills / permissions
Output styles 的价值是把「怎么说话」从「项目知道什么」里拆出来。口吻可换,铁律不动。