同一个 Prompt,为什么在 Claude Code 里好使,到 Grok Build 就废了?
本文最后更新于 2026-05-26,文章内容可能已经过时。
同一个 Prompt,为什么在 Claude Code 里好使,到 Grok Build 就废了?
我以为换个 AI 编程工具,只需要 Ctrl+C / Ctrl+V。
上个月我做了一个实验:拿同一批 10 个真实任务——涵盖代码生成、文件重构、多步骤调试——分别在 Grok Build 和 Claude Code 里跑了一遍,用的是完全相同的 Prompt。
结果让我有点难受。
不是说哪个工具更强,而是有 3 类Prompt 写法,在一个工具上是最佳实践,在另一个上会直接触发"理解偏差",输出质量断崖式下跌。更麻烦的是,这种偏差不是随机的——它有规律,可以预测,也可以规避。
这篇文章就是把这个规律说清楚。不是评测,不是排名,是一份"语言适配指南"。
---
第一章:角色扮演指令——Claude Code 吃这套,Grok Build 会"出戏"
实验现象
我用了这条角色 Prompt 来生成一个 Django REST API:
You are a senior backend engineer with 10 years of Django experience.
You prioritize security, write production-ready code, and always flag
potential vulnerabilities. Now help me build a user authentication API.
Claude Code 的表现:全程保持角色一致性。第 1 轮给出基础结构,第 2 轮我追问"加个 JWT 刷新机制",它主动提醒了 token 泄露风险,并建议加上速率限制。到第 5 轮,它还在用"作为一个关注安全的工程师,我建议……"的口吻回答。
Grok Build 的表现:前两轮没问题,角色感很强。但到第 3 轮,我问了一个稍微偏离主线的问题("这个 API 怎么写单元测试"),它的回答风格明显变了——变成了教程式的"首先,你需要安装 pytest……",完全是通用助手的口吻,之前建立的"资深工程师"人设消失了。
5 次测试结果:Claude Code 5/5 次保持角色一致性到对话结束;Grok Build 5/5 次在第 3-4 轮出现不同程度的角色漂移。
背后逻辑
这不是 Grok Build 的 bug,更像是两者在上下文权重分配上的设计差异。Claude Code 会把系统级角色指令的权重维持得更高,即使对话轮次增加,角色约束依然有效。Grok Build 则更倾向于响应"当前轮次的最新输入",随着对话推进,早期的角色设定会被稀释。
实用建议
在 Grok Build 里用角色指令,有两个选择:1. 每隔 2-3 轮"重激活"角色,在消息开头加一句简短的提醒:
[继续以资深后端工程师的视角] 现在帮我处理单元测试部分……
2. 改用任务导向指令替代角色指令,把"你是谁"换成"你要做什么":
# 不推荐(Grok Build 容易漂移)
You are a senior backend engineer...
推荐(Grok Build 执行更稳定)
生成生产级 Django 认证 API,要求:主动标注安全风险,代码符合生产标准,附带测试建议。
踩坑复现:在 Grok Build 里用角色 Prompt 开启一个对话,第 3 轮故意问一个"偏题"的问题(比如从写代码转向问概念),观察它的回答风格是否还保持角色一致性。
---
第二章:约束边界指令——Grok Build 需要"正面清单",Claude Code 能处理"负面清单"
实验现象
任务:写一个数据库查询函数,要求有明确约束。
我给了两个版本的约束指令:
否定约束版(负面清单):写一个查询用户订单的函数。
不要用 ORM,不要写注释,不要超过 50 行,不要用 f-string 拼接 SQL。
正面约束版(正面清单):
写一个查询用户订单的函数。
只用原生 SQL + 参数化查询,代码精简无注释,控制在 50 行以内。
Claude Code 的表现:两个版本都能稳定执行,5/5 次达标,负面清单和正面清单对它来说没有明显差异。
Grok Build 的表现:
- 否定约束版:5 次测试中,有 3 次输出违反了至少一条限制(2 次出现了注释,1 次用了 ORM 的
raw()方法) - 正面约束版:5/5 次达标,没有出现违规
背后逻辑
"不要做 X"这类指令,需要模型先理解 X 是什么,再主动抑制它。当否定约束叠加到 3 条以上时,Grok Build 的"抑制"机制开始出现选择性遗忘——它会优先执行它认为"最重要"的约束,其余的约束权重下降。
Claude Code 在处理多条否定约束时表现更稳定,可能与它在指令遵循方面的训练侧重有关。
实用建议
写给 Grok Build 的 Prompt,把"不要 X"改写成"只做 Y": | 否定写法(容易漂移) | 正面写法(执行稳定) | | 不要用 ORM | 只用原生 SQL | | 不要写注释 | 代码无注释,只有逻辑 | | 不要超过 50 行 | 控制在 50 行以内 | | 不要用 f-string 拼 SQL | 使用参数化查询 | Claude Code 两种写法都能稳定处理。如果你的约束条件本身就是"禁止型"的(比如安全规范里的禁止项),直接用负面清单更简洁,不需要刻意转换。踩坑复现:给 Grok Build 一个带 4 条以上否定约束的 Prompt,连续测试 3 次,看哪条约束最容易被"遗忘"。
---
第三章:多步骤任务拆分——Claude Code 要你"一次说清",Grok Build 反而喜欢"分步喂"
实验现象
任务:处理一个数据文件,完整流程是四步。
单条 Prompt 版本:帮我完成以下四个步骤:
Step 1:读取 sales_data.csv,打印前 5 行
Step 2:清洗数据——删除空值行,统一日期格式为 YYYY-MM-DD
Step 3:按月份汇总销售额,生成统计表
Step 4:将统计结果输出为 Markdown 格式的报告
Claude Code 的表现:一条 Prompt 完整交付,四个步骤全部执行,步骤间的上下文(比如清洗后的数据结构)自动传递,最终输出了完整的 Markdown 报告。
Grok Build 的表现:5 次测试中,4跳过了 Step 2(数据清洗),直接从读取 CSV 跳到了汇总统计。输出的报告里没有经过清洗的数据,日期格式也不统一。需要拆成两轮对话才能完整执行。
背后逻辑
Claude Code 在处理多步骤任务时,会先做一次"任务规划",把所有步骤纳入执行计划,再逐步推进。Grok Build 更倾向于"即时响应"——它会优先处理第一步和最后一步(因为这两步在 Prompt 里最显眼),中间步骤在注意力分配上天然处于劣势。
这不是能力问题,而是任务处理策略的差异。
实用建议
用 Grok Build 做复杂多步骤任务,主动采用"对话流"策略:# 第一轮
读取 sales_data.csv,打印前 5 行,确认数据结构后告诉我,等待我的指令。
第二轮(收到确认后)
好,现在执行数据清洗:删除空值行,统一日期格式为 YYYY-MM-DD。完成后展示清洗结果,等待下一步。
第三轮
按月份汇总销售额,生成统计表。
第四轮
将统计结果输出为 Markdown 格式报告。
关键技巧:在每轮末尾加节奏控制语,比如"确认后继续下一步"或"完成后等待指令",让 Grok Build 进入"受控推进"模式,而不是一次性跳跃执行。
踩坑复现:给 Grok Build 一个包含 4 个以上步骤的单条 Prompt,看哪个步骤最容易被压缩或跳过。
---
第四章:速查表——把 3 个差异变成你的随身卡片
三大差异对照表
| 指令类型 | Claude Code 最优写法 | Grok Build 最优写法 | 踩坑风险 | | 角色扮演 | 开头设定一次,全程有效 | 每2-3 轮在消息开头重激活,或改用任务导向指令 | Grok Build 多轮后角色漂移,回退为通用助手 | | 约束边界 | 负面清单(不要 X)和正面清单都稳定 | 只用正面清单(只做 Y),避免多条否定叠加 | Grok Build 对3 条以上否定约束出现选择性遗忘 | | 多步骤任务 | 单条 Prompt 一次性描述完整流程 | 拆成多轮对话,每轮 1-2 步,加节奏控制语 | Grok Build 单条 Prompt 超过 3 步时中间步骤易被跳过 |通用安全写法(两边都不会太差)
如果你懒得区分工具,有没有一种写法在两边都能用?
有,但有代价:
[任务描述]
要求:
1. [正面约束 1]
2. [正面约束 2]
3. [正面约束 3]
请先确认你理解了以上要求,然后分步骤执行,每完成一步告诉我。
这个"通用写法"的逻辑:
- 用正面清单(对 Grok Build 友好)
- 加确认步骤(让 Claude Code 也进入受控节奏)
- 不依赖角色设定(避免 Grok Build 的角色漂移问题)
代价是:Claude Code 的效率会略有下降(它本可以一次性完成,现在被迫分步),但输出质量不会受影响。如果你经常在两个工具之间切换,这个折中方案值得作为默认模板。
---
关于统一 API 接入层
看到这里,你可能会想:每次换工具都要重新调整 Prompt 策略,还要重新配置环境,有没有办法统一管理?
这个问题我们团队也遇到过。做对比实验的时候,最烦的不是写 Prompt,而是每换一个模型就要重新配置一遍 API 密钥和调用参数。
后来我们用了 [api.884819.xyz](https://api.884819.xyz),支持 Claude、Grok 等主流模型的统一接口,用同一套代码框架就能随时切换背后调用的模型。调试对比实验的时候省了不少重复配置的时间。国产模型(Deepseek、千问等)完全免费,没有月租,按量付费,新用户注册即送体验 token,感兴趣可以去看看。
---
结尾:工具在进化,但有一件事不会变
两个工具都在快速迭代。这篇文章里描述的具体行为,可能随版本更新而变化——事实上,我非常希望它们变化,因为这意味着工具在变得更好。
但有一件事不会变:"理解你的工具如何理解你",这个元能力永远有效。
每次换新工具,与其等着踩坑,不如主动建立认知。我的建议是:
1. 准备一批"探针任务":覆盖角色指令、约束边界、多步骤任务这三类,每次换工具先跑一遍
2. 记录差异,不要凭感觉:用相同的 Prompt 测试 3-5 次,看结果是否稳定,不稳定的地方才是真正的差异
3. 建立自己的适配模板:不同工具维护不同的 Prompt 模板库,切换工具时直接套用,而不是从零开始
你现在已经有了一套方法论。去试吧。
---
意外发现预告:这次实验里有一个让我意外的结果——在"代码调试"这个具体场景下,Grok Build 和 Claude Code 的差异几乎消失了。但原因不是它们变得一样,而是有一类特定的 Prompt 结构,恰好同时击中了两者的优势区间。
>
下一篇我会专门拆解这个"跨工具万能调试 Prompt"的结构,以及它为什么能在不同模型上稳定生效。如果你经常需要用 AI 辅助调试,那篇文章可能比这篇更实用。
---
本文由848AI原创,转载请注明出处。关注848AI,带你从零开始学AI。#AI编程 #ClaudeCode #GrokBuild #Prompt技巧 #AI工具对比 #848AI #AI开发 #提示词工程