跳到主要内容

软件的下一张脸 — LLM 原生界面的三种形态

这一章讲三件事: 为什么现有软件的界面公理(LLM 时代之前无人质疑)会失效; 三种把 LLM 装进软件的形态各需要什么构件; 以及这本书最后留给开发者的一个泼冷水式收尾。 读完你会发现:前面十一章的每一块积木,在这章都找到了自己的岗位—— 这就是「全书一条线」的最后一块拼图。

1. 先看现象:最可靠的机器,开始「稍微差一点」

计算机从诞生起就立了一条铁规矩:同一组指令,每次执行,结果一致。 几十年下来,这条规矩长进了每一层人机界面的设计里1

LLM 第一次破坏了它,而且是双向破坏:一方面它空前宽容——错别字、口误、 含糊其辞都能接住;另一方面,接得住不精确输入的机器, 也会产出不精确的输出——这在此前的一切计算里从未发生过2

于是作者用两个我们天天在用的软件做对照实验。Figma(设计工具)和 Word(文字处理) 长得再不同,界面骨架是同一个:一栏工具与预制件(线条/形状/表格/批注), 加一块画布(组装成品的地方)3。这套骨架有个从未被说破的前提: 软件的全部能力,在设计界面那一刻就是已知的——每个零件都是工程师预先写好的4。 LLM 应用恰好不满足这句话:它下一秒能做的事,取决于模型当场生成什么。

作者的态度是开放的:答案还没定,「尘埃落定还需要很长时间」,本章只给三种候选形态5

2. 顶层全景

形态一 形态二 形态三
侧边聊天 ▶ LLM 当协作者 ▶ 环境计算
(旁听参谋) (共享文档里的同事) (后台值守的哨兵)
最容易嫁接 要状态共享+任务管理 要触发器+长期记忆+反思

图说:三种形态按改造难度递增排列,边界在「并发关系」:
形态二里人和 LLM 同时干活互相喂养;形态三里 LLM 持续后台运转,
人各干各的。

3. 核心原理

3.1 形态一:侧边聊天(Interactive Chatbot)

最省力的嫁接:在现有应用旁边挂一个「AI 参谋」,正事还在原来的界面里干。 样本是 GitHub Copilot Chat——VSCode 侧边栏里那个对话框6

第一步升级是打通两者:参谋能「看见」当前打开的文件和你选中的片段; 反过来它也能往编辑器里插入或修改文字——双向通信让旁听变搭档7

要搭最小可用版,作者给的两样东西是教科书式的回顾8:chat model(对话微调天生适配多轮) 加对话历史——原话很妙:「得能 get past hello」(过了「你好」还能聊下去), 说的正是第 5 章那套记忆机制。进阶三件套同样全是旧相识: 流式输出缓解延迟体感(第 9 章);把画布暴露成工具—— 「get selected text」「insert text at end of doc」——让模型能动主界面(第 7 章); 一旦工具能改画布,就得配人机确认(第 9 章的 authorize)9

作者埋了一个值得单独端走的判断:流式聊天是当下 LLM 应用的原型形态, 几乎总是开发者学的第一课、公司加的第一功能;但另一种历史也可能上演—— 它成为 LLM 时代的命令行:最接近直接编程的通道, niche 而长存, 就像图形界面时代命令行的命运10

3.2 形态二:LLM 当协作者(Collaborative Editing)

第二种形态把 LLM 塞进「多人协作文档」的座位上——它不再是对话框,而是一个用户。 作者先铺了一段协作方式演化史,三级台阶11:

台阶机制代表
save and send单人编辑完「击鼓传花」Office 全家桶
version control各编各的,事后合并+解冲突Git/GitHub
real-time collaboration同文档同编辑,互相看得见Google Docs

LLM 的坐姿有两种:常驻副驾(不断给你补全下一句)与慢工写手(你说需求,它回头交稿) (领了任务去调研,稍后交回一节可直接并入的稿子)12

要让它真的坐进协作位,需要六样构件——逐个点名你会发现这就是全书目录13:

