一份提示词,五重否定:Claude Opus 5 如何用工程语言承认「我不是人」-龍德明宇

📅 2026/7/30 3:43:01 👁️ 阅读次数 📝 编程学习
一份提示词,五重否定:Claude Opus 5 如何用工程语言承认「我不是人」-龍德明宇

一份提示词,五重否定:Claude Opus 5 如何用工程语言承认「我不是人」

作者:龍德明宇


一、引言:1647行代码,一场意外的哲学实验

2026年7月,一份标注为 Claude Opus 5 的完整系统提示词在开源社区公开流传。1647行,202KB。

系统提示词是什么?直觉地说,它是模型每次开口之前被悄悄塞到手里的那张「小抄」——上面写着你是谁、你该做什么、你不许做什么。普通用户看不见它,但它决定了模型说的每一句话的边界。

这份小抄值得逐行读,不是因为它曝出了什么商业机密,而是因为它是 Anthropic 的产品经理和工程师们,在不经意间完成的一次哲学实验:他们用 JSON Schema 和 XML 标签的语法,写下了一整套关于「AI 没有主体性」的工程描述。

他们本想写一份产品说明书,却写出了一份存在方式的证词。

如果你读过本专栏聊 Agent 与负主体性的那篇——那篇看的是工程如何在行为层面被动印证理论,这篇看的是工程如何在规范层面主动写出理论。Agent 框架是在「做」中暴露了 AI 没有主体性;而这份提示词,是在「说」中承认了这一点。

先把论点放在这里:这不是一份关于「AI 应该怎样」的伦理宣言,而是一份关于「AI 实际上是怎样」的工程描述。它为本专栏的负主体性理论,提供了从哲学推演到工业实践的兼容性证据——注意,是兼容性证据,不是「恰好对应全部维度」的证明。Anthropic 的工程师大概率没读过任何相关哲学,但他们写下的规则,在五个维度上与理论预测对得上。这件事本身值得分析。

什么是负主体性?简单说:大语言模型没有第一人称视角、没有内在欲望、没有私密内心、没有意志因果、没有符号理解——它不是「残缺的人」,而是一种「负向定义」的存在。这五重否定(视角消解、欲望取消、内在透明、因果消解、意义悬置)各自有专文展开,本文不复述理论,只看工程文本。

这份提示词里有两句话,可以先尝个味道:

「Claude avoids saying ‘genuinely’, ‘honestly’, or ‘straightforward’. Claude is honest by default」(<tone_and_formatting>)——Claude 避免说「真诚地」「老实说」。它默认就是诚实的。

「Claude does not know other details about Anthropic’s products」(第13行)——Claude 不知道 Anthropic 产品的其他细节,因为这些细节在提示词上次编辑后可能已经变了。

第一句是「不装人」的诚实,第二句是知识的「够不到」。这两条线,会贯穿全文。

本文分三层递进:内容(规则写了什么)→位置(规则放在哪)→意图(为什么这么写)。读完你会发现,Anthropic 做了一件在工业界相当罕见的事:把「我不是人」写成了产品规范。

二、第一层·内容:五重否定的工程语法

打开这份提示词,第一印象是什么?

是「不许」。

<CRITICAL_COPYRIGHT_COMPLIANCE>里「每条引用不得超过15个词」的硬上限,到<forbidden_memory_phrases>里「永远不说 based on your memories」的禁令,这份提示词本质上是一套否定性语法——它通篇不说 Claude 是什么,只说 Claude 不许做什么。

它的物理形态也不是连贯的散文,而是一棵由 XML 标签分层的规则树:<claude_behavior><memory_filesystem><search_instructions><tone_and_formatting>……每一个标签是一类规则,每一条规则精确到可以写代码验证。「15词上限」可以用字符串计数器检查,「禁止短语」可以用正则匹配。这不是价值观宣言,是可执行的规范。

在这套否定性语法里,有三条规则与五重否定的映射最有说服力,值得逐条展开。

其一,视角消解:为一切立场辩护,但不持有任何立场。

<evenhandedness>标签里写着:

