软件界的Emacs化

Hacker News Top 新闻

摘要

作者讲述了在终端中阅读 Markdown 的烦恼,并描述了如何使用 Claude 快速构建一个自定义的 macOS Markdown 查看器(MDV.app),展示了 AI 如何让人能够迅速创建个人软件工具。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/05/13 18:15

# 软件的 Emacs 化 来源:https://sockpuppet.org/blog/2026/05/12/emacsification/ **你比你想象的更需要一个好用的 Markdown 阅读器。\*\* 我们都在大量阅读 Markdown。早在 LLM 出现之前,它就已经是软件开发界的通用语言。但现在,AI Agent 让我们陷入了一个 TUI 工具的“诅咒式复兴”,阅读体验变得难以忍受。我敢肯定,至少 14% 关于 AI 代码的焦虑,都是因为没完没了地滚动终端里的 Markdown 导致的。 确实有一些不错的 TUI Markdown 阅读器。Charm 团队开发了 `glow` (https://github.com/charmbracelet/glow),我用过,体验很好。我的朋友 Josh 做了 `Markless` (https://github.com/jvanderberg/markless),界面漂亮、功能丰富,最突出的是有目录导航。这些工具都很棒。但终端本身成了它们的掣肘——终端几乎总是等宽字体,读起来很累。 一张 Josh 的 Markless (https://sockpuppet.org/blog/2026/05/12/emacsification/markless.png) 的截图 也有一些不错的图形界面 Markdown 编辑器。在 macOS 上,我常用的有 `Obsidian` (https://obsidian.md/)、`Typora` (https://typora.io/) 和 `Bear` (https://bear.app/),后者是我个人的日常主力。原生 UI 的 Markdown 编辑器美观易读,阅读体验很好。但它们是编辑器。我的编辑器都放在特定的虚拟桌面中,窗口排布得井井有条。所以,当我随便点击一个 `.md` 文件,它却打乱了我的编辑环境时,简直让我抓狂。 于是我去了一趟 App Store,那里确实有一些 Markdown 阅读器。它们还行,但都不够好。我想要的只是在双击 `.md` 文件时能发生些合理的事情。App Store 上的阅读器第一眼看起来确实合理,但用上一阵子,问题就暴露了:有的缺失文本搜索功能,有的竟然有内购(?!)。我选定了一个,几天后却发现它不支持复制文本到剪贴板。到那时,我彻底受够了。 突然间,我意识到:找一个好的 Markdown 阅读器,是件蠢事。现在都 2026 年了,我完全可以自己造一个出来。 ❦ 生成一个比 App Store 上能找到的更好的 Markdown 阅读器,花了我几个小时,但其中只有大约 30 分钟是交互式的。剩下的时间,我都在 Facebook 上骂城市规划,而 Claude 则在后台吭哧吭哧地干活。请看,`MDV.app` (https://github.com/tqbf/mdv): 一张 MDV.app 的华丽截图 (https://sockpuppet.org/blog/2026/05/12/emacsification/mdv.png) 其实我那个 timeline 有点作弊,因为几周前我就做了一些准备。我翻出一台旧 MacBook 来跑 Claude,配置好 Xcode 和 git,调好 Claude,还补习了一些 Swift 和 macOS 设计知识。但阅读器本身——做到可用、比 App Store 上那些都好——只花了 30 分钟。`MDV` 不是 macOS 上最好的应用,甚至算不上一个特别出色的软件(虽然它很可能是 macOS 上最好的专用 Markdown 阅读器),但它的确极大地提升了我的生活质量。 它做了很多酷事。Claude 和我搞定了在文档中选择和复制文本、以及搜索固定字符串的功能。此外,`MDV` 会为它(可编辑的)历史记录中的所有 Markdown 文件维护一个 SQLite FTS 索引,还带有快捷键书签和目录导航。它能在重启后记住我在各个文档中的位置,以及我在它们之间切换时的状态。而且它有讲究的配色主题和舒适的排版——对一个专用 Markdown 阅读器来说,这才是最重要的功能。现在,只要我点击 `.md` 文件,所有这些功能都能正常工作。太棒了。 ❦ 我之所以知道这很了不起,是因为每次有人给我发 Signal 消息时,我的屏幕都会闪烁。除非我明确把 Signal 应用隐藏掉,否则闪烁就不会停——而我总是忘记这么做,直到被那微妙的闪烁折磨得快要偏头痛。 这是因为 Signal 是一个 `Electron 应用`(https://www.doyensec.com/services/electronjs-based-applications.html),也就是说,尽管它看起来像原生 macOS 应用,但它不是。它是一个完整的 Chromium 副本在渲染一个隐藏的网页。过去 10 年里几乎所有的 UI 应用都继承了这一点,每个都自带一个会闪烁的 Chromium 副本。 Electron 并不好。但它一直够用。构建真正的原生用户界面一直是个难题,甚至找个能力达标的人来做都很难,能干的 macOS 原生 UI 开发者少之又少。 但 Claude 不仅仅是一个入门级的 SwiftUI 开发者。Claude 实际上很厉害。 ❦ 这篇帖子不是要讨论 Electron 的末日(但愿它是)。也不是要让你用我的超棒 Markdown 阅读器——它很容易安装 (https://github.com/tqbf/mdv/releases),比 App Store 上任何阅读器都好,你绝对应该试试。 其实,别!停下来。别安装它。请把我这个超棒的 Markdown 阅读器(它确实超棒)当作 Emacs 用户对待一份特别闪亮的 `.emacs` 配置那样:偷走这个想法,做一个更好的。 对不熟悉的人来说,Emacs 文化是这样的:它的老用户会用 elisp(世上最伟大 (https://www.perl.org/) 最糟糕 (https://www.tcl-lang.org/about/language.html) 的语言 (https://www.gnu.org/software/bash/))构建完整的应用。这些“应用”最初都是为了解决个人在文本编辑上的痒点而生,然后不可避免地膨胀到超越文本编辑器应有的合理界限。你去看看 /r/emacs,里面没有 Product Hunt,全是炫耀和分享。 有很多流行的 elisp 包被广泛使用。但除了 Magit (https://magit.vc/) 之外,geek 们总是惊人地把这些包换成自己更闪亮的版本(然后拿出来炫耀,进入 elisp 生命周期的孢子形成阶段)。Emacs 里的一切都是可塑的。 在此之前,Emacs 文化的致命弱点在于,除了 Magit,它的包往往用户体验糟糕:丑陋、缓慢,而且只有在你忍辱负重、在 elisp 上自残多年之后才能发现它们。 但 AI Agent 已经压裂了 Emacs 文化,它正泄漏到更广阔的世界里。只要有屏幕和输入,Agent 就能可靠地构建原生用户界面。原生 UI 曾是专业打包程序的领地。现在,它就像你的编辑器配置一样,可以随心定制。而且,虽然我确信(以目前的前沿模型)这类界面的质量存在上限,但这个上限已经高于你在 TUI 里能实现的任何东西。 ❦ 软件“Emacs 化”意味着什么?我们来深入探讨一下。 首先,它是个人软件。绝大多数这类软件只对创建者有用,然后就被遗忘,就像散落在我 `.emacs` 文件里那几十个过时的小 elisp 程序一样。个人软件定义了 Emacs 的精神,而 Emacs 历经几十年精心设计,正是为了滋养这类工具。“Emacs 化”捕捉到了这样一个事实:现在所有东西都像这样工作,不再仅限于那些古怪的文本编辑器。 不过,偶尔会有某个程序逃出框框。它会好用得让不止一个人安装它。但即便如此,发布的产物也不是它最重要的东西。源码也不是。如果 Agent 写了我项目里的所有 SwiftUI 代码,你仔细阅读它又能得到什么? 我可能只对了一点点,但我认为新 Emacs 包的一个重要驱动力,是**你**混乱的本地配置和**别人**的 elisp 代码之间发生的催化反应。一旦你知道如何在 elisp 中搞定事情,自己造一个解决方案可能比 `package-install` 已有的还要容易。在这种环境下,代码只是过眼云烟。真正重要的是想法,是那句 “没错,你可以这么做,而且效果很好”。 对于我讲的这类软件,你更想要的是提示词(prompts),而不是源码。 如果你是一个 geek,并且认同自己动手做软件的想法,那么现在一切都可以编程了——不仅是技术上的,更是实际上的。这触及了许多人在用 Agent 创建软件时的感受:说你在“构建”它,到底是什么意思?“构建”暗示着比你实际付出的更多的努力。你做的事情感觉更像是在配置——在一个突然变得极其可配置的平台上。这个平台感觉更像 Emacs 了。 ❦ 一个被 AI 洗脑的开发者,在初次尝试之后,首先会告诉你的是他们终于完成了多年来积攒的边角小项目。 这本身就是一件令人兴奋的事。但现在还有一个事实:那些东西,哪怕极其特定,也可以做得很好用。我没有忽略其中的讽刺意味:Emacs 化正在削弱许多“忍受 Emacs 及其丑陋界面”的理由。Magit 仍然是最好用的。至少眼下是。 我对“软件的未来”没有什么宏大的论断。但我相当确定,geek 软件会变得有趣很多。有多少笨重的终端应用,我们可以彻底(且轻易地)改善?我终于能看懂 `iostat` 了!甚至是在一群主机上。还有 `bpftrace`!你看过 Brendan Gregg 用来展示 `bpftrace` 的 (https://www.brendangregg.com/blog/2019-08-19/bpftrace.html) 那些玩意吗?你不需要再忍受这些了。事实上,我也不需要了。 (https://gist.github.com/tqbf/03d7d3656a41f838308e6ce55224ebe3) 一张 BPFUI 的截图 (https://sockpuppet.org/blog/2026/05/12/emacsification/bpfui.png) 我是一名漏洞研究员。2026 年上半年,随着 Agent 编程在漏洞利用开发上的突破,我简直像进了糖果店的孩子。但我理解,这让我显得有点怪,对你们大多数人来说,伴随这些进步而来的只有恐惧。 所以我很高兴能有些新东西可以聊,而且这些新东西感觉上是纯粹的利好。构建原生 UI 现在变得有趣了——比做 Web 界面有趣多了。试一试吧:做一个只针对你自己问题的、愚蠢而具体的东西,享受它一小会儿,然后把它分享到某个地方——或者更好的是,只分享一张截图和你用来制作它的提示词。

相似文章

自适应 Markdown

Reddit r/artificial

自适应 Markdown 是一种开源文档格式/查看器,利用编码智能体使文档具有交互性,为学术阅读、笔记记录和自动化工作流等任务提供实时工作空间。

MD+HTML Reader

Product Hunt

MD+HTML Reader 允许用户在专注的工作区中查看AI生成的Markdown和HTML。