<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>AI on Codexer</title><link>https://codexer.com/tags/ai/</link><description>Recent content in AI on Codexer</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Fri, 26 Jun 2026 09:00:00 +0800</lastBuildDate><atom:link href="https://codexer.com/tags/ai/index.xml" rel="self" type="application/rss+xml"/><item><title>AI 编程助手的五个 Token 黑洞，以及如何堵上它们</title><link>https://codexer.com/posts/2026-06-26-token-waste-black-holes/</link><pubDate>Fri, 26 Jun 2026 09:00:00 +0800</pubDate><guid>https://codexer.com/posts/2026-06-26-token-waste-black-holes/</guid><description>&lt;p&gt;你正在让 AI 编程助手处理一个真实的 bug。它已经理解了整个仓库的结构，面前是一个失败的测试用例，下一轮对话就能给出修复方案。突然，它停了。没有错误提示，没有预警，只有一个冰冷的提示框：使用额度已耗尽。&lt;/p&gt;
&lt;p&gt;最让人沮丧的不是任务没完成，而是烧掉 Token 限额的，大概率不是你真正需要的工作内容。真凶往往是重复的上下文、丢失的缓存、臃肿的工具定义、过度强大的模型，以及持续膨胀的对话历史。&lt;/p&gt;
&lt;p&gt;大多数 Token 浪费是&lt;strong&gt;机械性的&lt;/strong&gt;，而不是智力性的。要堵上这些漏洞，首先得理解上下文是怎么被发送、缓存、重复和计费的。&lt;/p&gt;
&lt;h2 id="脑内模型每次对话都是一次重新认识"&gt;脑内模型：每次对话都是一次「重新认识」&lt;/h2&gt;
&lt;p&gt;很多人下意识地以为 AI 编程助手在连续对话时，会像人类一样「记住」之前的交流。事实恰恰相反。&lt;/p&gt;
&lt;p&gt;每一次你发送消息，助手都会把一整套上下文重新打包发给模型：系统指令、工具定义、历史对话、文件片段、工具执行结果，以及它认为有帮助的任何信息。模型并不会从一个「私人记忆」里延续上一轮的状态，它需要&lt;strong&gt;重新读一遍&lt;/strong&gt;整个 prompt。&lt;/p&gt;
&lt;p&gt;所以真正的消耗公式不是「我让它做了多少事」，而是：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;每轮 Token 消耗 × 回合数
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;浪费，就发生在这个乘积和实际工作需要之间的落差里。下面是我观察到的五个最显著的泄漏点。&lt;/p&gt;
&lt;h2 id="漏洞一prompt-缓存频频失效"&gt;漏洞一：Prompt 缓存频频失效&lt;/h2&gt;
&lt;p&gt;Prompt 缓存是所有优化手段中杠杆效应最高的。道理很简单：编码助手的对话里充满了重复内容，系统 prompt、工具定义、代码摘要、历史消息，这些东西从前一轮到后一轮几乎不变。&lt;/p&gt;
&lt;p&gt;主流模型提供商都对重复的 prompt 前缀提供大幅折扣。Claude Opus 的标准输入价格是每百万 Token 5 美元，而缓存读取只要 0.5 美元，差了 10 倍。OpenAI 的缓存输入定价逻辑类似，重复的前缀 Token 比全新输入便宜得多。&lt;/p&gt;
&lt;p&gt;一个关键的健康指标是&lt;strong&gt;缓存命中率&lt;/strong&gt;：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;缓存命中率 = 缓存读取 / (缓存读取 + 缓存创建 + 未缓存输入)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;在一个正常的编码会话中，这个值应该很高。如果偏低，说明你在为模型刚刚才看过的内容支付全价。&lt;/p&gt;
&lt;p&gt;最常见的「自毁缓存」行为包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;频繁修改 prompt 开头的上下文。&lt;/li&gt;
&lt;li&gt;在稳定内容前面注入动态状态、时间戳、或变化的进度文本。&lt;/li&gt;
&lt;li&gt;每轮对话之间重新排列工具定义或 MCP 工具 schema。&lt;/li&gt;
&lt;li&gt;把大文件整段粘贴到对话里，而不是让助手按需读取。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;修复方式并不复杂：把 prompt 的&lt;strong&gt;前缀&lt;/strong&gt;保持稳定，把可变信息往后放。不要把系统上下文每轮都洗牌重来。把工具定义当成热路径的一部分来管理，因为它们确实就是热路径。&lt;/p&gt;
&lt;h2 id="漏洞二上下文持续膨胀"&gt;漏洞二：上下文持续膨胀&lt;/h2&gt;
&lt;p&gt;长上下文是很有用，但它不是免费的。对话中保留的每一段内容，都会被带入下一轮，除非助手主动压缩或丢弃。&lt;/p&gt;
&lt;p&gt;一个典型的坏模式很容易识别：你让助手做一个任务，任务途中变成了三个任务；调试演变成了实现，实现又变成了发版说明。两小时前的完整考古记录还安安稳稳地躺在上下文里。&lt;/p&gt;
&lt;p&gt;操作方法：比较前五个回合和后五个回合的平均输入长度。如果后面的回合大了两倍以上，且对话已经超过约 30K Token，那你大概率在每一轮都交了「长上下文税」。&lt;/p&gt;</description></item><item><title>Codex Record &amp; Replay：AI 终于学会「看一遍就会做」</title><link>https://codexer.com/posts/2026-06-25-codex-record-replay-workflow/</link><pubDate>Thu, 25 Jun 2026 09:00:00 +0800</pubDate><guid>https://codexer.com/posts/2026-06-25-codex-record-replay-workflow/</guid><description>&lt;p&gt;你是一名内容创作者，每周要在 YouTube 上传五六个视频。每次上传的流程一模一样：选中视频文件，填标题，写描述，选缩略图，上传字幕，设置隐私选项。你重复了很多次，闭着眼睛都能点完。&lt;/p&gt;
&lt;p&gt;现在想象你打开 Codex，把这个流程从头到尾做了一遍。然后你告诉它：「以后就这么上传」。&lt;/p&gt;
&lt;p&gt;第二天，你只需要把视频文件放在指定文件夹，Codex 自动把剩余工作全部完成。&lt;/p&gt;
&lt;p&gt;这不是什么遥远的设想。OpenAI 在 2026 年 6 月为 Codex 推出了一个叫 &lt;strong&gt;Record &amp;amp; Replay&lt;/strong&gt; 的功能，核心逻辑简单到只有一句话：&lt;strong&gt;演示一次，永久自动执行。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="什么是-record--replay"&gt;什么是 Record &amp;amp; Replay？&lt;/h2&gt;
&lt;p&gt;Record &amp;amp; Replay 是 Codex 桌面端（macOS）的一项新能力。它让 AI 不再依赖你写的提示词或脚本，而是直接「看」你操作。&lt;/p&gt;
&lt;p&gt;你打开 Record 模式，像平时一样走完一个工作流。Codex 会捕捉整个过程中所有的鼠标点击、文件选择、文本输入和界面交互。录制结束后，这个工作流就变成了一个可复用的「技能（skill）」，存储在 Codex 的配置里。下次你想执行相同的任务，只需要触发这个技能，Codex 就能独立完成全部步骤。&lt;/p&gt;
&lt;p&gt;OpenAI 官方演示的场景是 YouTube 视频上传：选中 .mp4 文件，填入标题和描述，上传缩略图，加载 .srt 字幕文件，最后将视频设为「不公开」。Codex 完整捕获了这组操作，随后成功独立复现。&lt;/p&gt;
&lt;p&gt;比简单回放更进一步的是，Codex 不只是记住了「点击哪里」，它还学会了判断逻辑。比如在隐私设置里，它理解「Private」「Unlisted」「Public」三种选项的区别，能够根据上下文选择正确的可见性。当字幕文件的 Python 处理环境缺失时，它还能从已安装的 skill 目录中直接读取回退方案，而不是报错后干等。&lt;/p&gt;
&lt;h2 id="看一遍就会意味着什么"&gt;「看一遍就会」意味着什么？&lt;/h2&gt;
&lt;p&gt;过去我们让 AI 干活，靠的是两种方式：要么写好 prompt 描述需求，要么写好脚本定义流程。这两种方式的共同问题是，它们都要求你&lt;strong&gt;预先知道&lt;/strong&gt;怎么用语言或代码表达一个任务。&lt;/p&gt;
&lt;p&gt;Record &amp;amp; Replay 打破了这个前提。&lt;/p&gt;
&lt;p&gt;你不需要知道怎么「描述」上传 YouTube 视频的步骤，你只需要正常上传一次就行。就跟教实习生一样：别跟我说，看我怎么做的就行。&lt;/p&gt;
&lt;p&gt;这对非技术用户尤其友好。一个市场人员想批量发布社交内容，一个 HR 想定期整理候选人数据，一个财务分析师想反复生成同一份报表，他们不需要学 Python，不需要写 prompt，只要做一遍就好。从这个角度看，Record &amp;amp; Replay 把 AI 自动化的门槛从「会编程」拉低到了「会用电脑」。&lt;/p&gt;</description></item><item><title>Flask 之父深度解析：AI 编程的「循环革命」已经来了</title><link>https://codexer.com/posts/2026-06-24-ai-coding-loop-revolution/</link><pubDate>Wed, 24 Jun 2026 09:00:00 +0800</pubDate><guid>https://codexer.com/posts/2026-06-24-ai-coding-loop-revolution/</guid><description>&lt;p&gt;想象这样一个场景：你打开终端，不再跟 AI 助手一对一对话。你启动的是一个「循环」，它会自己拆解任务，自己调工具，自己判断是否完成，如果没完成，就再来一轮。等你喝完咖啡回来，代码已经写好了，review 也做完了，patch 也合入了 main 分支。&lt;/p&gt;
&lt;p&gt;你甚至不知道中间发生了什么。&lt;/p&gt;
&lt;p&gt;这不是科幻。Flask 和 Jinja2 的创造者 Armin Ronacher 在 2026 年 6 月 23 日发表了一篇题为《The Coming Loop》的长文，指出 AI 编程正在经历一场从「人在循环中」到「循环接管一切」的范式转移。&lt;/p&gt;
&lt;p&gt;这篇文章在 Hacker News 上引发了激烈讨论，300 多赞，200 多条评论。以下是我对原文的梳理和延伸思考。&lt;/p&gt;
&lt;h2 id="两种循环agent-loop-与-harness-loop"&gt;两种循环：Agent Loop 与 Harness Loop&lt;/h2&gt;
&lt;p&gt;Ronacher 区分了两种性质截然不同的循环。&lt;/p&gt;
&lt;p&gt;**Agent Loop（代理层循环）**是每个 AI 编程工具内部都有的那一层：模型调一个工具，拿到结果，再调下一个工具，读文件，改文件，跑测试，最后输出答案。Codex、Claude Code、Cline，这些工具的核心都是这样工作的。这个循环我们已经很熟悉了。&lt;/p&gt;
&lt;p&gt;**Harness Loop（架构层循环）**则是一个外层的、更高阶的循环。它不关心单次对话的结束，而是把一个任务放进队列，让机器去执行，执行完之后，由 harness（可以理解为「调度器」或「评价器」）来判断：这真的是终点了，还是需要再来一轮？如果不够好，harness 可以继续当前会话、注入新消息、启动新的 session、甚至把任务转发给另一台机器。&lt;/p&gt;
&lt;p&gt;打个比方：Agent Loop 像是一个工人在车间里操作各种设备完成一个零件，Harness Loop 则像是车间经理，在流水线的尽头检查零件质量，不合格就打回去重做，或者重新分配任务。&lt;/p&gt;
&lt;p&gt;Ronacher 引用了 Boris Cherny 的一句话：「我已经不再直接跟 Claude 对话了。我写循环，让循环去跟 Claude 对话。」&lt;/p&gt;
&lt;h2 id="循环已经在哪些领域大杀四方"&gt;循环已经在哪些领域大杀四方？&lt;/h2&gt;
&lt;p&gt;Ronacher 是诚实的。尽管他对这种趋势持保留态度，他清楚地看到了循环模式在特定场景下的惊人效果。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;代码迁移&lt;/strong&gt;是最亮眼的例子。最轰动的是 Bun 从 Zig 到 Rust 的大规模迁移工作。这本质上是一种机械翻译：给定一个已有的、经过验证的代码库，让 AI 逐段翻译成另一种语言。验证标准非常明确，要么编译通过并且行为一致，要么就不行。Ronacher 自己用这种方式把 MiniJinja 从 Rust 迁移到了 Go，效果出色。&lt;/p&gt;</description></item></channel></rss>