pstack 拆解 19 · 文体(上):去掉 AI 味
AI 写的东西有一个共同的气味:它让人读起来更费劲,而且往往是没想清楚的外在表现。
unslop
写作是为人服务的,不是为格式服务的。而那些 AI 痕迹不只是不好看:它们让人读起来更费劲,而且在很多情况下,是没想清楚的外在表现。写"运行得很快"是在躲开那个数字;写"值得注意的是"是在掩盖这句话其实不重要。所以清掉它们,不只是为了好看,是为了让每一句话都对得起自己的存在。
unslop 去掉书写里的 AI 痕迹。它的流程只有两步:扫,然后改写,改写时保住原意、匹配原本的语调。
规则用稳定的编号,因为别的 skill 会按编号引用它。一条规则被删掉,编号会留一个空位,不会重排。下面按类别过一遍。
内容。
- 表面化的
-ing短语:"highlighting"、"ensuring"、"showcasing"、"fostering"。要么删,要么换成真正的来源。 - 模糊的归属:"专家认为""有报道指出""一些批评者主张"。要么点名,要么删。
语言。
- AI 词汇:additional、crucial、delve、enduring、enhance、fostering、garner、interplay、intricate、landscape(抽象义)、pivotal、showcase、tapestry、testament、underscore、vibrant。换成普通的词。
- 把"是"说得很花哨:"serves as"、"stands as"、"boasts"、"features"。直接说 is 或 has。
- "不只是 X,而是 Y"。直接说那个点。
- 硬凑三件套。用自然的数目。
- 同义词轮换:一段里主角、主人公、核心人物、英雄轮流出现。挑一个,重复它。
- 假范围:"从 X 到 Y",而 X 和 Y 不在同一个有意义的尺度上。直接列。
文体。
- 破折号滥用。规则要求完全避开破折号,用句号或逗号,连括号、短破折号、拿连字符当破折号都不要。
- 冒号滥用。冒号用在列表或例子之前可以,当句中的连接词不行。
- 过度加粗。不要给每个专有名词和缩写都加粗。
- 那种"加粗标签加冒号,结果只是把句子重说一遍"的 inline-header 列表。但一个以句号结尾、点名了条目、后面跟着真正新信息的加粗引导语("Schema in TypeScript。 表都放在一个文件里。")是可以的,不算这个毛病。
- 标题用 Title Case。用句子大小写。
- 装饰性 emoji。从标题和 bullet 里拿掉。
- 弯引号。换成直引号。
交流痕迹。
- 聊天机器人短语:"希望这对你有帮助!""有问题告诉我。""当然!""找到了!"
- 谄媚语气:"好问题!""你说得完全对!"直接回应。
填充。
- 填充短语。"为了"就是 to。"由于……这一事实"就是 because。"值得注意的是"删掉。
- 过度对冲。"也许可能或许可以论证它大概……"改成"可能"。
- 通用结论。"未来一片光明。"说具体的计划或事实。
术语。
- 抽象隐喻名词:substrate、wedge、vector、locus、vantage、nexus、primitive(名词)、harness(隐喻)、surface(指 API surface)、bedrock、scaffolding(隐喻)、modality、paradigm、gold-plating、ratchet(隐喻)、evacuate(指搬代码)、endgame、north star、flywheel。这些读起来很技术,但通常有一个更普通、更具体的词。substrate 换成 base,wedge in 换成 add,vector 换成 way。
口语。
这组是整个 skill 的核心,值得单独说。
- 说它做什么,不说它感觉像什么。"数据库触手可及""能读的 SQL""跟着你的 schema 走的类型"都在命名一种感觉。修法是说出机制或一个数字:"
.toSQL()返回的就是发给数据库的那个字符串""改一个列名会让构建失败"。问一个句子告诉了读者什么可以做的事、可以知道的事,然后把那个写出来。如果改不成一条具体指令、事实或数字,就删掉它。再补一句检查:如果一个句子能原封不动地出现在另一个项目的文档里,它对这个项目什么都没说,删掉。 - 拆开密集的句子。 读者要往回读才能解析一句,就拆成两句或砍掉从句。一句一个意思。
- 主动语态。 抓到"is/are/was/were + 过去分词"就点出动作的发出者:"查询被校验"改成"编译器校验查询"。只有动作发出者未知或确实不重要时,被动才可以。
- 砍副词,或者换个更强的动词。"跑得很快"改成"很快",或者直接给数字。"显著改善"改成测出来的差值。一个副词在撑一个弱的动词,说明动词选错了。
- 优先用普通的词。 utilize 换成 use,leverage 换成 use,facilitate 换成 help,numerous 换成 many。花哨的同义词很少更清楚。
- 别做作。 有字面说法的地方不要用比喻和修饰:格言、为了效果而用的修辞片段、把代码拟人化、比喻性的动词。想说什么就说什么。
- 别过度压缩。 省掉冠词、无动词的碎片、符号式简写、缩写,会让读者去解码而不是阅读。"解析器拒绝坏日期 → 退出码 2,不写"改成"解析器拒绝一个坏日期,退出码 2,什么都不写"。写完整的句子,带冠词和动词,把箭头和缩写补全。
参考
原文都在 pstack 上游仓库(cursor/plugins):