跳到主要内容
知识地图从 Apple II 到 AFS-UI:一段界面之旅行业概念与标准

你在这里。看看这个问题与其他知识怎样相连。

选择节点前往页面 · 展开后可留在地图中阅读

知识地图沿着连接,读懂一个问题
← AFS 与界面

一个问题

从 Apple II 到 AFS-UI:一段界面之旅

沿着屏幕、窗口、网络与路径,看看界面改变了什么,又留下了什么。

界面的发展从来不是一条新技术取代旧技术的直线。这条时间线沿着终端、个人电脑、Unix 工作站与 Web,探索人怎样操作计算机,以及程序怎样参与同一项工作。时间标签描述技术或文献;各条历史路线彼此重叠。

可以顺着读,也可以把刻度调到一个陌生的年代。看一台设备、读一张界面,或者展开旁支故事,弄懂一个容易忽略的小细节。

沿年代进入,也可以一直往下读。 每一站都保留自己的链接;年代范围会重叠,不代表一项技术替代另一项。

1960s · 1970s · 1980s · 1990s · 2000s · 2010s · 2020s

1969 → · Unix:用名字组织工作

DEC PDP-11/70

机柜、磁带与控制面板:计算机曾占据这样的空间。图为 PDP-11/70,2014 年摄于西雅图 Living Computer Museum;不是 1969 年最初运行 Unix 的 PDP-7。 Joe Mabel · CC BY-SA 3.0.

Unix 用名称、路径和可组合的操作来组织工作。Unix 不只是一个终端外观;shell、文件接口与进程是不同层次。

留下的东西:路径与组合。命令行今天仍可以与图形界面并存。

Dennis Ritchie · Unix history

1977 → · Apple II:键盘前的一台计算机

Apple II · Rama & Musée Bolo · CC BY-SA 2.0 FR

Apple II · Rama & Musée Bolo · CC BY-SA 2.0 FR

1977 年推出的 Apple II 既能显示字符,也有图形能力:不能把那个年代简单理解成“还没有图像”。键盘输入、程序运行和屏幕反馈,已经构成了一个完整的交互循环。

看图时留意:键盘与主机在一起,但显示器是另一个物件。

Computer History Museum · 1977

旁支故事 · 屏幕会画图,为什么还要学命令?

看照片里的键盘:每个按键都能成为程序的输入。图形能力与命令输入并不互斥。认识一台旧机器时,可以分别问两件事:屏幕能画什么,以及人用什么方式告诉程序下一步做什么。

继续探索:↗ 屏幕会画图,为什么还要学命令?

1970s–1980s · 终端:屏幕不等于计算机

DEC VT100 · Jason Scott · CC BY 2.0

DEC VT100 · Jason Scott · CC BY 2.0

字符终端把按键送给另一端的计算机,再显示返回的字符。照片中的 DEC VT100 是终端,不是 Apple II 那样的个人电脑。所谓“绿色屏幕”是某些设备的视觉记忆,不是字符终端的定义;这里的照片显示的是另一种配色。

留下的问题:输入、计算和显示,必须在同一个地方吗?

VT100 · original documentation archive

1981 → · IBM PC 与 DOS:直接操作自己的机器

IBM PC 5150 · Ruben de Rijcke · CC BY-SA 3.0 · 2010

IBM PC 5150 · Ruben de Rijcke · CC BY-SA 3.0 · 2010

1981 年推出的 IBM PC 带来了新的个人计算平台。在 DOS 中,路径、文件、命令和程序退出后返回的提示符,把计算变成一组可以反复执行的动作。个人电脑改变了计算的位置,并没有让文件系统这个抽象失效。

留下的东西:文件路径既服务人,也服务程序。

IBM · The personal computer

1980s–1990s · Modem 与 BBS:又回到字符世界

Courier 2400 modem,面板指示灯与串口线

先看面板上的灯,再看右侧的串口线:联网曾经是一台有声音、有指示灯的外部设备。照片摄于 2021 年,设备来自 1980 年代末;亮灯并不代表此刻已经接入 BBS。Jonathan Schilling;Pittigrilli 裁切与旋转 · CC BY-SA 4.0。

你的终端 · Modem / 电话线 · BBS 主机

