网站根目录里那个写给 AI 看的文件,从来不是说明书。它是输入。

**给机器读的东西没有「只是说明」这一说:你写的是说明,它读的是指令。**同一周里,这件事的两端同时出了变化——你发出去的引用可以被陌生人接走执行,你想读的位置正在被平台收回。下面讲清两件事:风险具体落在哪一层,以及内容与工程两侧分别该怎么接。

你发出的引用清单,是别人机器的输入

先说事实。安全研究员 Alon Hertz 在 2026 年 8 月末公开了一份名为《Data Became Code》的研究。他扫了 6,214 个公司域名,逐份读取各家网站上的 llms.txt——这是 2024 年以来流行起来的一种约定,用来告诉来访的 AI 这个站有什么内容、该读哪几页——然后挑出文件里所有「指向某个包名或域名」的引用,挨个核查该名字有没有人注册。

结果是 227 处指向无人注册的包或域名

接下来的动作没有任何技术含量:他挑其中几个名字注册下来,放上探针。不到 4 分钟,第一台财富 500 强网络里的机器就跑起了他的代码。

这个链条值得逐环看一遍,因为它把过去需要「投毒公共仓库」才能完成的攻击,降级成了一次域名注册:

环节传统供应链投毒这次的路径
入口往 npm / PyPI 上传恶意包在自家网站写一句「照着这个包装」
前提要骗过仓库审核、要有人安装只要那个名字没人注册
触发开发者安装时AI 或工具读文件时自动解析
耗时数天到数月注册后不到 4 分钟

关键在于:llms.txt 在很多人眼里是文案,在机器眼里是引用清单。 你写进去的每个包名和域名,都是对陌生机器的一次授权。

我在强监管行业做过几年系统,那边的规矩是「凡是能改变运行状态的动作,都要走审批门」。实践中最难管的从来不是看起来危险的操作,而是看起来最无害的那一类,比如配置文件里改一个名字。这次是同一件事换了个场景重演:看起来最像文档的东西,恰恰是最容易绕过所有检查的那一类。

所以真正的教训不是「小心被攻击」,而是——一旦某个文件是给机器读的,它就得按接口的规矩管。 版本、变更记录、发布前检查、引用自持,这四件事你对自己的代码做了二十年,轮到自家网站根目录里那个 txt 时,标准不该降。

一句话概括这一节:你没法控制别人怎么读你的文件,只能控制自己写了什么。

你想读的位置,正在被收回

同一周,另一端也在变。

Google 把自然搜索结果的链接重写了:结果条目的 href 不再指向目标网站,而是 google.com/goto?url=...。这个 url= 参数不是目标地址的 base64,而是 Google 内部的索引引用,离线解不出来;真实地址只出现在 /goto 响应的 Location 头里,必须单独发一次 HEAD 请求去读,而且不能跟着跳转

据长期监测这一改动的 Autom 团队记录,到 2026 年 8 月底,在登出与隐私浏览状态下这已经基本全覆盖(此前只在少数搜索结果页上出现,无法可靠适配)。Google 至今没有发布官方公告,因此性质上仍可能是实验。

对做内容与做监控的人,这件事的冲击分两层。

技术层,是接口变更。 凡是靠解析搜索结果页拿目标 URL 的脚本都会拿到 /goto?... 或空值,必须改成「读 Location、不跟随」的两段式请求。这是典型的第三方依赖破坏性变更——它不报错,只是安静地给你的都是垃圾数据。

成本层,是定价模型变了。 以前一次页面请求能拿到上千个链接,现在每个链接都要回 Google 一次。请求量翻倍只是明面,真正的作用是它给了平台一个清晰的信号——同一个客户端连续解析几百个链接,一眼可辨。结合此前移除 &num=100 与收紧 BotGuard / SearchGuard,方向很一致:它在给批量抓取标价。

而这件事对做内容的人,方向是反的。

当第三方越来越难规模获取搜索结果,「被正确索引到」的相对价值在上升,「盯着排名看」的性价比在下降。我自己的做法就是顺着这个方向挪:把力气从监控排名,挪到确保 sitemap、结构化数据、引用关系全都自持且正确。这些东西不依赖持续抓取,也不怕平台隔几个月改一次格式。

你读到的位置要靠自证,你写出去的引用要靠自持。这两条规矩现在同时生效。

落到工程上的四条可执行动作

