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