原创 张汉东 2025-08-04 02:37 新加坡
如果将 Emacs 的设计哲学与 AI 的能力结合,会不会就是我们一直在寻找的"终极终端"?我想要思考什么样的工具才能真正增强人类的认知能力。
引子
现在 Claude Code 这类AI命令行工具正在改变我们的工作方式。
当我思考如何基于 Claude Code SDK 打造自己的终端工具时,一个有趣的联想浮现在脑海中——这不正是 Emacs 在几十年前就在追求的愿景吗?
回想起来,Emacs 用户其实早就享受过了"万物皆可在一处完成"的体验:
写代码、发邮件、浏览网页、管理文件——全在同一个环境中
所有操作共享相同的快捷键和编辑方式
任何文本都可以被编程、修改、扩展。
而今天的 Claude Code 似乎在用 AI 的方式重新诠释这个理念:
用自然语言描述任务,AI 自动执行
从写代码到发推文,一切都在对话中完成
上下文始终保持,形成连贯的工作流
这让我不禁思考:如果将 Emacs 的设计哲学与 AI 的能力结合,会不会就是我们一直在寻找的"终极终端"?
要回答这个问题,我们需要先理解 Emacs 最核心的设计理念。
“大约 20 年前,Emacs 与我有缘,然而其复杂繁琐的配置,将我这个怕麻烦的人拒之门外。我虽然不是 Emacs 资深用户,但是我也略知道一些 Emacs 的用法。因为我也崇尚这些将 Emacs 耍出花的黑客们,所以我有段时间经常关注 Emacs 相关的文章。
我将通过三个部分来展开这个探索:
首先回顾 Emacs 的经典设计理念,理解什么是真正的"统一环境";
然后审视 Claude Code 如何用 AI 重新定义人机交互;
最后展望两者结合可能带来的革命性变化。
通过这个旅程,我想要思考什么样的工具才能真正增强人类的认知能力。
理解过去——Emacs 的永恒智慧
Emacs 的 Buffer 哲学:万物皆画布
要理解 Emacs 的革命性,我们需要先理解一个核心概念:Buffer(缓冲区)。让我用一个简单的类比来解释:想象你有一张神奇的画布,这张画布可以显示任何东西——可以是你正在写的文章,可以是文件列表,可以是程序的运行结果,甚至可以是一个网页。更神奇的是,无论画布上显示什么内容,你都可以用相同的方式来操作它:编辑、搜索、复制、粘贴。
这就是 Emacs 的 Buffer 哲学。
在 Emacs 的世界里,"Everything is a buffer"——一切皆缓冲区。这个设计理念的深刻之处在于,它把所有不同类型的信息都统一到了同一个抽象概念下。正如计算机科学家 Alan Perlis 所说:"与其有10个函数操作10种数据结构,不如有100个函数操作一种数据结构。"
我曾经在 Hackernews 上看到一位 Emacs 用户展示的一个有趣示例:他需要重命名一个文件,但文件名中有个单词总是拼错。在任何"传统"的文件管理器中,你需要先在别处查好正确拼写,然后手动修改。但在 Emacs 中,你只需在 Dired
中按下C-x C-q
进入编辑模式,然后 M-$
直接对文件名进行拼写检查,选择正确拼写,C-c C-c
提交更改。文件系统中的文件名就这样被修正了。
这是由于文件列表(Dired)也是一个 buffer,你可以直接对文件名运行拼写检查,就像检查普通文本一样。这种"意想不到的协同"正是统一性带来的魔力。
更深层的意义在于,Buffer 不仅仅是一个技术概念,它代表了一种看待信息的全新方式。
在传统思维中,信息被锁在不同应用程序的围墙里,而在 Buffer 思维中,信息是流动的、可组合的、可编程的。这种思维方式在今天看来依然前卫,因为它本质上是在说:工具应该适应人的思维方式,而不是相反。
Org Mode:简化的艺术与认知的本质
如果说 Buffer 哲学展示了统一性的力量,那么 Org Mode 则展示了简化的艺术。Org Mode 是 Emacs 历史上最成功的创新之一,它的成功秘诀值得我们深入思考。
Org Mode 建立在一个简单的观察之上:人类天然地用层次结构来组织思维。我们写文章用大纲,整理文件用文件夹,记笔记用缩进。但传统的大纲编辑器可能有十几个不同的命令来控制内容的显示和隐藏,这就像给你一个有二十个按钮的遥控器来控制一盏灯——功能强大,但使用起来令人困惑。
Org Mode 的天才之处在于,它把所有这些复杂的操作简化成了一个按键:TAB。当你按下 TAB 键时,系统会根据上下文智能地决定是展开内容、收起内容,还是循环切换不同的显示状态。这个设计揭示了一个深刻的洞察:复杂性应该存在于系统内部,而不是用户界面上。
更重要的是,TAB 键不只是一个功能键,它是一个"思维操作符"。
当你使用它时,你实际上在进行一种基本的认知操作:在细节和全局之间切换。
这个 TAB 键的设计,揭示了几个深刻的道理:
层次化是人类认知的基本模式
我们用大纲组织文章,用目录组织文件,用分类组织知识。Org mode 不是在创造一种新的组织方式,而是在尊重人类既有的思维模式。
折叠/展开是通用的信息管理原语
当你按下 TAB 时,你在进行一种基本的认知操作:在细节和全局之间切换。这不仅适用于文本,也适用于代码、数据、对话历史——任何信息。
界面即思维工具
TAB 键不只是一个"功能",它是一个思维操作符。它帮助你聚焦(关注细节)、抽象(把握全局)、导航(在结构中移动)。
这些洞察对理解"终极终端"至关重要。因为它告诉我们:好的工具不是功能的堆砌,而是对人类认知模式的深刻理解和优雅支持。
审视现在——AI 如何改变游戏规则
Claude Code 的革命:从命令到对话
现在让我们重新审视 Claude Code。它的革命性不仅在于 AI 能力,更在于它重新定义了什么是"人机交互"。
Claude Code的运作本质是什么?
用户意图(自然语言)
↓
Claude理解并生成代码
↓
在上下文环境中执行
↓
结果反馈到对话流
↓
状态持续更新
传统的命令行要求你学习精确的语法和命令,就像学习一门新的语言。但 Claude Code 让你可以用自然语言来表达意图:"帮我分析这个性能问题"、"重构这段代码,让它更易读"、"解释这个错误信息"。这种转变的意义远不止于"更容易使用"。
更深层的革命在于上下文的持续性。观察一个典型的 Claude Code 会话,你会发现对话自然地形成了层次结构:你提出一个问题,Claude 给出回答,你要求深入某个方面,Claude 进一步展开,你询问具体细节,Claude 提供详细解释。这种结构不是预先设计的,而是自然涌现的,因为它符合人类探索和理解问题的方式。
当我们把 Emacs 的 Buffer 哲学和 Claude Code 的对话模式放在一起看时,会发现一个惊人的共鸣:它们都在追求认知的统一性。
Emacs 通过 Buffer 统一了不同类型的信息,让你可以用相同的方式操作文本、代码、文件列表。Claude Code 通过自然语言统一了不同类型的任务,让你可以用对话的方式完成编程、分析、学习。
两者的核心理念是一致的:消除人与信息之间的障碍,让操作变得自然而直观。
更有趣的是,如果我们仔细观察,会发现 Claude Code 的对话历史本质上就是一个"buffer"——它记录了所有的交互,保持了完整的上下文,可以被引用、被修改、被扩展。而 Emacs 的操作方式,如果用自然语言来表达,不就是一种对话吗?"找到所有包含这个词的地方"、"把这段文字移到那里"、"记住这个位置"。
这种共鸣暗示着一个可能性:也许 Emacs 和 Claude Code 不是两个独立的工具,而是同一个理念在不同时代的表现形式。
然而,目前 Claude Code 界面并没有充分利用 Emacs 的 Org-mode 模式。
想象一下,如果 Claude Code 能像 Org mode 那样:
用 TAB 键折叠/展开对话的不同部分
只显示关键决策点,隐藏冗长的解释
在不同的抽象层次上回顾对话历史
这也许能再一次改变我们与 AI 交互的方式。
Claude code 的革命:从"工具思维"到"环境思维"
Emacs 社区有句老话:"Emacs 不是一个编辑器,而是一个伪装成编辑器的 Lisp 解释器。"
类似地,我们可以说:"Claude Code不是一个 AI 助手,而是一个伪装成助手的认知操作系统。"
这种思维转变意味着什么?
在传统工具思维下: 「你打开 IDE 写代码 -> 切换到终端运行命令 -> 打开浏览器查文档 -> 使用另一个工具发送邮件」。
在Emacs的环境思维下:「你在一个统一的环境中工作 -> 用M-x compile
编译,错误信息可以直接跳转到源码位置 -> 用eww
浏览网页,内容可以直接复制到代码中 -> 用message-mode
写邮件,可以直接引用代码片段」。
在Claude Code + 其 SDK 的未来愿景下: 「你用自然语言描述意图 -> AI 理解上下文并执行多步骤操作 -> 所有中间结果都在统一的认知空间中流转 -> 你可以随时介入、修改、引导过程」。
Claude Code 的革命: 学习曲线从陡峭到平缓的演化
程序员社区讨论中有个有趣的观点:Vim 和 Emacs 都有陡峭的学习曲线,"所以,你不能只是试试水,必须一头扎进去。"
“这句话对 Rust 语言同样适用。
但是,现在也有 Spacemacs、Doom Emacs这样的发行版,新手可以获得开箱即用的现代体验。而Claude Code 则更进一步——它用自然语言交互降低了入门门槛。
这里有个深刻的转变:
Emacs 时代:你需要学习 Elisp 来定制你的环境
Claude Code 时代:你用自然语言描述你想要什么
但核心理念是一致的:给用户完全的控制权,让他们能够塑造自己的数字环境。
终极终端幻想:Emacs + AI
想象一下,如果我们将 Emacs 的哲学与 Claude 的 AI 能力真正融合,会创造出什么样的工具?
我称之为 认知操作系统 —— 一个真正理解你的思维方式并能无缝支持你的工作环境。
在这个环境中,自然语言和传统命令不是对立的,而是互补的。
你可以用自然语言描述高层次的意图:"帮我重构这个模块,让它更符合单一职责原则",系统会理解并执行;你也可以用精确的命令进行细粒度的控制,就像现在的 Emacs 一样。关键是,系统理解这两种输入方式之间的关系,能够在它们之间无缝切换。
更重要的是层次化的支持。就像 Org Mode 用 TAB 键优雅地处理信息的层次,未来的系统应该能够智能地管理对话和操作的层次。你可以"折叠"一段对话,只保留核心结论;可以"展开"一个操作,查看详细的执行过程;可以在不同的抽象层次上查看和理解你的工作。
具体来说,Emacs + AI (比如 Claude) 可能会带来的体验:
智能搜索与编辑
你告诉 Claude:"找出所有调用deprecated API的地方"。Claude不仅搜索代码,还理解语义,将结果展示在一个occur-mode
风格的buffer中。
上下文感知的批量修改
在搜索结果 buffer 中,你可以像使用wgrep
(在搜索结果中直接批量修改)一样直接编辑,但 Claude 会智能地理解每处修改的上下文,自动调整相关的 use 语句、类型定义等。
多模态工作流
你在 org-mode 中记录重构计划,其中嵌入了代码块。Claude 可以理解这些代码块与实际项目代码的关系,帮你追踪进度、验证改动。
时间机器:就像 Emacs的 undo-tree 可以可视化编辑历史,未来的 AI 终端可以展示你的"认知历史"——不仅是文本改动,还包括你的决策过程、弃用的方案、探索的路径。
在这个环境中:
每一层都可以折叠/展开,让你在细节和全局间自由切换
所有内容都是活的:代码可以执行,分析可以更新,对话可以继续
AI理解整个上下文:不是孤立的对话,而是完整的研究过程
知识是结构化的:可以导出、分享、复用
这种 Emacs + AI 的融合不仅仅是技术上的进步,更可能改变我们与计算机交互的根本方式。
对个人而言,它意味着真正的"认知增强"。
不是 AI 替代你思考,而是 AI 成为你思维的延伸。就像眼镜增强了视力,这种工具增强的是你组织、理解和创造信息的能力。你不需要记住复杂的命令,但也不会失去精确控制的能力;你可以快速完成常规任务,但也能深入探索复杂问题。
尾声
回到开始的问题:Emacs + AI 是否是终极终端?
我的答案是:它们代表了终极终端的两个关键要素 —— 统一的操作环境和自然的交互方式。真正的终极终端不是简单地把它们加在一起,而是深度融合它们的设计理念,创造出真正的认知操作系统。
然而, 我其实并不是真的希望 Emacs 与 AI 融合。因为现在的我依然对使用 Emacs 来心有余悸。
“说明:Emacs 社区应该已经有很多 AI 插件来,比如 Org-AI。
我真正希望的是 Emacs 理念 + AI 的融合之后的更易用的 Claude Code。
终极终端不是一个具体的工具,而是一种理念的实现——让每个人都能够自由地塑造自己的数字认知空间,无论是通过代码、自然语言,还是我们尚未想象到的交互方式。
正如前文中讲到修正文件名拼写的那个示例所展示的——真正的力量不在于某个特定功能,而在于当你需要时,系统能够以你意想不到的方式组合已有能力,优雅地解决问题。
这就是我们追求的:
不是更多的功能,而是更深的可组合性;
不是更智能的工具,而是更懂你的环境;
不是 AI 替代人类,而是 AI 成为人类认知的自然延伸。
Emacs 的哲学与 Claude 的 AI 能力不是相互替代,而是相互成就。
它们共同指向一个未来:每个人都是自己数字宇宙的创造者,而终端,只是通向这个宇宙的第一扇门。