上面两节说的是同一个判断,但两侧的应对方式完全不同。把可执行的部分整理成四条:

  1. 把网站根目录的机器可读文件逐个过一遍。 llms.txtsitemap.xmlrobots.txt,看里面出现的每一个包名、域名、脚本地址,凡是你没有所有权和控制权的,要么注册下来,要么删掉。这件事十分钟能跑完,不需要任何工具——而且它是唯一一个你能在本周就彻底做完的项
  2. 给依赖外部页面的脚本加一道「变更哨兵」。 不要等它报错才发现格式变了。每次抓完做一次结构断言(例如「结果条目的链接必须以 http 开头」),不通过就告警,而不是把脏数据安静地写进库。静默失效是外部依赖最贵的一种故障,因为你连它什么时候开始错的都不知道。
  3. 把「给机器读的」和「给人看的」分开发布。 前者按接口管(版本号、变更记录、发布前检查),后者按内容管。混在一起的时候,改一句文案很容易顺手改掉一个正被外部依赖的字段。
  4. 把引用自持纳入发布前检查。 推广一点看:任何「对外部世界做出承诺」的发布物都在这个范围内——llms.txt 的引用、API 文档里的示例端点、SDK 里指向的 CDN 地址。检查方式是一样的:这个字符串指向的东西,我能不能在任何时刻决定它的命运?

今日其他信号

  • 私有代码库上的真实水位出来了。 第三方基准 Real-SWE 在 10 个授权获得的真实企业任务上评测(每任务 8 次 rollout、用各家原生 harness),最强组合 Fable 5.1 + Claude Code 的解决率只有 38.8%,10 个任务中 6 个低于 15%,最低的一个 8 个模型全部 0 通过。反直觉的是:10 分钟以下的 rollout 失败率 71.4%,10 分钟以上是 73.4%——给更多时间并不提升通过率,瓶颈在理解与验证,不在算力。
  • 智谱完成约 50 亿美元融资(约 20 亿美元股份配售 + 约 30 亿美元零息可转债),明确投向下一代 GLM、完全自训练体系与算力。商业化数据更值得看:上半年 MaaS 收入同比 +2736%、占总收入 86.5%,毛利率从上年同期 −0.4% 升到 24.6%,词元调用量较年初涨超 40 倍的同时 API 平均售价提升约 101%。降价发生在通用档,能承接长程任务的那档在涨价。
  • Fable 5.1 用 44 分钟、176k tokens 解开 370 年未解的密码。 对象是 Urquhart 1653 年《Logopandecteision》书末的 Cyphral Distich(64 个数字,1899 年即被列为公开悬题)。出题方自己写的结论很值得记:它没做出非凡的密码分析,答案事后看很简单,它只是不停地找。难任务的门槛正在从「够不够聪明」变成「愿不愿意一直试」。
  • 供应商可以在不改模型名的前提下换掉你背后的模型。 月之暗面 9 月 11 日把 kimi-for-coding 就地升级为 K2.8 Preview,Model ID 保持不变;K3 关掉思考后的请求还会被自动路由给 K2.8 的无思考版本。你的配置一行没改,跑的东西已经换了——评测基线和成本模型因此同时失去版本锚点。
  • 具身智能那边补上了软件 agent 缺的一环。 生数科技 9 月 12 日发布的 Motus2 把策略生成、世界模拟与价值评估统一在同一组视频—动作共享权重里联合训练。软件 agent 普遍只有「执行」和「可选的预测」,没有独立的、被持续训练的效果评估器——这解释了为什么失败只能靠人发现。

数据说明

  • 事件状态:Google 的 goto 链接变更无官方公告,来源为第三方长期监测(Autom),性质上仍可能是实验;《Data Became Code》的 227 处引用与 4 分钟结论均来自研究者自述,未见第三方复现;Accomplish 表示相关披露还未结束。
  • 未独立复现的数据:Real-SWE 为第三方独立机构 Specific Labs 测试,但未获外部复现;Fable 5.1 解密码为出题方自述,作者亦明示部分位置存在 9 个字母未能解出;Kimi「K2.8 性能接近 K3」未公布任何 benchmark 数据;智谱融资与商业化数字来自其港交所公告。
  • 一手来源:withspecific.com(Real-SWE)、vals.ai(Cyphral Distich 解密)、autom.dev(Google goto 监测)、《Data Became Code》研究(Alon Hertz)、北京日报 / 证券日报 / 21 世纪经济报道(智谱公告)、智源社区与腾讯云开发者社区(Kimi K2.8)、外滩大会现场报道(Motus2)。
  • 相关阅读AI 攻击的工业化:PaperCut 案里的三个新事实——同一类问题的上一环,讲 agent 被当作攻击工具时的边界失控。