# 提示词观止：永不褪色的提示词技巧

- URL: https://gardenplace.me/zh/posts/the-prompt-trick-that-never-expires/
- Published: 2026-09-12
- Updated: 2026-09-13
- Stage: 常青
- Series: Live with AI
- Tags: AI, prompt, 写作

## 只要学得够慢，就不用学了

[上一篇](https://gardenplace.me/zh/posts/natural-language-is-the-new-programming-language/)讲了编程的三个时代：人工编写、机器学习、自然语言。既然自然语言成了新的编程语言，人人都成了施法者，大家肯定迫不及待想练一把咒语。然而 AI 时代有个笑话：“只要你学得够慢，你就不用学了。”还有一个类似的流行语：“一觉醒来，错过好多；一年过去，什么也没错过。”

## 从“学了再说”到“用到再学”

这些话其实在方向上对了一半。变化快、用到时又容易查的细节，可以晚点学。

编程语言里有一种概念叫惰性求值：表达式先不算，等到真有人要用它的值再算。Haskell 靠这个能表示一个无穷长的列表，只取用其中需要的部分。机器学习里也有一个概念叫惰性学习：基本的 k 近邻算法把样本存着，不预先拟合一个参数化的预测模型，等查询来了再比对。在 AI 时代，值得学的东西太多，学东西又变得很快，我们理应也这样学，尤其是下面几类知识：

1. 近期未必用得上，真用到时又容易查、容易学；
2. 当前任务只需要弄清输入输出，可以暂时当黑箱；
3. 更新很快，提前熟记的细节可能到时候又得重学。

随着技术的进步，查和学的成本变了。2011年 *Science* 上的[研究](https://www.science.org/doi/10.1126/science.1207745)发现，预期以后还能访问某条信息时，受试者对信息本身的回忆较差，对存放位置的记忆反而更好。我们会把记忆的一部分交给外部系统。AI 又往前走了一步：除了帮你找，还能按你的问题解释、举例、陪你试。

很多人对这类知识有收集癖。我怀疑这里有一点应试教育留下的惯性：太多人都只关注一个东西对闭卷考试有没有用，但现实是一场开卷考试。过去我们经常是 "just in case learning"——学了再说；现在则应该是 "just in time learning"——用时再学。就像某些 JIT 编译器的做法，哪段代码跑热了，再集中优化哪段。等发现学了以后可以提升自己的工作效率，再学也不迟。

## 原理性知识更保值

也有知识值得早点学，因为它会反复帮你判断新问题。你不需要会推导 Transformer，但有几个心智模型，建了就一直管用。

**模型看到的字跟你看到的不一样。** 它先把文字切成一块一块的 token——有时是一个词，有时是半个词。strawberry 在你眼里是十个字母[^strawberry]，在模型眼里可能是两三个 token。这就是为什么早期模型数不清里面有几个 r：它的颗粒度跟你不一样。不过这不是天花板——切法本身[没有丢信息](https://github.com/openai/tiktoken)，新模型完全可以学会更好地处理这类问题。别把某一代模型的短板，当成所有模型永远跨不过去的坎。

[^strawberry]: 写本文初稿时，笔者想重复这个实验。结果 AI 把 r 数对了，是3个，却把字母总数说成了9个。

**流畅不等于正确。** 语言模型的基本训练目标是“给定前文，预测下一个最合理的 token”。靠这个目标，它能学到大量知识和推理模式，但训练过程没有附送一个事实核验器。所以它说得越顺，你越该多问一句：这个说法我能验证吗？

**“我明明说过了”——但它可能已经看不见了。** 每个模型有一个上下文窗口，一次能看多少内容是有上限的。聊到后面，最早的几轮对话可能已经滑出窗口。你觉得对话记录还在，但对模型来说那段话已经不在视野里了。另外，聊天时模型的权重不会即时更新——它能从你这轮给的例子里学到一条规则，但关掉对话就忘了，除非产品另有[记忆功能](https://help.openai.com/en/articles/8590148-memory-faq)帮你存。模型的知识截止日期约束的是训练时学到的东西，不妨碍它读你刚贴进去的材料。

2017年那篇 [*Attention Is All You Need*](https://arxiv.org/abs/1706.03762) 到现在，模型变化巨大，但 token、上下文窗口、训练和推理的区别这几个概念仍然有解释力。判断一条知识值不值得长期学，我会看它能不能解释多个现象，能不能在换了工具之后继续帮我作判断。原理也会被修正；一个好的 mental model，还应该让你知道自己的判断在哪些地方靠不住。

## 系统提示词与用户提示词

先说 ChatGPT、Claude 这类 chatbot。你在对话框里输入“帮我列个提纲”“这段再短一点”，就是用户提示词（user prompt）。产品还会在背后提供[系统提示词（system prompt）](https://platform.claude.com/docs/en/release-notes/system-prompts/overview)，交代助手的基本身份、行为规则等。打个比方，把模型当作临时工：系统提示词像公司规矩，用户提示词是你交给他的具体事情。如果你对更完整的提示词写作指南感兴趣，可以参考社区维护的[已经泄漏的系统提示词](https://github.com/asgeirtj/system_prompts_leaks)。题外话，我觉得用户应该对这些影响信任的信息享有知情权，就像主流通用编译器几乎都是全面开源的。

日常聊天，直接在对话框里说需求就行。同一段对话里，之前的消息通常也会作为上下文参与后续回答，不必每轮从头交代。如果有经常重复的偏好，例如“用中文回答，技术术语保留英文”，可以存进 [ChatGPT 的自定义指令](https://help.openai.com/en/articles/8096356-chatgpt-custom-instructions)。只适用于某一组对话的背景和要求，则可以放进 [Claude 的项目知识和项目指令](https://support.claude.com/en/articles/9517075-what-are-projects)。

这些是产品提供的个性化入口，并不等于直接编辑厂商的系统提示词。对使用者来说，先把眼前的事情说清楚就够了；哪句话反复要说，再把它存起来，省得每次重复。系统提示词优先级总是高于用户提示词。

agent 里的提示词分布则更加复杂，之后介绍的时候再说。

## 角色提示词已经只是 cosplay 了

理解了这层分工，再看那些流行的提示词技巧，就容易判断哪些工作还需要我们来做。

斯坦福 2025年秋季的 CS146S: The Modern Software Developer 的课件上写着 [Use role prompting aggressively to make system prompts more powerful](https://docs.google.com/presentation/d/1MIhw8p6TLGdbQ9TcxhXSs5BaPf5d_h77QY70RHNfeGs/edit?slide=id.g3827d98ef8c_0_0#slide=id.g3827d98ef8c_0_0)。所谓角色提示词，就是开头先来一句“你是一位顶级前端专家”。很多人把它当作固定起手式，好像少了这句，模型就不知道怎么写前端了。

在 [Fable 5.1](https://www.anthropic.com/claude-fable-and-mythos-5-1) / [GPT-6 Astra](https://openai.com/index/gpt-6-astra/) 这一代经过充分后训练的助手模型上，我的默认做法是直接交代任务，省掉这句起手式。认真理解问题、运用相关知识、尽量给出有帮助的回答，本来就是厂商在训练的行为。把模型塑造成一个好助手的工作，已经有很大一部分在它交到用户手里之前完成了。

厂商通过[指令微调和 RLHF](https://arxiv.org/abs/2203.02155)等后训练方法，用回答示范和偏好反馈来调整模型，让它更好地遵循请求、帮助用户。“当一个有帮助的助手”已经成为模型学到的默认行为，不需要用户在每次对话里从头教起。Anthropic 的 [persona selection model](https://alignment.anthropic.com/2026/psm/)也提供了这样的理解：后训练塑造和完善了 Assistant 这个角色。

**不额外指定人设时，你面对的也已经是一个被专门塑造过的助手。**“帮我写一个 React 网页”这份任务本身，也已经提供了前端开发的情境。一句“你是顶级前端专家”能带来多少额外价值，要看它在这个基础上又补充了什么，而不能只看它是否让输出发生了变化。

这就是我省掉通用人设的理由：它想提醒模型做的事，很可能已经包含在默认助手的行为和任务要求里。这里的“调好了”，指以帮助用户为目标、面向广泛任务优化过的默认行为；具体任务做得好不好，仍然要看结果。因此，我会先直接说任务，发现不足再补充要求，而不是把“你是专家”当作必需品。

要是我希望它“像面试官一样一次只问一个问题”，或者“从无障碍审查者的角度检查这个网页”，情况就不同了：我在指定这次合作的方式或检查范围。这些信息未必能从“帮我做个网页”里推出来。角色仍然可以是这种要求的简写；真正有用的是它补充的任务信息。

已有实验也提醒我们，不必迷信头衔。Zheng 等人的[研究](https://arxiv.org/html/2311.10054v3)于 2023年首次公开、2024年定稿：研究者把 162个人设放进系统提示词，在四个模型家族的九个模型、2,410道 MMLU 选择题上做对照，没有发现添加人设能稳定提高总体准确率。这项研究没有测试 Fable 5.1 这一代模型，不能代替对它们的评估；它检验的是“加个人设就能变强”这个常见假设。

CS146S 课件上的例子，我用 [Fable 5.1](https://www.anthropic.com/claude-fable-and-mythos-5-1) 照着试了一遍：同一道题（最长回文子串），交给两个人设。

> **Gen Z digital bestie** —— [对话记录](https://claude.ai/share/bfe773fd-a985-4618-bf8b-4f6bfb8de242)
>
> **A helpful assistant that loves programming at the level of a senior software developer** —— [对话记录](https://claude.ai/share/37bd90d7-93b4-4bff-815e-043b640dc3fd)
>
> 这一次，两边都把程序写对了，也都顺手提醒我有更高效的 Manacher 算法；最明显的差别在语气词。

这一次看起来很像 cosplay，或者说 VTuber，皮套换了，人没换。

滥用角色扮演本质上只是一种偷懒。你没有把任务的具体需求想清楚，指望靠一个通用角色来代替。这和高考作文开头引一句名人名言一样，光有一个气势，却没有什么独特的信息量。

至于一句人设为什么会改变模型的行为，等到深入讲 LLM 原理时，我会另写一篇《为什么人设会改变行为》，把条件概率、attention 和角色表示拆开来讲。

## 有一种失效叫招安

2022年[有篇论文](https://arxiv.org/abs/2205.11916)发现，加上 "Let's think step by step" 这样的提示，能把当时模型在 MultiArith 上的正确率从 17.7% 提高到 78.7%。如果一句话这么好用，这么泛用，那它就应该出现在系统提示词里。果然后来出现了会在内部进行推理的模型，[OpenAI 的建议](https://developers.openai.com/api/docs/guides/reasoning-best-practices)反而是不必再加这句话。曾经需要人手动提醒的动作，变成了模型的默认行为。

Zero-shot 和 few-shot 能更清楚地说明这个区别。直接让模型把“今天天气很好”翻成英文，不先提供翻译示范，就叫 zero-shot（零样本提示）；先给几组中英对照，再让它翻译新句子，就叫 few-shot（少样本提示）。这里的“样本”指提示中的任务示范，不是模型训练时看过的资料。GPT-3 的论文标题就叫 [*Language Models are Few-Shot Learners*](https://arxiv.org/abs/2005.14165)。

随着模型更擅长直接理解指令，一些任务可以先不贴例子，看看它能不能做好；但 few-shot 远没有因此过期。某种特定的语气、某种嵌套三层的 JSON 结构、某个边界情况到底该输出空数组还是报错——这些地方，贴一条样例可能比写一千字的说明更省事。Show, don't tell，写作里很老的技巧。

这些提示词技巧仍然有效。恰恰因为足够通用，它们才会随着技术进步，被吸收到模型内部、系统提示词或官方 harness 里。所谓“失效”，是用户不必再手动提醒。

## 模型厂的工作和我们的工作

Naval 2026年2月在播客[A Motorcycle for the Mind](https://nav.al/ai#:~:text=worth%20learning%20tips%20and%20tricks%20of%20how%20to%20work%20with%20these%20AIs)里说得更直白：他不热衷学那些“这样 prompt、那样搭 harness”的技巧，因为他相信技术适应他的速度，比他适应技术更快；在他看来，那些 workflow 和工具的寿命“以周计，顶多以月计，不以年计”。不过，他也留了一个例外：如果你眼下就在做前沿产品、需要每一点竞争优势，那就值得学。到 5月他讲了[写代码的版本](https://nav.al/tokens#:~:text=resisted%20learning%20all%20the%20tricks%20and%20tips)：不追 Ralph Wiggum、OpenClaw、plan mode 那些建议，把 Codex、Claude、Gemini 扔到同一个问题上反复跑，“浪费 token，节省时间”。

沿着 Naval 的思路，我愿意把用 AI 时花的功夫分成两类：their job 和 our job。Their job 是模型和工具开发者正在改进的事——让模型更会推理、更可靠地使用工具、更能适应人的说话方式。如果一个技巧只是替模型补短板，它的价值就可能随着模型升级而下降。当然，今天能帮你把活干好，今天学就有意义。Our job 是另一类。Naval 说他不学那些技巧，但紧接着那句是：

> [I just can speak English.](https://nav.al/ai#:~:text=I%20just%20can%20speak%20English) And for someone like me who is relatively articulate with English and also has a structured mind, and I know how computer architectures work, and I know how computer programs work, and I know how programmers think, then I can actually very precisely specify what I want just through structured English.

这本身就是最强的提示词技巧：清楚的自然语言、结构化的头脑、知道机器怎么工作、知道程序员怎么想，然后把要什么精确地说出来。Naval 不是没有技巧，而是他的技巧在 AI 出现之前就练好了。他之前的表达、编程和判断的积累，不仅没有贬值，在 AI 时代还变得更有价值了。

## 真正属于自己的提示词技巧是写作

弥补模型短板的技巧，会随着模型换代而变得不再必要；把任务本身的信息表达清楚的能力，则永远不会过时。

把模型当成中介公司派来的临时工。这人极其聪明，读过很多书，会写很多语言。但他今天早上才到你公司，不知道你们做什么产品、给谁用、组里有哪些不成文的规矩、上次事故是怎么出的。对于他已经熟练的事，你不必从 for 循环教起；要花心思的是把这个项目特有的背景交给他。

提示词不必一开始就写得面面俱到。好的提示词技巧不止要 LLM-friendly，更要 human-friendly。如果每次开工都要先写一份完整规格，任务还没动，人可能就退缩了。评价一种提示词方法，也该把人的启动成本算进去。

[《微习惯》](https://minihabits.com/about-mini-habits/)主张把每天要求自己做的行动缩得很小；[福格行为模型](https://www.behaviormodel.org/ability)也强调，可以通过降低行为的难度，让行动更容易发生。借用这个思路，和 AI 合作的第一步也可以很小：先把想做的事说出来，没想清楚就让它帮着问、帮着试。

有了第一版，再看结果、补要求。写作有改稿，和 AI 合作也一样。我们关心的，应该包括人能不能轻松开始、把事情逐步做完，而不只是第一条提示词能让模型答得多好。

真要学提示词，我会先看模型厂商的[官方指南](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/claude-prompting-best-practices)：说清任务、交代背景、必要时给个例子。这些基本功更值得长期积累。官方的具体建议也会变，用到时再查最新版、看实际效果就好。AI 的通用性还意味着，你可以用 AI 来学习 AI。不知道怎么提问，就让它帮你理清问题；拿不准某件事值不值得投入时间和精力去学，也可以问 AI。你不必先把“如何使用 AI”学完，才开始使用 AI。

Let them do their job, and we do ours.

## 延伸阅读

- Vaswani et al., [*Attention Is All You Need*](https://arxiv.org/abs/1706.03762)（2017）——attention、前馈网络与 Transformer 的计算结构。
- Ouyang et al., [*Training language models to follow instructions with human feedback*](https://arxiv.org/abs/2203.02155)（2022）——指令微调和 RLHF 如何改变模型的默认行为。
- Marks, Lindsey & Olah, [*The Persona Selection Model: Why AI Assistants might Behave like Humans*](https://alignment.anthropic.com/2026/psm/)（2026）——预训练角色与后训练助手之间的解释框架，以及该框架的边界。
- Zheng et al., [*When "A Helpful Assistant" Is Not Really Helpful*](https://arxiv.org/html/2311.10054v3)（Findings of EMNLP 2024，预印本始于 2023年）——系统提示词中人设效果的对照研究，结论有明确的模型和任务范围。
- Anthropic, [*AI prompt engineering: A deep dive*](https://www.youtube.com/watch?v=T9aRN5JkmL8)（2024-09-05，Alex Albert、Amanda Askell、David Hershey、Zack Witten）——提示词实践、角色和推理的圆桌讨论。
- Anthropic, [*Prompting best practices*](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/claude-prompting-best-practices)——角色、示例、背景和输出约束的官方建议，随模型更新。
- Kojima et al., [*Large Language Models are Zero-Shot Reasoners*](https://arxiv.org/abs/2205.11916)（NeurIPS 2022）——"Let's think step by step" 的原始论文。
- Naval & Nivi, [*A Motorcycle for the Mind*](https://nav.al/ai)（Naval Podcast, 2026-02）——关于学习 AI 工具的取舍，以及结构化表达和底层知识的价值。
- Naval, Guillermo Rauch, Blake Scholl & Max Hodak, [*Waste Tokens, Save Time*](https://nav.al/tokens)（Naval Podcast, 2026-05）——写代码版：不学 Ralph Wiggum / OpenClaw / plan mode，多模型暴力跑。
- Mihail Eric, [*CS146S: The Modern Software Developer*](https://themodernsoftware.dev)（Stanford, 2025）——本文讨论的课程和提示词课件来源。
- 编程范式的背景知识（Software 1.0 / 2.0 / 3.0）见[自然语言就是新的程序设计语言](https://gardenplace.me/zh/posts/natural-language-is-the-new-programming-language/)。

---

Message from Garden Place · https://gardenplace.me/zh/llms.txt
