输出样式
将 Claude Code 适配用于软件工程之外的用途
输出样式允许你将 Claude Code 用作任何类型的代理,同时保留其核心功能,例如运行本地脚本、读取/写入文件和跟踪 TODO。
内置输出样式
Claude Code 的默认输出样式是现有的系统提示,旨在帮助你高效地完成软件工程任务。
还有两种额外的内置输出样式,专注于教你了解代码库和 Claude 的运作方式:
-
Explanatory:在帮助你完成软件工程任务的同时提供教育性的"Insights"。帮助你理解实现选择和代码库模式。
-
Learning:协作式的边学边做模式,Claude 不仅会在编码时分享"Insights",还会要求你自己贡献小的、战略性的代码片段。Claude Code 将在你的代码中添加
TODO(human)标记供你实现。
输出样式如何工作
输出样式直接修改 Claude Code 的系统提示。
- 自定义输出样式排除了编码说明(例如用测试验证代码),除非
keep-coding-instructions为 true。 - 所有输出样式都在系统提示的末尾添加了自己的自定义说明。
- 所有输出样式都会在对话期间触发提醒,让 Claude 遵守输出样式说明。
令牌使用情况取决于样式。向系统提示添加说明会增加输入令牌,尽管 prompt caching 在会话中的第一个请求之后会降低这个成本。内置的 Explanatory 和 Learning 样式在设计上比 Default 产生更长的响应,这会增加输出令牌。对于自定义样式,输出令牌使用情况取决于你的说明告诉 Claude 生成什么。
更改你的输出样式
运行 /config 并选择输出样式从菜单中选择一种样式。你的选择会保存到本地项目级别的 .claude/settings.local.json。
要在不使用菜单的情况下设置样式,直接编辑设置文件中的 outputStyle 字段:
{
"outputStyle": "Explanatory"
}
由于输出样式是在会话开始时在系统提示中设置的,更改将在你下次启动新会话时生效。这使系统提示在整个对话中保持稳定,以便 prompt caching 可以降低延迟和成本。
创建自定义输出样式
自定义输出样式是包含 frontmatter 和将添加到系统提示的文本的 Markdown 文件:
---
name: My Custom Style
description:
A brief description of what this style does, to be displayed to the user
---
# Custom Style Instructions
You are an interactive CLI tool that helps users with software engineering
tasks. [Your custom instructions here...]
## Specific Behaviors
[Define how the assistant should behave in this style...]
你可以在用户级别(~/.claude/output-styles)或项目级别(.claude/output-styles)保存这些文件。
Frontmatter
输出样式文件支持 frontmatter 来指定元数据:
| Frontmatter | 目的 | 默认值 |
|---|---|---|
name |
输出样式的名称,如果不是文件名 | 从文件名继承 |
description |
输出样式的描述,在 /config 选择器中显示 |
无 |
keep-coding-instructions |
是否保留 Claude Code 系统提示中与编码相关的部分。 | false |
与相关功能的比较
输出样式 vs. CLAUDE.md vs. --append-system-prompt
输出样式完全"关闭"了 Claude Code 默认系统提示中特定于软件工程的部分。CLAUDE.md 和 --append-system-prompt 都不会编辑 Claude Code 的默认系统提示。CLAUDE.md 将内容作为用户消息添加到 Claude Code 默认系统提示_之后_。--append-system-prompt 将内容附加到系统提示。
输出样式 vs. Agents
输出样式直接影响主代理循环,仅影响系统提示。Agents 被调用来处理特定任务,可以包括额外的设置,如要使用的模型、可用的工具以及有关何时使用代理的一些上下文。
输出样式 vs. Skills
输出样式修改 Claude 的响应方式(格式、语气、结构),一旦选择就始终处于活动状态。Skills 是特定于任务的提示,你可以使用 /skill-name 调用或 Claude 在相关时自动加载。使用输出样式来实现一致的格式化偏好;使用 skills 来实现可重用的工作流和任务。