Project Instructions 是软约束——比 system prompt 优先级低,比当前用户消息优先级更低,跟 Custom Instructions / Memory 抢权重,对话拉长后还会被稀释。“它不听话”几乎都是可预测的:哪一条规则在权重链的哪一层被压。理解这个层级后,把关键规则放对位置、改正写法、定期重申,遵守度从 40% 拉到 90% 不难。
常见原因
按命中率从高到低:
1. 当前用户消息覆盖了 Project Instructions
最常见。Project Instructions 说”始终用中文回答”,但用户消息是 “Translate this English text”——模型把”翻译”理解为输出英文,跟中文规则冲突时倾向当前消息。
如何判断:单独问”用中文回我一句话”它能用中文 = 规则可以执行;但具体任务里破例 = 任务级覆盖。
2. 长对话稀释了早期 system prompt
对话 20-30 轮后,模型对 system prompt(含 Project Instructions)的注意力下降。早期”用中文”规则被”完整回答用户问题”压过。
如何判断:对话开头几轮遵守、中后段开始漂移 = 稀释。开新 chat 重做同 prompt,开头几轮又遵守 = 验证。
3. 否定指令比肯定指令弱
“不要追问”几乎被忽略;“直接给一个一段话的最终答案”遵守度高得多。模型对”不要 X”的训练信号比”要 Y”弱。
如何判断:你的 Project Instructions 里”don’t / never / 不要 / 避免”多于”do / always / 要 / 输出” = 这条占大头。
4. 工具调用期间覆盖风格指令
调 Web Search、Code Interpreter、Image Generation 时,工具有自己的输出规范,会临时覆盖你的”简短回答”等格式规则。
如何判断:纯文本回答遵守、工具用完后的回答冗长 = 工具覆盖。
5. 格式 / 长度规则缺示例
“回答不超过 200 字”没用——模型不数字。给一个 “Output exactly like this: [shown example, 180 words]” 才能稳。
如何判断:你的格式规则没配示例 = 这条。
6. Project Instructions 太长,关键规则埋在中间
模型对 instructions 前 200 字注意力最高。把”始终用中文”写在第 4 段第 7 行 → 被淹没。
如何判断:Instructions 总字数 > 800,最重要规则不在前 3 行 = 这条。
7. Memory / Custom Instructions 在抵消
Settings → Personalization → Memory 里有”用户偏好简短英文回答”,会和 Project Instructions 的”中文长文”冲突。
如何判断:暂时关掉 Memory(Settings → Personalization → Memory toggle off)跑同 prompt,遵守度变化 = Memory 在干扰。
动手前先确认
- 确认问题是在 Projects(不是 Custom GPT / 普通对话)里出现。
- 复现前把当前对话复制一份,避免清掉历史影响下次诊断。
- 确认订阅:Free 用户没有 Projects;Plus / Team / Enterprise 在功能集合上有差异。
需要收集的信息
- 完整 Project Instructions 全文(截图)+ 字数。
- 完整 prompt 文案 + 不遵守那部分的回复截图。
- 哪条规则没遵守、是从第几轮开始漂移的。
- 当前模型 + 是否启用了 Custom Instructions / Memory。
最短修复路径
按收益从高到低,前 2 步通常修 70% 问题。
Step 1:关键规则放 Instructions 前 200 字
打开 Configure → Instructions,把最不可妥协的 2-3 条规则放在最前面:
Critical rules (always follow, never override):
1. Always reply in zh-CN regardless of user's input language.
2. Maximum 200 words per response. Count yourself before sending.
3. Output format: one paragraph, no headers, no bullet lists.
[More detailed context, examples, edge cases below...]
前 200 字权重最大,把”硬规则”全压进去。
Step 2:在每条用户消息开头复述关键规则
最有效的”硬约束”补丁:
[Project Instructions: reply in zh-CN, max 200 words, one paragraph]
Now answer: <your actual question>
让方括号里的复述变成习惯。每轮都复述等于把”system prompt”提升到”current message”权重,遵守度从 60% 拉到 95%+。
不想每次手打可以做个 text expander snippet(macOS Espanso / aText、Windows AutoHotkey)。
Step 3:否定改写为肯定
逐条把”不要 X”改成”要 Y”:
差 → 好:
不要追问 → 直接给一段话的最终答案,不询问
不要写得太长 → 输出 ≤ 200 字
不要用 bullet → 输出一段连续文字
不要含编程术语 → 用类比和普通人能懂的词
每条改写完读一遍——还包含”不”字就再改。
Step 4:格式 / 长度规则一定配示例
Output format example (always follow this exact structure):
---
[200 字以内一段话回答]
参考来源:
- 来源 1: 一句话说明
- 来源 2: 一句话说明
---
例子比规则强 10 倍。
Step 5:长对话每 8-10 轮重申
Reminder: per Project Instructions, reply in zh-CN, ≤ 200 words,
no bullet lists. Now:
<your actual question>
设个心智 timer,超过 10 轮主动重申一次。
Step 6:硬约束工作流转 Custom GPT
如果遵守度对你业务关键(客服、合规、医疗),转 Custom GPT:
- Instructions 比 Project 优先级高
- Knowledge 检索更稳
- 可以发布特定 URL 锁版本
不要用 Project 做”必须 100% 遵守”的场景。
Step 7:检查 Memory / Custom Instructions 冲突
Settings → Personalization → Manage memory:
- 删掉与当前 Project 冲突的偏好条目
- 或者临时关闭 Memory(Settings → Personalization → toggle off)
- Custom Instructions 里如果有”始终简短英文” → 移到对应 Project 而不是全局
怎么确认已经修好
- 开新对话用 Step 2 的复述模板跑 10 个不同问题,遵守率 > 90% = 真修好。
- 让同事在他们账号里复制 Project(共享后)跑相同 prompt,遵守率一致 = 不是只有你的会话被修好。
- 长对话拉到 20 轮,每隔 5 轮验证一次是否还在遵守 = 抗稀释能力。
如果还是没修好
- 把规则切到最简:只留一条最关键的(如”reply in zh-CN”),看是不是规则之间在打架。
- 换模型:4o → o3 / GPT-5;reasoning 模型对结构化指令遵守更稳。
- 换平台:高约束需求用 Custom GPT 或直接调 API(system message 优先级更明确)。
- 准备好 Project ID + Instructions + prompt + 不遵守截图,去 help.openai.com 提工单。
预防建议
- Instructions 心智模型:前 200 字 = 硬约束,后面 = 软指导 / 上下文。
- 每条规则配一个期望输出示例,不要只写文字描述。
- 否定 prompt 一律改肯定,写完搜”don’t / never / 不要”二次清理。
- 反复用的 Project 至少跑一组 10 题的”遵守度回归测试”,发布后定期跑。
- 高 stakes 任务(客服 / 合规 / 财务)用 Custom GPT,不要用 Project。