起因

我最近让 AI 帮我写工作文档,交上来的东西大概是这个长相(我把几份文档的共同毛病捏成了一句):

通过体系化的能力建设,进一步赋能团队完成端到端的交付闭环,显著提升整体交付质量。

一句话里有四个词我自己从来不说:体系化、能力建设、赋能、闭环。而且它很自信——「显著提升」后面没有一个数。

这种东西我删了不少。删到某一天我才反应过来:我一直在用提示词治它。「说人话」「别用黑话」「口语化一点」——这次听了,下次照旧。

后来我看到宝玉老师那篇《别再用提示词去 AI 味了,方向就是错的》。他的判断是:靠提示词去不掉,你得给 AI 一份写下来、能持续更新的写作风格 Skill。他用做菜打比方——提示词是每次口头跟厨子喊「少放盐」,Skill 是一份写在纸上的菜谱。

我认同这个方向。于是我干了一件事:把自己从 2019 年到今年写的博客翻出来,让 AI 逐字读,反推出我自己的风格。

结果比我想的难。这篇文章记录我踩的四个坑,和最后留下的取舍。

我具体做了什么

动作很简单:挑 12 篇文章交给 AI,让它读原文,归纳我的用词、句式、结构、语气,产出一份 Skill。

最后的产出是三个文件:

  • SKILL.md —— 底味 5 条 + 骨架 2 套 + 一节红线
  • references/banlist.md —— 忌口表,47 条,分 9 类
  • references/voice-samples.md —— 12 组我自己的原文切片

12 篇里,真正拿到逐字原文的只有 8 篇;能当骨架用的,最后只剩 2 篇。

下面说为什么。

坑一:摘要没用,语料必须逐字

第一次抓取的时候,工具擅自把 4 篇文章压成了英文摘要。我拿到的是这种东西:

The author draws parallels between Formula 1 and business strategy, emphasizing that major decisions have cascading consequences.

它对应的是我原文里的一行 bullet:

  • 牵一发而动全身时,做决定时要慎重。

意思保住了,风格全丢了。

丢掉的是:我写的是 bullet 不是段落;我用成语,不用解释性长句;我没写「因此」这类连接词;整句 12 个字。

风格恰恰全在这些地方。 标点、段落长度、有没有连接词、小标题是名词还是问句、emoji 放在哪——摘要一律不保留。

所以第一条规矩:语料必须是原始 Markdown,逐字。我后来直接在本地 blog 仓库里读文件,比抓网页可靠得多,也快得多。

坑二:不要把全部文章拿去平均

我一开始的想法是「文章越多越准」。读完之后我改了主意。

我的年终总结那一类,说实在的写得挺水。数据砸出来不解读——2022 年那篇我列了 26 本书的书名,一句都没说哪本改变了我什么。「个人部分」那一节我只写了两个字:

待补~

《带你开始探究 Go iota》那篇里,「言归正传」出现了两次,是我当时自己没检查。

这些毛病如果一起丢进去平均,AI 学到的会是「列清单、砸数据、不下判断」。这恰好是我最想让它别干的事。

所以最后的取舍是按维度分层取,不是按篇数取:

  • 骨架只学 2 篇:《如何评审一份让听众真正有收获的分享 PPT》和《带你开始探究 Go iota》。这两篇的结构是我自己最满意的。
  • 语气从年终总结那一类里取。那些文章结构不行,但自贬和认账写得最真。
  • 剩下的只作参照,不进范文库。

宝玉那篇里说「发你最满意的三到五篇」,这是对的。我要补一句:满意的篇数不够时别凑数,改成按维度分层。你的结构最好的那篇,和你语气最真的那篇,通常不是同一篇。

坑三:忌口表只能让 AI 不难吃

47 条忌口表列出来的时候我还挺满意。赋能、抓手、闭环、颗粒度、护城河、飞轮、深耕、老兵、范式,一条条禁掉。

然后我回头去看 AI 之前给我写的那些文档,发现一个问题:就算这 47 个词一个都不出现,它写出来的东西照样不像我。

它的开头永远是这个类型:

本次分析基于近三个月的交付数据,从流程、人力和技术三个维度展开。

一个禁词都没有。但这不是我的开头。我的开头是这样的:

这就要从我最近遇到的一次 protobuf 解析报错说起,错误信息如下:cannot parse reserved wire type

培训同事给我的反馈就是大多数人会遇到的典型问题:内容很大,但留下的收获点不多。

差别在哪?AI 先立框架再找例子填,我是从一件真实发生过的事出发。

这才是 AI 味的根,不在词上。词只是症状。忌口表能保证它不难吃,保证不了它像你做的菜。

所以我把 SKILL.md 的顺序倒过来写了:骨架排第一,忌口表排后面。骨架长这样:

1
2
3
4
5
6
1. 触发事件 —— 具体到一条报错、一句话、一个数
2. 我踩了什么坑 —— 包括做错的部分
3. 可核对的数字
4. 我的判断 —— 用「我」
5. 你明天能怎么用 —— 具体到第一步做什么
6. 我不确定的地方

