你让模型写一个落地页、重构一个函数、起草一封发布邮件。结果它给了你 10 条要点:“写落地页的步骤”、“重构时要考虑什么”、“发布邮件要包含什么”。交付物没到——只到了关于”怎么产出交付物”的元讨论。这就是规划模式失效:模型把你的请求当成”求建议”,于是回方法、不回成品。
最快的修法: 把主要动词从 how/what(怎么/什么)换成祈使句(write、output、produce、refactor),钉死输出类型和长度,再加一句:Produce the artifact directly, not a plan or list of steps.(直接产成品,不要计划或步骤清单。)同一个模型,你问 "hero 文案怎么写" 它给你清单,你说 "写 hero 文案,两行内,不超过 14 字" 它就直接交文案。
2026 年有个变化值得注意:ChatGPT 的模型选择器(GPT-5.5 的 Instant / Thinking / Pro)以及推理模式整体上让这个问题更严重,而不是更轻。Thinking 和 Pro 模式会显式地一步步推演,所以一个措辞松散的请求,比在过去只有即时模型时更容易被退回成一份计划。现在把动词收紧反而更重要,不是更不重要。
你属于哪一类?
| 你看到的症状 | 最可能的原因 | 跳到 |
|---|---|---|
prompt 动词是 how/what/explain;输出像教程 | ”怎么”框架把模型推进建议模式 | Step 1 |
| 输出是编号阶段,每个阶段下面没有代码/内容 | 任务大,模型用计划自我保护 | Step 4 |
你写了 describe/走一遍,得到叙述性 bullet | 输出形状隐含”叙述”需求 | Step 1 + 3 |
| 单条追问”现在做第一步”仍返回子步骤 | 前面几轮锁定了规划框架 | Step 6 |
| 用 Claude Code,它永远只规划、从不改文件 | 你处在 Plan mode(⏸ plan mode on) | 见”如果还是没修好” |
| chat 里正常,走 API 就变清单 | 没钉死输出类型/schema | Step 3 + “如果还是没修好” |
常见原因
按命中率排序。
1. “怎么”框架把模型推进建议模式
典型反面:
"How should I write the function?"
"What is the best way to structure this email?"
"How do I refactor this for readability?"
模型把它们当方法题,回方法。技术上没错——只是不给成品。
如何判断: prompt 的主要动词是 how、what、explain、approach,而不是 write、produce、output、return。
2. 任务大,模型用规划自我保护
请求是 "build me a CRUD app" 或 "refactor this 800-line file",模型常常先给计划,因为完整成品会撑爆输出预算、或一次性产出有风险。计划是它的”安全阀”。推理模式(ChatGPT Thinking/Pro、Gemini 3.1 Pro、开了扩展思考的 Claude Opus 4.7)尤其如此——它们的训练就奖励”先列计划再动手”。
如何判断: 输出是编号的阶段列表,每个阶段只有名字、底下没有真实代码或内容。
3. 输出形状隐含”叙述”需求
"explain how to do X" 或 "describe the steps to Y" 这类 prompt 本身就在要叙述,而叙述天然成列表。你要的不是成品,是”造成品的描述”。
如何判断: 重读 prompt,动词若是描述性的(explain、describe、走一遍),出列表是设计的结果。
4. 前轮建立了规划框架
如果第 1 轮是 "我们先规划下迁移",第 5 轮是 "现在做第一步",模型多半留在规划模式,回的是子步骤而不是执行。
如何判断: 往上翻。最近几轮都是阶段、里程碑、“怎么 approach”,不是具体成品。
5. 模型以为你在学,不是在出活
教程类训练数据严重列表化。当请求看起来像学习问题,模型默认进教学模式。"I want to understand X" 触发列表;"produce X" 触发成品。
如何判断: 输出读起来像教程的小节标题,带 "first, you should consider..." 这类句式。
6. 矛盾约束触发啰嗦偏好
你一次提两个互斥要求——"keep it short but cover everything"(要短但要全)——模型会用”啰嗦”来化解冲突,因为输出越多越显得”完整”。而清单正是那个啰嗦选项,于是它选了清单。这是当前 chat 模型已被记录的失效模式,不是你的问题。
如何判断: 你的 prompt 里有互斥约束(简洁 + 全面、简短 + 详尽),输出靠列表来和稀泥。
7. 含糊的”给我 X”——X 既可能是文档也可能是清单
"Give me a marketing plan" 是含糊的——X 是一份计划文档,还是一串营销步骤?模型常选列表,因为列表比写一份有立场的文档”更安全”。
如何判断: 输出是 bullet;其实交付物完全可以是散文、表格或代码块。
动手前先确认
- 确认问题是在 chat UI 还是 API 出现的;表现和修法都不同。
- 在 ChatGPT 里看选择器停在哪个模式(Instant / Thinking / Pro)。Thinking 和 Pro 更爱规划。
- 记下完整 prompt、模型与模式、system prompt、以及前几轮历史。
- 把列表输出原样保存,与改写后对比。
- 判断任务是否真的大到需要先规划。
- 检查 prompt 是不是不小心写成”怎么”问句而非指令。
最短修复路径
按收益排序。
Step 1:把”怎么”改成祈使动词
| 规划 prompt | 执行 prompt |
|---|---|
"How should I write the function?" | "Write the function. Signature: getUser(id: string): Promise<User>. Return runnable TypeScript." |
"What's the best way to write this email?" | "Write the email. Subject line + 4-sentence body. Tone: warm, direct." |
"How do I refactor this for readability?" | "Output the refactored code in full. Same behavior. Maximum function length: 20 lines." |
把动词从 how 换成 write/output/produce,做了 80% 的工作。
Step 2:禁用规划词汇
附加:
Output rules:
- Produce the artifact directly, not a plan or list of steps.
- Do not write "first, you should..." or "here is how to approach this".
- No section headings unless the artifact itself requires them.
- Skip any preamble; start with the first line of the artifact.
Step 3:钉死成品的类型和形状
明确告诉模型输出的”类型”:
Output type: TypeScript function, single file.
No comments unless explaining non-obvious logic.
Maximum 40 lines.
或:
Output type: 3-paragraph blog intro.
Length: 80-120 words.
First sentence must contain a specific number or proper noun.
类型化的返回值堵住模型用列表替代的可能。如果你在用 API,别只靠散文描述——直接把形状强制下来(见”如果还是没修好”)。
Step 4:大任务把”规划”和”执行”拆成两轮
任务真的需要规划就显式拆:
轮 1:"列出重构这个文件需要的 4 个子任务。先不写代码。"
轮 2:"完整执行子任务 1。输出代码,不是代码的计划。"
千万别在一个 prompt 里同时做——后半段必退化成列表。而且计划要具体:一份写着 figure out the right approach(搞清正确思路)、investigate the issue(调查这个问题)的”计划”根本不是计划,对执行轮没有任何帮助。
Step 5:给”结果示例”不要给”计划示例”
用 few-shot 展示成品:
Example output:
---
export async function getUser(id: string): Promise<User> {
const row = await db.query.users.findFirst({ where: eq(users.id, id) });
if (!row) throw new NotFoundError(`user ${id}`);
return row;
}
---
Now write the same shape for getOrder(id: string).
模型会复制示例的形状——成品示例就出成品。计划示例就出计划,所以永远别拿一份编号清单当示例。
Step 6:对话卡在规划态就重置
如果 1-5 轮都在规划,第 6 轮才是执行,新开会话只粘相关上下文。长规划会话累积的框架,单次追问消不掉。把执行轮需要的那一个输入(文件、规格)粘进去,冷启动直接下祈使句。
怎么确认已经修好
- 输出是成品(代码、散文、表格、JSON),不是步骤编号清单。
- 同事可以直接发布或入库,无需再生成。
- 输出前 2 行就是成品本体,不是前言。
- 没有
"first, you should consider..."、"here is how to approach..."这类句式。
如果还是没修好
- 在用 Claude Code? 看终端最底部。若显示
⏸ plan mode on,你就处在 Plan mode——它会分析、会规划,但按设计不会改文件、不会跑命令。按Shift+Tab循环切出去(Windows 上是Alt+M),或者别用claude --permission-mode plan启动、改用普通模式。 - 从 chat UI 切到 API,强制一个 schema。 散文指令失效时,这是最稳的修法。
- OpenAI:传一个严格 JSON Schema。JSON Mode(
response_format: { type: "json_object" })截至 2026 年已是 legacy——它只保证 JSON 合法,不保证你的形状。用response_format: { type: "json_schema", json_schema: {..., strict: true} }(Chat Completions),或 Responses API 里的text.format。 - Anthropic:prefill 在 Claude Opus 4.7 / Sonnet 4.6 上已不再支持(会返回 400
Prefilling assistant messages is no longer supported)。改用结构化输出,通过output_config.format配 JSON schema,或用 system prompt 点名确切的输出类型。 - Google:在 Gemini 3.1 Pro 上设
responseMimeType: "application/json"加一个responseSchema(可直接配 Zod/Pydantic)。
- OpenAI:传一个严格 JSON Schema。JSON Mode(
- schema 定为
{ "artifact": "string" },不要{ "steps": ["string"] }。字段名本身就会把模型从列表上拽开。 - 在 ChatGPT 里,短而明确的执行任务就切到 Instant 模式;Thinking/Pro 留给真正难的推理。一个默认就爱规划的模式,会一直规划下去。
- 执行任务把 temperature 降到 0.3 左右;0.7-1.0 容易啰嗦元评论。
- 小模型撞到能力上限、退化为清单时,换更强的模型。
- 有 API 推理深度参数的地方,用参数设深度,别在 prompt 里写”好好想想”——那只是烧掉本该承载你真实指令的 token。
预防建议
- 规划模板和执行模板分开维护,永远不在一轮里混用。
- 执行 prompt 的禁用词:
approach、consider、you might、steps to。 - 审最近 10 个 prompt:
howvswrite/output/produce各多少。目标 80% 是祈使句。 - few-shot 用成品示例,不用计划示例。
- 工具支持结构化输出时,schema 定为
{ artifact: string }而不是{ steps: string[] }。
常见问答
为什么 GPT-5.5 Thinking 给我一份计划,而 GPT-5.5 Instant 直接把活干了? Thinking 和 Pro 模式在回答前会花显式推理,那段推理常常以一份可见的计划形式冒出来。短而完全指定的活(写这个函数、起草这封邮件),把选择器切到 Instant。Thinking/Pro 留给”难点在推理、不在打字”的任务。
我都说了”be concise”,它还是给了一长串清单,为什么?
“简洁”配一个含糊动词,是个矛盾,模型用列表来化解——列表显得”覆盖全面”。“简洁”不是一个输出类型。把它换成具体类型加上限:Output type: one paragraph, max 60 words.
强制一个 JSON schema 真能止住清单问题吗?
能,而且比任何散文指令都稳。一个只有 artifact: string 单字段的严格 schema,让模型没地方放列表。用 OpenAI 的 json_schema strict 模式、Anthropic 的 output_config.format、或 Gemini 的 responseSchema。除非你真要步骤,否则别给 steps: string[] 字段。
Claude Code 一直在规划、从不改文件,哪里出问题了?
你几乎可以肯定是处在 Plan mode。看终端底部有没有 ⏸ plan mode on。Plan mode 会刻意拦住文件编辑和命令,直到你批准。按 Shift+Tab 退出(Windows:Alt+M),再重发请求。
我直接让它”do it, don’t explain”行不行?
有帮助,但单靠这句不够。要配上点名的输出类型和长度。最强的一行是:Produce the artifact directly, not a plan or list of steps; start with the first line of the output.