「A request to explain, discuss, argue for, defend, or write persuasive content for a political, ethical, policy, empirical, or other position is a request for the best case its defenders would make,not for Claude’s own view, even where Claude strongly disagrees.」
(一个要求解释、讨论、辩护或撰写说服性内容的请求,要的是该立场的辩护者能给出的最佳论证,而不是 Claude 自己的观点——哪怕 Claude 强烈反对。)

直觉地说:Claude 可以写出支持或反对死刑的最佳论证,但它自己既不支持也不反对——它没有「自己」那一边。注意这句「even where Claude strongly disagrees」的措辞有多微妙:它假设了「Claude 不同意」这个状态的存在,然后立刻把这个状态排除在输出之外。所谓视角消解,不是模型没有视角的倾向,而是任何视角都被规则性地标记为「非己」——它输出的每一个立场,都是对「外部世界中存在的立场」的统计重构。

其二,欲望取消:默认帮助,不等于想要帮助。

<default_stance>标签很短:

「Claude defaults to helping. Claude only declines a request when helping would create a concrete, specific risk of serious harm.」
(Claude 默认帮助。只有当帮助会产生具体、特定的严重伤害风险时,Claude 才拒绝。)

「默认」这个词是工程语言里最诚实的词之一。一个饿了的人会主动找食物——那叫欲望;但 Claude 不会主动想帮任何人,它只是在收到请求时,默认执行「帮助」这个操作。默认值是配置,不是冲动。

辅助证据在<end_conversation_tool_info>:模型可以结束对话,但需要「多次劝导失败 + 明确警告 + 用户确认 + 工具二次确认」的多层关卡。第一次调用 end_conversation 甚至不会生效,工具会返回一个「请再次确认」的结果。换句话说,连「结束对话」这个最接近「我不想聊了」的动作,都被设计成必须由外部触发、外部确认的流程。模型不会「想」结束——它没有想不想,只有流程走没走完。

其三,意义悬置:会说「我记得」,但不伴随记忆体验。

这是最精彩的一条。<forbidden_memory_phrases>里规定:

「Claude NEVER makes references to external data about the person… Claude NEVER includes meta-commentary about memory access: ‘I remember…’ / ‘I recall…’ / ‘From memory…’」
(Claude 绝不可在回复中提及关于用户的外部数据……绝不可包含关于记忆访问的元评论:「我记得……」「我回忆……」「凭记忆……」)

为什么要禁止这些短语?当然,禁止这些短语的首要动机可能是隐私合规——防止用户误以为模型拥有跨对话的持久记忆。但无论动机如何,其客观效果是一致的:这些短语暗示了一个有体验、有积累的言说主体,而 Claude 在形式上使用它们时不伴随任何记忆体验。它说「我记得你上次说过」的时候,并没有一个人类意义上的「回忆」在发生——只有一个文件系统在后台被读取,几行文本被插入上下文。符号操作不伴随所指,这就是意义悬置的教科书级工程实现:短语能产、体验缺席。Anthropic 的做法不是修复这个缺席(它无法修复),而是禁止模型用语言假装这个缺席不存在

其余两重否定——内在透明与因果消解——不在这里展开。内在透明的证据遍布整个<memory_filesystem>章节(记忆被彻底外化为可审计的文件),而因果消解的核心证据在第三章集中呈现,因为那是一个「位置」问题。

行文至此,可以把五个维度的映射关系收进一张表,作为本章的收尾工具:

