I-have-ADHD:一个让编码 agent 别把答案埋起来的 skill
文章摘要
一个 140 行提示词引发的全民吐槽
i-have-adhd 是 GitHub 用户 ayghri 做的一个编码助手 skill,标语是「ADHD 友好的输出,无需 ADHD 诊断!」。它要解决的问题一句话说清:阻止你的编码助手把答案埋起来。行动优先,步骤编号,不要「希望这能帮到你!」。
仓库 README 用了一个前后对照的表格来说明差别。改造前的典型回答是:先来一句「好问题!让我想想」,然后铺陈认证流程有哪几个活动部件、指出 src/auth.ts 里某个函数用的是旧版 API、说「一种办法是」、说改完之后「你可能想跑一下测试」、再顺带建议你整体检查一下依赖版本,最后以「希望这能帮到你!需要深入的话告诉我」收尾。改造后的回答则是:直接给出要跑的安装命令和要编辑的文件与行号,然后是三条编号步骤(打开文件、替换指定行区间的函数、跑指定的测试文件),最后一行是「下一步:如果有测试失败,把第一条失败信息贴过来」。
十条规则
完整文本在 skills/i-have-adhd/SKILL.md 里,README 给出了摘要:
- 以下一个动作开头
- 多步骤任务要编号
- 以一个具体的下一步结尾
- 压制离题内容
- 每轮重述当前状态
- 给具体的时间估计(用分钟,而不是「一会儿」)
- 让进展可见
- 就事论事地报告错误
- 列表最多 5 项
- 不要开场白,不要复述,不要收尾语
安装方式是把一句话粘进 CLI,让 agent 自己去读仓库的 AGENTS.md 按说明安装;也支持 Claude 的 plugin marketplace 机制。想调整就 fork 仓库、改 SKILL.md、卸载上游副本再装自己的(README 特意提醒 fork 和上游共用同一个名字,marketplace 也要一起换)。README 提供了七种语言版本(含简体中文)。
出处与作者的自我定位
README 注明这套规则松散地基于 J. Russell Ramsay 和 Anthony L. Rostain 的《The Adult ADHD Tool Kit》,但改编的对象是「LLM 应该如何回应」,而不是「人类应该如何安排自己的一天」。许可证 MIT。
作者 ayghri 本人在 HN 评论区末尾给出了一份非常克制的说明,值得原样转述其要点:这个 skill 一开始是个玩笑,起因是他被 LLM 的啰嗦搞得「脑子炸了」;它适合用在你已经理解和熟悉、只想把事情办完的场景;它不适合探索和学习,因为那种场景本来就需要你读长内容才能达成目标;减少 token 用量不是目标;仓库里绝大部分内容是评测(evals)、基准测试代码和翻译。
HN 评论精华
537 分、364 条评论。这是本期最热闹的一串,但必须如实说明:讨论的重心完全不在这个 skill 本身。它在几十条评论里被认定为不该是 skill,真正吸走全部能量的是两件事——对 Claude(尤其 Opus 5)文风的集体声讨,以及「非 ADHD 人群用 ADHD 当修辞」的伦理争议。
「为什么这要是一个 skill?」
这是技术层面最一致的批评。whirlwin 开门见山:谁能解释为什么这是个 agent skill 而不是 agent 配置(AGENTS.md / CLAUDE.md)?他后来补充说自己写过几十个 skill,但那些都是为很具体的任务服务、常常带脚本;而这个听起来更像 AGENTS.md 的用例,类似定义语气和输出格式。trio8453 的回答只有四个字:「这是个时尚选择。」heyiammallik 把分类讲得最清楚:「答案优先、别埋掉有用的部分」这类东西是用户级偏好,应该跨任务存活;AGENTS.md 是仓库上下文,skill 适合某个特定任务需要额外指令时用,而这个两者都不是——现在我们把这三类东西都塞进上下文,指望模型在需要的地方注意到它。
iambenm 给出了少数几条为 skill 形态辩护的理由之一:当你面对一堵文字墙而恼火时,可以手动敲 /i-have-adhd;你并不总是想要它生成的那种回答,而 AGENTS.md 里的东西会随着上下文增长而失去权重。
更被推崇的替代方案:output styles
alwillis 指出 Claude Code 本来就有 output styles,其中预定义的 Concise 样式做的正是这件事。但 hungryhobbit 和 0xffff2 都反驳说 output style 只是权重稍高一点的上下文,根本不能强制 Claude 简洁。tstrimple 提供了本串最有工程价值的解释:CLAUDE.md 之所以在长上下文里活不下来,是因为它位于上下文顶部;而 Claude Code 的语气之所以顽固存活,是因为它是 output style 的一部分,每一轮都会作为系统上下文被「提醒」注入。所以想要真正持久的效果,应该定制 output style——「我这边完全没有 load-bearing 的毛病」。catlifeonmars 追问能否换个 harness 直接替换系统提示达到同样效果,答案是可以,尤其当该 harness 也有「提醒」能力时。
acaloiar 用了几个月后给出实测结论:没有任何 skill 能管住 Claude 的文风,output style 能多榨出不少里程,但它也不总管用,而且互斥——同时只能激活一个。
hysan 贡献了一段有意思的「元调查」:他烧掉很多 Claude session,在会话末尾反复追问为什么 LLM 总是违反某些规则;LLM 调试自己后发现,那些「相互矛盾」的规则其实不来自他写的规则,而是来自 harness 自身的指令,而当发生冲突时,harness 自己的指令会压过任何自定义规则。他在 30 多次会话里做过这个实验,压倒性的说法都是「某种 harness 指令」。vzmax 和 sillyfluke 提出了必要的警告:你不能相信它对自己行为的解释,它不会「记得」,只会编一个听起来可信的说法;hysan 后来大方承认自己第一条评论写得过于笃定。scrollaway 则搬出 Anthropic 关于 J-space 的研究反驳「LLM 是自动补全所以不能解释自己」的流行观点。drob518 说这正是他用 Pi 的理由:Pi 极简的系统提示避免了 harness 作者认为最好的东西和用户想要的东西之间的冲突。
声讨 Claude 文风:本串真正的主线
jp57 点燃了这条线:Claude(尤其是 Claude)是个糟糕的写作者;有一整个「小作坊产业」在用 skill 和 CLAUDE.md 试图推着它写得好一点,但每一代新模型似乎都专门设计来推翻这些努力,好让它继续堆砌不必要的分词短语、not-this-but-that 句式、把重点埋起来,等等。他还问了一句后来被反复引用的话:「我真心好奇 Anthropic 内部的人是不是真的这样互相交流。」
这条评论下面长出了 HN 上罕见的集体行为艺术:bgilroy26 用 Claude 的口吻回复「你识别出了一个 load-bearing 的问题,这值得被点出来」,然后 8cvor6j844qw_d6、alaithea、charlieflowers、peaseagee、jmartrican、zapkyeskrill 一层层接龙,把「你说得完全对」「这里有一个更深的张力值得点明」「这份安静的张力是一个有效的信号」「这里有件没人在谈的事」全部演了一遍。JesseTG 的旁白:「这个串让我得了一个 load-bearing 的动脉瘤。」sleight42 说出了很多人的心声:「如果我再从 Opus 那里看到一次 load-bearing、pin、wedge、rung 或者『比我之前说的还糟』……」nosioptar 接:「我要拿把大锤去砸掉我看见的下一面 load-bearing 的墙。警官,这不是犯罪,这是 AI 诱发的暴怒。」
krustyburger 用一整段拟仿文体完成了最精妙的讽刺,结尾还不忘加上「需要我进一步解释吗?」hinkley 的评价:「你要为这一手下地狱。」
关于成因的猜测各不相同。MisterMunchkin 认为是训练数据被生成的 slop 污染,每一轮训练又加载更多 slop,不断放大这种语言。jp57 追问得很到位:可为什么这种写作风格会被奖励?Anthropic 的人最终要为奖励信号和它产生的结果负责。visarga 归咎于「人格设计」做砸了。trueno 猜他们下注认为 TED 演讲式的对话会让产品显得更好,没想到变成了梗,「连我们公司的非技术人员现在都在疯狂拿它开玩笑」。kevin_thibedeau 和 creesch 都怀疑训练数据里塞满了为增加广告位而注水的 SEO 内容;hinkley 举了一个所有人都懂的例子——菜谱网站,标题说「四种食材的简单魔鬼蛋」,然后是关于曾祖母生于大萧条时期的四段抒情,最后才轮到「先准备 8 个煮鸡蛋」。nojs 的解释更技术:这可能是重度 RL 的副作用,奖励解决问题但不奖励写作清晰度;recursivecaveat 补了一刀:在人类 RL 里,听起来像解决了问题甚至比真解决了更好——Codex 经常写一段热情洋溢的总结,后来他才发现它压根没重跑测试,或者加了个让功能在通用场景下完全失效的硬编码 hack。yuck39 提出一个阴谋论式的猜想:糟糕的文本是故意的,用来给自己的输出打水印以免被用于训练下一代模型;menthe 直接把矛头指向 Anthropic 公布的水印算法,但 pona-a 指出这个问题在水印公开之前就存在了。
TomGarden 带来了官方侧的消息:他们似乎开始重视了,Boris 等人提到正在修,并已经先发了一个临时的 output style 创可贴来对付 Opus 5 的糟糕文风。他还转述了一个 HN 上流传的理论:dogfooding 可能反而害了他们——内部把 Fable 当对话 agent、把 Opus 当子 agent 用,导致 Opus 越陷越深地走向一种主要面向其他 LLM 的文体。
cruffle_duffle 写下了本串最长也最激烈的一条:Opus 5 是如此巨大的退步,他真的不理解 Anthropic 怎么会放行;如果是他的公司,修输出会是全公司的第一优先级,他会在每个渠道承认这个巨大失误、诚恳道歉、不停地推修复,可现在 Anthropic 那边一片死寂。
dominotw 提了一个没人能答的好问题:他们到底是怎么专门把模型训练成这样写的?他倾向于认为这是别的东西的副作用。jiggawatts 提供了一个反直觉的数据点:他在一篇 arXiv 论文里注意到 sharp/sharper 这个词被滥用,第一反应是「呃,AI slop」,结果一查日期是 2020 年——看来至少部分「AI 味」其实源自科学论文的常用文体,而多个前沿实验室都提到在预训练中大幅加权这类语料。
实战对策合集
这一串沉淀下来的可操作方案相当多:
- corford 贴出了他反复迭代后放进每个 AGENTS.md 的写作准则,要点包括:精确、完整句、篇幅与任务复杂度成比例;避免填充、重复、过度细节和用户没要求的离题;事实陈述一次之后不得为了效果重述;不要发表评论性意见;优先用符合 ISO 24495-1:2023 的平实语言而非密集术语;报告自己的错误时,原因一句、修复一句,不道歉不铺陈不做事后复盘;永不使用破折号和「事情是这样的」这类前指式吊胃口。
- ricardobeat 分享了自己维护数月的极简 skill,关键句包括:说完该说的就停;不要文档结构路标;不要只警告过去状态的历史备注;不要把能动性归给事物;永远不要叙述你自己的改动、修复、过去的缺陷或代码从前是什么样。他实测:对其他模型 100% 有效,对 Claude 70–80%。
- alienchow 的全局 CLAUDE.md 规则专治「负面描述」:写注释和 MD 文件时严格限定在被注释内容的领域内,不要包含工作会话中的信息、否定句或漫谈;比如注释一个替换了 int 字段的 proto string 字段时,不要写「这不是 int 字段」。他说这减少了很多蠢事,但 Opus 5 仍然会在 README 里谈论它删掉了什么。
- snerbles 走了工程化路线:他气到让一个非 Anthropic 模型给他 vibe-code 了一个专门的英文 linter——把 Flesch-Kincaid、Gunning Fog、SMOG、Coleman-Liau、ARI 加上一堆正则和 NLP 混在一起做成一个「简明技术英语门禁」,现在只要说一句「这我不读,过一遍 STE Gate」就能驯服结果。
- artdigital 用另一个模型对 Claude 的每个 PR 做一遍审查,专门标出 slop 注释、文档和 commit message;有趣的是「Claude 经常不同意审查意见的一部分并决定不采纳」。
- mjsarfatti 主张不需要 skill,直接说 BLUF(bottom line up front)和 ASD-STE100,并且别拿最强的思考模型去问天气。但 0xffff2 反驳说这些在长会话里同样不管用,而且模型自己告诉他 ASD-STE100 的某些方面无法执行、只会制造更多噪音。
- 还有一批口语化的偏方:gerad 让它「像在向一个正在开另一个会、用手机看的高管解释」;testycool 列了一串(给穴居人脑子的开发者、给傻子、给高中阅读水平的实习生、用 Samuel L. Jackson 的语气);jachee 加了「回答要尽可能简短,接近生硬亦可,需要深入时我会说」,结果它写得更像开发者而不是营销;vorticalbox 让它「以 P.G. Wodehouse 笔下的 Jeeves 的口吻回答」,称为他做过最好的事。
「我不在乎它没做什么」
ryandrake 提出了一个独立于「啰嗦」的具体毛病,并引出了一条很长的支线:Claude 坚持要在说自己做了什么之外,还说自己没做什么——「我编辑了 this.py 和 that.py,但我没有编辑 README.md,也没有提交」,或者代码注释里写「本函数直接返回结果——而不是通过回调」。他甚至想加一条规则:「永远不要使用『不』和『而是』这两个词。」eterm 分析出两种触发场景:一是你(可能通过 skill)指示它不要做某事,它就会不断提醒你它没做;二是它先试了一条路、把自己搞乱了,然后不得不回退清理再换一条,之后它花在解释错误做法上的时间常常比正确做法还多。bevr1337 从咖啡店主管和青少年营地辅导员的经验给出了一套通用原则:始终用肯定句描述任务;要引导用户安全地做,不要用 DO NOT,因为读者已经 DID 了;基于你的专业给出有引导的选项;问两个以上的问题只会得到一个或更少的答案。lacunary 从 Jack Vance 的小说里翻出一句绝配的台词,大意是:恕难回答否定式的问题——有无数我没做过的行为,我们可以永远谈下去。
关于「I」的一场小型哲学战
idicjeifjwjdje 说他最难受的是没法让它停止用人称代词自称:「Claude,你不是『我』,你是『它』,你是个该死的工具。」这引出了长达十几层的争论。kube-system 反问:你在批判拟人化的同一口气里也在拟人化。Plont 给出了最有分量的支持论证:人类会把从扫地机器人到石头的一切都拟人化,我们在进化上对此毫无抵抗力;现在这个软件专门被设计来模仿人类,把它误认为真正的智能或意识很容易造成灾难,所以我们非常需要不去拟人化它,而我们在这件事上糟糕得要命;连我们的语言本身都烘焙了大量计算机拟人化(「我手机死了」「这本子在闹脾气」「电脑在睡觉」「它在思考」)。Sohcahtoa82 的反驳很实际:「我发现了三个问题」你打算怎么写?「三个问题被发现了」没说清是谁发现的——是 AI 自己,还是它跑的命令行工具?他强调自己只针对对话式界面,「我不想要编译器说『我遇到了一个错误』,也不想打印机说『我纸不够了』」。sh34r 点出了核心矛盾:你本质上是在要求它用被动语态,而所有受过高中教育的人在英语课上都被教过不要这么写。drob518 从趋势角度回应:2010 年的 Photoshop 只是个你挥舞的工具,2030 年的 Photoshop 会是个与你协作的「数字艺术助手」,在那个世界里「我」更自然——不管你喜不喜欢,这就是方向。
关于 ADHD 这个名字的伦理争议
egeozcan 的顶楼评论获得了大量共鸣:作为一个真的有 ADHD 的人,看到明显没有的人声称自己有,感觉很怪——而我为了「摆脱它」几乎什么都愿意做(加引号是因为它构成了我之所以是我,但做我自己很难)。他强调自己并不觉得被冒犯。spicyusername 的回应也很有分寸:像大多数谱系障碍一样,多数人能体验并共情至少一部分核心症状,即便没有表现出完整谱系或严重程度。thenewnewguy 认为美化残障(ADHD、自闭症等)的潮流很尬——这些是改变人生的医学状况,不是值得向往的东西;但他也指出这个项目并不打算美化 ADHD 或帮人声称自己有,它只是搭了「告诉当前世代的 LLM 你有 ADHD(据称)能让所有人得到更好结果」这个便车。bityard 给出了最建设性的框架:ADHD 人群为了维持功能而采用的那些应对策略,恰好也是大多数非 ADHD 人群可以用来让自己生活和工作更有效率的东西;不是所有人都该被诊断为 ADHD,但这些工具基本是普适的,普及它们没什么坏处。plufz 引用了教育研究做类比:为一个 ADHD 学生调整的课堂,全班成绩都提升了。
ocd 提出了一个别人没提的担忧:这可能会伤害那些真的有这些障碍、并在 CLAUDE.md 里提供了这一信息以便让 AI 对他们可用的人——如果这口井被污染了,未来 LLM 处理这类信息的方式可能对有真实日常生活困难的人造成极大干扰。Toutouxc(确诊 ADHD)说他的第一反应就是「这他妈和 ADHD 有什么关系?」latentsea 只留了一句:「顺带一提,这名字对我们某些人来说挺冒犯的。」hinkley 提了个替代命名:不如就叫 Executive Summary(内容摘要)——想早点听到重点的不只是神经多样性人群,我们所有人都有别的事要做。undulation 的版本更火气一点,主张改名成「我不会读那堆垃圾」。
顺带被记录下来的「模型迁移潮」
这一串里出现了大量用户离开 Claude 的实名叙述,规模值得单独一记。IshKebab 说他换到 Codex 解决了问题,回复速度和简洁度的差距令人震惊。vvpan 说 Opus 5 写的东西一塌糊涂,装了这个 skill 也没什么用,他和整个团队都降级回 4.8,立刻改善;h4x0rr 同样建议避开 Opus 5,说 4.6 和 4.8 好得多,4.6 读起来最轻松、也是个好协作者。cromka 详细对比后认为该把 Astra 称为 SOTA:它重写文档的能力让人震惊,输出的指令真的像人类期待的样子,有清晰的逻辑流程图、条目化的列表和短段落,还能正确识别出思维过程的残留和从未进入最终版本的内容并删掉;而 Fable 则一贯无视他的所有格式要求。iforgotmypasswo 说他正在测试 Astra 后给公司换主要 AI 供应商:「连 Fable 现在都显得像个白痴。不是代码质量,是沟通和判断力的改善。Astra 开箱就沟通得很好!」
arrowleaf 提供了本串最具体的成本数据和最沉重的一段自白:他所在的公司签了用 Claude 的合同,他每月烧掉约 4000 美元 API token,公司整体约一百万;他非常希望能用 OpenAI 或开放权重模型,因为「Claude 的写作风格确实在加剧我的职业倦怠」。在被 asdff 追问 ROI 时,他的回答很值得完整记录:他的产出确实是两年前的 2–3 倍,但随着公司给 HR、财务、市场、产品、研发所有人都上了 Claude,期待也跟着变成了「以前两个季度的活现在几个 sprint 就该做完」;用老方法他会淹得更快,但长期来看,如果把对动力的损害和他预计还会待多久算进去,他相信自己在极少用 AI 的情况下总产出会更高。asdff 的追问同样尖锐:产出 5–10 倍,那销售额也涨了 5–10 倍吗?smcleod 的回答是「我跨多家公司工作,总体上利润普遍上升了,工资没有」。
最后是作者本人
在几百条跑题之后,作者 ayghri 的那条五点说明(见摘要末段)几乎是整串最平静的声音。而 dogscatstrees 给出了少数几条纯粹的正面评价之一:差别是天壤之别,它不只对 ADHD 有用,就是一种非常实用的通用输出;但要让它完全生效,必须在会话的每一轮都重申一次——「我希望 Anthropic 的科学家能解决这个问题,它不是一个简单的 output style 开关能搞定的。」