构件对应已学机制
共享状态第 5 章:LLM 读得懂文档状态、产得出兼容格式的编辑
任务管理器多步任务会失败在半路,要排队/恢复/可干预
合并分叉人继续改文档,LLM 的产出要么像 Git 那样手工并,要么像 Google Docs 用 CRDT/OT(OT 即 operational transformation:记录双方的编辑操作、换算顺序后无冲突重放)自动并
并发控制打断、取消、改道、排队——第 9 章五种并发策略逐一登场
撤销重做栈用户反悔要回头,LLM 应用必须跟得上(第 9 章的 fork/历史回放)
中间输出增量送达让合并容易得多——像人写作也是一句一句出的

对照读法:第 9 章那张并发策略表,原来早为这一章埋好了伏笔。

3.3 形态三:环境计算(Ambient Computing)

第三种形态里用户根本不看屏幕:LLM 常驻后台,遇到「值得你注意的事」才出声。 现成的原型是券商 App 的价格警报、Google Alerts、基础设施告警14

这类产品普及的瓶颈,作者的判断相当清醒:难在事先给「有趣」下定义, 而定义必须同时满足两个互相打架的性质——有用(该提醒时真的提醒) 和可行(没人愿意预先配置无穷多的规则)15。 LLM 会盘 reasoning——会琢磨——这件事恰好同时改善两头:能识别更多你真正觉得有意思的事, 还省掉了手工规则配置16

与形态二的分界线只有一个词:并发关系。协作是「你和我同时干活、互相取料」; 环境计算是「我持续在后台干活,你干你的」17

它的构件清单五项18:触发器(接收或轮询环境的新信息——这正是形态存在的理由)、 长期记忆(没有「以前收到过什么」的底账,就没有「新」可言—— 注意,这是第 5 章被小结点名却没兑现的 summarize 之外,记忆拼图补上的另一半)、 反思/学习(每次「有趣事件」之后更新长期记忆,修改判断「有趣」的内部规则—— 第 8 章的 reflect 在这里变成在线学习)、摘要输出(后台 agent 的产出远超你想看的, 只上报新增与要紧的)、任务管理器(持续运转就要排队与容错)。

