TellWorldAI 世界档案
问档案English

首页›实践›实践

实践

Claude Code 输出风格(output styles)

输出风格改变 Claude 在整个会话里的角色、语气和回答格式。这篇讲内置的四种风格怎么切换,以及怎么写一个自己的风格文件。

这篇适合谁、读完能做到什么

如果你觉得 Claude Code 的回答太啰嗦,或者想在学习代码时看到它解释每个决定,输出风格能让你一次设定、整个会话都生效,不用每次提示词都重复要求。读完你能切换内置风格,知道每种风格适合什么场景,并写出一个自己的风格文件。[1]

输出风格是什么

输出风格是一组指令,它规定 Claude 在一个会话里每次回答时的角色、语气和回答格式。Claude Code 除了默认风格,还内置了四种风格:Proactive、Concise、Explanatory 和 Learning。[1]

「默认」(Default)其实是没有选择任何输出风格:Claude Code 不添加风格指令,按它为软件工程任务准备的标准系统提示工作。[1]

输出风格是一条指令,Claude 会遵循它,但没有任何东西强制它每次都照做。如果你需要某件事一定会发生,应该用 hook,而不是风格。[1]

四种内置风格怎么选

  • Proactive(主动)。 你发出任务后,Claude 直接开始实施,对日常决定做合理假设,而不是停下来问,也不会切换到计划模式,除非你要求。它的指令还要求 Claude 在删除数据、修改共享或生产系统之前先在对话里确认,这个确认和权限弹窗是两回事。切换到这个风格不会改变权限模式,权限弹窗的出现方式和之前一样。[1]
  • Concise(简洁)。 回答的第一句直接说明发生了什么或者答案是什么,去掉开场白、逐步旁白和结尾总结。简单问题用一到三句话回答。这个风格需要 Claude Code v2.1.237 或更高版本。[1] 不过你明确要求解释时,它仍会完整回答;错误报告、失败的测试输出、安全警告和破坏性操作的确认,也会保留完整内容。[1]
  • Explanatory(解释型)。 Claude 照常完成任务,并在对话里用标有 Insight 的小块解释它为什么这样选。这些解释不会写进你的文件里当注释。下面是一个 Insight 块的样子:
★ Insight ─────────────────────────────────────
- Every route in this repo goes through the withAuth wrapper, so the new endpoint gets session checks without its own middleware.
- Rate limits are set per route in limits.ts, which is why this change adds an entry there rather than a global default.
─────────────────────────────────────────────────
  • Learning(边做边学)。 它同样带有 Insight 块,但还会让你自己写一部分代码。常规的实现它自己完成;遇到错误处理、数据结构或者有多种合理做法的业务逻辑这类真正需要设计决定的地方,它会留下一小段给你。它会在文件里用 TODO(human) 注释标出位置,然后发出一条请求,说明已经做好了什么、要你写什么、需要权衡什么,之后就停下来等你。你写完后告诉 Claude,它会给出一个关于你代码的 Insight,然后继续任务。请求大致是这样的:
● Learn by Doing

Context: The upload form is in place and calls validateFile() before accepting a file. Size and type checks work for images, but the switch statement has no handling for documents yet.

Your Task: In upload.js, implement the case "document" branch inside validateFile(). Look for TODO(human).

Guidance: Decide on a size limit for documents and whether the file extension has to match the MIME type. Return {valid: boolean, error?: string}.

切换风格的几种方法

最直接的办法是运行 /output-style <风格名>,例如 /output-style concise。不带参数运行时,它会列出可选的风格并标出当前的那一个。这个命令在非交互模式和 Agent SDK 会话里也能用。[1]

也可以运行 /config,选择「Output style」,从菜单里挑。[1]

不想用菜单的话,直接编辑设置文件里的 outputStyle 字段:

{
  "outputStyle": "Explanatory"
}

这个值区分大小写。内置风格的名字要写成 Proactive、Concise、Explanatory 和 Learning。如果写成 explanatory 这种对不上的名字,Claude Code 会退回到默认风格。/output-style 命令本身则不区分大小写。[1]

想让某个风格在所有项目里都生效,就把 outputStyle 写进 ~/.claude/settings.json。项目自己的设置文件优先级更高。[1]

会话中途切换风格时,Claude 从你的下一条消息开始使用新风格。v2.1.251 之前的版本则要运行 /clear 或者开新会话才会生效。[1]

自己写一个风格

自定义风格就是一个 Markdown 文件:开头是 frontmatter 元数据,后面是给 Claude 的指令。文件可以放在三个位置:用户级的 ~/.claude/output-styles、项目级的 .claude/output-styles,或者托管策略目录里的 .claude/output-styles。[1]

项目级风格会从工作目录一直加载到仓库根目录之间的每一个 .claude/output-styles/。同名风格出现在多个目录时,离工作目录最近的那个生效。文件名就是风格名,除非你在 frontmatter 里设置了 name。[1]

如果你只是想改变 Claude 的表达方式,但仍希望它按原来的方式写代码,就在 frontmatter 里加上 keep-coding-instructions: true。如果 Claude 不会做软件工程的工作,就不要加。下面是一个让每个解释都先给图的例子,它保留了 Claude 的编码行为:

---
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 showing the structure, then explain in prose.

## Diagram conventions

Use `flowchart TD` for control flow and `sequenceDiagram` for request paths. Keep diagrams under 15 nodes.

可以用的 frontmatter 字段有四个:name、description、keep-coding-instructions(默认 false),以及只对插件风格有效的 force-for-plugin。[1]

写错的字段会被忽略,而且不会报错。如果 YAML 解析失败,风格仍然会以文件名加载,但所有字段都为空。运行 claude --debug 可以看到解析错误。[1] 在终端里,Claude Code 只在启动时读取风格文件,所以会话运行中新建或修改了风格,要重启 Claude Code。[1]

和 CLAUDE.md、hook、skill 怎么分工

输出风格管的是「怎么回答」。如果你要的是 Claude 了解项目的约定,用 CLAUDE.md;如果是某类任务的固定流程,用 skill;如果某件事必须每次都发生,比如每次编辑后格式化,用 hook。三者和风格可以叠加使用。[1]

还要注意两点。在完整系统提示下,自定义风格会去掉 Claude Code 的软件工程指令部分,除非设置了 keep-coding-instructions: true。设置 CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT 为 0 可以选用完整提示。[1] 另外,风格只作用于主对话和 fork 出来的分支,其他子 agent 使用自己的系统提示,不受风格影响。[1]

常见问题

  • Explanatory 和 Learning 的回答更长。 它们比默认风格多输出 token,费用也会增加;Concise 则默认让回答更短。[1]
  • 改了风格没生效。 先确认值的大小写是否和风格名完全一致,再看项目设置文件是否覆盖了 outputStyle,最后在终端里重启 Claude Code。[1]

下一步

更完整的说明,包括各个风格的细节和配置项,可以参考 Anthropic 的 Claude Code 文档中的输出风格页面。[1]

来源

  1. 1
    Output stylesAnthropic Claude Code docs

引用本页: Claude Code 输出风格(output styles). TellWorld, https://www.tellworld.net/zh/practice/practice-claude-code-output-styles. 更新于 2026-11-14

相关动态