BBS 用户通过 modem 进入远程系统的字符界面。这样的社群与图形桌面长期共存,字符并没有简单地被图形淘汰:网络条件、设备和社群会改变界面的选择。BBS 的终端显示与 FidoNet 的消息交换是不同层次;FidoNet 不能被定义成一种屏幕绘制技术。

留下的东西:旧的交互形式,在新的连接方式下可以重新有用。

BBS history archive

展开一次拨号的过程:为什么屏幕会一行一行出现?

下面是教学重现,不是历史会话记录,也不会真的拨号。

text
ATDT [number]       → 让 modem 拨号
CONNECT            → 连接建立
WELCOME            → 远端开始返回字符
Your choice: _     → 等待你的输入
NO CARRIER         → 连接结束

界面的内容沿连接到达,终端把字符放到屏幕上。传输速度慢时,等待也成为用户体验的一部分。BBS 的菜单属于交互层;后台如何交换消息,是另一层问题。

1983 / 2006 RFCs · Telnet 与 SSH:远程操作的延续与改变

xterm 中的目录与路径

先看左上角的 cd etc,再看下面的文件名:一个目录用名称组织许多对象。这里是 2006 年上传的 xterm 截图,用来观察 Unix 传统的延续,并非 1969 年的界面。Vidarlo · CC BY-SA 3.0。

Telnet 的网络虚拟终端与 SSH 的安全远程访问,让我们看到两件事可以同时成立:远程终端的交互习惯延续了,安全边界却必须改变。这里标的是相关 RFC 的年份,不是两项技术的发明年份。SSH 也不仅仅是“加密版的终端界面”。

留下的不是旧的安全假设,而是可远程操作的能力。

IETF · SSH architecture (with Telnet reference below)

1980s → · X Window:程序在这里,显示在那里

TWM / X · DoWhile, 2006 · Public domain

TWM / X · DoWhile, 2006 · Public domain

X Window 把显示与计算分离的价值变得具体可见。X 的服务器管理显示和输入,应用是客户端,可以运行在另一台机器上。名称容易让今天的读者困惑:这里的“服务器”就在提供屏幕服务的一侧。

留下的东西:显示可以是一种服务。AFS-UI 借鉴的是这种职责分离,不是 X 协议兼容。

X.Org · Basic concepts

Sun SPARCstation IPX

桌面之下的计算机:Sun SPARCstation IPX。2013 年的设备照片,不是运行中的 X 会话;上面的截图展示窗口,这张照片展示工作站硬件。 htomari · CC BY-SA 2.0.

旁支故事 · 为什么你面前的屏幕叫 server?

把“谁更强大”暂时放在一边。X server 提供显示和输入服务,应用向它请求绘图并接收输入事件。所以应用可以在远端,server 却在你的桌面旁。角色的名字来自服务关系,而不是机器的大小。

继续探索:↗ 为什么你面前的屏幕叫 server?

1980s–1990s · PC Shell 与 Turbo Vision:字符也能有窗口

Free Pascal IDE

顶部是菜单,底部是快捷键,中间是用字符划出的工作区。2013 年的 Free Pascal IDE 延续了这种界面语言;这不是当年的 Turbo Pascal 截图。 Ggia · CC BY-SA 3.0.

字符网格 · 窗口 / 菜单 · 事件处理

PC Tools、PC Shell 提供了操作个人电脑的界面;Turbo Vision 则为开发者提供了构建字符界面的框架。菜单、对话框、焦点和窗口不一定依赖位图桌面:字符网格也可以承载它们。Turbo Vision 的重点不是“画出一个框”,而是提供可组合的交互对象和事件处理。

可以玩:打开现代 Turbo Vision 移植项目,看看字符界面今天如何运行。它是现代重实现,不是当年的屏幕录像。

Turbo Vision · maintained port and original manual links

1989–1990 · Web:把“去哪里”写成一个链接

NeXT / CERN · Coolcaesar · CC BY-SA 3.0 · 2005

NeXT / CERN · Coolcaesar · CC BY-SA 3.0 · 2005

CERN 的 Web 工作把文档、地址和超链接组合起来。浏览器成为一个跨机器访问内容的入口。最初的 Web 浏览器也有编辑能力,不能把这段历史简化成“一开始只能被动阅读”。

可以玩:从 CERN 的第一站点入口访问历史页面与浏览器重建。试着留意每次点击如何改变地址。

