夜雨聆风学习资料网

ARTICLE · 1069261

关掉遥测,项目的说明文件就被悄悄跳过

关掉遥测,项目的说明文件就被悄悄跳过

关掉遥测,项目的说明文件就被悄悄跳过

你把项目的规矩写进一份说明文件,指望每次开工前它被读到。实际情况是,读不读它,取决于一台远在服务器上的开关。而这个开关,跟你有没有开着遥测绑在一起。

Claude Code 从 v2.1.277 起支持 AGENTS.md:项目里没有 CLAUDE.md 时,改读 AGENTS.md。但加载它的是一套新插件系统里的内置插件,叫 agents-md,算不上简单分支,它能不能用,问的是一个远程开关 tenguagentsmd_mod,取不到就按关闭处理。

同一份说明文件,两种文件名对应两条读取路径

一位开发者在自己机器上做了个能复现的测试:建一个空目录,只放一份 AGENTS.md,里面写一个暗号词,再问模型暗号是什么。结果是,只要环境里设了 DISABLETELEMETRY=1 或者 CLAUDECODEDISABLENONESSENTIAL_TRAFFIC=1,模型就答不上来。把这两个变量改成 0 没用,开关照样取不到。项目里 .claude/settings.json 的 env 段也改不动它,一个仓库决定不了自己怎么加载指令。走 Bedrock、Vertex 这类第三方网关的会话同样读不到。

要命的是没有任何提示。会话正常启动,模型正常回答,只是回答里少了一份项目规矩。你会以为规矩早写好了,其实它一个字都没进上下文,这类失败最难查。

这个坑为什么难查:读取被挂在远端开关上

这事最讽刺的是:读一个本地 markdown 文件,本来一个字节的网络都不需要,却要先问服务器准不准,问不到就当你从来没写过。

Anthropic 的工程师在讨论串里认下了这件事,原话是上线疏忽:远程急停需要这个开关,而遥测关掉之后开关自然也拿不到,v2.1.281 已经修掉。

从加入支持到官方修复的四个节点

但把本地文件的读取挂在远端开关上,问题不只这一个 bug。开关能远程关掉一个功能,也就意味着服务器那边判断失误的时候,你本地的东西会跟着失效,而且不吭声。

官方文档里,这个插件写着四种指令模式:只读 CLAUDE.md、把 AGENTS.md 当兜底、两份都读、只用组织统一下发的指令。一个文件名级别的兜底,动用了一整套插件机制。讨论串里的吐槽集中在两点:为了一个文件名,值得吗;以及这套插件系统的文档,被读完的人形容为机器味太重,看半天还是不知道在讲什么。

一个绕过去的办法

CLAUDE.md 支持 @ 导入,而导入不经过那个开关。所以只要在仓库里放一行 CLAUDE.md,内容是 @AGENTS.md,遥测关掉时也能把文件带进来。

代价是每个仓库多一个文件。而这恰好是 AGENTS.md 想省掉的东西。

还有一个细节容易忽略:Claude Code 只认项目目录里的 AGENTS.md,没有用户级的那一份。Codex 有全局的 ~/.codex/AGENTS.md,它没有。想把同一套个人规矩喂给几个不同的编码工具,你还是得靠 @ 导入指过去。

讨论串里还有两种声音值得记下来。一种认为功能开关加遥测本来就是大厂标配,能快速回滚总比所有人卡在坏版本上强。另一种翻出 Hyrum 定律:在这之前,有人刻意利用 Claude 不读 AGENTS.md 这件事,给不同模型下发不同的指令,真正的默认行为反而不那么显然。两种说法都站得住,但它们解释的是这个开关为什么存在,回答不了读本地文件该不该求服务器批准。

顺带说一句,遥测开关管的东西比你以为的多。同一个讨论串里有人提到,远端遥控这类功能,也只在遥测开着的时候可用。

如果你之前一直奇怪自己写的 AGENTS.md 为什么没生效,先把那行 @ 导入加上。别急着去改遥测设置,那不是你能单方面解决的问题。

读一个本地文件,不该先问服务器。

相关学习资料