<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>观点 on AI博士 万戈</title>
        <link>https://www.yesmiracle.net/categories/%E8%A7%82%E7%82%B9/</link>
        <description>AI博士万戈的技术博客，聚焦 Agentic AI、AI Infra 与 Agent Security，分享 AI 基础设施与工程落地实践。</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <managingEditor>admin@yesmiracle.net (万戈)</managingEditor>
        <webMaster>admin@yesmiracle.net (万戈)</webMaster>
        <lastBuildDate>Fri, 09 Oct 2026 12:30:00 +1000</lastBuildDate><atom:link href="https://www.yesmiracle.net/categories/%E8%A7%82%E7%82%B9/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>生成式界面的时代：当模型直接生成软件，Coding Agent 该退场吗！</title>
        <link>https://www.yesmiracle.net/post/20261009-generative-ui-coding-agent-future/</link>
        <pubDate>Fri, 09 Oct 2026 12:30:00 +1000</pubDate>
        <author>admin@yesmiracle.net (万戈)</author>
        <guid>https://www.yesmiracle.net/post/20261009-generative-ui-coding-agent-future/</guid>
        <description>&lt;img src="https://www.yesmiracle.net/post/20261009-generative-ui-coding-agent-future/cover.svg" alt="Featured image of post 生成式界面的时代：当模型直接生成软件，Coding Agent 该退场吗！" /&gt;&lt;p&gt;10 月 7 日 GPT-6 上线那晚，我刷到一个挺有画面感的例子：你问它「帮我规划一次三口之家的周末露营」，它不先铺五百字清单，而是直接长出一张能点选的地图、一个「几个人去」的旋钮、一份跟着人数重算的物资表，外加一张能勾选的打包清单。你点点旋钮，数字当场变。&lt;/p&gt;
&lt;p&gt;同一周，A2UI、AG-UI 这些词在工程圈刷屏。有人兴奋，也有人慌。我被问得最多的一句是：&lt;strong&gt;既然模型能直接把界面吐出来，那我们搭的那堆 Coding Agent，是不是白搭了？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这个问题问得不对。但它错的方式很值得聊——因为它暴露了一个几乎所有人第一反应都会犯的错：把「生成界面」和「生成软件」当成了一回事。而这两样东西之间，隔着一个完整的产业。&lt;/p&gt;
&lt;h2 id=&#34;先看-openai-到底把什么塞进了模型&#34;&gt;先看 OpenAI 到底把什么塞进了模型&lt;/h2&gt;
&lt;p&gt;先说一个被几乎所有报道漏掉的细节。OpenAI 在开发者社区的发布说明里写了这么一句：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Intelligent UI appears progressively: &lt;strong&gt;a library of native components and a compiler&lt;/strong&gt; display the interface as the model generates it.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;翻译过来就是：模型负责吐，但它是吐给一套「原生组件库 + 编译器」去渲染的。&lt;strong&gt;界面不是从模型权重里长出来的，是模型产出一份声明式的规格（spec），再由模型外面的一套东西编译出来。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这条细节是整件事的地眼。如果模型真能「在内部生成软件」，OpenAI 根本不需要再发一套组件库和编译器——它发这套东西这个动作本身，就是在承认：生成界面需要的运行时，在模型外面。模型只是那个决定「这次用文本、图表还是表单」的大脑，真正把它变成可点可用的东西的，是另外一套基础设施。&lt;/p&gt;
&lt;p&gt;我在&lt;a class=&#34;link&#34; href=&#34;https://www.yesmiracle.net/post/20261008-generative-ui-a2ui-protocol-deep-dive/&#34; &gt;昨天那篇生成式 UI 的拆解&lt;/a&gt;里把 A2UI 的协议层翻了一遍，那篇讲的是「怎么生成」。这篇往前退一步，聊两件更底层的事：&lt;strong&gt;模型这次到底生成了什么，以及它没有生成什么。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;生成式界面生成的是最后一屏不是软件&#34;&gt;生成式界面生成的是「最后一屏」，不是软件&lt;/h2&gt;
&lt;p&gt;一个能跑的表单，看着就很像软件。但它和软件之间，差着一堆没人愿意提的东西。&lt;/p&gt;
&lt;p&gt;我把这两类产物的差别摊开：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;维度&lt;/th&gt;
          &lt;th&gt;生成式界面吐出来的东西&lt;/th&gt;
          &lt;th&gt;Coding Agent 交付的软件&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;生命周期&lt;/td&gt;
          &lt;td&gt;一次对话，用完即弃&lt;/td&gt;
          &lt;td&gt;数月到数年，持续演进&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;状态&lt;/td&gt;
          &lt;td&gt;会话内，通常无持久状态&lt;/td&gt;
          &lt;td&gt;有数据库、有迁移、有历史数据&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;责任主体&lt;/td&gt;
          &lt;td&gt;用户自己看着办&lt;/td&gt;
          &lt;td&gt;有人签名、有人 on-call&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;可版本化&lt;/td&gt;
          &lt;td&gt;不可（每次重新生成）&lt;/td&gt;
          &lt;td&gt;可（git、可 review、可回滚）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;分发&lt;/td&gt;
          &lt;td&gt;不分发，就地渲染&lt;/td&gt;
          &lt;td&gt;打包、发布、有依赖和兼容问题&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;出错代价&lt;/td&gt;
          &lt;td&gt;刷新一下重来&lt;/td&gt;
          &lt;td&gt;事故、数据损坏、SLA 违约&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;左边这一列，本质是**「把结果翻译成界面」这一层**被自动化了。你查个航班，它不再把 JSON 塞回给模型写一段散文，而是直接渲染一张带真实数据的卡片。这很爽，但它解决的是「结果怎么呈现」，不是「系统怎么存在」。&lt;/p&gt;