CERN · The birth of the Web

旁支故事 · 一个服务器,也是一件有开关的家具

先看这台 NeXT 的主机,再看显示器和键盘。一个可以链接到世界各地的地址,背后仍有一台真实运行的机器。照片是 2005 年的展陈记录,不是 Web 诞生那一天的现场。想进一步探索,可以去 CERN 的入口打开早期网页和浏览器重建。

继续探索:↗ 一个服务器,也是一件有开关的家具

1990s · SGI IRIX、IBM AIX:Unix 不只有一种面孔

SGI Indy · Thomas Kaiser · CC BY-SA 3.0 · 2007

SGI Indy · Thomas Kaiser · CC BY-SA 3.0 · 2007

SGI 的 IRIX 与 IBM 的 AIX 都属于 Unix 世界,但不必呈现相同的桌面。IRIX Interactive Desktop 使用 4Dwm 管理窗口;AIX 的图形环境包括 X、Motif 与 CDE 等不同层次,具体组合取决于版本和配置。CDE 是桌面环境,不能简单等同于一个 Window Manager。

旁支故事 · 换一个 Window Manager,改变了什么?

Window Manager 管什么? 窗口放在哪里、哪个在前面、怎样移动或缩放,以及窗口边框和菜单等交互策略。它与负责显示、输入的 X server 分工不同;窗口内部的内容又由应用及其工具包负责。所以更换窗口管理器能明显改变操作体验,却不意味着每个应用都要重写。它也不保证把所有应用内部控件一并换成同一种样子。

可以改变的是窗口的组织方式;仍然存在的是应用、连接与显示服务之间的分工。这比“换一个皮肤”更值得关注。

SGI 原始桌面设计指南(存档) · IBM:AIX 的 X11、CDE 与 XDM

这也是理解 AFS-UI 中 Display 与 Window Manager 设计动机的一条线索:显示目标和界面组织方式可以分别讨论。思想上的联系不意味着 AFS-UI 实现了 X 的同一套协议或替换机制。

1990s · Windows、OWL、MFC:桌面应用的工具箱

1990 年推出的 Windows 3.0 属于逐步扩大的图形桌面生态。OWL、MFC 等框架围绕 Windows 发展,并不是全部随 Windows 3.0 同时出现。框架帮助开发者组织窗口、控件和事件;用户看到的是按钮,程序处理的是事件和对象。

留下的东西:交互需要结构和状态,不能只靠最后画出的像素来解释。

Microsoft · History of Microsoft, 1990

1990s · Java Applet 与 ActiveX:把程序放进页面

浏览器成为入口之后,一个自然的愿望是把更丰富的程序直接放进去。Applet 与 ActiveX 走过不同的技术路线,带来不同的运行环境、分发方式和信任问题。它们不应与 HTML 的 DOM 或今天的 Web 组件混为一谈。

留下的问题:谁提供运行环境,谁决定一段界面代码可以做什么?

Microsoft · MFC ActiveX controls

1998 recommendation · DOM:页面背后有一棵可操作的树

屏幕上的页面 · 文档对象树 · 脚本操作

DOM 把文档结构暴露给程序。脚本可以找到对象、读取内容、修改结构,而不需要先理解截图。这个例子也提醒我们:AFS-UI 不是第一个让机器获得结构化界面的系统;需要讨论的是它选择了怎样的地址空间和操作边界。

留下的东西:看见一张页面,与操作它的结构,是两种互补的访问方式。

W3C · DOM Level 1

旁支故事 · 页面和它的树,是同一个东西的两种读法

想象一个标题下面放着一段文字和一个链接。人看到排版;程序可以分别找到标题、段落和链接。这个结构视角很重要,但 DOM 节点本身不等于跨应用的稳定业务身份,也不直接赋予程序操作权限。

继续探索:↗ 页面和它的树,是同一个东西的两种读法

2005 term · Ajax:不必每次都换一整页

同一个页面 · 异步请求 · 局部更新

Ajax 为一组已有的 Web 技术提供了广为传播的名字:页面可以异步请求数据,并更新局部界面。它让 Web 应用的连续交互更常见,但异步请求不等于服务器主动推送,也不自动保证实时性。

留下的东西:页面可以持续存在,数据和呈现不断改变。

