第35期 | 终端在假装自己是 VT100
一、终端在假装自己是 VT100
1991 年秋天,你往 Linux 0.01 的控制台发一句"你是谁"——ESC-Z,或者 CSI 0 c——它会一本正经地回答:\033[?1;2c。那是 DEC VT100 的设备应答,一台 1978 年终端的身份证。源码里写着注释:"this is what the terminal answers to a ESC-Z or csi0c query (= vt100 response)"。
它不是 VT100。它在演 VT100。
键盘中断 keyboard.s,409 行:从 0x60 端口读扫描码,e0、e1 前缀对付扩展键,查 key_table 换成字符,末尾还得跳一段"jmp 1f"的延时舞——给键盘控制器留出喘息的时间。控制台 console.c,550 行:解析 ESC 转义序列,CSI J 清屏、K 清行、L/P 插删行,连 SGR 的 m 都接了,只是只认 0、1、4、7——加粗、反白,没有真彩色,戏服很薄。tty_io.c,306 行:行规程 copy_to_cooked,默认 ICANON|ECHO|ECHOCTL|ECHOKE。你敲的字先攒在内核里,回车才整行交给程序;退格键内核替你删,还往屏幕补两个删除符,假装那个字从没存在过。
三块加起来 1339 行,干的是一件事:让一台 386 在屏幕上装成 VT100。
为什么装?因为 1991 年的软件全是 VT100 的信徒:vi、shell、less,满屏程序都按 VT100 的转义序列写。Linus 没得选——不装成 VT100,就没人跟你说话。兼容是生存策略,不是技术品味。
二、如果 AI 先来,不会有终端
终端是给人眼和人手修的。规范模式攒一行再交稿,是因为人会打错字——先删改,满意了再提交,这是人类耐心的工程化。AI 不需要回车键:它一次生成完整回答,没有"打错字",不需要行编辑。回显是为了让人看见自己敲了什么——AI 不需要"看见自己",它的状态从不丢失。
AI 原生 OS 的"终端"不会是字符流,而是一块共享的上下文缓冲:意图、状态、结果按结构化事件走,没有转义序列,没有"假装 VT100"。今天的 agent 协议已经长出了这个样子:function calling 的 JSON 事件流,就是 tty 的反面——机器对机器,脱掉了人类的字符戏装。
维纳会喜欢 tty 的回显。手指敲键→内核→回显→眼睛→手指,一条完整的"感知—比较—执行"反馈回路,《控制论》(1948)的具象,就藏在这 306 行行规程里。OS 里最有人味的一块代码,恰恰是替人兜底的那一块。
范式之眼在这里看得最清楚:字符是线性流,一个字节排着队走;attention 是整段一起看。tty 把一切压成线性字节流,恰是旧抽象的缩影——为顺序指令流设计的 OS,连跟人说话的方式都是串行的。
三、今晚亲手摸一下行规程:三件能动手的事。
第一,在手边任何一台 Linux 机器上跑 cat,敲几个字别按回车——程序什么都收不到。那就是 copy_to_cooked 还在值班,1991 年写进 0.01 的逻辑,三十四年没挪窝。按几下退格:字符消失了,是内核替你删的。
第二,stty -a 瞧瞧 erase = ^H——退格键的身份证,0.01 的 termios.h 里 VERASE 就是这么定的。然后 stty -icanon 关掉规范模式,再跑 cat:字符按下去立刻就到,行规程下班了。玩够了,stty icanon 把它请回来。
第三,落到今天的工程里:边缘计算设备的串口控制台(UART)就是 tty 的直系后代,退格照样是内核在删,运维脚本别跟行规程较劲;视频 AI 平台里,多路告警事件如果还用字符流去拼,就是重蹈 tty 的覆辙——给机器看的数据,就该是结构化的;企业私有智能中心里,智能体的"终端"该是一块结构化状态面板,而不是一个字符终端。本地大模型的交互 CLI 今天还是字符流,agent 化之后,该换成事件流。发展性研究的老路子:先把成熟的行规程工程化用好,再谈 AI 原生的新界面——先实际,后原理。
觉 然 小 注
「若以色见我,以音声求我,是人行邪道,不能见如来。」字符是色。终端假装 VT100,VT100 假装打字机,打字机又假装印刷机——一层层都是相。AI 原生 OS 的第一步是破相:不再以字符见我。
引 用 与 出 处
- Linux 0.01 源码包(kernel.org historic;kernel/keyboard.s、kernel/console.c、kernel/tty_io.c、include/termios.h 为一手核对),https://mirrors.edge.kernel.org/pub/linux/kernel/Historic/linux-0.01.tar.gz
- "Terminal Standards: From VT100 to Kitty", terminfo.dev,https://terminfo.dev/standards
- "What Is VT100?", phoenixnap glossary,https://phoenixnap.com/glossary/vt100/
- Wiener, N., Cybernetics: Or Control and Communication in the Animal and the Machine, MIT Press, 1948(反馈回路思想化用)
- 《金刚般若波罗蜜经》鸠摩罗什译本,第二十六分"法身非相分"
· · ·