第02章 Voice Skill 的架构解剖

第02章 Voice Skill 的架构解剖

一个 SKILL.md 文件里装了什么,决定了 AI 输出声音的上限。


2.1 市场上的"声音解法":一次横向比较

在深入 Voice Skill 的架构之前,先来回答一个合理的问题:已经有这么多 AI 写作工具了,为什么还需要一个 SKILL.md 文件?

目前市面上主流的"给 AI 注入写作风格"的解法,大致可以分为五类:

工具/方案 机制 控制精度 可复用性 局限性
Jasper Brand Voice 上传品牌文档,Jasper 提取风格特征 高(在 Jasper 内) 锁定在 Jasper 生态,无法迁移到其他工具
ChatGPT Custom Instructions 自由文本描述偏好(“请用简洁直接的语气”) 中(账号级别) 描述语气本身是模糊指令,衰减快
Claude System Prompt 在系统层注入详细指令 中(需手动管理) 需要每个新对话手动加载
Copy.ai / Writesonic Tone 下拉菜单选择 Professional / Casual / Funny 极低 粒度极粗,无法定义具体禁止模式
Notion AI 对话框内 tone 选项 极低 低(一次性) 没有持久化机制
Voice Skill(SKILL.md 结构化约束文件,嵌入工具上下文 极高 极高(工具无关) 需要一次性创建文件

这个对比揭示了一个关键差异:大多数工具的方案是让 AI 去"理解"你的风格偏好,而 Voice Skill 的方案是直接定义 AI 在生成时的决策空间

前者依赖 AI 的推断能力,本质上是模糊的;后者是工程化的约束,是精确的。

为什么 SaaS 工具无法替代 Voice Skill

以 Jasper Brand Voice 为例:你上传一份品牌风格指南,Jasper 会"分析"这份文件然后"记住"你的风格。但问题是:

  1. 没有负面约束机制。 Jasper 学到的是"你的内容长什么样",而不是"什么模式被明确禁止"。如果你的品牌历史内容里有很多"赋能"这个词,它会认为这是你的风格一部分。

  2. 无法迁移。 你在 Jasper 里建的 Brand Voice,Claude 不认识,Cursor 不认识,ChatGPT 不认识。

  3. 黑盒。 你不知道它到底从你的文档里提取了什么规则,也无法精确修改某一条。

Voice Skill 文件是你完全可读、可修改、可版本控制的约束系统。你知道里面每一条规则是什么,为什么存在,以及如何调整。


2.2 SKILL.md 文件的完整解剖

一个标准的 Voice Skill 文件包含四个部分:

部分一:YAML 前置元数据(Frontmatter)

---
name: editorial-voice
description: 科技思考者写作风格。短句、具体、有立场、不对冲。
applyTo: "**/*.md, **/*.txt"
---
字段 作用 说明
name Skill 的唯一标识符 用于被引用、被叠加
description 一句话描述 AI 工具用它决定何时加载这个 Skill
applyTo 适用的文件类型 可选;指定只在特定文件类型中生效

description 字段比看起来重要。在支持自动 Skill 选择的工具(如 VS Code Agent Mode)中,AI 会根据任务描述自动匹配最相关的 Skill。description 写得好,Skill 就会在合适的时机自动触发。

部分二:禁用清单(BANNED PATTERNS)

这是整个文件里权重最高的部分。结构如下:

## BANNED PATTERNS

### 禁止的开场句式(绝对禁止,无例外)
- "在当今……的时代"
- "随着……的蓬勃发展"
- "……正在深刻改变……"
- "在数字化转型的浪潮下"

### 禁止的对冲词汇
- 值得注意的是
- 当然,我们也应该看到
- 不可否认
- 尽管如此
- 总的来说
- 不可或缺
- 前所未有

### 禁止的空洞形容词
- 赋能、颠覆、革命性
- 深度融入、系统梳理
- 跨越式、全方位、立体化

### 禁止的结尾套话
- 希望本文对你有所帮助
- 欢迎在评论区分享
- 期待与你共同探索
- 如有疑问欢迎交流

为什么要用这么细的粒度? 因为 AI 的禁用规则必须是具体的词汇和句式,而不是抽象的描述。“不要有时代背景开场"这条规则,AI 可能理解成"不要第一句话就说时代背景,但第二句可以”。"禁止:‘在当今……的时代’"这条规则,是精确的 token 级约束。

部分三:正面指令(VOICE DIRECTIVES)

正面指令在禁用清单之后发挥作用。它的功能是:在 AI 被禁止走"最短路径"之后,引导它走向特定的正确方向。

## VOICE DIRECTIVES

### 开场规则
- 第一句话必须是结论、数据、场景或反问——不是背景铺垫
- 允许的开场类型:
  - 结论式:"大多数会议是在浪费时间。"
  - 数据式:"2024 年,平均每位知识工作者每周花 23 小时在会议上。"
  - 场景式:"你最近一次离开会议时,觉得'这个必须开'的,是什么时候?"
  - 反问式:"为什么你的 AI 写的东西永远听起来一样?"

### 段落规则
- 每段不超过 5 句话
- 每段有一个且只有一个核心点
- 出现抽象论断时,紧跟一个具体例子(比例 1:1)

### 立场规则
- 有观点,有倾向,不追求面面俱到
- 不为了"平衡"而对冲——如果你认为 A 比 B 好,说"A 比 B 好",不说"A 和 B 各有优劣"
- 信任读者是成年人,不要解释显而易见的事

### 数字规则
- 不写模糊数量词:"大幅"→具体百分比,"很快"→具体时间
- 优先使用真实数据;没有数据时,用具体场景代替

部分四:执行协议(EXECUTION PROTOCOL)

执行协议是最底层的细节规范,确保"说了要做到":

## EXECUTION PROTOCOL

### 句式长度分布
- 短句(≤15字): 约 40%
- 中句(16-35字): 约 40%  
- 长句(>35字): 约 20%
- 禁止连续出现超过 3 个同样长度范围的句子

### 节奏节拍
- 避免连续的平行结构超过 3 个(3个"·"、3个"并且"、3个列表项之后必须用完整句子切换)
- 使用破折号(——)制造节奏停顿,优先于括号

### 叙述人称
- 第二人称("你")>  第三人称泛指("人们"、"我们")
- 禁止无主体的泛化:不写"大家都知道",写"你可能注意到"

### 输出完整性
- 不使用 "……(此处省略)……" 或 "以此类推" 代替实际内容
- 每个列表最少 3 条,最多 7 条;超过 7 条必须分组

### 自我检查清单(AI 每次输出前执行)
- [ ] 开头是否触发了禁用开场句式?
- [ ] 有无对冲词汇(值得注意的是 / 当然……)?
- [ ] 有无连续超过 2 个空洞形容词?
- [ ] 结尾是否是套话?
- [ ] 每个抽象论断是否有具体例子?

2.3 LLM 如何处理 SKILL.md 文件

理解 AI 工具的加载机制,有助于你写出更有效的 Skill 文件。

加载位置的优先级

不同位置的 Skill 文件,在上下文中的权重不同:

系统提示词(最高优先级)
    ↓
项目级 .github/copilot-instructions.md 或 .agents/skills/
    ↓
会话开头手动引用("请使用 editorial-voice Skill")
    ↓
普通对话 prompt(最低优先级)

关键规律:在上下文越靠前的指令,对整个对话的影响越大。这就是为什么 Skill 文件要放在 .agents/skills/ 目录,而不是每次在 prompt 里粘贴。

不同工具的加载方式对比

工具 加载方式 推荐 Skill 放置位置
VS Code Agent Mode (Copilot) 自动扫描 .github/copilot-instructions.md + .agents/skills/ .agents/skills/ 目录
Cursor 项目根目录的 .cursor/rules/CURSOR.md .cursor/rules/voice-skill.md
Claude(claude.ai 项目的 System Prompt 设置 直接粘贴到 Project Instructions
ChatGPT Custom Instructions 或 GPT System Prompt Custom Instructions(有字数限制,需精简)
CLI / API System Message messages[0].role: "system"

LLM 处理 Skill 文件的内部逻辑

当 AI 开始生成文字时,Skill 文件的内容已经在它的上下文窗口里。每次生成 token 时,模型都在做一件事:在当前上下文的约束下,选择概率最高的下一个 token

禁用清单的工作方式:它在上下文里明确标注了"以下 token 序列是不可接受的"。LLM 不会完全"听从"这个规则(它没有硬性过滤器),但会显著降低这些模式的输出概率。实践中,对于具体词汇的禁止(如"值得注意的是"),遵守率可以达到 90% 以上;对于结构类禁止(如"禁止时代背景开场"),遵守率约在 70-80%,需要偶尔人工修正。

这也是为什么禁用清单要列出具体词汇,而不是抽象描述:具体词汇 = 具体 token 模式,模型可以精确识别;抽象描述 = 需要模型推断,精度低。


2.4 一个完整的最小可用 Voice Skill 文件

下面是一个可以直接使用的完整 Editorial Voice Skill 文件,这也是本书第 05 章会深入讲解的风格之一:

---
name: editorial-voice
description: 科技思考者写作风格。结论优先,短句,具体,立场明确,不对冲。
---

# Editorial Voice Skill

适用场景:科技博客、Newsletter、思考文章、产品洞察

---

## BANNED PATTERNS

### 禁止的开场句式
- "在当今……的时代"
- "随着……的发展/普及/到来"
- "……正在深刻改变……"
- "在数字化浪潮/转型的背景下"
- "本文将深入探讨……"
- "相信很多人都……"

### 禁止的对冲语言
- 值得注意的是
- 当然,我们也应该看到
- 尽管如此
- 不可否认
- 总的来说(作为虚假收束)
- 不可或缺
- 前所未有
- 某种程度上

### 禁止的空洞修饰词
- 赋能、颠覆、革命性
- 深度融入、深入人心
- 全方位、立体化、多维度
- 跨越式、质的飞跃
- 首当其冲、与时俱进

### 禁止的结尾
- 希望本文对你有所帮助
- 欢迎在评论区分享你的看法
- 期待与你共同探索这一领域
- 以上就是全部内容,感谢阅读
- 如有疑问,欢迎随时交流

---

## VOICE DIRECTIVES

**开场**
- 第一句话必须是:结论 / 数据 / 场景 / 反问,其中一种
- 第一段最多 3 句话

**立场**
- 有一个明确观点。不追求面面俱到
- 不用"A 和 B 各有优劣"稀释你的主张
- 如果你认为 A 更好,写"A 更好",而不是"A 在某些场景下有一定优势"

**具体性**
- 每个抽象论断后面跟一个具体例子
- 数字化:不写"大幅提升",写"从 3 天缩短到 4 小时"
- 场景化:不写"很多人遇到这个问题",写"你上次……是什么时候?"

**段落密度**
- 每段 2-4 句,不超过 5 句
- 每段一个核心点,不要在一段里讲两件事

---

## EXECUTION PROTOCOL

**句式节奏**(短:中:长 = 4:4:2)
- 短句(≤15字)占约 40%
- 中句(16-35字)占约 40%
- 长句(>35字)占约 20%
- 禁止:连续 3 句以上相同长度范围

**人称**
- 优先"你",次选第三人称具体主体
- 避免"我们都知道"、"大家都认为"类泛化

**自查清单(每次输出前执行)**
- [ ] 开头有无时代背景/大词铺垫?
- [ ] 有无"值得注意的是"类对冲?
- [ ] 每个论断是否有具体例子?
- [ ] 结尾是否是套话?

这个文件约 400 字,是一个完整可运行的 Voice Skill。你现在可以把它放进任何支持 Skill 文件的工具里,立即开始使用。


2.5 Skill 文件的质量判断标准

不是所有 Skill 文件都有效。以下是判断一个 Voice Skill 是否写得好的四个标准:

标准一:具体性(Specificity)

差的写法

禁止使用陈词滥调

好的写法

禁止:赋能 / 颠覆 / 前所未有 / 跨越式 / 不可或缺

具体词汇 > 抽象类别描述。

标准二:层次性(Hierarchy)

禁用清单 > 正面指令 > 执行协议。越靠底层的规则,优先级越高,不能被上层规则覆盖。

这意味着:如果你在正面指令里写"可以用充满激情的语气",但在禁用清单里写了"禁止:颠覆性",那么即使"颠覆性"这个词在某些语境下听起来很有激情,也不应该出现。

标准三:可测试性(Testability)

每条规则应该是可以用具体测试验证的。不好的规则:“语气要有力”(怎么算有力?)。好的规则:“句子以动词结尾的比例 > 30%”(可以统计)。

实践中不需要那么精确,但每条规则应该能回答这个问题:违反了它,我能识别出来吗?

标准四:最小化(Minimalism)

规则不是越多越好。规则太多,LLM 会开始忽略;规则之间也可能相互矛盾。

一个经验法则:

  • 禁用清单:15-30 个具体条目(太少无效,太多混乱)
  • 正面指令:5-10 条(每条应指向不同维度)
  • 执行协议:3-7 条(聚焦最关键的技术细节)

2.6 你应该有几个 Skill 文件

一个常见的错误:把所有写作规则塞进一个 Skill 文件。

更好的方式是一种声音 = 一个 Skill 文件,根据需要加载不同的 Skill:

.agents/skills/
├── editorial-voice.md        # 科技博客、Newsletter
├── contrarian-voice.md       # 行业评论、观点文章
├── copywriting-voice.md      # 官网文案、邮件营销
├── journalistic-voice.md     # 深度分析、行业报告
├── brand-voice-[客户名].md   # 为特定客户定制的声音
└── output-voice.md           # 防截断,与其他Skill叠加用

这种文件结构有几个好处:

  1. 按需加载:写 Newsletter 时加载 editorial,写官网时加载 copywriting
  2. 可叠加:可以同时加载 editorial + output,或 contrarian + output
  3. 可维护:更新一种风格时,不影响其他风格的规则
  4. 可交付:给客户交付一套 Skill 文件,就是交付了一套可复用的品牌声音系统

第 10 章会详细讲 Skill 叠加策略;第 12 章会讲如何把这套文件系统变成可出售的产品。


本章小结

  1. 市场上五类主流"声音解法"(Jasper Brand Voice、ChatGPT Custom Instructions、Copy.ai Tone 等)的本质局限:模糊性、锁定性、黑盒化
  2. Voice Skill 的优势在于:精确的负面约束 + 工具无关 + 可版本控制 + 可叠加
  3. 一个完整的 SKILL.md 文件包含四个部分:YAML 前置元数据、禁用清单、正面指令、执行协议
  4. 不同 AI 工具的 Skill 加载方式不同,但核心逻辑相同:越靠近上下文开头,影响越大
  5. 好的 Skill 文件的四个标准:具体性、层次性、可测试性、最小化

核心行动建议: 在你的项目目录下创建 .agents/skills/ 文件夹,把本章提供的 editorial-voice.md 模板放进去,在你的 AI 工具里测试一次。亲眼看到"值得注意的是"从输出里消失的那一刻,是比任何讲解都更有效的理解。


本章提示词模板

模板 2-A:加载 Skill 并测试

请使用 editorial-voice Skill,写一段 200 字左右的内容:
主题:[你的主题]

写完之后,对照 Skill 文件里的禁用清单自我检查,
如果发现违规词汇,重写那一段。

模板 2-B:Skill 文件诊断

我有一个 Voice Skill 文件,帮我评估它的质量:

[粘贴你的 Skill 文件内容]

请按照以下维度给出评分和改进建议:
1. 具体性(1-5分):禁用规则是否足够具体?
2. 层次性(1-5分):禁用 / 正面 / 执行协议三层是否清晰?
3. 最小化(1-5分):规则是否精简?有无冗余或矛盾?
4. 可测试性(1-5分):每条规则是否容易判断是否违反?

模板 2-C:从现有工具迁移

我在 Jasper 里有一份 Brand Voice 描述,帮我把它转换成
结构化的 Voice Skill SKILL.md 文件格式:

Jasper Brand Voice 内容:
[粘贴你的 Jasper 设置]

转换要求:
- 提取具体的禁用词汇,不要保留抽象描述
- 生成符合 BANNED PATTERNS / VOICE DIRECTIVES / EXECUTION PROTOCOL 三层结构的文件
- 禁用清单至少 15 条具体词汇/句式

→ 继续阅读:第03章 禁用清单——让 AI 闭嘴的最强武器