我不知道它到底读了我的哪个配置文件,就直接问它
我在这个工具上配了不止一份指令文件:用户级的、工作区级的、还有散落在项目里的。它们内容有重叠,优先级也不一样。
问题是:我没办法从外面看出它到底读了哪几份。
界面上没有"已加载的上下文"这种视图。我只能看到它回答的样子,然后猜——它知道这条规矩吗?刚才那句是不是因为它读到了某个文件?
猜了几次之后我换了个办法:直接问它。
让它自己报清单
我问的话大概是这样:
请告诉我,你这次会话实际加载了哪些 AGENTS.md / CLAUDE.md 指令文件,列出完整路径。重点确认两件事:① 用户全局的那份在你上下文里吗?② 当前工作区的那份呢?
它给出了一份路径清单,还说明了哪几份是完整注入、哪几份可能被截断。
这一下就把"猜"变成了"看"。
为什么这个办法有效
模型能"看到"自己的上下文——它知道输入里有什么。所以问它"你收到了什么",比从外部推测要准得多。
这类自指的问题在很多地方都能用:
- 我的系统提示里有哪些工具?
- 刚才那个文件你读到了第几行?
- 你能看到我上一轮提到的那段代码吗?
只要问的是"你收到了什么"而不是"你应该怎么做",答案通常可靠。
顺带发现的问题
那次检查还发现一件事:同一份 AGENTS.md 被注入了一次以上。
原因是不同层级都会去读——用户级读一遍,工作区级读一遍,而这两份文件内容是一样的(我把同一份内容分发到了多个位置)。
重复注入本身不算错,但会占上下文。当时那份文件只有 3.6KB,重复一遍可以忽略;如果文件涨到几十 KB,重复注入就成了浪费。
所以我给自己定了个观察点:文件小的时候容忍重复,涨到一定体积再拆分 ——把"用户级共用的部分"和"工作区专属的部分"分开,避免每次都被重复塞两遍。
关于"配置生效了没有"
这件事往外延一点:任何"自动加载配置"的机制,都应该有一个能验证它的手段。
配置类的东西有个特点——它失效的时候是完全静默的。你写错了路径、名字大小写不对、格式有问题,程序不会报错,它只是当作不存在,用默认行为跑。
于是你看到的行为变了,但不知道是因为配置没生效,还是因为配置生效了但写错了内容。
主动问一句"你读到了吗",比事后追查快得多。