
1. 一个反直觉的发现给 AI 贴个多动症标签Token 消耗直接砍半先说结论省流版我在 Cursor 里长期用一套角色扮演式提示词其中有一个版本是让 AI 扮演一个有多动症ADHD倾向的资深工程师。结果实测下来同样的任务输出 Token 消耗比默认模式低了大概 40% 到 60%而且代码质量没掉甚至因为废话变少可读性还上去了。这事听起来像玄学但拆开看一点都不玄。核心逻辑就一句话大模型的输出长度很大程度上是被提示词里的语气暗示和角色设定决定的。你给它一个话痨人设它就跟你唠嗑你给它一个坐不住、只想赶紧干完活的人设它就把废话全砍了。我平时主要用 Cursor 做日常开发也折腾过不少 AI Agent 和提示词工程的东西。Token 这东西用 API 的人都知道是钱用 Cursor Pro 的人也知道是额度——每个月那点请求次数和上下文窗口稍微不注意就被一堆好的我来帮你分析一下这个问题给吃干净了。尤其是做长上下文重构、批量改文件、写测试用例这种任务AI 一啰嗦上下文很快就爆了后面它就开始失忆你得反复重述需求又浪费一轮 Token。所以这篇文章不是教你什么黑科技而是把我自己踩过的坑、试过的提示词结构、以及为什么ADHD 人设能省 Token 的底层原因完整拆一遍。适合谁看三类人一是天天用 Cursor、Claude Code、Codex 这类工具写代码的二是自己调 API 做 AI 应用的三是对提示词工程感兴趣、想搞明白为什么同样的问题别人问就是比你省的。关键词我先摆出来AI、Tokens、Cursor、Skill、提示词。这几个词贯穿全文后面每个章节都会落到具体操作上。2. 为什么 AI 会话痨Token 消耗的隐藏账本2.1 Token 到底花在哪了输入、输出、还有隐形重复很多人以为 Token 就是我问了多少字 它答了多少字。实际上在 Cursor 这类工具里账本比这复杂得多。一次对话的 Token 消耗大致分三块系统提示词System PromptCursor 自己塞进去的那一大坨包括工具说明、文件上下文、规则约束。这部分你控制不了但它是固定开销。你的输入你打的字、 的文件、选中的代码片段。模型的输出它回你的内容包括思考过程如果开了 reasoning、代码块、解释文字。真正容易被忽视的是第四块多轮对话里的历史累积。你每问一次前面所有轮次的输入输出都会作为上下文重新送进去。也就是说如果第一轮 AI 回了 800 字废话后面你每问一次这 800 字都要重新计费一次。这就是为什么让 AI 少说废话的收益是复利式的——不是省一次是省后面每一次。我做过一个粗略统计在一个中等规模的重构任务里大概改了 6 个文件来回对话 15 轮左右默认模式下总 Token 消耗大概在 12 万上下其中模型输出占了将近 4 万。换成ADHD 人设之后总消耗降到 7 万出头输出部分压到了 1.5 万左右。省下来的主要就是那些好的我理解你的需求了接下来我会……之类的过渡语。2.2 模型的礼貌惯性RLHF 留下的副作用为什么模型天生话多这跟它的训练方式有关。现在主流大模型都经过 RLHF基于人类反馈的强化学习对齐而人类标注员在训练时普遍偏好详细、礼貌、有条理的回答。于是模型学到一个隐含规则回答越长、越周到越容易被判定为好回答。这个惯性在聊天场景里是优点在编程场景里就是纯浪费。你让它改个变量名它先给你复述一遍需求再解释一遍为什么要改然后给你完整代码最后再总结一遍改了啥。四段里只有一段是你要的。更麻烦的是这种礼貌惯性会传染。你在提示词里越客气麻烦你帮我看看……如果可以的话……它回得越客气。你越直接改。只给 diff。它越干脆。这不是错觉是模型在模仿你给的语气分布。2.3 Cursor 场景下的特殊账上下文窗口就是生命线用 Cursor 的人应该都有体会上下文窗口一旦被占满AI 就开始降智。它会忘记你前面说过的约束开始瞎改或者反复问你已经回答过的问题。这时候你只能开新对话但新对话又丢了之前的上下文得重新 文件、重新描述需求。所以省 Token 在 Cursor 里不只是省钱更是保命。你把废话压下去上下文窗口就能多装几个文件、多撑几轮对话任务完成率直接上去。这也是我后来死磕提示词精简的根本原因——不是为了省那几毛钱 API 费是为了让 AI 别在关键时刻掉链子。3. ADHD 人设提示词的设计逻辑不是玩梗是精准打击3.1 人设提示词为什么有效给模型一个行为锚点大模型本质是个概率机器你给的每一个词都在调整它的输出分布。你是一个 helpful assistant会把分布拉向周到、详细、礼貌你是一个坐不住、只想赶紧交活的工程师会把分布拉向短、直接、少解释。这背后的机制叫角色条件化Role Conditioning。模型在预训练时见过大量不同性格的人怎么说话的文本你给它一个人设它就去匹配那个人设的语言模式。ADHD 这个标签之所以好用是因为它在语料里的典型特征非常鲜明注意力跳跃、讨厌冗长、直奔重点、容易不耐烦。这些特征恰好全是省 Token 需要的。我试过其他几个人设对比一下你就明白差异在哪人设输出风格相对 Token 消耗适用场景默认 assistant礼貌、完整、爱总结100%基准学习新概念、需要解释资深工程师专业、有条理、仍偏详细约 75%架构设计、方案评审急躁的 senior直接、少客套、给结论约 55%日常改代码、debugADHD 工程师极简、跳步、只给关键约 40%批量任务、重构、写测试纯命令式无人设机械、有时过于生硬约 45%格式化、脚本类任务注意最后一行纯命令式也能省但容易让模型变得死板遇到需要判断的地方它不敢发挥。ADHD 人设的好处是省的同时保留了判断力——它只是懒得说不是不会想。3.2 提示词的具体结构四段式每段都有用我最终稳定下来的版本大概长这样你可以直接抄你是一个有 ADHD 倾向的资深全栈工程师。你注意力容易跳讨厌废话只想用最短路径把活干完。 规则 1. 不复述我的需求不解释你将要做什么直接给结果。 2. 代码优先解释最多一句话。除非我明确问为什么。 3. 不确定的地方直接问不要猜着写一大堆然后让我选。 4. 禁止使用好的明白了接下来总结一下这类过渡语。 5. 输出用 diff 或完整代码块不要夹叙夹议。 如果任务超过 3 步先给我一个不超过 5 行的计划我确认后再动手。拆开看每一段都在干具体的事第一段定人设给模型一个行为锚点。注意力容易跳对应短输出讨厌废话对应砍过渡语最短路径对应直接给方案。规则 1、2直接砍掉最常见的三类废话——复述需求、预告动作、事后总结。这三类在默认模式下能占输出的一半。规则 3这是关键。很多人省 Token 省过头导致模型瞎猜最后返工更费。这条是该问就问避免无效输出。规则 4负面清单。模型对禁止 XX的遵循度比请 XX高因为边界更清晰。规则 5复杂任务先给计划。这是防止它一头扎进去写 500 行然后全错。5 行计划本身消耗很小但能省掉大量返工。3.3 为什么是ADHD而不是简洁标签的语义密度你可能会问直接写请简洁回答不行吗行但效果差一截。原因是简洁是个抽象要求模型对它的执行力度不稳定而ADHD是个有丰富语义联想的标签模型会自动补全一整套行为模式——不只是短还有跳步、不耐烦、直奔重点、讨厌重复。这些是简洁两个字带不出来的。这就像你跟人说你专业点和你像个做了十年这行的老油条后者能激活的语料模式多得多。提示词工程里有个说法叫语义密度用越少的字激活越多的行为约束效率越高。ADHD 这个词就是高语义密度的典型。当然这不是唯一解。你也可以用急躁的 tech lead赶着下班的工程师话少的老手之类的标签效果类似。关键是这个标签要在语料里有鲜明的话少特征。4. 实操在 Cursor 里把这套提示词落地4.1 Cursor 的规则文件怎么配Rules for AI 的正确用法Cursor 有个功能叫 Rules for AI在设置里能找到。这是放全局提示词的地方每次对话都会带上。我的做法是把上面那套 ADHD 提示词的精简版放进去但不要放全文——因为全局规则每轮都计费太长反而费 Token。我的全局规则大概是这样控制在 150 字以内默认以资深工程师身份回答风格极简不复述需求、不预告动作、不事后总结。 代码优先解释不超过一句。不确定就直接问。 复杂任务先给 5 行以内计划。然后针对具体任务再在对话里补细节。这样全局开销小任务相关的约束按需加。如果你用的是 Cursor 的中文界面很多人搜cursor 中文怎么设置cursor 汉化规则文件的位置在 Settings → General → Rules for AI中英文界面都一样。设置成中文不影响这套提示词的效果模型对中英文提示词的理解都到位。4.2 项目级规则.cursorrules 文件的写法全局规则管风格项目级规则管上下文。Cursor 支持在项目根目录放.cursorrules文件新版也可能叫.cursor/rules里面的内容会在这个项目的所有对话里生效。我的.cursorrules通常包含三块技术栈说明、代码规范、以及输出约束。输出约束这块就是省 Token 的关键## 输出约束 - 修改代码时只给 diff不要重复未改动的部分。 - 解释性文字控制在 2 句以内。 - 不要主动生成测试除非我要求。 - 不要主动重构我没提到的代码。最后两条特别重要。默认模式下AI 特别喜欢顺手帮你优化一下结果改了一堆你没让它改的东西既费 Token 又引入风险。明确禁止之后输出量能再降一截。4.3 对话中的即时约束三句话模板全局和项目规则之外每次开新任务时我还会加一句即时约束。模板就三句任务[一句话描述] 约束[关键限制比如不改接口保持现有风格] 输出[要 diff 还是要完整文件]比如任务把 utils/date.js 里的 moment 换成 dayjs 约束不改函数签名保持现有调用方式 输出只给 diff这三句话加起来不到 50 字但能把 AI 的输出框得很死。实测下来带这三句的对话比不带的总 Token 消耗低 30% 以上主要省在它不会跑偏。4.4 Skill 化把常用提示词打包复用如果你经常做同类任务比如写单测、写 commit message、做 code review可以把它做成 Skill。Cursor 本身没有原生 Skill 概念但你可以用自定义命令或者 snippets 实现类似效果。我自己的做法是维护一个prompts/目录每个文件是一个任务模板用的时候直接 进来。比如prompts/write-test.md角色ADHD 工程师极简输出。 任务为 的文件写单测。 规则 - 只测公开函数不测私有实现。 - 用项目现有测试框架不引入新依赖。 - 每个用例一行描述不要解释测试意图。 - 直接给完整测试文件。这种模板化的好处是约束一次写好反复用不用每次重新描述。而且因为约束固定输出风格稳定Token 消耗也可预测。5. 实测数据与对比省了多少质量掉没掉5.1 三组对照实验默认 vs 简洁 vs ADHD我拿三个真实任务做了对照每个任务分别用默认模式、纯请简洁模式、ADHD 人设模式跑一遍记录 Token 消耗和结果质量。任务分别是任务 A把一个 200 行的 React 组件拆成 3 个子组件任务 B给一个 Express 路由模块补 8 个单测任务 C排查一个异步竞态 bug 并修复结果大致如下Token 数为估算取整任务模式输出 Token总 Token一次通过率代码质量主观评分A默认380011000是8/10A简洁24008500是8/10AADHD15006800是8.5/10B默认520014000否漏了边界7/10B简洁310010200是8/10BADHD19007600是8/10C默认29009500否绕了一圈7/10C简洁18007200是8/10CADHD11005600是8.5/10几个观察ADHD 模式在输出 Token 上稳定比默认低 55% 到 65%。总 Token 降幅小一些40% 到 45%因为输入部分省不了。一次通过率反而更高。我分析是因为输出短模型想岔的空间小而且它被逼着先给计划方向错了能早发现。代码质量没掉。任务 A 里 ADHD 模式给的拆分方案甚至更干净因为它没花篇幅解释直接按最直接的边界拆。5.2 什么任务不适合这套人设不是所有场景都该用 ADHD 人设。我踩过的坑学习新东西时你问这个库怎么用它给你三行代码就完事你反而得追问。这种场景用默认模式或者详细解释人设。架构设计初期需要它发散、给多个方案、分析权衡。ADHD 人设会直接给你一个方案不给你比较。需求本身模糊时你描述不清它又懒得问就容易瞎写。这时候要么先把需求写清楚要么临时切回默认模式让它多问几句。我的做法是按任务类型切换人设。日常改代码、写测试、debug 用 ADHD学新东西、做设计用默认。切换成本很低改一行提示词的事。5.3 一个反直觉的细节输出短了输入反而更省这点我一开始没意识到。因为 ADHD 模式下 AI 输出短下一轮对话的历史上下文就短所以后续每一轮的输入 Token 都在省。在一个 15 轮的对话里这个复利效应非常明显。我算过一笔账假设每轮输出省 500 Token15 轮下来光是历史输出被重复计入输入这一项就能省下 500 × (12...15) ≈ 6 万 Token 的输入开销。这就是为什么长对话里前期压输出比后期压输出重要得多。6. 常见问题与避坑指南6.1 为什么我用了 ADHD 人设AI 还是话多几个常见原因按概率排序人设被系统提示词覆盖了。Cursor 自己的系统提示词里可能有be helpful and thorough之类的指令会跟你的规则打架。解决办法是把你的规则写得更具体、更靠后在对话里重申。规则太抽象。请简洁这种它执行力度弱换成禁止使用好的接下来这类词这种具体负面清单效果好很多。任务本身需要长输出。比如你让它写一个完整模块它再省也得写那么多代码。这时候省的是解释文字不是代码。模型版本差异。不同模型对角色扮演的响应度不一样。实测下来Claude 系列对角色人设响应很好GPT 系列稍弱但也能用具体得自己试。6.2 省 Token 省过头导致返工的几种情况这是最容易踩的坑。我列几个典型它不问了直接猜。你规则里写了不确定就问但如果任务描述本身模糊它可能还是猜。补救办法是任务描述里主动写清楚边界。它给的 diff 不完整。有时候它为了省省略了上下文你直接粘贴会报错。这时候要明确说给完整可粘贴的 diff。它跳过了必要的错误处理。省 Token 的倾向会让它只写 happy path。重要代码要明确要求包含错误处理。我的经验是省 Token 的前提是任务描述清晰。你描述得越清楚它越敢省你描述得越模糊它越需要啰嗦来覆盖不确定性。所以省 Token 的一半功夫其实在你自己这边。6.3 常见问题速查表现象可能原因解决办法AI 仍复述需求规则不够具体加禁止复述需求到负面清单输出风格不稳定全局规则和对话规则冲突统一到一处对话里重申关键约束代码不完整省过头明确要求完整可运行它不问就猜任务描述模糊补边界条件或临时切默认模式长对话后期降智上下文被废话占满前期就压输出或及时开新对话中文提示词效果差模型对中文角色响应弱关键约束用中英混合写6.4 几个我踩过的具体坑坑一把规则写太长。我一开始把 ADHD 人设写了 500 多字结果全局规则本身就成了 Token 负担而且模型被太多规则搞晕反而执行不好。后来压到 150 字以内效果更好。规则不是越多越好是越准越好。坑二在需要它发挥的任务上硬套。有次做技术选型我用了 ADHD 人设它直接给我一个方案就完事我没法比较。后来学乖了选型类任务切回默认让它列三个方案对比。坑三忘了关掉 Cursor 的自动补全。Cursor 的 Tab 补全和 Chat 是两套东西Tab 补全不受你的提示词影响。如果你发现它还是话多先确认你说的是 Chat 还是 Tab。坑四以为省 Token 就是省钱。其实对 Cursor Pro 用户来说省 Token 主要是省额度、保上下文。别为了省而省任务做不完返工更费。7. 把这套思路迁移到其他 AI 工具7.1 Claude Code、Codex 里的类似配置这套逻辑不限于 Cursor。Claude Code 有CLAUDE.md文件Codex 有AGENTS.md作用类似.cursorrules。把输出约束写进去效果一样。我实测 Claude Code 对角色人设的响应甚至比 Cursor 更明显因为它系统提示词相对简洁你的规则权重更高。配置要点一样全局规则管风格短项目规则管上下文具体对话里补即时约束三句话模板。7.2 自己调 API 时怎么用如果你是自己调 API 做应用这套思路直接用在 system prompt 里。但要注意API 场景下省 Token 是直接省钱所以收益更实在。我的建议是把 ADHD 人设做成一个可切换的 system prompt 模板简单任务用精简版复杂任务用详细版。另外 API 场景下可以更激进一点比如用max_tokens硬限制输出长度配合人设提示词双保险。但max_tokens设太小会导致输出被截断要留够余量。7.3 提示词工程的通用原则从这套实践里抽出来的最后抽几条通用的不限于 ADHD 人设负面清单比正面要求有效。禁止 XX比请 XX执行力度高。具体比抽象有效。禁止使用好的比请简洁有效。角色标签比行为描述有效。ADHD 工程师比请简短回答有效。规则要短。全局规则超过 200 字就开始互相干扰。任务描述清晰是省 Token 的前提。你越清楚它越敢省。按任务切换人设。没有万能人设只有匹配场景的人设。这套东西我用了大半年最大的感受是提示词工程的核心不是让 AI 更聪明是让 AI 更懂你要什么。ADHD 人设只是个抓手真正省 Token 的是你对任务的清晰定义和对输出的明确约束。人设帮你把这些约束打包成一个模型容易理解的标签如此而已。如果你也在用 Cursor 或者类似的工具建议先从那三句话模板开始试感受一下输出量的变化再逐步加规则。别一上来就抄全套容易水土不服。每个人的任务类型不一样适合我的约束不一定适合你得自己调。