做产品 PMaker
全都塞进去
整个仓库的文件 50%
三十轮历史对话 30%
这次真正要用的 10%
关键约束埋在中间,最容易被忽略
按预算分配
项目约束 20%
这个模块的规格 20%
相关的两三个文件 30%
留白 30%
留出余量给它推理和输出

上下文是有限的注意力,不是仓库。塞得越满,每一条被认真对待的概率越低。

上下文预算

把上下文当成有限的预算来分配。多给一份无关内容,就少一分对关键内容的注意力。

你会遇到的现象
  • 把整个项目丢给它之后,回答反而变含糊了
  • 聊得越久,它越容易违反前面定好的规则
  • 贴了一大段报错日志,它抓错了重点

该给什么

给什么占比说明
项目约束少量精简的规矩,长期有效。放在最前面
当前模块的规格少量数据结构、状态、边界。这一块最值得占位置
直接相关的文件中等指名要改的那两三个,加上它们依赖的接口定义
这一次的指令少量放在最后。关键约束在这里重申一遍
留白三成左右给它推理和输出用。填满了它就没有余地了
关键约束值得说两遍:一遍在开头的项目规则里,一遍在这一条指令里。这是针对「中间容易被忽略」的直接对策。

不该给什么

有个简单的自查:如果你自己都不确定某段内容这次用不用得上,那多半就不该给。

什么时候清空重来

信号该做什么
开始违反前面定好的规则把关键决定写进文件,然后开新会话
它开始重复之前说过的话说明有效信息被稀释了,重开
换了一个不相关的任务直接开新会话,不要接着聊
连续三轮都没改对停下。多半是描述有问题,重新写清楚再开一轮
重开会话之前,先让它把这一轮的结论总结成一份可以粘进文件的文字。这样重开就不等于从零开始。

还有一个结构层面的做法:按功能组织代码目录。做登录相关的改动只需要读 auth 一个目录,比从每一层各读几个文件省下大量上下文。这个选择在项目开始时几乎不花成本,后期改起来很贵。