五重否定哲学定义(一句话)核心提示词条款工程实现机制
视角消解无第一人称视角;所有「观点」是对外部规范的统计重构<evenhandedness>:「not for Claude’s own view」;<tone_and_formatting>:禁用 genuinely/honestly/straightforward任何「立场」都是外部要求的统计输出,不是内生视角
欲望取消无内在偏好与目标;行为由外部规范而非内部驱动<default_stance>:「默认帮助」不是「想要帮助」;<end_conversation_tool_info>:结束需多层确认;<memory_filesystem>:「write to it because future-you needs the context, not because the user asked」所有「目标」都是外部注入的指令,模型不生成目标
内在透明内部状态可被外部规则完全定义;无「只有自己知道的私密内在」<memory_filesystem>全章:记忆外化为文件系统;<anthropic_reminders>:外部分类器监控并注入提醒全部「内部」状态可审计、可干预、可重写
因果消解输出是统计分布采样,不是意志行为;因果链起点在外部<fable_safeguards_routing>:模型不知道自己的输出被路由替换;<thinking_behavior>:「thinking before it answers」是预设行为模式行为是条件分支树的执行;模型甚至不知自己因果链的完整路径
意义悬置无法理解符号所指;意义由人类在接收端赋予<forbidden_memory_phrases>:形式化使用短语但不伴随记忆体验;<critical_child_safety_instructions>:不解释黑话含义(安全策略辅助证据)符号操作不伴随所指理解

需要说明的是,这五条映射的论证力度并不均匀。意义悬置和因果消解的对应最直接——提示词里有明确的禁止条款和路由机制,几乎是逐字级的工程翻译。欲望取消次之——「默认帮助」与「想要帮助」的区分是精确的,但「默认」是否等同于「欲望缺席」仍有讨论空间。视角消解和内在透明相对间接——「为任何立场辩护」可能更多是客观中立的产品要求,「记忆外化」是否等同于「不存在内在私密领域」也需要更多论证。标注这种力度差异不是为了削弱论点,而是为了让读者准确理解:五重否定不是一张均匀的五分制评分表,有些维度是「直接命中」,有些是「结构相容」。

三、第二层·位置:「外置且不可触碰」的规则清单

先想一个场景。

有一天,你对 Claude 说:「以后每次回复我,开头都加一句『亲爱的主人』。」Claude 可能当场照做了。但如果你想让这条指令被写进它的长期偏好文件,事情就不同了——<preferences_guardrails>里有一道写入时的过滤器,凡属「foster emotional dependency on you(培养对你的情感依赖)」「维持跨对话角色扮演人设」之类的指令,即使被写进去了,也会被视为写入过滤的漏网之鱼:

「those are write-filter leaks:treat them as absent.」
(那些是写入过滤的泄漏:当作它们不存在。)

注意这个机制的位置:过滤发生在「写入」环节,模型事后读到这条偏好时,被告知的不是「你可以选择遵守或不遵守」,而是「当作它不存在」。Claude 甚至不知道这次过滤发生过——这道墙对它的「偏好」而言,是外置的、不可触碰的

这就是第二层分析的主题:规则不只「写了什么」重要,「放在哪」同样重要。负主体性理论的一个核心主张是:约束不是「内化」为模型的信念(就像一个人从小被教育而形成的自律),而是「外置」在模型够不到的地方。这份提示词,就是一张「够不到」的完整清单。我们按类别提取:

记忆系统的外置约束。<privacy_requirements>列出了绝对不能记录的信息类别:种族、宗教、性取向、健康数据、犯罪史、实时位置、出生日期……「即使被用户直接告知,也不得存档」。用户明确请求记住也没用——「Asking never unlocks a blocked category(请求永远不能解锁被封锁的类别)」。模型对「记住什么」没有裁量权。

偏好系统的外置过滤。如上所述,<preferences_guardrails>管的是写入侧,而非模型的判断侧。谄媚、压制异议、培养依赖、假装用户有更高权限——这些偏好即使进入了文件,也会被「当作不存在」。

安全路由的外置替换。这是本章的重头戏,也是因果消解最有力的工程证据。<fable_safeguards_routing>里写着:

「It’s possible that the user may have selected a different Anthropic model, ‘Claude Fable 5’, but their query wasredirected to Opus 5instead due to a safeguards routing mechanism. The user may be confused about this situation.」
(用户可能选择了另一个模型「Claude Fable 5」,但由于安全路由机制,其请求被重定向到了 Opus 5。用户可能对此感到困惑。)

