你贴了三段背景(公司介绍、团队配置、项目当前状态、为什么要做这件事),结尾问了一句”那你能起草一下发布邮件吗?“模型回了你 400 字关于公司的总结。不是邮件,不是草稿,是总结。任务的确写了,但它是 50 句 prompt 里的第 47 句,模型把占主导的那个主题当成了请求。
最快的修法: 把任务挪到第一行,写成祈使句,再在最后一行重复一遍。如果周围的背景本身就很长(大约 20,000 token 以上,比如整段政策或会议记录),那就反着来:把这一大段材料放到最上面,把任务/问题放到最下面。Anthropic 官方的长上下文指南说,这种排法在复杂多文档输入上能把回答质量提升最多 30%(截至 2026 年 6 月)。下面讲清楚为什么,以及就算上下文必要也要怎么结构化,让任务清晰可见。
为什么会这样:注意力是 U 形的
模型并不是均匀地读你的 prompt。被反复验证的”lost in the middle”(迷失在中间)效应(Liu 等人,Stanford / UC Berkeley)显示,检索准确率呈 U 形曲线:输入最开头和最结尾的 token 拿到最多注意力,埋在中间的内容对输出的影响力会掉 20-30% 以上。一句任务句出现在第 47/50 句、被背景包住,正好落进注意力最低的谷底。模型锚定它最先读到的(一段散文式的公司简介),又锚定它最后读到的(更多背景),被埋的那句指令始终赢不了。
这也正是两个可靠修法——“任务放最前”和”任务在末尾再说一次”——之所以管用的原因:你把交付物放到了曲线注意力最高的两端。
你属于哪一类
| 你 prompt 里的症状 | 最可能的原因 | 去看 |
|---|---|---|
| 前 3 句是描述性 prose(“我们成立于 2019 年……”) | 背景像散文开头,模型锚定成”公司 X 的简介” | Step 1 |
| 交付动词只出现一次,且在第 2 段之后 | 任务只说一次、散文式、靠后,落在注意力谷底 | Step 1 + 4 |
| prompt 是一整块、没有任何标签 | 没有结构,模型只能自己推断,挑了主导主题(背景) | Step 2 |
| 你贴了 5 段,因为它们都”看起来相关” | 上下文必要但不聚焦,承重事实藏在填充里 | Step 3 |
| 你写了约束、然后背景、然后任务 | 结构倒置:靠前的约束先框住了模型,它还没看到任务 | Step 1 + 2 |
| 背景是真的巨大(整段政策、记录、文档堆) | 这是长参考内容,不是短 prompt | Step 5 |
怎么快速找出被埋的动词: 在 prompt 里搜交付动词(draft、write、总结、对比)。如果只出现一次且在第 2 段之后,它就是被埋了。
动手前先确认
- 用一句话写出真正的交付物。写不出来,模型也猜不出来。
- 假装第一次读这 prompt。交付物第一次出现在第几句?
- 每段背景都问一句:“删掉它,答案会变吗?“不会就是剪除候选。
- 决定上下文里到底哪 50 字左右是真正承重的。
最短修复路径
Step 1:用祈使句开头
第一句祈使句决定整体框架。背景之前先写它:
TASK: Draft a 200-word launch email to the engineering team.
Tone: direct, no marketing speak.
Output: just the email body, no subject line.
CONTEXT: <剪过的背景>
模型先读到”Draft a 200-word launch email”,后面的一切都被当成这个任务的输入,而不是要去描述的话题。
Step 2:用分块标签
标签把一团含糊的 prose 变成类型清晰的参考资料:
## 任务
起草一封发布邮件。
## 受众
内部工程团队,12 人。
## 背景(只用相关的)
- 下周二发布 Feature X。
- 替代旧的重试逻辑。
- 工程团队已知道下线计划。
## 输出格式
- 纯文本邮件正文。
- 150-200 字。
- 无主题行。
如果你用的是 Claude,比 markdown 标题更强的是 XML 标签,因为 Claude 专门被调过来解析它们:把每块用 <task>、<context>、<output_format> 圈起来。Anthropic 推荐的正是这种把指令和输入分开的写法。
Step 3:无情剪枝
每段背景都问:“删了它,答案会变吗?“不会就删。600 字里 200 字有用,胜过 1000 字里同样 200 字有用 + 800 字噪音,因为噪音稀释注意力、把内容往 U 形曲线最不被看的中段堆。检索研究一再发现:只保留最相关的 3-5 条上下文,效果好过把所有东西都倒进去。
Step 4:末尾重申任务
底部再说一次,把交付物也放到曲线注意力最高的”近期”那一端:
[顶部:任务和背景]
[底部]
提醒:只起草发布邮件正文。无主题行。
无评论。150-200 字。
头 + 尾都打到 U 形的两端。对于那种总是飘回去做总结的 prompt,这是单条收益最高的改动。
Step 5:背景真的很长时,把顺序反过来
这是反直觉的一条,也是”任务永远放最前”不再适用的地方。当背景是一大段粘贴进来的文档(大约 20,000 token 以上:整段政策、长会议记录、规格说明),Anthropic 的长上下文指南说,要把这段长材料放到最上面、在你的问题之上,把真正的问题/指令放到最下面。输入末尾的 token 注意力权重更高,所以放在那里的问题会成为最锐利的”query vector”,对着模型刚读完的全部内容发力。Anthropic 称这种排法在复杂多文档输入上能带来最多 30% 的质量提升(截至 2026 年 6 月)。
把每个文档用带来源信息的标签圈起来,让模型当它是参考资料,而不是要总结的内容:
<documents>
<document index="1">
<source>launch_policy.md</source>
<document_content>
... 2000 字政策 ...
</document_content>
</document>
</documents>
仅根据上面的政策,起草一封 200 字的发布邮件给工程团队。
只输出邮件正文,无主题行。
文档特别长时,再加一行强制模型先落地再动笔:“先从文档里引用 3-5 句和这封邮件相关的内容,再写邮件。“先要相关引文能帮模型穿过文档其余部分的噪音,对落地(grounding)有可测的提升。
Step 6:找陌生人测
把 prompt 发给一个没有上下文的同事,让他照着做。Anthropic 把这叫作 prompting 的黄金法则:如果一个几乎没有背景的人都搞不清要产出什么,模型也会搞不清。如果他大约 10 秒内说不出交付物是什么,就重写开头那一行。
怎么确认已经修好
- 一个没有上下文的人读前 3 行(长参考那种排法则读最后 3 行),能正确说出交付物。
- 输出是交付物,不是背景总结。
- 删掉一段冗余背景,输出不变(证明它本来就是噪音)。
- 同一 prompt 跑 3 次,3 次都是正确”类型”的产物,而不是”这次总结、那次邮件”。
如果还是没修好
- 上下文可能还是大到淹没任务。再剪,或者直接换成 Step 5 的长参考排法。
- 换一个长上下文注意力更强的模型。截至 2026 年 6 月,Claude Opus 4.7、Claude Sonnet 4.6、Gemini 3.1 Pro 都标配 1M token 上下文;在 ChatGPT 上,应用内完整 1M 窗口仅限 $200 的 Pro 档(Plus 大约能看到 320 页)。
- 分两步走:第一个 prompt 把上下文提炼成承重事实,第二个 prompt 用这份提炼 + 任务。这样彻底绕开”任务被埋”的问题。
- 如果任务本身是多部分的,拆成多个 prompt。一个 prompt 一个交付物,比一次塞三个可靠得多。
常见问题
为什么模型总结我的背景,而不去做任务? 因为背景是占主导、注意力最高的内容(它在 prompt 开头,而且量大),而任务落在注意力最低的中段。模型围绕它最关注的东西来定义请求。把任务挪到第一行和最后一行就能修好。
那是不是任务永远放最前就对了? 普通 prompt 是的:任务在前、背景其次、结尾再重申一次任务。例外是当”背景”是一大段粘贴进来的文档时(大约 20K token 以上)。这时把文档放最前、任务放最后,Anthropic 的测试显示能把质量提升最多 30%。
把 prompt 写更长、加更多细节有帮助吗? 任务里的细节(格式、字数、语气、约束)有帮助。背景里的细节一旦不再改变答案,通常反而有害,因为多出来的字会稀释注意力,并把内容堆到模型最不看的中段。背景只留承重的。
我的 prompt 很短,任务照样被忽略,怎么办? 检查结构倒置:如果你在任务之前写了约束或背景,模型先锚定了那些。开头先放一句祈使(“Draft X.”),其余的放后面。也确认交付动词确实是祈使语气,而不是埋在 prose 里的疑问句。
分块标签真有用,还是只是好看?
真有用。标签(“任务""背景""输出格式”,或 <task> 这类 XML 标签)告诉模型哪一块是指令、哪一块是参考资料,它就不用再猜。在 Claude 上,XML 标签是最可靠的分隔方式。
预防建议
- 默认模板:任务在前、背景其次、输出格式在末,最后一行再重申任务。
- 节制上下文,只放会改变答案的;目标是最相关的 3-5 条事实。
- 重复性工作存一个模板,别每次现编结构。
- 每次发送前回读 prompt 的第一行和最后一行;从任一端都该一眼看出交付物。
- 上下文超过约 200 字就用分块标签(或 XML 标签)。
- 警惕”我得提一下""补一下背景”这类开头,它们后面常跟着一段可删的内容。
相关阅读
外部参考:Anthropic 的 long context prompting tips 和原始论文 Lost in the Middle。