上下文是怎么回事
上下文是这一次请求里模型能看到的全部内容,有上限,看到不等于用上。
上下文是这一次请求里模型能看到的全部内容。它有上限,而且并非看到就等于用上——这是和 AI 协作时最值得先建立的一个模型。
你会遇到的现象:
- 聊到第三十轮,它开始忘记前面定好的规则
- 把整个项目丢给它之后,回答反而变含糊了
- 新开一个会话,昨天讲清楚的事要从头再讲一遍
它包含什么
上下文不只是你打的那段字,而是它这一次能看到的整个信息环境。它由五块拼成:
- **系统提示与项目规则。**工具自带的指令,加上你项目里的约束文件。
- **历史对话。**这一轮会话里说过的每一句,包括它自己的回复。
- **读过的文件。**它打开过的代码、文档。一个大文件能吃掉很大一块。
- **工具输出。**搜索结果、命令行输出、报错信息。这部分最容易失控,一下就能把窗口撑满。
- **你最新说的话。**本轮的指令。
管好这个环境,比琢磨提示词的措辞重要得多。还有一条容易踩的:跨会话不会自动延续。今天的会话结束,昨天的判断就不在了,除非它被写进了项目里的文件。
五个组成部分里,历史对话和工具输出是悄悄长大的两块。对话聊得越久,历史占的份额越大;每跑一次搜索、每执行一条命令,输出都会留下来。你以为只给了它一页纸的指令,实际上它这次请求要处理的内容已经远远超出你那几句话。
长了会变差
直觉上给的信息越多越好,实际不是。上下文变长时,推理准确率会逐渐下滑,这个衰减是渐进的,不会突然崩掉,所以很难察觉。lost-middle
- **中段最容易被忽略。**模型对开头和结尾的注意力更高,塞在中间的关键约束经常不起作用。重要的规则要么放最前,要么在当下这条指令里重申。
- **窗口大不等于用得上。**能装进一百万 token,不代表这一百万都被有效利用。塞满噪音之后,指令遵循和推理都会明显下降。
- **无关内容是污染。**读了一堆用不上的文件、贴了一大段无关日志,这些不是「多点信息没坏处」,它们在挤占注意力。
- **成本和延迟也跟着涨。**每一次调用都是真金白银,塞得越多,等得越久。
四个应对动作
- **写出去。**把结论存到上下文之外:规格文件、约束文件、进度记录。不让它反复推导已经定过的事。这个动作最有杠杆——把定好的东西写进文件,等于给模型加了一份不会随对话变长而模糊的记忆。
- **挑着给。**只给这一步真正需要的。指名要改哪个文件,别让它自己翻遍整个仓库。
- **压缩。**长内容先摘要再进上下文。大段日志先提取关键行,长对话阶段性总结一次。
- **隔离。**不同任务分开跑。一个任务一个会话,别让上一件事的噪音污染下一件。
还有一条跟代码组织有关:按功能分目录比按技术分层更适合 AI 协作。做登录相关的改动,前者只需要读 auth 一个目录,后者要从每一层各读几个文件才能拼出全貌。上下文管理的核心就一句话:让它看到的每一段都值得看。