&lt;p&gt;右边这一列，才是软件工程真正吃力的地方——身份、状态、权限、迁移、相容、故障恢复。这些东西生成式界面一个都没碰。它吐的是软件的「最后一屏」，不是软件本身。&lt;/p&gt;
&lt;h2 id=&#34;软件史就是翻译层不断被吃掉的历史&#34;&gt;软件史，就是翻译层不断被吃掉的历史&lt;/h2&gt;
&lt;p&gt;「上一层要退场了」这句话，我听了快二十年。&lt;/p&gt;
&lt;p&gt;写汇编的听说编译器来了，写编译器的听说框架来了，写框架的听说低代码来了，写低代码的听说生成式 AI 来了。每一代都有人笃定地说：这回轮到[上一层]退场了。但真实发生的事情，一直在重复同一个模式——&lt;strong&gt;被压到接近零的，永远是「把意图翻译成实现」这一层；被创造出来的，永远是「定义意图」和「判定对错」这两层。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;我把这条线拉成一张表：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;阶段&lt;/th&gt;
          &lt;th&gt;被压到接近零的工作&lt;/th&gt;
          &lt;th&gt;被创造出来的新工作&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;机器码 → 高级语言&lt;/td&gt;
          &lt;td&gt;手写寄存器分配、内存寻址&lt;/td&gt;
          &lt;td&gt;写编译器、定语言规范&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;高级语言 → 框架&lt;/td&gt;
          &lt;td&gt;手搭基础设施、样板代码&lt;/td&gt;
          &lt;td&gt;定架构约定、设计模式评审&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;框架 → 低代码&lt;/td&gt;
          &lt;td&gt;拖拽式页面搭建&lt;/td&gt;
          &lt;td&gt;设计组件库、定义业务规则&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;低代码 → 生成式 UI&lt;/td&gt;
          &lt;td&gt;手写结果页、图表、表单&lt;/td&gt;
          &lt;td&gt;定义组件目录、校验生成物&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;看懂这张表，你就明白了 Coding Agent 的处境。&lt;strong&gt;它不是翻译层的受害者，它是翻译层的产物。&lt;/strong&gt; 它的工作，本来就是「把人类意图翻译成能跑的代码」——这件事的边际成本，从 2023 年到现在一直在暴跌。生成式界面只是又往下咬了一口，吃的是「结果页」这一块。&lt;/p&gt;
