让 AI 干活,它却甩给你一份清单

你让模型写、重构、起草,它却返回 10 条要点。本文讲清它为什么切到"建议模式",以及哪几处 prompt 改写能逼它直接交成品。

你让模型写一个落地页、重构一个函数、起草一封发布邮件。结果它给了你 10 条要点:“写落地页的步骤”、“重构时要考虑什么”、“发布邮件要包含什么”。交付物没到——只到了关于”怎么产出交付物”的元讨论。这就是规划模式失效:模型把你的请求当成”求建议”,于是回方法、不回成品。

最快的修法: 把主要动词从 how/what(怎么/什么)换成祈使句(writeoutputproducerefactor),钉死输出类型和长度,再加一句: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 就变清单没钉死输出类型/schemaStep 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 的主要动词是 howwhatexplainapproach,而不是 writeproduceoutputreturn

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,动词若是描述性的(explaindescribe走一遍),出列表是设计的结果。

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)。
  • schema 定为 { "artifact": "string" },不要 { "steps": ["string"] }。字段名本身就会把模型从列表上拽开。
  • 在 ChatGPT 里,短而明确的执行任务就切到 Instant 模式;Thinking/Pro 留给真正难的推理。一个默认就爱规划的模式,会一直规划下去。
  • 执行任务把 temperature 降到 0.3 左右;0.7-1.0 容易啰嗦元评论。
  • 小模型撞到能力上限、退化为清单时,换更强的模型。
  • 有 API 推理深度参数的地方,用参数设深度,别在 prompt 里写”好好想想”——那只是烧掉本该承载你真实指令的 token。

预防建议

  • 规划模板和执行模板分开维护,永远不在一轮里混用。
  • 执行 prompt 的禁用词:approachconsideryou mightsteps to
  • 审最近 10 个 prompt:how vs write/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.

相关阅读

标签: #排查 #Prompt #Prompt 质量 #Prompt 工程