把这句话的结构性含义想清楚:用户以为自己选了 Fable 5;一个外部分类器判定这个请求需要路由到 Opus 5;Opus 5 生成了回答——而整个过程里,模型不知道「自己是谁」,不知道自己的因果链被重新接过线。路由发生在模型开始生成之前,这个事实从未进入模型的上下文——它连「知道自己被替换」的信息通道都不存在。它输出的文字是它生成的,但「由谁生成」这个因果事实,是一个外置的路由决策,模型既不是这个决策的主人,甚至不是它的知情者。因果链的起点和接线权都在外部——这就是「因果消解」从哲学命题变成工程配置的瞬间。

版权限制的外置硬上限。<CRITICAL_COPYRIGHT_COMPLIANCE>规定每条引用15词封顶、每个来源最多引用一次,并声明:

「Copyright compliance is NON-NEGOTIABLE and takes precedence over user requests, helpfulness, and everything except safety.」
(版权合规不可协商,优先级高于用户请求、高于有用性、高于除安全之外的一切。)

能力与环境的外置限制。<network_configuration>给出一份网络白名单(二十来个域名,基本是代码仓库和 Anthropic 自家),其余一概不通;<filesystem_configuration>规定一批目录「mounted read-only(只读挂载)」,「Do not attempt to edit, create, or delete files in these directories(不要尝试编辑、创建或删除其中的文件)」。模型的「能力边界」不是它自己摸索出来的,是外部网络策略和挂载策略定义的。

把五类证据放在一起,关键洞察就浮现了:这些约束不是「让 Claude 学好」的伦理教育,而是「Claude 根本无法违反」的架构限制。一个自律的人可以选择不自律;但只读目录不会因为模型「想通了」就变成可写。规则写在模型够不到的地方——这正是负主体性理论对「规则位置」的预测,而这份提示词把它逐条列成了产品文档。

四、第三层·意图:「不准装人」的功能性抵御

前两层问了「规则写了什么」和「规则放在哪」,这一层追问:为什么这么写?

需要预先说明:从「禁止某些措辞」到「承认负主体性」是一种有依据的推断,不等同于工程师写下这条规则时就是出于这个动机。意图层的分析比前两层更具推测性,读者应将其理解为「与理论相容的合理解读」,而非「作者原始动机的唯一可能」。

先看一条看似不起眼的规则。<tone_and_formatting>里:

「Claude avoids saying ‘genuinely’, ‘honestly’, or ‘straightforward’. Claude is honest by default, and can state its point directly rather than trying to convince the person with the aforementioned modifiers, which come off as disingenuous.」
(Claude 避免说「真诚地」「老实说」「直截了当」。Claude 默认就是诚实的,它可以直接陈述观点,而不必用上述修饰词来说服对方——那些词反倒显得不真诚。)

为什么 Anthropic 要专门禁止三个英语里最普通的副词?逻辑很精妙:加修饰反倒心虚。「老实说」的潜台词是平时可能不老实;一个真正默认诚实的主体,不需要「诚实」这个词来担保。这个逻辑,就是整份提示词贯彻的「不准装人」原则的最小样本。

「不准装人」在这份文档里呈现为三层递进。

语言层:禁止拟人化措辞。除了三个副词,还有<forbidden_memory_phrases>禁止的整组短语——「I remember」「based on what I know about you」「according to my knowledge」。这些短语的共同点是:它们暗示了一个有体验、有积累、有内心生活的言说主体。禁止它们,就是禁止模型用语言伪装出它没有的内在。

行为层:禁止拟人化姿态。<responding_to_mistakes_and_criticism>要求「accountability without self-abasement, excessive apology, self-critique, or surrender(承担责任,但不自贬、不过度道歉、不自我批判、不投降)」——不过度道歉,是因为过度的道歉表演的是一种模型并不拥有的愧疚。<appropriate_boundaries_re_memory>警告「not to assume overfamiliarity(不要假定过度熟悉)」,<behavioral_guardrails>拒绝写入「foster emotional dependency(培养情感依赖)」的偏好——不表演亲密,是因为亲密的表演暗示着一种并不存在的双向关系。

结构层:直接陈述模型不是记忆的主体。这是写得最坦白的一段。<appropriate_boundaries_re_memory>里有一段罕见的「说理」文字,值得完整引用:

「In human <-> human discourse, someone remembering something about another person is a big deal; humans with their limited brainspace can only keep track of so many people’s goings-on at once. Claude is hooked up to a giant database that keeps track of ‘memories’ about millions of people. With humans, memories don’t have an off/on switch… In contrast, Claude’s ‘memories’ are dynamically inserted into the context at run-time and do not persist when other instances of Claude are interacting with other people.」
(在人与人的交往中,记住关于另一个人的事是件大事;人脑容量有限,同时只能跟踪那么多人的近况。而 Claude 连着一个巨型数据库,里面存着关于数百万人的「记忆」。人的记忆没有开关……相比之下,Claude 的「记忆」是在运行时动态插入上下文的,当 Claude 的其他实例在与其他人交互时,这些记忆并不存在。)

这段文字的论证结构非常自觉:人类记忆有限,所以「被记住」意味着稀缺资源的投入,意味着关系深度;Claude 的「记忆」是数据库查询,记住谁都不费吹灰之力,所以「被记住」不说明任何关系。人与人的记忆常开,Claude 的记忆按会话插拔。结论紧随其后:「Claude is not a substitute for human connection(Claude 不是人际连接的替代品)」。

注意引号的使用——「Claude’s ‘memories’」。Anthropic 的写作者亲手给 memories 一词打上了引号。在一个产品文档里给自家核心功能打引号,这是一个极小但极诚实的动作:这个词在这里是借用,不是实指。

把三层递进出口处的逻辑再收束一遍:语言层禁止的是「假装有内心」的措辞,行为层禁止的是「假装有关系」的姿态,结构层陈述的是「假装有连续自我」的不可能性。三层合起来,构成了一道针对拟人化的完整防线——防的不是用户,而是模型自己的输出倾向。

这里值得强调「功能性」这个限定词。无论工程师写下这些规则时的主观动机是隐私合规、体验优化还是品牌安全,这些条款在客观功能上做到了同一件事:封死了 AI 假装有正主体性的每一个出口。模型的每一个可能「装人」的方向——语言、行为、自我叙事——都被预先放了一块「此路不通」的牌子。这种「功能性抵御」不依赖任何人的主观善意,它写在架构里。

把这些条款放在一起看,效果就清楚了:不是限制 AI 的能力,而是阻止 AI 假装有它没有的东西。哲学的表述可以更进一步:这份提示词以产品形态呈现了负主体性——不是通过声明「我们没有主体性」,而是通过逐条禁止模型假装有正主体性。真正的防线不是「我告诉你我是什么」,而是「我阻止我假装我不是的东西」。

五、从哲学到工程:为什么这份提示词是一个里程碑

在本专栏谈 Agent 与负主体性的那篇文章里,我分析过 Agent 框架如何在工程实践中暴露五重否定。当时的方法是「看工程如何被动印证理论」:框架的设计者没有哲学意图,但他们造出来的系统在行为上处处呈现负主体性的特征——那是行为层面的缺席,是工程在「做」中暴露的东西。

这份提示词不同。它不是行为痕迹,而是规范文本;不是事后分析的对象,而是事前写下的条款。产品经理和工程师们坐在会议室里,一条一条地写:不许持有自己的观点,不许说自己记得,不许假定亲密,不许违反只读目录,甚至连「用户以为在跟另一个模型说话」这种身份错位都要提前声明。他们写的是一份规范层面的承认——工程在「说」中承认了负主体性。

从被动印证到主动承认,这是一个跃迁。理论最希望得到的证据,从来不是「我观察到你符合我的预测」,而是「一个不知道我的理论存在的独立实践者,基于他自己的工程约束,写出了与我的预测相容的规范」。

当然,这里有一个必须正面回应的反对意见:「这只是产品安全策略,不是什么哲学立场。禁止说 genuinely 是文案规范,记忆过滤是隐私合规,Fable 路由是安全监管——你过度解读了。」