Jesse James Garrett · Ajax essay (archived copy)

旁支故事 · “页面没有刷新”不等于“服务器主动推送”

购物车数字变了,整页却没有消失:这是局部更新的直观体验。至于新数据是点击后请求来的、定时询问来的,还是经持续连接送来的,是另一个问题。界面看起来相似,通信方式可以不同。

继续探索:↗ “页面没有刷新”不等于“服务器主动推送”

2011 RFC · WebSocket:连接不必随页面刷新结束

WebSocket 为客户端与服务器提供双向通信通道。它和 Ajax 解决的问题有交集,但并不是同一种机制。一个共享演示系统即便有双向通道,仍然需要定义会话、状态、权限以及断线后如何恢复。

留下的问题:连接建立以后,究竟共享什么状态?

IETF · RFC 6455

2013 / 2014 → · React 与 Vue:让界面随状态变化

组件和声明式呈现帮助开发者组织越来越复杂的 Web 应用。React 与 Vue 有各自的模型,不能把它们当作同一个实现;但都让我们更习惯于从状态描述界面,而不是手工维护每一次屏幕更新。

留下的东西:呈现与状态的关系。框架会变,这个问题仍然存在。

React · Versions and first release

Today · AI Agent:出现了另一种操作者

当 agent 也要工作时,界面不仅要让人看懂,也要让程序知道对象在哪里、有哪些操作、哪些操作被允许。截图、可访问性树、DOM、工具接口和路径各有作用。不能把“agent 只能看截图”当作问题的前提。

留下的问题:人看到的对象,如何与机器操作的对象保持对应?

W3C · WAI-ARIA

2026-10-07 · Intelligent UI:回答本身成为操作入口

问题、流式组件与交互回答

OpenAI 公布 ChatGPT 的 Intelligent UI:回答可以组合文字、视觉与交互。公开技术说明提到原生可流式组件库、增量处理的编译器,以及针对界面组织的模型训练。

今天的问题:界面可以随时生成,那么人在界面中作出的改变,怎样对应到后续操作者需要的状态?

旁支故事 · 流式出现,还是准备好再展示?

阅读解释时,逐步出现能让人更早开始理解。操作表单时,用户还需要知道哪些输入和动作已经可用。AUP 的 Stage-to-Live 提供先准备再切换的选择;流式回答体现另一种呈现节奏。两种场景都需要明确交互何时生效,不能仅从画面是否完整判断。

这是一项产品发布,不等于发布了完整的通用 UI 协议。未公开的内部架构不能写成缺失。继续阅读 Intelligent UI 知识卡片 与 相关方案比较。

OpenAI · 2026-10-07

Today · ArcBlock · AFS-UI:回到同一个工作的世界

人看到的界面 · 可寻址的上下文 · Agent 的操作

AFS-UI 把这条历史中的几个问题重新放在一起:文件系统的可寻址性,X 的显示分离,以及状态与呈现的关系。目标是让人和 agent 都成为参与者。它不是把 X、DOM 和文件系统简单拼起来,也不意味着每个参与者有相同权限;具体能力应以当前实现和可验证的演示为准。

这个 Learning 页面与配套演示,本身就是 AFS-UI 构建的实例。

继续阅读:AFS-UI · Learning

旁支故事 · 再看一次:同一项工作,两个入口

可以先看一张任务卡片,再看它所对应的资源路径。卡片给人一个可读的入口;路径让程序有明确目标。真正需要检验的是:换一种界面后,对象、操作和权限是否仍然清楚。

继续探索:↗ 再看一次:同一项工作,两个入口

再走一遍,这次只看什么留下了

屏幕改变了,输入与反馈留下来。网络改变了,地址与连接留下来。框架改变了,状态、权限和操作的边界仍然需要设计。它们不是永远不变的答案,而是每一代系统都要重新回答的问题。

CERN · Explore the first website · Telnet · RFC 854 · Vue · FAQ · OWL · Java applets

图片来源

设备照片是注明来源的资料图。TWM 截图拍摄于 2006 年,不代表 1980 或 1990 年代的现场。

新增资料图保留原图,未裁切或重绘:

检查一下理解

这是一条新技术不断淘汰旧界面的直线吗?

不是。字符、图形、窗口与路径一直在不同环境里共存。