<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>逆向 on Codexer</title><link>https://codexer.com/tags/%E9%80%86%E5%90%91/</link><description>Recent content in 逆向 on Codexer</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Sun, 13 Sep 2026 09:00:00 +0800</lastBuildDate><atom:link href="https://codexer.com/tags/%E9%80%86%E5%90%91/index.xml" rel="self" type="application/rss+xml"/><item><title>文件就在本地，Codex 却非要去网上搜一遍：逆向 web.run 工具里的「10% 概率就必须联网」硬编码指令</title><link>https://codexer.com/posts/2026-09-13-codex-webrun-decision-boundary/</link><pubDate>Sun, 13 Sep 2026 09:00:00 +0800</pubDate><guid>https://codexer.com/posts/2026-09-13-codex-webrun-decision-boundary/</guid><description>&lt;p&gt;你给 Codex 指了一个本地目录，里面是一整套 seL4 内核源码，外加配套的编译工具。你的指令很直白：读一读这些源码，搞清楚怎么运行刚刚编译好的内核，顺便确认一下编译方式对不对，然后试着把它跑起来。&lt;/p&gt;
&lt;p&gt;Codex 开始干活，翻目录、读文件，一切正常。然后你瞥了一眼终端，看到这样一行字：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Searching the web
Searched the web for &lt;a href="https://raw.githubusercontent.com/seL4/seL4_tools/master/cmake-tool/helpers/application_settings.cmake"&gt;https://raw.githubusercontent.com/seL4/seL4_tools/master/cmake-tool/helpers/application_settings.cmake&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;等一下。它联网搜索的那个文件，不就在你刚给它的本地仓库里吗？不就在它几分钟前还在读的那堆文件中间吗？&lt;/p&gt;
&lt;p&gt;这不是我编出来的场景，而是开发者 spader 在 2026 年 9 月初记录的一次真实遭遇。他没有停在吐槽，而是一路追查，最后把 Codex 的源码翻了个底朝天，找到了藏在工具说明书里的「元凶」。&lt;/p&gt;
&lt;h2 id="追查现场为什么放着本地文件不读非要去联网"&gt;追查现场：为什么放着本地文件不读，非要去联网&lt;/h2&gt;
&lt;p&gt;spader 的第一个反应是困惑，第二个反应是直接去问 Codex 本人：你为什么要为一个本地 checkout 里已经存在的文件去联网？&lt;/p&gt;
&lt;p&gt;Codex 的回答相当诚实：我机械地套用了一条「在线核实小众技术事实」的通用规则。&lt;/p&gt;
&lt;p&gt;他继续追问：这条规则是从哪来的？&lt;/p&gt;
&lt;p&gt;Codex 说，它来自挂在 web 工具上的一段「开发者级指令」，原话大意是：当你不确定某个事实、话题小众或新兴、或者你怀疑自己有至少 10% 的概率会记错时，你就应该上网核实。&lt;/p&gt;
&lt;p&gt;请注意那个数字：10% 的概率。也就是说，只要有一成的不确定，agent 就被要求去联网。而「小众或新兴」这个门槛低得离谱，一个现代微内核该怎么构建、该怎么运行，随便就能撞进这个范围。&lt;/p&gt;
&lt;h2 id="找出元凶codex-是开源的那就翻源码"&gt;找出元凶：Codex 是开源的，那就翻源码&lt;/h2&gt;
&lt;p&gt;spader 想起一件事：Codex 和 Claude Code 不一样，它是开源的。于是他 clone 了仓库，在 &lt;code&gt;codex-rs/ext/web-search/web_run_description.md&lt;/code&gt; 这个文件里找到了那根「烟枪」。&lt;/p&gt;
&lt;p&gt;这份文件就是 web.run 工具的系统描述，是 Codex 每次调用联网工具时都会读到的一份说明书。真正的问题出在它开头一段叫「决策边界（Decision boundary）」的文字上。我把它最关键的两句翻译出来：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;如果用户明确要求搜索互联网、查找最新信息、查询等等（或者明确要求不要这么做），你必须服从他的要求。
当你做出一个假设时，永远要考虑它在时间上是否稳定；也就是说，它有没有哪怕很小（超过 10%）的概率已经发生了变化。如果它不稳定，你就必须通过联网来核实。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;紧接着是一长串「必须联网的情形」清单，开头还特意用大写字母强调：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;下面列出的是必须联网的场景。请高度注意：在这些情况下你必须联网。如果你不确定或者拿不定主意，你必须倾向于联网。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;清单里列了六七种情形，包括：信息可能最近发生了变化（新闻、价格、法律、时刻表、产品规格、汇率、软件库版本……）；用户在寻求可能花大钱或花大时间的推荐；用户想要直接引用、链接或者精确的出处；引用了一个具体的页面但你还没拿到它的内容；以及那句罪魁祸首，「你不确定某个事实、话题小众或新兴、或者你怀疑自己有至少 10% 的概率会记错」。&lt;/p&gt;
&lt;p&gt;看到这里，spader 崩溃了。所谓「时间上不稳定」，在这份文档里被定义成了「几乎所有东西」。10% 的门槛低到形同虚设，等于告诉模型：只要不是百分之百确定，就上网查。&lt;/p&gt;</description></item></channel></rss>