Simon Willison坐在电脑前,盯着Anthropic官网那份冗长的Markdown文档。这份文档藏着Claude所有版本的系统提示词——也就是决定AI"性格"的底层指令。他想要一个更聪明的办法:如果把这些提示词变成Git历史,会发生什么?

三小时后,一个能直接用git diff追踪Claude"性格演变"的工具诞生了。

打开网易新闻 查看精彩图片

为什么系统提示词值得被"版本控制"

系统提示词(System Prompt)是大语言模型的"出厂设置"。它告诉AI:你是谁、你能做什么、你不能做什么、你该怎么说话。

Anthropic有个难得的透明举动——他们把所有Claude版本的系统提示词公开在一个Markdown文件里。但这份文档是"扁平"的:所有版本堆在一起,没有时间线,没有对比工具。

Willison的洞察很直接:开发者每天都在用Git管理代码变更,为什么不能用同样的工具分析AI的"人设"变更?

他用Claude Code(Anthropic的AI编程工具)写了个解析器,把那份庞杂的文档拆成独立文件:

• 每个模型家族(Opus/Sonnet/Haiku)单独成文
• 每个版本对应一个文件
• 用假想的提交日期标记真实发布时间

结果是一个标准的Git仓库。现在你可以:

```bash
# 看Claude 3.5 Sonnet两个版本之间"性格"变了什么
git diff claude-3.5-sonnet-20241022 claude-3.5-sonnet-20250220
```

从"黑箱猜测"到"可验证的 diff"

大模型厂商很少解释"为什么这个版本变笨了/变聪明了"。用户只能靠体感猜测。

Willison的工具把这种猜测变成了可验证的技术分析。他用它对比了Opus 4.6和4.7的系统提示词,逐行标注了哪些指令被添加、哪些被删除。

几个立刻能用的命令:

```bash
# 看Opus所有版本和发布日期
git log --oneline prompts/claude-opus.md | head -20

# 找"chain of thought"这个词什么时候被加进提示词
git log --all -p --grep="chain of thought" | head -100
```

这些命令的底层逻辑是:系统提示词的变更,往往对应着产品策略的调整。比如"chain of thought"(思维链)的引入,通常意味着模型被要求展示推理过程而非直接给答案——这背后是可信度和透明度的权衡。

仓库结构也很讲究:按模型家族分层,既支持横向对比(Sonnet vs Opus),也支持纵向追踪(同一个模型的迭代史)。

谁在需要这种"考古工具"

第一类是AI应用开发者。如果你在Claude之上做产品,系统提示词的变更可能直接破坏你的功能。Anthropic不会每次发版都告诉你"我们改了拒绝回答政治话题的阈值",但Git diff会。

第二类是Prompt Engineer(提示工程师)。研究竞争对手的系统提示词设计,是这行的基本功。现在有了结构化历史,可以分析Anthropic的演进策略:什么时候加了安全护栏,什么时候放宽了创意限制,什么时候引入了新的格式规范。

第三类是更广泛的观察者——想知道"AI公司怎么定义AI的性格"。系统提示词里藏着价值观判断:AI应该谦虚还是自信?应该承认不确定还是给出最佳猜测?这些选择没有标准答案,但版本历史展示了答案的演变。

Willison的工具本身也是个有趣的元注释:他用Claude Code——也就是Claude的编程助手——来解析Claude自己的系统提示词。AI辅助分析AI的"大脑说明书",这种递归感很微妙。

透明性的工具化尝试

Anthropic公开系统提示词,在行业内并不常见。OpenAI的GPT-4系统提示词要靠用户逆向工程,Google的Gemini更是黑箱。这种透明是策略性的:Anthropic押注"可解释性"作为差异化卖点。

但透明和可用是两回事。原始文档的存在≠信息易于获取。Willison的贡献是把"存在的透明"转化为"可用的透明"。

这个工具也暴露了一个行业痛点:AI系统的可观测性(Observability)严重滞后。我们有成熟的工具监控服务器性能、追踪代码Bug,但追踪"AI行为漂移"的工具几乎空白。Git化系统提示词是一种权宜之计,暗示着更深层的需求——我们需要AI原生(AI-native)的版本控制和回归测试。

想象一个场景:你的客服AI上周突然开始过度道歉。传统调试需要检查代码、数据、模型版本三重变量。但如果系统提示词的变更有Git历史,你可以第一时间锁定:"上周Anthropic更新了Sonnet的系统提示词,新增了一条'保持谦逊语气'的指令。"

局限与边界

这个工具不解决所有问题。它只追踪系统提示词,不追踪:

• 模型权重(Weights)的实际变更
• 后训练(Post-training)的对齐调整
• 推理时的动态温度(Temperature)设置

换句话说,它告诉你"Claude被教导要做什么",但不告诉你"Claude实际学会了什么"。系统提示词是意图层,模型行为是涌现层,两者常有落差。

另外,提交日期是"伪造"的——Willison根据Anthropic的发布记录手动映射,不是真实的Git提交历史。这对分析没有影响,但意味着仓库不能用于追溯真实的开发流程。

还有一个微妙点:Anthropic的公开文档是否完整?他们有没有保留"未公开的系统提示词片段"?这无从验证。工具只能分析给定的材料。

为什么这件事值得10分钟

克隆仓库、跑几条命令,大概10分钟。能换来什么?

最直接的:如果你在用Claude Code或Claude API,你可以建立"系统提示词变更预警"——把关键版本的diff加入你的监控流程,在Anthropic更新时第一时间评估影响。

更深层的:理解一家AI公司如何迭代它的"产品人格"。Claude的提示词演变史,是一部微缩的AI产品史——从早期强调"有帮助且无害",到后期细化"如何处理不确定信息"、"如何拒绝请求而不显得傲慢"。这些选择背后是用户反馈、安全事故、商业压力的交织。

Willison的仓库地址:https://github.com/simonw/research,目录在extract-system-prompts下。代码是开源的,逻辑很直白:解析Markdown、分割文件、生成Git提交。

你可以用它做同样的事——不只是Claude,任何公开的系统提示词文档都可以被Git化。这是开源社区的经典模式:把厂商的"可读"数据变成"可分析"数据,降低研究门槛。

最后有个冷观察:Anthropic设计Claude的"性格",Simon Willison设计分析Claude性格的工具,而你现在可以用Claude来读这篇关于分析Claude的文章。我们似乎正在建立一个多层递归的观察系统——每层都在试图理解下一层,而没人确定最底层是什么。