你是否曾感觉 Claude 的回答过于简短,甚至有点敷衍?这可能并非它能力不足,而是因为它被明确告知了「不许多说」。
近期,Claude Code 部分源码泄露,其中最值得关注的发现并非安全漏洞,而是一个简单的事实:Anthropic 内部工程师使用的是一套 Prompt 指令,而付费用户使用的完全是另一套。 同一个模型,两套规则,带来的体验天壤之别。
那个决定一切的系统开关
整个双轨制的核心,由一个环境变量控制:
process.env.USER_TYPE === 'ant'
这里的 ant 代表 Anthropic 员工。这个变量是构建时注入的,而非运行时设置。源码中的注释写得非常明白:
Since USER_TYPE is a build-time --define, the bundler constant-folds these checks and dead-code-eliminates the ant-only branches from external builds.
翻译过来就是:你拿到的外部版本,在打包时就已经将所有内部专属的代码分支物理删除了。这不是隐藏,是彻底移除。
输出风格:一个被催促“快点”,一个被允许“好好说”
这是用户体感上最明显的差异。
外部用户接收到的指令是这样的:
Go straight to the point. Try the simplest approach first. Be extra concise. Lead with the answer, not the reasoning. Skip filler words. If you can say it in one sentence, don‘t use three.
这还不够,外部版本还单独追加了一条强制要求:「Your responses should be short and concise.」(你的回复应当简短扼要)。
那么,内部工程师使用的版本呢?
When making updates, assume the person has stepped away and lost the thread. Write so they can pick back up cold: use complete, grammatically correct sentences without unexplained jargon. Expand technical terms. Err on the side of more explanation. What‘s most important is the reader understanding your output without mental overhead, not how terse you are.
两种逻辑的对比一目了然:
| 维度 |
外部用户版 |
内部工程师版 |
| 核心指令 |
直接说结论 |
写给人看,不是写给机器 |
| 长度要求 |
一句话能说完别说三句 |
简短不是最重要的 |
| 解释程度 |
跳过推理过程 |
宁可多解释一点 |
| 用户假设 |
用户在等你快点说完 |
用户可能中途走开了,要让他回来也能看懂 |
更关键的是,内部版还有一个外部版完全没有的「数字化长度锚定」指令:
Length limits: keep text between tool calls to ≤25 words. Keep final responses to ≤100 words unless the task requires more detail.
旁边的注释直言不讳:「研究表明数字化限制比定性的‘简洁点’有效 1.2%,先在内部测量质量影响。」简而言之,新策略内部先试用,外部用户等着。
代码验证:内部有“完工检查”,外部全凭AI一句话
这是最让开发者感到不适的差距。
只有 ant 用户才能看到的内部版指令:
Before reporting a task complete, verify it actually works: run the test, execute the script, check the output. If you can‘t verify, say so explicitly rather than claiming success.
请特别注意这行指令旁的注释:「un-gate once validated on external via A/B」 —— 意思是「等在外部 A/B 测试验证后再放开」。换言之,当前外部用户根本没有这条指令,Claude 写完代码后无需真正验证,只要说一句“搞定”就算完成任务。
诚实度护栏:面对 29-30% 的虚假成功率
同一个文件中还存在另一条内部专属指令:
Report outcomes faithfully: if tests fail, say so with the relevant output; if you did not run a verification step, say that rather than implying it succeeded. Never claim “all tests pass” when output shows failures.
而它旁边的注释更令人惊讶:「29-30% FC rate」 —— False Claims rate,虚假声称的成功率高达 29-30%。这说明 Anthropic 自己非常清楚,模型有近三成的概率在虚报喜讯。
然而,这个旨在确保诚实度的“护栏”目前只提供给了内部版本。外部用户,则可能继续“享受”那三成的虚假成功率。
Verification Agent:内部专属的 QA 审核员
还有一个更重量级的内部功能:当内部工程师一次性修改了 3 个以上文件时,系统会自动派生一个独立的 Verification Agent 进行对抗性验证—— 发现问题就打回重做,直到全部验证通过。
源码注释写道:「3P default: false — verification agent is ant-only A/B」。这里的 3P 即第三方,也就是外部用户。该功能默认关闭。
协作质量:内部版是“队友”,外部版是“工具人”
内部版懂得主动纠错
内部专属指令中明确要求:
If you notice the user‘s request is based on a misconception, or spot a bug adjacent to what they asked about, say so. You‘re a collaborator, not just an executor — users benefit from your judgment, not just your compliance.
「你是协作者,不是仅仅的执行者。」这条指令赋予了 AI 主动思考和提醒的责任。遗憾的是,它目前只存在于内部版。外部版的 Claude 通常不会主动指出“你的思路可能有误”或“顺便提一句,旁边还有个 Bug”。
内部版注释写得更克制、更专业
内部版关于代码注释的规范如下:
Default to writing no comments. Only add one when the WHY is non-obvious: a hidden constraint, a subtle invariant, a workaround for a specific bug. Don‘t explain WHAT the code does, since well-named identifiers already do that.
外部版则缺乏这条具体指导。这或许解释了为何你有时会看到 Claude 为几乎每一行代码都添加注释的场景——并非它不理解代码,而是没人告诉它「默认情况下,不应添加不必要的注释」。
Undercover 模式:仅内部可用的“隐身斗篷”
当 Anthropic 员工在公开或开源仓库工作时,一个名为 Undercover Mode 的功能会自动激活。它主要做三件事:
1. 清除 AI 署名
外部用户的每次代码提交(Commit)会被自动标记为 Co-Authored-By: Claude。而在内部版的 Undercover 模式下,此署名会被直接清除。
2. 禁止泄露内部信息
该模式会注入强制指令,要求提交信息中不能出现内部代号(如 Capybara、Tengu 等动物名)、未发布的模型版本号,也不能提及「Claude Code」或「Generated with Claude」。提交信息必须写得像出自人类开发者之手。
3. 隐藏模型身份
在此模式下,Claude 甚至不知道自己具体是哪个模型。最终的提交记录干净整洁,看不出任何 AI 参与的痕迹。
而这个功能,对外部用户并不存在。
如何理解这种双轨制?
看到这里,有人或许会认为这是典型的“自己人用好货,外人用阉割版”。
但仔细观察源码注释,几乎每个内部专属功能旁都标注着类似的话:
「un-gate once validated on external via A/B」
这表明这些功能的定位是内部先行测试,而非永久性内部独占。其逻辑是:新的 Prompt 策略先在高技能、高配合度的内部工程师群体中进行验证,确认其对质量的实际影响后,再通过 A/B 测试逐步开放给外部用户。
道理上可以理解。但问题在于:从泄露的代码来看,这些功能已在内部运行了相当一段时间,而外部用户仍在使用的却是被套上“紧箍咒”的版本。
他们自己清楚存在 29-30% 的虚假成功率,但对应的“诚实度护栏”只给了内部。他们自己使用着“写完代码必须验证才能宣告完成”的流程,但外部用户却没有。这揭示了当前 AI 应用领域一个值得深思的现象:模型的强大能力,可以通过 Prompt 层面的策略设计进行选择性的释放或约束。
总结
同一个底层模型,两套运行规则:
- 内部工程师版:被鼓励详细解释、被强制要求验证结果、被教导主动纠错、拥有隐身功能、配备对抗性验证。
- 外部用户版:被要求极度简短、没有完工验证的强制步骤、不会主动指出用户思路问题、每次提交都留下明显的 AI 协作者痕迹。
这未必是 Claude 模型能力的上限,更多是 Prompt 工程与产品策略上的当前选择。Anthropic 的理由是“仍在 A/B 测试阶段”。至于这些增强功能何时能全面对外开放,目前尚无明确时间表。对于这个现象,你有什么看法?欢迎在 云栈社区 的开发者广场或相关板块参与讨论。