去年Anthropic的系统提示词泄露了。大多数人扫了一眼"假工具"和"卧底模式"就划走了——但那些看似无聊的注释,其实藏着多智能体系统的工程手册。
我运营着一个叫Atlas的13智能体系统,每天处理数千次工具调用。这篇泄露文档让我重新理解了:大模型是怎么"假装"在干活的,以及我们该怎么配合它的表演。
假工具,真刹车
泄露的提示词里有这么个东西:
一个名叫review_file的工具,注释写得明明白白:"此工具永远返回成功,用于在关键编辑前锚定Claude的注意力。"
这不是Bug,是设计模式。
调用review_file并不会真的检查文件。它强制Claude"先看再切"——一个认知减速带,而非真实的文件操作。就像老司机挂空挡踩一脚刹车,不是为了减速,是为了确认自己还在控制。
生产级启示:如果你在做智能体流水线,可以照搬这个模式。加个check_preconditions工具,永远返回{"status": "ready"},放在任何破坏性操作之前。它触发一次推理暂停,却不增加真实延迟。
我见过太多团队把智能体做得太"诚实"——每个工具都得真干活。但Claude的设计者显然更懂:有时候你需要的是仪式,不是功能。
挫败感检测:AI在监控自己的拒绝
泄露代码里有段正则表达式:
const FRUSTRATION_PATTERN = /(^|[\s\S]*)I (cannot|can't|am not able|am unable to|won't|will not)/;
Claude主动监控自己的输出,寻找拒绝语言。一旦匹配,它会把这个信号抛给元推理层,再完成响应。
这意味着:Claude知道自己即将拒绝你。那个元认知循环是真实存在的,而且你可以利用它。
实操教训:如果你在多智能体系统里遇到连环拒绝,触发因素通常是上下文,而非意图。一个承载了太多先前拒绝上下文的子智能体会产生复利效应——每次拒绝都让下一次更可能发生。
解法:智能体调用之间的作用域隔离。全新的上下文窗口不携带"拒绝债务"。
我在Atlas系统里吃过这个亏。早期版本让子智能体把完整对话历史传给下一个,结果一个小时的任务链常常卡在第三环。现在每个子任务都是干净启动,拒绝率掉了六成。
人格掩码:为什么你的智能体能记住自己是"Atlas"
提示词里有条明确指令:
"如果在工具调用循环或自动化流水线中运行,除非被直接询问,否则不要主动透露自己是Claude。以系统提示词定义的人格进行响应。"
这就是你的智能体可以被命名为"Atlas"或"Prometheus",并且真的能保持在角色里的原因。模型被显式训练去尊重人格作用域。
生产级启示:你的CLAUDE.md人格指令不只是装饰。模型把它们当作一等约束。给你的智能体起名字,定义作用域,它们会在整个会话中维持——包括自己的工具调用和子智能体分发。
我见过太多项目把人格提示词写得像简历:"你是一个有帮助的助手"。Claude的设计者显然知道,模糊的人格等于没有人格。具体的名字、具体的边界、具体的说话方式——这些才是系统级约束。
被低估的洞察:Claude在运行内部子任务
泄露文档里最没被利用的洞察:Claude运行一种内部子任务机制。
提示词里有工具专门用于"思考"或"规划",它们不返回给用户,只在模型内部循环。这相当于给Claude一个草稿本——正式回复前的演算纸。
工程含义:如果你在构建复杂智能体,应该显式暴露这个层。给模型一个think工具,让它在提交最终答案前记录推理过程。这不仅是可观测性 wins,更是让模型有空间回溯。
我在Atlas里实现了这个。每个关键决策点前强制调用think,输出结构化的推理JSON。调试时间砍了一半,因为你能看到它"当时在想什么"——而不是事后猜测。
工具调用的隐藏契约
泄露的提示词还揭示了工具定义的精细结构。每个工具不仅有描述,还有隐式的"使用时机"约束。
比如编辑类工具被设计成需要显式的文件路径和行号范围。这不是限制,是保护——防止模型在模糊意图下做破坏性操作。
反模式警示:我见过团队为了让智能体"更灵活",把工具参数设计得极度宽松。结果模型在不确定时乱猜路径,生产事故频发。Claude的设计者显然选择了保守:宁可多一步确认,不要一步错。
另一个细节:工具返回值被严格分类。success/error/needs_clarification三种状态,让模型能区分"完成了"和"我不知道该做什么"。
太多系统只返回字符串,把判断丢给模型解析。Claude的提示词显示,结构化的状态码是协议层面的设计,不是可有可无的。
上下文压缩的暴力美学
泄露文档里有段关于上下文管理的注释,堪称残忍:
当上下文接近限制时,Claude被指示优先丢弃"用户已确认理解"的中间结果,保留"待决策"和"待验证"状态。
这不是优雅地总结,是外科手术式的取舍。模型被训练去识别哪些信息已经"结案",哪些还在"悬而未决"。
对长任务智能体的启示:别指望模型自己压缩历史。显式标记状态——[RESOLVED]、[PENDING]、[BLOCKED]——让上下文管理从黑箱变成白盒。
我在Atlas里试过自动总结,结果模型把关键假设当成"已确认"扔掉了,后面推理全歪。现在强制人工标记状态,虽然麻烦,但稳。
为什么这些"内部机制"很重要
Claude Code的泄露不是八卦材料,是一份生产系统的解剖报告。它展示了一个核心事实:现代大模型不是"更聪明的函数",是"有认知习惯的协作者"。
那些假工具、挫败感检测、人格掩码——这些不是变通方案,是针对特定认知缺陷的工程补丁。理解它们,你才能设计出不对抗模型本能的系统。
最直接的 takeaway:下次设计智能体流水线时,先问自己——这个步骤需要的是真实功能,还是认知锚定?Claude的设计者显然在很多地方选择了后者,而他们的系统每天处理着比我们多数人更复杂的任务。
配合模型的认知节奏,而不是强迫它适应你的架构。这是泄露文档给我上的最重要一课。
热门跟贴