4. 作者的判断与证据

  • 「界面公理失效」是全章的立论,论据是 Figma/Word 的结构对照加一句常识性的反证34—— 属于设计评论而非实证研究。
  • Copilot Chat 是侧聊形态的唯一实例,share 出的六构件清单是规范式主张(「you'd likely need」), 没有对应实现或原型。
  • 「流式聊天成为 LLM 时代的命令行」是作者自己的两种结局推演之一,并配有判据 (它最接近直接编程)10——这是个可跟踪的预言。

判断(我们的,不是书里的): 本章真正的落点不是三种形态,而是作者结尾那句话—— 「没有捷径。你真的需要先造个粗糙的东西、和用户聊、再不断重复」19。 前面十一章给了积木和图纸,但「哪种组合是对的」只有投放给真实用户才能见分晓; 这与第 11 章「灰度一石三鸟」是同一句话的工程版与产品版。 如果错,会错在: 若某些领域(如高风险行业)根本不允许「先造个粗糙的」上线, 「边上线边改出来」的路线就不适用——那时需要的是仿真环境与离线评测替代真实反馈, 而这恰是本书没有覆盖的部分。

5. 边界与局限

  • 三形态都停在构件清单级,没有一节给出哪怕最简的实现代码——与全书其他章的风格差异明显。
  • 「关于作者」页交代了利益关系(Nuno 是 LangChain 公司创始工程师; Mayo 是 LangChain 早期贡献者与倡导者)20——本章面向未来的展望, 读时同样要把愿景与既得利益分开。
  • 环境计算的「反思→修改判断规则」属于自学习闭环,书里没有讨论其失控面 (规则被错误事件污染怎么办)。
  • 全书至此的隐藏线索可以收口了:第 5 章小结提到却未实现的 summarize, 在本章以「摘要输出」构件回归;两个「许诺」合起来,指向的是同一块短板:长期记忆管理。 这本书在该话题上只有钩子,没有正文。

6. 可带走的

  1. 旧界面的隐藏公理是「功能事先已知」——LLM 应用第一个打破的就是它;
  2. 嫁接难度三档:侧聊 < 协作者 < 环境计算,按改造预算选起点而不是选最炫的;
  3. 侧聊的最小配置=chat model+记忆,「能过 hello 之后的第二轮」才算及格;
  4. 把主界面暴露成工具(get selected text / insert text),旁听参谋升级成搭档;
  5. 协作史三级台阶(save-send → 版本控制 → 实时协作)是给 LLM 选「座位」的现成坐标系;
  6. 六构件里有五个直接复用前章机制——状态共享、任务队列、合并策略、并发控制、撤销栈;
  7. 环境计算的瓶颈是「有趣」的定义成本;LLM 同时改善定义质量与配置成本,这是它的真机会;
  8. 区分协作与环境计算只看并发关系:互相取料,还是各干各的;
  9. 「流式聊天可能成为 LLM 时代的命令行」——记下这个预言,几年后可以回来对答案;
  10. 收尾心法按原话带走:先造个粗糙的,去和用户聊,循环往复

7. 原文地图

主题原书章原文位置
宽容输入与「稍微差一点」的双向性Chapter 11text/14-ch11-chapter-11-building-with-llms.txt:5(搜「slightly off」)
可靠重复的旧公理与 HCIChapter 11text/14-ch11-chapter-11-building-with-llms.txt:7(搜「reliably repeat」)
Figma 双件套(工具栏+画布)Chapter 11text/14-ch11-chapter-11-building-with-llms.txt:11(搜「palette of tools」)
公理失效的论证Chapter 11text/14-ch11-chapter-11-building-with-llms.txt:15(搜「known ahead of time」)
Word 的同构对照Chapter 11text/14-ch11-chapter-11-building-with-llms.txt:17(搜「word processor」)
「尘埃未定」的态度声明Chapter 11text/14-ch11-chapter-11-building-with-llms.txt:23(搜「until the dust settles」)
侧聊定义与 Copilot Chat 例Chapter 11text/14-ch11-chapter-11-building-with-llms.txt:29(搜「GitHub Copilot Chat」)
双向通信升级Chapter 11text/14-ch11-chapter-11-building-with-llms.txt:31(搜「see the content of the file」)
命令行预言(Note)Chapter 11text/14-ch11-chapter-11-building-with-llms.txt:35(搜「command line of the LLM era」)
侧聊基本两件套(get past hello)Chapter 11text/14-ch11-chapter-11-building-with-llms.txt:45(搜「get past hello」)
侧聊进阶三件套Chapter 11text/14-ch11-chapter-11-building-with-llms.txt:49(搜「Streaming output」) · text/14-ch11-chapter-11-building-with-llms.txt:55(搜「insert text at end of doc」) · text/14-ch11-chapter-11-building-with-llms.txt:59(搜「confirm, or even edit」)
协作三级台阶Chapter 11text/14-ch11-chapter-11-building-with-llms.txt:65(搜「Save and send」) · text/14-ch11-chapter-11-building-with-llms.txt:71(搜「merge strategies」) · text/14-ch11-chapter-11-building-with-llms.txt:73(搜「Real-time collaboration」)
LLM 的两种坐姿Chapter 11text/14-ch11-chapter-11-building-with-llms.txt:79(搜「always-on "copilot"」) · text/14-ch11-chapter-11-building-with-llms.txt:81(搜「asynchronous "drafter"」)
六构件清单Chapter 11text/14-ch11-chapter-11-building-with-llms.txt:85(搜「Shared state」) · text/14-ch11-chapter-11-building-with-llms.txt:95(搜「CRDT and operational transformation」) · text/14-ch11-chapter-11-building-with-llms.txt:101(搜「Undo/redo stack」)
环境计算现成原型Chapter 11text/14-ch11-chapter-11-building-with-llms.txt:113(搜「brokerage app」)
「有趣」定义的两难Chapter 11text/14-ch11-chapter-11-building-with-llms.txt:45(搜「Useful」)
LLM 解锁的理由Chapter 11text/14-ch11-chapter-11-building-with-llms.txt:129(搜「more useful (they identify more」)
协作 vs 环境的并发分界Chapter 11text/14-ch11-chapter-11-building-with-llms.txt:75(搜「at the same time」)
环境计算五构件Chapter 11text/14-ch11-chapter-11-building-with-llms.txt:143(搜「Triggers」) · text/14-ch11-chapter-11-building-with-llms.txt:151(搜「Reflection (or learning)」) · text/14-ch11-chapter-11-building-with-llms.txt:157(搜「surface to the user only」)
收尾泼冷水Chapter 11text/14-ch11-chapter-11-building-with-llms.txt:167(搜「crappy」)
作者背景与利益相关About the Authorstext/16-fm-about-the-authors.txt:5(搜「early developer contributor」) · text/16-fm-about-the-authors.txt:11(搜「founding software engineer」)

Footnotes

  1. 出处:「Chapter 11. Building with LLMs」第 7 段(text/14-ch11-chapter-11-building-with-llms.txt:7,搜「permeated the design」)。

  2. 出处:「Chapter 11. Building with LLMs」第 5 段(text/14-ch11-chapter-11-building-with-llms.txt:5,搜「slightly off」)。「unlike any previous computing tendencies」在同段末。

  3. 出处:「Chapter 11. Building with LLMs」第 9–14 段(Figma)与第 17–21 段(Word)。 2

  4. 出处:「Chapter 11. Building with LLMs」第 15 段(text/14-ch11-chapter-11-building-with-llms.txt:15,搜「It sounds almost silly to point that out」)。 2

  5. 出处:「Chapter 11. Building with LLMs」第 23 段(text/14-ch11-chapter-11-building-with-llms.txt:23,搜「dust settles」)。

  6. 出处:「Chapter 11. Building with LLMs」第 29 段(text/14-ch11-chapter-11-building-with-llms.txt:29,搜「sidekick」)。

  7. 出处:「Chapter 11. Building with LLMs」第 31 段(text/14-ch11-chapter-11-building-with-llms.txt:31,搜「insert or edit text」)。

  8. 出处:「Chapter 11. Building with LLMs」第 37–45 段(text/14-ch11-chapter-11-building-with-llms.txt:45,搜「get past hello」)。

  9. 出处:「Chapter 11. Building with LLMs」第 47–59 段(text/14-ch11-chapter-11-building-with-llms.txt:51,搜「alleviates the latency」)。

  10. 出处:「Chapter 11. Building with LLMs」第 35 段(text/14-ch11-chapter-11-building-with-llms.txt:35,搜「prototypical application of LLMs」)。 2

  11. 出处:「Chapter 11. Building with LLMs」第 63–75 段(text/14-ch11-chapter-11-building-with-llms.txt:63,搜「one of these buckets」)。

  12. 出处:「Chapter 11. Building with LLMs」第 77–81 段(text/14-ch11-chapter-11-building-with-llms.txt:77,搜「one of those "users"」)。

  13. 出处:「Chapter 11. Building with LLMs」第 83–107 段(text/14-ch11-chapter-11-building-with-llms.txt:87,搜「on the same footing」)。

  14. 出处:「Chapter 11. Building with LLMs」第 111–117 段(text/14-ch11-chapter-11-building-with-llms.txt:111,搜「pipes up」)。

  15. 出处:「Chapter 11. Building with LLMs」第 119–127 段(text/14-ch11-chapter-11-building-with-llms.txt:119,搜「reliable definition of interesting」)。

  16. 出处:「Chapter 11. Building with LLMs」第 129 段(text/14-ch11-chapter-11-building-with-llms.txt:129,搜「less work to set up」)。

  17. 出处:「Chapter 11. Building with LLMs」第 131–139 段(text/14-ch11-chapter-11-building-with-llms.txt:131,搜「The big difference」)。

  18. 出处:「Chapter 11. Building with LLMs」第 141–161 段(text/14-ch11-chapter-11-building-with-llms.txt:147,搜「Long-term memory」)。

  19. 出处:「Chapter 11. Building with LLMs」第 167 段(text/14-ch11-chapter-11-building-with-llms.txt:167,搜「You really do need to build something」)。

  20. 出处:「About the Authors」第 5 与 7 段(text/16-fm-about-the-authors.txt:5,搜「early pioneer」;text/16-fm-about-the-authors.txt:11,搜「founding software engineer」)。