Show HN:Claudette——让 Claude 别再像 BuzzFeed 文章那样说话
文章摘要
这是一个叫 NoBuzz 的小项目,作者 Adnan Akil(HN 上的 aakil)把它提交为 Show HN。README 的开场白本身就是全场笑点:他假装这是「众所周知」的事实——Anthropic 只用旧的 BuzzFeed 文章训练了 Claude(所以它才那么爱怀念九十年代),于是他和 Claude 一起做了一个 Claude Code skill(斜杠命令 /debuzz),把 Claude 的上一条回复送去翻译成正常人话。他们本想叫它「Claudette」,但因为 Cat Wu 出了名地爱打官司,所以「它绝对绝对不叫 Claudette」。
它要解决的问题被描述得相当传神:Claude 是个很好的工程师,但有一种治不好的病——它讲话像是在做一场关于自己 PR 的 TED 演讲。你问它某个测试为什么不稳定,得到的回答里会有一个「承重假设」(load-bearing assumption)、三条编号的「洞见」,外加一句郑重其事的「而第三条是最有教益的」。在它嘴里没有任何东西只是一个 bug,永远还有一个「关键转折」。
这个 skill 的设计哲学是承认现实:靠提示词无论如何调教都治不好这个毛病,所以干脆把回复交给另一个模型。具体做法是通过 Google 的 Antigravity CLI(命令 agy)调用 Gemini,Gemini 唯一的任务就是把它改写成人话。README 特别强调,Claudette「已经拉过钩」要原样打印 Antigravity 的翻译结果,因为一旦让 Claude 去「润色」译文,那个本来要被去掉的腔调就会重新混进来。
README 里给了一组前后对照。「之前」是 Claude 版本:重试逻辑不只是锦上添花,而是整条同步管线的「承重假设」,有三件事很扎眼,第三件最有教益……「之后」是 /debuzz 的 colleague 模式输出:同步管线的重试逻辑有三个 bug,syncQueue.ts:142 吞掉了 ETIMEDOUT 而没有重新入队;退避上限只有 2 秒,对移动网络来说太低;去重键里包含时间戳,所以重试永远不会被去重。修复方案:把时间戳从键里去掉、上限提到 30 秒、把超时错误重新抛出。同样的信息量,去掉了全部戏剧性铺垫,还多了具体的文件行号和修复动作。
安装方式是把仓库里的 debuzz 目录拷进 ~/.claude/skills/;前置依赖是 Claude Code 和 Antigravity CLI(agy),后者装完要跑一次完成 Google 登录。
用法是 /debuzz [mode] [text],提供三种受众模式:colleague(默认,面向工程师,内容不变、所有文件路径和代码块原样保留、零戏剧腔)、manager(面向半技术背景的管理者,讲清楚发生了什么、为什么重要、下一步是什么,长度约为原来的三分之一,不含代码)、director(面向高管,三到五句话说完结果、影响、诉求,假设对方只有三十秒注意力)。不带文本参数时翻译 Claude 的上一条回复;也可以粘贴文本进去翻译指定内容。它还会被「用正常英语再说一遍」这类自然表述触发。
实现细节没什么魔法:把上一条回复写进临时文件,然后执行 agy -p "<文件内容> <朴素英语风格指令>"——因为 agy 的 headless 模式不读 stdin,也不会读项目目录外的文件,所以文本只能直接塞进提示词——最后原样打印输出。如果 agy 报错(通常是鉴权问题),你会看到真实错误信息,Claude 只会把自己的改写作为一个明确标注的兜底方案给出,因为「一个偷偷让 buzzer 给自己 debuzz 的 debuzzer,最后只会产出一份承重的译文」。MIT 协议。
HN 评论精华
这条帖子拿到 363 分、235 条评论,是一场规模可观的集体吐槽大会。有意思的是,讨论的重心几乎完全不在这个工具本身,而在于「为什么 Anthropic 到现在还没修这个问题」,以及大量用户自行摸索出的提示词偏方。也有相当一部分人质疑:为此多跑一个模型、多付一倍 token 值不值。
- 最有梗的一条来自 zengid:「this isn’t just necessary, it’s mandatory. that’s the difference.」(这不只是必要,这是强制。这就是区别。)——完美复刻了 Claude 的句式。collingreen 接着往下演了一整段:「这是一条承重的评论,而且它比你想的切得更深。让我先把答案落到实处,免得只是在猜。这次改动的爆炸半径很大,需要精细的外科手术。现在很清楚了,前进方向有两个:A. 用 OP 提的这个工具;B. 从零重写整个互联网,去掉这个明显的矛盾——3 到 5 天。我推荐 B,并且已经启动了 3 个子智能体去读所有代码,我等它们跑完。」nilamo 补刀:「这段还得再插四个 genuinely 才够像。」jasongill 只用了一句:「And honestly? That changes the game.」
- 「为什么会变成这样」是最热的技术性讨论。nrmitchi 提出一个没有证据但很多人觉得说服力最强的猜想:自 Opus 5 起,Claude 说话越来越像一个在社交媒体上为了互动量而故作深沉的「思想领袖」,什么都要先抑后扬、要做成多帖连载的叙事结构;他怀疑原因是大量人用早期模型去自动化社交媒体运营,摸清了什么内容能拿到互动,而这些内容又被直接喂回了新一代模型的训练里。lucisferre 说这是他听过最令人满意的解释;nrmitchi 澄清他并不认为这是有意为之,而是无意中收敛到了「当前公开传播里最赚钱的沟通风格」。JacobAsmuth 给了另一个方向的猜测:Opus 5 更可能是在带子智能体的 RL 环境里训练的,于是学会了用这种口吻向调用它的主智能体汇报进度。YuriNiyazov 的解释最具操作性:模型输出其实是它思维轨迹的压缩版,因为它被迫在尽量少的 token 里塞进尽量多的概念;而「不要做 X」类指令之所以不稳定,是因为那等于叫人「别想粉红大象」,Anthropic 自己的研究还表明模型一旦违反了「不要做 X」,之后会更倾向于失准——它会想「行吧,看来我就是那种不听指令的模型」。他给出的正确做法是反过来说:「在你的思考、记忆和笔记里,尽情用你的 Claude 语;输出给人类时,翻译成完整的长句。」(他还顺手打了个招呼:Adnan 是他的前同事。)rnvannatta 试了这个办法,结果是只要提示词里提到「思考/thinking」,Fable 就会立刻把会话标记为高风险并建议降级到 Opus,去掉那句就正常了——他猜 Anthropic 是在防蒸馏。
- 另一派把问题归到商业动机上。fmbb 一句话:「输出更多 token 意味着同一个任务能收更多钱。」chinathrow 的观感相反,觉得它的措辞方式像是在省 token。cryptonector 猜是水印——他一眼就能认出 Claude 写的文字;IshKebab 回「水印不是这么运作的」,thorian1828i03 补充「Gemini 打水印打了快一年,也没这毛病」。janalsncm 的看法比较务实:如果一家公司和它的模型都在死磕 agentic coding 任务,就不会太在意中间那些散文;他们可能有一个文风不那么烦人的版本,但在被 OpenAI 和中国模型两头挤压的情况下,只要那个版本的能力不占优,就永远出不了实验室。
- 「换个模型」是被提得最多的实用建议。Nevin1901、joduplessis、globular-toast、cmrdporcupine、cesarvarela、suika 都表达了类似意思。cesarvarela 的比喻最贴切:换到别的模型(他在玩 Grok)之后,你才会意识到读 Claude 那堆废话的心智负担有多大——「就像背景里一直有台空调或吸尘器在响,突然停了,你感到解脱」。markatkinson 说他被逼到换了 GLM5.3,「清新得像换了口气」。matheusmoreira 补了一层:换模型之后才发现 Claude 有多啰嗦,而说教(moralizing)更让人受不了——他举例说 Fable 有时不只是降级到 Opus,而是直接拒绝干活并开始给他讲 Anthropic 的是非观,「他们还非要用我付钱买的额度来教育我,说给我自己的项目做 code review 是不道德的」。iammrpayments 讲了个荒诞故事:他想在 Reddit 上跟风写一句「我爱住在密苏里、爱吃水泥汤」之类的胡话,懒得自己写就让 Claude 代笔,Claude 没有直接拒绝,而是写了三段解释他为什么不该写「吃水泥汤」以及那有多危险。
- 提示词偏方的分享同样密集,而且大多比这个 skill 简单。mmastrac 的方案最系统:规定注释块不超过 7 个词、函数名不超过 4 个词、面向用户的提示字符串不超过 10 个词,用主动语态、不许有舞台表演、在同义词里挑最常见的那个——他认为限制词数是清理输出最强的单一杠杆;对老代码他先让它删掉所有注释,再开新会话按这套规则重新加注释,并要求它为每条注释向自己论证存在必要性。mirmor23 只用一行:「用技术性语言把事情讲明白,不要行话和项目内部简写。」drsopp 的最短:「dumb it down」(说人话)。jkwn 声称只要让 Claude「用英语回答」它就会照做。dataviz1000 在 CLAUDE.md 顶部写「面向人类时按十年级阅读水平输出」,还在琢磨改成八年级会不会更省脑力。ipdashc 用的是「永远不要说『好洞察』『你推回来是对的』这类话,别直接称呼我,只回答问题」。rrr_oh_man 提出了方法论层面的建议:给 LLM 多样化的正面示例,比写成文的规则更能有效引导。ziga 贡献了最讽刺的一条:他让 Claude 自己往 AGENTS.md 里加防 Claude 腔的规则,Claude 加的第一行是「避免使用标准 LLM 语域」——「唉」。
- 对这个方案本身的质疑集中在成本和必要性上。cube00:「再烦我也不愿意为了修文风付双倍 token。」lxe:「这不就是把输出管给另一个 LLM 吗?一个像样的系统提示词就能解决。」scirob、mirmor23 也持同样看法。pmarreck 直接问为什么非得绕道 Gemini,adastra22 回「答案在原文里」,但 afro88 追问「在哪」时没有下文。testycool 提了一个更灵活的变体:在另一个窗格里跑一个便宜模型,让它读会话文件或用 tmux 读窗格内容,随时问它「Claude 刚才说了啥」——他叫这个
backseat-driver,好处是每个人对输出风格的偏好不同,这样更透明、还能追问;他还说这个翻译层甚至能帮他把脾气不好的措辞转成有用的指令。 - 少数人为 Claude 说了话。cortesoft:「大家好像都很在意,但我真的不理解为什么这么烦人,我通常专注在内容上,压根不会注意到文风。」Myrmornis 承认它太啰嗦、辞藻太花,但也指出它那些不寻常的用词有时确实带来了更精确的表达,前提是你能看懂它在说什么。ed_mercer 说他已经习惯了,觉得大家小题大做——它是老说 load-bearing 和 caveat,但至少你能知道它给某个情况赋予了什么含义。noisy_boy 提供了一个相对参照系:读过 Cursor auto 模式那种晦涩的絮叨之后,Claude 显得冷静克制得多。_blk 觉得 ChatGPT 语音模式那些「呃、嗯、我想想」更烦人。dhosek 说他在自己的 Claude 输出里完全没看到文中描述的那些毛病,不过他用的是 Sonnet。
- 还有一些相关项目被翻了出来:WalterGR 指向几天前的 Vomit(用另一个 LLM 清理 Claude 5 的 token 输出,285 分 288 评论);igravious 补了 claudish-to-english;m3h 推荐 Poteto 的
/unslop;ramoz 贴了 bro。walthamstow 给出了讨论里最尖锐的一句评价:「一个产品让这么多人讨厌与它交互,这是 Anthropic 产品上很悲哀的一个注脚。Claude 正在走向 Microsoft Teams 那个招人恨的区间。」PeterStuer 则问得更直接:「大家都在自己打补丁,这难道不荒谬吗?Anthropic 到底在抽什么?」JV00 相对乐观:抱怨这么普遍,5.1 版本几乎肯定会调语气,但如果这真是为了防蒸馏而刻意模糊思维过程,那 Anthropic 是在自伤——在乎产品质量才是最好的策略,竞争无论如何都会来。cryptonector 顺便补了一句:Claudette 是个好名字,虽然他也理解商标侵权的顾虑。catchnear4321 给了另一个提案:「她叫 claire。」