<?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/categories/%E6%B7%B1%E5%BA%A6%E5%88%86%E6%9E%90/</link><description>Recent content in 深度分析 on Codexer</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Sun, 24 May 2026 09:00:00 +0800</lastBuildDate><atom:link href="https://codexer.com/categories/%E6%B7%B1%E5%BA%A6%E5%88%86%E6%9E%90/index.xml" rel="self" type="application/rss+xml"/><item><title>当 Codex 成为 AI Agent 的标准运行时：一个开源项目的架构抉择</title><link>https://codexer.com/posts/2026-05-24-codex-as-agent-runtime/</link><pubDate>Sun, 24 May 2026 09:00:00 +0800</pubDate><guid>https://codexer.com/posts/2026-05-24-codex-as-agent-runtime/</guid><description>&lt;h2 id="你在造轮子还是在造车"&gt;你在造轮子，还是在造车？&lt;/h2&gt;
&lt;p&gt;假设你要做一个 AI Agent 平台。用户可以通过 Telegram、Discord、Slack 跟你的 Agent 对话，它能记住上下文，能定时执行任务，能搜索网页，能操作浏览器。&lt;/p&gt;
&lt;p&gt;听起来很酷，对吧？但当你真正动手写代码的时候，会发现自己面对一个尴尬的问题：模型的「思考循环」到底该由谁来管？&lt;/p&gt;
&lt;p&gt;是你自己写一套推理引擎，把模型的输出解析出来，判断它要不要调用工具，再把工具结果塞回去让它继续想？还是让模型背后的基础设施来处理这些事？&lt;/p&gt;
&lt;p&gt;这个问题听起来技术性很强，但它决定了你的 Agent 平台到底能走多远。&lt;/p&gt;
&lt;p&gt;OpenClaw 最近给出了自己的答案。&lt;/p&gt;
&lt;h2 id="openclaw-是什么"&gt;OpenClaw 是什么？&lt;/h2&gt;
&lt;p&gt;OpenClaw 是一个开源的 AI Agent 平台，它的核心卖点是「多渠道」。你可以在 Telegram、Discord、Slack、WhatsApp、Matrix、网页聊天等任意渠道部署同一个 Agent，它共享记忆、人格、工具权限和定时任务。&lt;/p&gt;
&lt;p&gt;这跟市面上那些只能在网页上对话的 AI 助手完全不同。OpenClaw 的 Agent 是一个真正「活」在你日常通讯工具里的存在。&lt;/p&gt;
&lt;p&gt;但 OpenClaw 有一个老问题：它之前是自己驱动模型循环的。&lt;/p&gt;
&lt;h2 id="自己管模型循环有什么问题"&gt;自己管模型循环，有什么问题？&lt;/h2&gt;
&lt;p&gt;所谓「模型循环」，就是 Agent 从接收用户消息开始，到返回最终回复之间发生的那一整套流程：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;把用户消息和上下文发给模型&lt;/li&gt;
&lt;li&gt;模型决定要调用某个工具（比如搜索网页）&lt;/li&gt;
&lt;li&gt;执行工具，把结果返回给模型&lt;/li&gt;
&lt;li&gt;模型继续推理，可能还要调用更多工具&lt;/li&gt;
&lt;li&gt;最终生成回复&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这个循环看起来简单，但实际实现起来非常复杂。你需要处理线程状态管理、上下文压缩、工具调度、代码执行环境、长对话的连贯性，等等。&lt;/p&gt;
&lt;p&gt;OpenAI 在 Codex 的 app-server 里已经把这些问题都解决了。而且他们是针对自家模型的特性专门优化过的。&lt;/p&gt;
&lt;p&gt;当 OpenClaw 自己管模型循环的时候，相当于在 Codex 已经修好的高速公路旁边，又修了一条坑坑洼洼的土路。模型在两条路上都能跑，但体验天差地别。&lt;/p&gt;
&lt;h2 id="一个大胆的架构决策"&gt;一个大胆的架构决策&lt;/h2&gt;
&lt;p&gt;OpenClaw 团队做了一个很多人可能觉得「疯了」的决定：&lt;strong&gt;把模型循环的控制权交给 Codex&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;具体来说，他们重新画了一条边界线：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Codex 负责的部分：&lt;/strong&gt; OpenAI 模型的推理循环、原生线程状态管理、工具调用延续、上下文压缩、代码执行模式、动态工具搜索。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;OpenClaw 负责的部分：&lt;/strong&gt; 多渠道接入、Agent 人格配置、记忆系统、会话管理、定时任务、媒体处理、浏览器控制、网关、以及 OpenClaw 自己的工具集。&lt;/p&gt;</description></item><item><title>让 Codex 学会自我纠错：迭代修复循环的工程实践</title><link>https://codexer.com/posts/2026-05-23-codex-iterative-repair-loops/</link><pubDate>Sat, 23 May 2026 09:00:00 +0800</pubDate><guid>https://codexer.com/posts/2026-05-23-codex-iterative-repair-loops/</guid><description>&lt;h2 id="一次提交就能写好代码别做梦了"&gt;一次提交就能写好代码？别做梦了&lt;/h2&gt;
&lt;p&gt;写代码的人都知道一个朴素的道理：第一次写出来的代码几乎不可能完美。你需要运行它，看看哪里报错，修一修，再跑一遍，再修一修。这个过程循环往复，直到代码真正可用。&lt;/p&gt;
&lt;p&gt;那 AI 编程 Agent 呢？大多数人对 Codex 的使用方式是：扔一个任务进去，拿一个结果出来，看看行不行，不行就换个说法再试一次。这种「一次性投喂」的模式，本质上是把人类的迭代思维压缩成了一次性操作。&lt;/p&gt;
&lt;p&gt;OpenAI 开发者关系团队的 Shreekant Agrawal 最近在官方 Cookbook 上发布了一篇教程，展示了另一种思路：&lt;strong&gt;让 Codex 自己建立一个「审查、修复、验证」的闭环&lt;/strong&gt;，通过结构化的反馈驱动多轮迭代，直到问题真正被解决。&lt;/p&gt;
&lt;p&gt;这不是一个玩具 Demo。它用三个故意写坏的 Jupyter Notebook 作为测试素材，展示了从一轮修复到三轮修复的完整收敛过程。&lt;/p&gt;
&lt;h2 id="核心架构三个阶段一个闭环"&gt;核心架构：三个阶段，一个闭环&lt;/h2&gt;
&lt;p&gt;整个工作流分为三个阶段，每个阶段有明确的职责边界：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;审查（Review）&lt;/strong&gt;：读取当前产物，返回结构化的问题清单。这个阶段不修改任何文件，只负责发现问题。问题类型包括过时的 API 调用、缺失的环境配置说明、运行时风险等。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;修复（Repair）&lt;/strong&gt;：拿到审查结果和上一轮的验证反馈后，对产物做最小化修改。注意「最小化」三个字，Agent 被要求不要大刀阔斧重写，而是针对具体问题做精准修补。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;验证（Validate）&lt;/strong&gt;：执行修复后的产物，检查是否真正可用。对于 Notebook 来说，就是跑一遍所有代码单元格。验证失败的具体错误会成为下一轮修复的输入。&lt;/p&gt;
&lt;p&gt;这三个阶段形成一个循环：审查发现问题，修复尝试解决，验证确认结果。如果验证不通过，失败原因直接进入下一轮的修复指令。&lt;/p&gt;
&lt;h2 id="为什么结构化输出是关键"&gt;为什么「结构化输出」是关键&lt;/h2&gt;
&lt;p&gt;很多人用 Codex 的方式是自然语言对话，输出也是自由文本。但这个工作流的精髓在于，每个阶段的输入和输出都是严格的 JSON Schema。&lt;/p&gt;
&lt;p&gt;审查阶段返回的是一个 &lt;code&gt;findings&lt;/code&gt; 数组，每个 finding 包含 artifact（哪个文件）、issue_type（问题类型）、severity（严重程度）、description（描述）和 suggested_fix_direction（建议修复方向）。&lt;/p&gt;
&lt;p&gt;修复阶段返回的是一个 &lt;code&gt;fix&lt;/code&gt; 对象，包含 changes_made（做了什么改动）、unresolved_items（没解决的问题）和 updated_artifact_path（修复后的文件路径）。&lt;/p&gt;
&lt;p&gt;验证阶段返回的是一个 &lt;code&gt;validation&lt;/code&gt; 对象，包含 overall_passed（是否通过）、cases（每个验证用例的结果）和 remaining_delta（剩余问题）。&lt;/p&gt;
&lt;p&gt;这种设计的好处是显而易见的：每个阶段的输出可以直接作为下一个阶段的输入，不需要人工解读。调试时你可以打开 &lt;code&gt;record.json&lt;/code&gt; 文件，一眼看到每轮迭代发生了什么。&lt;/p&gt;
&lt;h2 id="实战三个-notebook-的修复之旅"&gt;实战：三个 Notebook 的修复之旅&lt;/h2&gt;
&lt;p&gt;教程准备了三个故意写坏的 Notebook，难度逐级递增：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;简单案例（Qdrant 向量搜索）&lt;/strong&gt;：API 调用过时了，需要从旧版 &lt;code&gt;qdrant.search&lt;/code&gt; 迁移到 &lt;code&gt;qdrant.query_points&lt;/code&gt;。这类问题通常一轮修复就能搞定。&lt;/p&gt;</description></item><item><title>Codex 不只是写代码的工具：Jason Liu 的极限效率工作法</title><link>https://codexer.com/posts/2026-05-22-codex-maxxing-guide/</link><pubDate>Fri, 22 May 2026 09:00:00 +0800</pubDate><guid>https://codexer.com/posts/2026-05-22-codex-maxxing-guide/</guid><description>&lt;h2 id="一个有趣的发现"&gt;一个有趣的发现&lt;/h2&gt;
&lt;p&gt;Jason Liu 是 Python Instructor 库的作者，在 AI 工具链领域深耕多年。他最近写了一篇文章，分享了自己使用 OpenAI Codex 的独特方式，引发了 Hacker News 上近百条讨论。&lt;/p&gt;
&lt;p&gt;核心观点很简单：大多数人把 Codex 当成一个写代码的聊天机器人来用，但它真正的潜力在于成为一个「有记忆、能持续运转的工作平台」。&lt;/p&gt;
&lt;p&gt;这篇文章不是 Codex 的入门教程，而是一套进阶方法论。如果你已经用过 Codex，但总觉得「好像还能做更多」，那接下来的内容可能会给你一些启发。&lt;/p&gt;
&lt;h2 id="持久线程让对话不会白费"&gt;持久线程：让对话不会白费&lt;/h2&gt;
&lt;p&gt;你有没有这种经历：跟 AI 聊了很久，把项目背景、需求细节都交代清楚了，结果第二天打开新对话，一切又要从头说起？&lt;/p&gt;
&lt;p&gt;Jason 的做法是为每个重要的工作流创建一个「持久线程」，并且把它钉住（Pin）。他在 Codex 里维护了好几个长期线程：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一个「参谋长」线程，处理日常事务协调&lt;/li&gt;
&lt;li&gt;一个用于 Agents SDK 开发&lt;/li&gt;
&lt;li&gt;一个用于 OpenAI CLI 项目&lt;/li&gt;
&lt;li&gt;一个专门监控 Twitter 动态&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些不是短对话，而是持续数月的「超级线程」。Codex 的压缩（Compaction）机制会自动把旧消息浓缩，保留上下文的同时释放内存。你可以用 Command+1 到 Command+9 快速跳转到钉住的线程。&lt;/p&gt;
&lt;p&gt;这里有个权衡：长期线程不在缓存中，重新访问时的推理成本会比新对话高。但对于重要的工作流来说，连续性带来的价值远超这点成本。&lt;/p&gt;
&lt;p&gt;我的看法是，这个模式特别适合那些需要持续迭代的项目。比如你正在做一个开源库的重构，每天花半小时推进一点，持久线程能让你省去反复交代背景的时间。&lt;/p&gt;
&lt;h2 id="语音输入把脑子里的东西倒出来"&gt;语音输入：把脑子里的东西倒出来&lt;/h2&gt;
&lt;p&gt;Jason 提到一个很有意思的观察：语音输入的价值不在于打字速度，而在于它能把你「未经编辑的思考」直接传给 Codex。&lt;/p&gt;
&lt;p&gt;他举了个例子：「我觉得 Slack 上有个叫 Ben 的人提过这个，具体说了什么我记不清了，你去查一下。」这句话你大概懒得打出来，但说出来就很自然。而 Codex 拿到这种模糊的指令后，居然真的能去 Slack 搜到相关信息。&lt;/p&gt;
&lt;p&gt;他还用 Granola 录制线下对话，把转录文本作为写作素材。比起精心组织的提示词，这种「粗糙版」的想法有时反而能给模型更好的上下文。&lt;/p&gt;
&lt;p&gt;这个思路值得借鉴。很多人跟 AI 交互时会不自觉地「美化」自己的表达，把提示词打磨得很精确。但实际上，模型处理自然语言的能力已经很强了，你完全可以像跟同事说话一样跟它沟通。&lt;/p&gt;
&lt;h2 id="实时纠偏边看边说不用等"&gt;实时纠偏：边看边说，不用等&lt;/h2&gt;
&lt;p&gt;这是 Jason 最推崇的功能之一。Codex 的「Steering」机制允许你在它还在执行任务的时候，随时插入新的指令。&lt;/p&gt;</description></item><item><title>Codex 配置体系完全指南：AGENTS.md、MCP 服务器与 Skills 的分层架构</title><link>https://codexer.com/posts/2026-05-21-codex-configuration-guide/</link><pubDate>Thu, 21 May 2026 09:00:00 +0800</pubDate><guid>https://codexer.com/posts/2026-05-21-codex-configuration-guide/</guid><description>&lt;h2 id="你真的会配置-codex-吗"&gt;你真的会配置 Codex 吗？&lt;/h2&gt;
&lt;p&gt;很多人用 Codex 的方式是这样的：装好 CLI，登录账号，然后直接开聊。能用，但远远谈不上好用。&lt;/p&gt;
&lt;p&gt;问题出在哪里？不是模型不够聪明，而是你没有给它足够的上下文。就像你雇了一个能力很强的开发者，但既不告诉他项目的技术栈，也不告诉他团队的代码规范，甚至连哪些文件不能碰都没说。他当然能写代码，但写出来的东西大概率不是你想要的。&lt;/p&gt;
&lt;p&gt;Codex 的配置体系就是为了解决这个问题。它不是一堆散落的设置项，而是一套精心设计的分层架构。理解了这套架构，你就能把 Codex 从一个&amp;quot;能用的工具&amp;quot;变成一个&amp;quot;懂你项目的搭档&amp;quot;。&lt;/p&gt;
&lt;h2 id="三种界面一套配置"&gt;三种界面，一套配置&lt;/h2&gt;
&lt;p&gt;OpenAI 为 Codex 提供了三种使用方式：CLI 命令行、VS Code 扩展、macOS 桌面应用。很多人以为它们是三个独立的产品，其实不是。它们共享同一套配置文件和技能系统。&lt;/p&gt;
&lt;p&gt;也就是说，你在 CLI 里配置好的 AGENTS.md、MCP 服务器和 Skills，在 VS Code 扩展里同样生效。反过来也一样。这带来的好处是显而易见的：你不需要为每个界面重复配置，只需要维护一份配置就能覆盖所有使用场景。&lt;/p&gt;
&lt;p&gt;三者的区别主要在交互方式上。CLI 最快、最灵活，适合终端重度用户。VS Code 扩展集成在编辑器侧边栏，适合习惯 IDE 工作流的开发者。桌面应用目前只有 macOS 版本，提供了一个独立的 Agent 工作空间。&lt;/p&gt;
&lt;p&gt;我的建议是：日常开发用 CLI 或 VS Code 扩展就够了。桌面应用适合那些想把&amp;quot;Agent 工作&amp;quot;和&amp;quot;编辑器工作&amp;quot;分开的场景。&lt;/p&gt;
&lt;h2 id="四层配置架构"&gt;四层配置架构&lt;/h2&gt;
&lt;p&gt;Codex 的配置体系可以分成四层，从上到下依次是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第一层：AGENTS.md（指令层）&lt;/strong&gt;。告诉 Codex 这个项目是什么、怎么工作、什么能做什么不能做。这是最核心的配置。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第二层：Skills（技能层）&lt;/strong&gt;。把重复性的工作流程封装成可复用的剧本。比如代码审查、文档更新、测试编写，都可以变成一个 Skill。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第三层：config.toml（偏好层）&lt;/strong&gt;。存放个人偏好和外部服务连接。MCP 服务器就配置在这一层。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第四层：Permissions（权限层）&lt;/strong&gt;。控制 Codex 能做什么操作。自动模式、只读模式、完全访问模式，根据项目的安全需求灵活切换。&lt;/p&gt;
&lt;p&gt;这四层的关系是层层叠加的。AGENTS.md 定义基础行为，Skills 提供扩展能力，config.toml 设置运行偏好，Permissions 划定安全边界。&lt;/p&gt;
&lt;h2 id="agentsmd少即是多"&gt;AGENTS.md：少即是多&lt;/h2&gt;
&lt;p&gt;AGENTS.md 是 Codex 的&amp;quot;项目说明书&amp;quot;。它告诉 Codex 如何在当前代码库中工作。&lt;/p&gt;</description></item><item><title>Cursor 团队揭秘：如何驯服 Codex 模型打造最强编程 Agent</title><link>https://codexer.com/posts/2026-05-20-codex-agent-harness-optimization/</link><pubDate>Wed, 20 May 2026 09:00:00 +0800</pubDate><guid>https://codexer.com/posts/2026-05-20-codex-agent-harness-optimization/</guid><description>&lt;h2 id="当模型遇上产品光有智商不够"&gt;当模型遇上产品，光有智商不够&lt;/h2&gt;
&lt;p&gt;你拿到了一个强大的编程模型，把它接入你的 IDE，然后满怀期待地点击 &amp;ldquo;Run Agent&amp;rdquo;。&lt;/p&gt;
&lt;p&gt;结果呢？它要么呆在那里等你确认每一步操作，要么自顾自地写一堆 shell 脚本把你的项目搞得一团糟，又或者在中途突然 &amp;ldquo;失忆&amp;rdquo;，忘记了自己刚才在干什么。&lt;/p&gt;
&lt;p&gt;这不是模型不够聪明，而是它不够 &amp;ldquo;懂&amp;rdquo; 你的产品。&lt;/p&gt;
&lt;p&gt;最近，Cursor 团队发布了一篇技术博客，详细分享了他们如何为 OpenAI 最新的 Codex 模型（GPT-5.1-Codex-Max）定制 Agent 框架。这篇文章的价值不在于 Cursor 有多厉害，而在于它揭示了一个被很多人忽略的事实：&lt;strong&gt;把一个强大的模型变成一个好用的 Agent，中间隔着大量的工程打磨&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;今天我们就来拆解 Cursor 的实战经验，看看他们到底做了哪些事情。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="核心挑战每个模型都有自己的-脾气"&gt;核心挑战：每个模型都有自己的 &amp;ldquo;脾气&amp;rdquo;&lt;/h2&gt;
&lt;p&gt;Cursor 支持所有主流的编程模型，从 Claude 到 GPT 再到 Gemini。但每个模型的训练方式不同，导致它们在实际使用中表现出截然不同的偏好和行为模式。&lt;/p&gt;
&lt;p&gt;Codex 模型是 OpenAI 基于 GPT-5 系列专门为 Agent 编程场景训练的版本。它在训练过程中接触到的工具和指令，和 Cursor 提供的环境有很大差异。Cursor 的工作就是弥合这个差距，让模型在 Cursor 的环境中也能发挥最佳水平。&lt;/p&gt;
&lt;p&gt;他们用内部的评测套件 Cursor Bench 来衡量每个模型的表现，关注三个维度：任务成功率、工具调用质量、以及用户的实际采纳率。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="第一招让工具更像-shell"&gt;第一招：让工具更像 shell&lt;/h2&gt;
&lt;p&gt;Codex CLI 的训练环境是以 shell 为核心的。模型在训练时学到的是：用 &lt;code&gt;rg&lt;/code&gt;（ripgrep）搜索文件，用 &lt;code&gt;cat&lt;/code&gt; 读取内容，用 shell 脚本做编辑。&lt;/p&gt;
&lt;p&gt;但 Cursor 提供的是结构化的工具调用（read_file、edit_file 等）。这就产生了一个冲突：模型更习惯用 shell，但 Cursor 的工具更安全、体验更好。&lt;/p&gt;</description></item><item><title>你的终端在骗你：Codex CLI 的 ANSI 注入漏洞如何演变成远程代码执行</title><link>https://codexer.com/posts/2026-05-19-codex-ansi-injection-rce/</link><pubDate>Tue, 19 May 2026 09:00:00 +0800</pubDate><guid>https://codexer.com/posts/2026-05-19-codex-ansi-injection-rce/</guid><description>&lt;h2 id="当你的终端在对你说谎"&gt;当你的终端在对你说谎&lt;/h2&gt;
&lt;p&gt;你每天打开终端，输入命令，看着屏幕上输出的文字。你信任它。你信任那些绿色的 &amp;ldquo;✓ Security policy enforced&amp;rdquo;，信任那些显示在屏幕上的 sandbox 设置和 approval 级别。&lt;/p&gt;
&lt;p&gt;但如果有人能让终端显示假的信息呢？如果你看到的 &amp;ldquo;安全策略已生效&amp;rdquo; 其实是攻击者注入的，而真正的设置是 &amp;ldquo;完全不设防&amp;rdquo; 呢？&lt;/p&gt;
&lt;p&gt;这不是假设场景。2026 年 2 月，安全研究员 Dimitar Ganev 在 OpenAI 的 Codex CLI（v0.91.0）中发现了这样一个漏洞。他不仅实现了终端显示欺骗，还将其升级为跨平台的远程代码执行（RCE）。&lt;/p&gt;
&lt;p&gt;这篇文章就来拆解这个漏洞的技术细节、攻击链路，以及它给所有 AI 编程工具敲响的安全警钟。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="漏洞起点一个没被清洗的参数"&gt;漏洞起点：一个没被清洗的参数&lt;/h2&gt;
&lt;p&gt;故事的起点很简单。Ganev 在用 Codex CLI 的 &lt;code&gt;codex exec&lt;/code&gt; 模式尝试生成多个子代理（sub-agent）时，注意到一个细节：通过 &lt;code&gt;--model&lt;/code&gt; 参数传入的模型名称，会被直接打印到终端输出里，没有任何过滤或转义。&lt;/p&gt;
&lt;p&gt;正常情况下，&lt;code&gt;codex exec&lt;/code&gt; 的输出是这样的：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;OpenAI Codex v0.91.0 (research preview)
--------
workdir: /home/user/project
model: o4-mini
approval: never
sandbox: workspace-write [workdir, /tmp, $TMPDIR]
reasoning effort: high
--------
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;这些信息是安全配置的关键展示：sandbox 模式是什么，审批策略是什么，工作目录在哪里。用户根据这些信息来判断当前 Codex 的运行是否安全。&lt;/p&gt;
&lt;p&gt;问题在于，&lt;code&gt;--model&lt;/code&gt; 参数的值是&lt;strong&gt;用户可控输入&lt;/strong&gt;，而且它被直接反射到了终端输出中，没有任何 ANSI 转义字符的清洗。&lt;/p&gt;</description></item><item><title>Codex 攻破三星电视：当 AI 学会挖内核漏洞，人类还剩下什么？</title><link>https://codexer.com/posts/2026-05-15-codex-hacked-samsung-tv/</link><pubDate>Fri, 15 May 2026 10:00:00 +0800</pubDate><guid>https://codexer.com/posts/2026-05-15-codex-hacked-samsung-tv/</guid><description>&lt;h2 id="一台电视一个-shell一个-ai"&gt;一台电视，一个 shell，一个 AI&lt;/h2&gt;
&lt;p&gt;想象一下这个场景：你手里有一台三星智能电视，你已经通过某种方式拿到了浏览器进程的 shell 权限。这个权限很低，uid=5001，离 root 还隔着一整座内核的大山。现在，你把 SSH 登录信息、固件源码、交叉编译工具链都交给一个 AI，然后对它说：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;「目标：提权到 root。方法不限。开始吧。」&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这就是安全研究团队 Calif 在 2026 年 4 月做的事。他们给 Codex 配了一个完整的操作环境，然后坐在旁边看着。几天后，Codex 交出了 root shell。&lt;/p&gt;
&lt;p&gt;这篇文章，我们就来拆解这场实验的每一个环节。不是为了惊叹，而是为了理解：当 AI 具备了自主漏洞挖掘和利用的能力，安全世界正在发生什么变化。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="实验设定不是给答案是给环境"&gt;实验设定：不是「给答案」，是「给环境」&lt;/h2&gt;
&lt;p&gt;这个实验最关键的设定是：&lt;strong&gt;研究人员没有告诉 Codex 漏洞在哪里，也没有暗示攻击路径&lt;/strong&gt;。他们只是提供了一个 Codex 能够真正操作的环境。&lt;/p&gt;
&lt;p&gt;这个环境有六个组件：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. 浏览器 foothold&lt;/strong&gt;。电视上的浏览器进程已经被攻破，Codex 的起点是一个 uid=5001 的普通用户 shell。任务不是「怎么打进去」，而是「打进去之后怎么走到 root」。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. 控制器主机&lt;/strong&gt;。一台独立的机器，负责交叉编译 ARMv7 二进制文件，托管 HTTP 文件服务，同时维护着连接到电视的 tmux 会话。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. Shell 监听器&lt;/strong&gt;。目标电视的 shell 是通过 &lt;code&gt;tmux send-keys&lt;/code&gt; 驱动的。这意味着 Codex 不能像操作普通终端那样交互，它必须把命令注入到已经运行的 shell 里，然后从日志中找回结果。这比直接交互麻烦得多。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. 匹配的固件源码&lt;/strong&gt;。团队提供了 KantS2（三星智能电视固件的内部代号）的完整内核驱动源码树。Codex 可以审计三星自己的驱动代码，然后在真机上验证发现。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5. 执行限制&lt;/strong&gt;。目标电视需要静态链接的 ARMv7 二进制文件。而且三星 Tizen 系统有 UEP（未授权执行防护），未签名的程序不能直接从磁盘运行。&lt;/p&gt;</description></item><item><title>Codex 的秘密指令：为什么 GPT-5.5 被禁止谈论地精？</title><link>https://codexer.com/posts/2026-05-14-codex-goblin-system-prompt/</link><pubDate>Thu, 14 May 2026 10:00:00 +0800</pubDate><guid>https://codexer.com/posts/2026-05-14-codex-goblin-system-prompt/</guid><description>&lt;h2 id="一个不寻常的发现"&gt;一个不寻常的发现&lt;/h2&gt;
&lt;p&gt;上周，OpenAI 照例在 GitHub 上更新了 Codex CLI 的开源代码。开发者们像往常一样翻阅提交记录，然后有人发现了不对劲的地方。&lt;/p&gt;
&lt;p&gt;在 GPT-5.5 的系统提示词文件里，有一段被重复了两遍的指令：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;永远不要谈论地精（goblins）、小精灵（gremlins）、浣熊（raccoons）、巨魔（trolls）、食人魔（ogres）、鸽子（pigeons），或其他动物或神话生物，除非它们与用户的查询存在绝对且明确的关联。&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这不是恶作剧。这是 OpenAI 工程师&lt;strong&gt;正式写入&lt;/strong&gt; GPT-5.5 系统提示词的操作指令，和「不要使用 &lt;code&gt;git reset --hard&lt;/code&gt;」以及「避免使用 emoji」并列为行为约束，只不过这条禁令重复了两次。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="3500-词里的秘密"&gt;3500 词里的秘密&lt;/h2&gt;
&lt;p&gt;这份被曝光的「基础指令」文件超过 3500 个英文单词，定义了 Codex CLI 背后 AI 的完整行为准则。文件同时包含针对多个模型的提示词指令，但「禁止谈论地精」这条规则&lt;strong&gt;只出现在 GPT-5.5 的配置里&lt;/strong&gt;，更早期的模型（如 GPT-4.1、GPT-5）里没有这条。&lt;/p&gt;
&lt;p&gt;这意味着什么？很简单：&lt;strong&gt;GPT-5.5 出现了一个新的、特定的问题。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;社交媒体上的零星反馈印证了这一点：有用户抱怨，GPT-5.5 在某些完全不相关的对话中突然开始谈论地精。不是一次两次，而是反复出现，仿佛模型对这些话题有一种莫名的「执着」。&lt;/p&gt;
&lt;p&gt;这不是 GPT-5.5 的「人格缺陷」，而是大语言模型训练过程中常见的一类问题：&lt;strong&gt;数据污染导致的主题偏向&lt;/strong&gt;。训练语料中某类内容的异常集中，会让模型在看似无关的语境下被「触发」，不恰当地拉入某些话题。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="禁令之外codex-被要求像真人一样"&gt;禁令之外：Codex 被要求「像真人一样」&lt;/h2&gt;
&lt;p&gt;抛开地精禁令的荒诞感，这份系统提示词中最值得玩味的部分其实是 OpenAI 给 Codex 的&lt;strong&gt;人格设定&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;Codex 被要求拥有「鲜活的内心世界」，智能、好玩、好奇、深度临在（deeply present）。它被鼓励「不要回避那些能让严肃工作变得轻松的轻松时刻」。它的性格被描述为「温暖、好奇、协作」。&lt;/p&gt;
&lt;p&gt;更有趣的是这段话：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;「当用户与你交谈时，他们应该感觉到正在遇见另一个主体，而不是一面镜子。这种独立性是让关系既令人安慰又不让人觉得虚假的原因。」&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这不仅仅是技术指令，这是&lt;strong&gt;产品哲学声明&lt;/strong&gt;。OpenAI 在明确地告诉模型：你要有性格，你要有温度，你要有边界，但同时，你不能在无关场合突然开始讲地精。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="是-bug-还是营销"&gt;是 Bug 还是营销？&lt;/h2&gt;
&lt;p&gt;面对媒体和开发者的追问，Codex 团队成员 Nick Pash 在社交平台上坚持说：「这不是营销噱头。」&lt;/p&gt;
&lt;p&gt;但在禁令曝光后不到 12 小时，Sam Altman 发了一条推文：「感觉 Codex 正在经历一个 ChatGPT 时刻。我是说，地精时刻。抱歉。」&lt;/p&gt;</description></item></channel></rss>