你现在读的这篇,就是照这个骨架写的。

坑四:别人的忌口表不能照抄

宝玉的忌口表里禁「不是 A,而是 B」这个句式,理由是它是 AI 最爱用的招牌句。

我照抄了。抄完之后回头核对我自己 7 月那篇《先做一个自己每天离不开的 App》,发现里面用了两次:

我不是跑步时顺便听播客,而是为了听播客,才开始去跑步的

观察一:AI 时代,个人开发的瓶颈不是写代码,而是敢不敢砍

两次都成立,而且是那篇里我自己最喜欢的两句。

我又核对了《Go iota》,发现我在句中写过「说实话,我用 Go 这么久,还是第一次见 -iota」——而我的忌口表里,「说实话」是整个禁掉的。

所以规则我改了两条:

  • 「不是 A,而是 B」不全禁。判断标准是 A、B 两边是不是具体名词。「标题不是包装,而是承诺」可以留,包装和承诺都是实词;「不是简单的优化,而是系统性的重构」必须删,两边都是空词。另外整篇限量,一到两次,AI 会每三段来一次,那就出味了。
  • 「说实话」禁的是当开场废话,不禁句中使用。

忌口表要用你自己的原文去核对,不能抄一份就完事。 一条规则如果和你写得最好的那句话冲突,改规则,别改句子。

我加的一节:不许替我编

这是我和宝玉那套方法最大的不同。

他那篇是给个人写作用的。而我 80% 的产出是工作文档:风险分析、技术方案、QBR、给 leadership 的材料。

在博客里编错一个数,丢脸。在给老板的材料里编一个「预计降低 30% 交付风险」,是要出事的。

所以 SKILL.md 里单独有一节红线,优先级高于所有风格规则:

  1. 数字不许估算成确定值,没有就写 [数据待确认]
  2. 判断和承诺不许代我下
  3. 人名和归属不许猜,不确定就写 [owner 待确认]
  4. 风险等级不许自己定 P0/P1,给我依据,等级我定
  5. 引用我文章、邮件、报告里的原话必须逐字,不许改写后当引用

其中我最想单独点出来的,是这一类翻译:

AI 写的 它真正的意思
建议持续关注 我不知道
相关团队跟进 我不知道谁负责
后续尽快推进 我不知道什么时候
存在一定风险 我不知道会坏在哪

把「我不确定」包装成一条行动项,是我见过最恶劣的一种 AI 味。 它比黑话危险,因为黑话一眼能看出来,这个看不出来,还会被当成结论往上传。

不知道就写不知道。这一条我在博客里一直做得到——

网上还有阐述(但是我并未能考证,保留至此,以供大家参考)

注意:此处的 ConstExpr 是在 Go 仓库 master 上才有,在当前 go1.16.3 是没有这个申明的。

工作文档里更该做到。

你明天能怎么用

如果你也想从自己写过的东西里提炼一份,我的流程是这样,一小时能跑完第一版:

  1. 挑 3 到 5 篇你自己最满意的。 必须是你自己写的,不是 AI 帮你写的。找不到 5 篇就找 2 篇,别凑数。
  2. 拿原始 Markdown。 不要摘要,不要抓网页,直接从你的仓库或备份里读。
  3. 让 AI 先归纳骨架,再归纳词。 问它这几个问题:我的开头第一段通常是什么?我的小标题是名词还是问句?我在哪里下判断,用的是什么人称?我在哪里承认自己不行?
  4. 拿一份最近真要写的东西试。 别拿虚构题目试,虚构题目试不出问题。
  5. 手动改。 不要在对话里跟 AI 说「这里改一下」,自己动手,一句一句改成满意的样子。
  6. 做 diff,把规律回灌。 熟悉 git 就 git diff;不熟悉就把 AI 原文和你的修改版一起给它,让它归纳你改了什么、为什么改,然后更新忌口表和骨架。

第 5、6 步是唯一真正让它变准的动作。前四步只是起点。

另外一个小提醒:忌口表别无限长。规则太多会互相矛盾,也会挤占上下文。到六十条左右就该让 AI 帮你归纳合并成规律——有了规律,就不需要那么长的清单。

我不确定的地方

说实在的,我这份 Skill 现在还是「读出来的」,不是「改出来的」。

宝玉说他自己那份迭代了好几个月、150 多行,是改了几十篇文章之后慢慢磨出来的。我才刚跑完第一轮,改稿回灌一次都还没做。所以它现在大概能挡住黑话和空洞框架,离「AI 写出来比我自己写的还像我」差得远。

还有 4 篇文章我只拿到了摘要,没进范文库。补齐之后我会更新。

Skill 的三个文件我会整理到 github.com/yangwenmai/skills(上次那份 presentation-core-review 也在这里),具体路径待补~

以上就是我这一轮的全部取舍。哪一条你觉得有道理,哪一条你觉得我想多了?欢迎来吐槽我 🤔