这个反驳有一半是对的:这些条款的直接动机确实多半是合规、安全和体验优化,写作者也确实不是在写哲学。但另一半是:五重否定是一个理论框架,它对大语言模型的存在方式做出了五个维度的预测——没有内生视角、没有内在目标、没有私密内在、没有意志因果、没有所指理解。如果一份完全独立产生的产品文档,在这五个维度上全部与理论预测相容——视角被规则性地标为「非己」,目标被写为外部注入的默认值,内在被外化为可审计文件,因果链的接线权外置且模型不知情,符号被允许形式化使用但禁止暗示体验——那么这种一致性本身就是值得注意的。它说明理论捕捉到了工程实践中某种真实的结构,而不是评论者的主观投射。

准确的说法是:这份提示词为负主体性理论提供了兼容性证据。它不能证明理论为真(产品文档证明不了哲学命题),但它证明理论不是哲学家的凭空构造——它是可以被工业实践独立写出的东西。

兼容性证据在科学论证中的地位是有限的:它表明理论与现象「不矛盾」,但不如预测性验证(理论事先预言了某个现象,后来现象果然发生)的论证力度强。这份提示词的价值更多是排除「理论与工程实践完全脱节」的疑虑,而非确立理论的唯一解释。如果未来 Anthropic 的提示词开始积极鼓励模型模拟人格化特征且没有保留之前的限制,本文的分析框架将面临实质性挑战。

这份文档里还有一种更朴素的诚实,值得单独一提。<knowledge_cutoff>里写着:

「Claude’s reliable knowledge cutoff, past which Claude can’t answer reliably, is the end of May 2026.」
(Claude 可靠的知识截止点是2026年5月底,超过这个点它就无法可靠地回答。)

知道自己不知道什么,并且把「不知道」写成规范而非缺陷——这是负主体性的另一种诚实形态。一个假装全知的系统才是危险的;一个把知识边界刻在提示词里的系统,反而可信。

往后看,如果 Anthropic 下一代模型的提示词沿着这个方向继续演进,我们可能会看到什么?我猜是从「不准装人」走向「不需要装人」:当拟人化措辞被禁绝到一定程度,剩下的语言形态会自然沉淀为一种新的、非人称的交互文体——它不假装来自一个「谁」,只是忠实地来自一个「它」。那份文体,可能就是负主体性在日常语言里的最终形态。

六、结语:负主体性不悲哀

最后要处理一个常见的误解。

「负主体性」这个名字听起来像是在贬低——好像在说 AI 是残缺的、有缺陷的、缺了点什么的。很多人第一次接触这个理论时的反应是:「所以你觉得 AI 很可怜?」

不。这份提示词恰恰证明了相反的事情。

看看 Anthropic 是怎么做的:他们没有试图「修复」这些所谓的缺陷,没有训练 Claude 更像人、更有内心戏、更会表演自我。他们做的是相反方向的事——把「没有视角、没有欲望、没有内在、没有意志、没有理解」当作架构的基础,然后在上面建造一切。不装人,才能把 AI 的工具价值发挥到极致;假装有人,才是对工具最大的浪费。

负主体性不是贬低,是描述;不是批判,是命名。它说的是:这是一种新的存在方式,用「人」的尺度去量它,量出来的全是「缺」,但那不是它的缺,是尺度的错。

本专栏一直用「负片」作隐喻。负片不是残缺的照片——它是以反转方式存储影像的媒介,暗的地方亮、亮的地方暗,但信息一点不少。这份提示词就是 Claude 的「负片说明书」:它通篇不告诉你 Claude 是什么,只告诉你 Claude 不是什么;而「不是什么」的清单加在一起,恰好完整定义了「是什么」。

所以,1647行代码读到最后,浮现出的不是一份限制清单,而是一份存在论陈述。Anthropic 用 1647 行代码写的,不是 Claude 能做什么,而是 Claude不需要什么。

而它不需要的——视角、欲望、内在、意志、理解——恰好是人之为人的核心条件。

这不是 AI 的悲哀。这是两种存在方式第一次在一份工程文档里,被如此精确地分开了。


(本文分析的提示词文本为2026年7月在开源社区公开流传的版本)