&lt;p&gt;那被吃掉之后，Coding Agent 会消失吗？不会。它会&lt;strong&gt;换一种活法&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id=&#34;coding-agent-不会退场它会沿着责任时长分叉&#34;&gt;Coding Agent 不会退场，它会沿着「责任时长」分叉&lt;/h2&gt;
&lt;p&gt;这是我的第一个判断，也是我认为最该记住的一条：判断一份实现工作归谁，标准不是「难不难」，而是「&lt;strong&gt;这份工作的责任要持续多久&lt;/strong&gt;」。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;责任时长 = 一次对话&lt;/strong&gt;（查个东西、算个数、做张图看一眼）→ 归生成式界面。用完即弃，错了刷新。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;责任时长 = 一次任务&lt;/strong&gt;（改一个模块、跑一次迁移、生成一份报告）→ 归 Coding Agent。它要能重试、能回滚、能给你一个可 review 的 diff。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;责任时长 = 一年以上&lt;/strong&gt;（一套要长期演进、要兼容旧数据、要有人背锅的系统）→ 归人 + Coding Agent 协作。这一层需要架构取舍和长期判断，生成式界面连门都摸不到。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以 Coding Agent 的真实走向不是「退场」，是&lt;strong&gt;沿这条线分叉&lt;/strong&gt;：短周期、低责任的实现被生成式界面吸走；它自己往上走，被推到长周期、高责任那一侧。它从「打字员」变成「工程约束的提供者」——负责的不是敲出代码，而是告诉模型「边界在哪、什么算对、出事了谁负责」。&lt;/p&gt;
&lt;p&gt;顺带说一句我自己的观察：模型越会写软件，「约束」这件事就越值钱。当生成代码的成本趋近于零，稀缺的就反过来变成&lt;strong&gt;定义「什么算对」和「出事谁扛」的能力&lt;/strong&gt;。这跟一个老工程原则是一回事——越自动化的系统，越需要有人守着它的失败模式。&lt;/p&gt;
&lt;h2 id=&#34;顺手拆掉一个被说反的说法harness-会沉进模型吗&#34;&gt;顺手拆掉一个被说反的说法：harness 会沉进模型吗&lt;/h2&gt;
&lt;p&gt;顺着这个分叉，还有一个更技术、也更容易带偏的说法在传：「以后 agent 的 harness 会进到大模型内部」。这个方向同样反了，而且比上面那个更容易骗到懂技术的人。&lt;/p&gt;
&lt;p&gt;先说 harness 是什么：编排循环、工具调用、持久状态、重试与幂等、凭据与权限、执行沙箱、审计取证。它想「装进模型」，得先过三道硬约束：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;状态&lt;/strong&gt;。权重是冻结的，上下文是一次性的。跨会话的持久状态、可恢复的流程、幂等的重试，只能落在模型外面的运行时里。模型没有记忆，记性在别处。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;确定性&lt;/strong&gt;。模型是概率函数，harness 需要的是确定性的控制流、熔断、失败保证。让一个天然随机的组件去承担确定性的职责，是把螺丝刀当锤子用。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;信任边界&lt;/strong&gt;。harness 一旦进模型、进厂商，你的凭据、数据、执行就都交了出去。任何碰到敏感数据的场景，都不会接受这一条。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以现实不是 harness 沉进模型，而是它被&lt;strong&gt;劈成两半&lt;/strong&gt;：呈现的那一半被平台吸走、商品化——你不再拥有自己的界面层；执行与治理的那一半被挤出模型，而且更重、更值钱。这两半里，前面那半就是 OpenAI 那套「组件库 + 编译器」，后面那半才是真正决定 agent 能不能进生产的部分。一篇文章要是把这两半读成一件事，就会得出「harness 进模型了」这种把方向读反了的结论。&lt;/p&gt;
&lt;h2 id=&#34;接下来一年我会盯这三个信号&#34;&gt;接下来一年，我会盯这三个信号&lt;/h2&gt;
&lt;p&gt;判断我上面这些判断对不对，不需要等太久。我会盯三个不那么性感、但很硬的信号：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;信号一：组件规格会不会变成事实标准。&lt;/strong&gt; 现在有开放的（A2UI、MCP-UI），也有围墙式的（OpenAI 自家的原生目录）。哪一边先把默认目录做成大家都绕不过去的东西，谁就定义了所有人用生成式界面时的默认积木。协议是免费的，目录是权力。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;信号二：「界面注入」会不会变成一个正式的安全类别。&lt;/strong&gt; 当模型能吐会提交的表单，一次不受信任的输入就能让界面长出一个诱导你点击的按钮。危险的不是那张图，是那个会触发真实动作的控件。如果这一年里它开始出现在安全厂商的威胁清单上，说明这条链真的在往生产里走。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;信号三：企业采购的问题会不会换。&lt;/strong&gt; 如果它从「哪个模型强」变成「证明这个 agent 做了什么、用谁的授权、碰了哪些数据」，那就说明价值确实迁到了验证和取证那一层——而那一层，模型自己够不着。&lt;/p&gt;
&lt;p&gt;三个信号里，只要有两个往我这边走，我就更有底气说：被替代的是环节，不是职业。&lt;/p&gt;
&lt;h2 id=&#34;对软件产业有三记实锤&#34;&gt;对软件产业，有三记实锤&lt;/h2&gt;
&lt;p&gt;上面是分工逻辑，下面说三个我认为会真实发生的产业变化。判断依据是「交付单元」这个词，它正在变。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第一，SaaS 的「壳」在变浅。&lt;/strong&gt; 过去一批 SaaS 的护城河，是它提前把那套界面搭好了——你懒得自己写，就订阅它。预置界面（pre-built UI）本身就是价值。可当每个用户都能用一句话原地生成自己想要的界面时，「我帮你把界面搭好」这件事的溢价会被压薄。价值会往下沉：沉到数据、沉到后端、沉到「这件事我敢替你负责」的信任上。界面是壳，壳会变浅，但壳里的东西反而更值钱。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第二，「为一个人、一次任务」的软件会成为一个真实品类。&lt;/strong&gt; 我暂时叫它 software-for-one。它没有版本号、没有用户群、不进任何 marketplace、不需要维护——它只服务这一次需求，交付完就消失。这在旧世界里是不可想象的，因为写一份软件的成本太高，必须靠规模摊薄。成本趋零之后，「一次性软件」在经济学上第一次成立了。这不是「软件的终结」，是软件的&lt;strong&gt;碎片化&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第三，稀缺资源从「会写代码的人」换成了「能定义正确性边界的人」。&lt;/strong&gt; 这一条我觉得最容易被低估。代码生成成本归零，不等于软件免费——它等于&lt;strong&gt;评判软件对不对的成本，成了新的瓶颈&lt;/strong&gt;。谁能定义出「这段生成物在什么条件下算可信」，谁就卡住了这条链的咽喉。这也是为什么我越来越觉得，未来 AI infra 里增长最快的，不会是最会生成的那一层，而是最会&lt;strong&gt;验证&lt;/strong&gt;的那一层。&lt;/p&gt;
&lt;p&gt;说到这里得泼盆冷水。这波最大的赢家，大概率不是做「生成式界面」这件事的公司——生成能力谁都能做，两周就能被抄。真正通吃的是把它做成&lt;strong&gt;默认入口&lt;/strong&gt;的大厂：GPT-6 免费铺给 12 亿周活用户，等于把「生成界面」变成了自来水。创业公司在这条光谱上，做通用能力没有分发，只有扎根到大厂懒得进、或进不去的角落才有活路。分发，还是分发。&lt;/p&gt;
&lt;h2 id=&#34;什么情况下我上面这些判断是错的&#34;&gt;什么情况下，我上面这些判断是错的&lt;/h2&gt;
&lt;p&gt;我不想只写「未来会更复杂」这种永远正确的废话。所以给一个可以被证伪的条件。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Coding Agent 真要退场的必要条件是：模型能够自主地理解模糊需求、做出架构取舍、保证长期演进不腐化、并且能为 bug 承担责任。&lt;/strong&gt; 这四件事里，只要还有一件模型做不到，它就得在场。&lt;/p&gt;
&lt;p&gt;而生成式界面这一波的进展，恰恰全发生在&lt;strong&gt;另一侧&lt;/strong&gt;——短周期、无状态、低担责。它越成功，暴露出的越是它够不着的那些场景。换句话说：生成式界面每吃掉一块「轻松的实现」，就反过来把「困难的实现」衬托得越贵。这两条不是竞争关系，是&lt;strong&gt;跷跷板&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;认清这点，你就不会因为「模型会生成软件了」而慌。被替代的从来不是某个工具，是某个环节。而环节被替代之后，人往上游走一格——这是过去五十年的固定剧本，没有一次例外。&lt;/p&gt;
&lt;h2 id=&#34;写在最后&#34;&gt;写在最后&lt;/h2&gt;
&lt;p&gt;回到那个露营的例子。那张能点选的地图，确实很惊艳。但惊艳过后我注意到一件事：它生成了「怎么展示这次露营」，没有生成「谁来保证这张地图上的营地是对的、开放的、安全的」。&lt;/p&gt;
&lt;p&gt;模型能生成一个界面，生成不了一套&lt;strong&gt;可信赖的系统&lt;/strong&gt;。可信赖意味着可验证、可回滚、有人签名、出错有人负责。这些不是界面生成能解决的，是软件工程从第一天起就在解决的问题。&lt;/p&gt;
&lt;p&gt;所以「Coding Agent 退场」是个伪命题。真正会退场的，是「&lt;strong&gt;手写界面&lt;/strong&gt;」这件事本身——而它，恰好是很多工程师身份认同的一部分。你会看到一部分人把这场变化读成「我的工作没了」；但更准确的读法是：&lt;strong&gt;一个把界面当手艺的时代结束了，一个把约束当手艺的时代开始了。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;焦虑的对象从来不是工具，是身份。而身份这东西，从来都是自己重新定义的，不是模型替你生成的。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;相关阅读&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.yesmiracle.net/post/20261008-generative-ui-a2ui-protocol-deep-dive/&#34; &gt;《GPT-6 的回答里开始长出按钮了：生成式 UI 拆解，以及 A2UI 想当成的那层「标准」！》&lt;/a&gt; —— 上一篇把生成式 UI 的协议层拆开，这篇聊它对软件产业意味着什么&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.yesmiracle.net/post/20261006-uhp-unified-harness-protocol-deep-dive/&#34; &gt;《UHP 深度拆解：继 MCP 之后，Agent Harness 也要有自己的协议了！》&lt;/a&gt; —— 编排与治理层为什么注定要独立于模型之外&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.yesmiracle.net/post/20261008-agent-approval-permission-layer/&#34; &gt;《「在聊天框里点确认」撑不住了：Agent 的审批和权限，正在长成独立的一层》&lt;/a&gt; —— 当界面开始生成「动作」，谁来决定这次点击是否被允许&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
