外观
Emacs 社区日报 2026-11-02
约 4829 字大约 16 分钟
2026-11-02
自动整理自 Telegram 讨论组,每天更新。内容为 AI 摘要,仅作信息索引与回顾。
Emacs 中文讨论组
🎯 核心热点与专题探讨
专题:Unix 理念是否正在被“现代化”甚至“Windows化”?
讨论从一条关于“Windows 真的要 unix 化吗”的观察切入,随后演变成对 Unix 设计哲学与现代系统演进方向的争论。主要观点分歧:
- 正方(批判 Unix):指出 Unix 核心 API(如
getenv/setenv)非线程安全,uid/effective uid设计已显陈旧,SUSE 已宣布彻底弃用。认为 Unix 本质“已死”,理念落后 Windows 约 20 年。 - 反方(辩护 text-centric):认为 Unix 的“文本即通用接口”(Text is a universal interface)比“万物皆对象”(Everything is an object)更好,但正统 tty 确实是“屎山”。有人感叹“传统 tty 稍加改进就容易滑向‘为什么不 web’的泥潭”,暗示终端交互的演进困境。
- 折中观察:Windows Terminal 被举例为 Unix 化的典型,但终端模拟器本身与 Unix 化无必然关系,争论焦点最终落到“文本接口”与“图形对象”的根本范式差异上。
痛点:Unix 老 API 的线程安全缺陷、身份管理设计过时、tty 体验与现代开发需求脱节。解决方案的探讨未达成共识,但普遍倾向“文本接口”的合理性,只是实现载体需要革新。
🔑 关键概念与技术解析
getenv/setenv线程安全问题:Unix 环境变量读写函数,传统实现返回静态缓冲区指针,多线程下数据竞争风险极高。这是 Unix 老 API 不 thread-safe 的典型例证。uid/effective uid:Unix 权限模型中的真实用户 ID 与有效用户 ID,用于权限切换(如 setuid)。SUSE 已宣布彻底弃用该设计,暗示 Linux 生态正探索更现代的身份管理方式。- Text is a universal interface vs Everything is an object:两种系统设计哲学。前者主张所有组件通过文本流交互(Unix 管道思想),后者强调对象封装(如 Smalltalk 风格)。群内多数认可前者,但批评传统 tty 实现。
💎 碎片知识与金句拾遗
- “Unix 太老了,本质已经死了(不再变化)。” —— 直指 Unix 停滞的深刻观点。
- “传统 tty 是屎山,但是总感觉稍微加点东西就很快滑坡到「为什么不 web」了” —— 精准描述终端演进的两难境地。
- Magit 行号问题实战经验:
- 有人提议“让 git diff 输出行号”,但实际替代方案是 delta(支持行号+语法高亮的 diff 工具)。
- 但评价“delta 超卡”,且“用 magit 就是绑手绑脚的,凑合一下就行了”。
- 最终有人晒出自定义配置,被评价“看起来像 vim”,并透露“他是個前 vim 用戶” —— 侧面说明 Emacs 用户对 vim 风格的依赖。
- 默认配置之争:“默认的就是最好的” vs “默认的没有我的好看” —— 体现开发者对默认设置与个性化配置的取舍心态。
🛠️ 值得深入研究的点 (Follow-up)
- SUSE 弃用
uid/effective uid的具体技术方案:这是 Linux 权限模型演变的信号,值得跟踪其替代设计(如基于 capability 或 namespace 的权限体系)。 - Delta 的性能瓶颈:尽管功能丰富,但“超卡”的评价暗示其实现存在优化空间,可作为性能调试案例研究。
- “文本通用接口”的现代载体:Windows Terminal 的崛起可能只是开始,未来终端模拟器如何继承 Unix 哲学同时摆脱 tty 历史包袱,值得持续观察。
观点延伸
中心判断:当天两段讨论其实在问同一件事——一个接口的寿命由什么决定。 Unix 那段的答案是「承诺得越少,活得越久」,Magit 那段的答案是「可塑性越高,维护成本越重」。两者给出的是同一个判据:好的抽象不在于功能多,而在于出问题时能被局部替换。
一、「本质已死」其实是一种褒奖
getenv 的问题出在返回值语义(静态缓冲区),而不在「用字符串传配置」这个想法本身。判断一个接口该不该退役,要看它出问题时是「实现可以换掉」还是「调用方必须重写」:前者叫老化,后者才叫死亡。SUSE 弃用的是把策略直接做进机制里的身份模型;而这一弃用能被推行下去,恰恰说明 Unix 的接口层仍然可以替换。真正该警惕的,反倒是那些「因为改不动所以显得很稳」的设计。
二、text-centric 好、正统 tty 不好,因为 tty 不是文本接口
这两句能同时成立,关键在于 tty 走的是带内信令:ESC 序列把数据和指令混进同一根字节流。于是想加任何能力(行号、高亮、鼠标),都得在既有的带内语义里挤位置——这才是「稍微加点东西就滑坡到为什么不 web」的机制原因。web 真正可取的地方常被误认成图形,其实是协议分层:信令与数据分离,渲染层可组合。所以终端要革新,方向不是造一个更好的 tty,而是保住「文本仍是通用接口」的同时,把信令移出数据流。
三、Magit 行号是一份诚实的成本账
需求很朴素:status 页看代码没有行号。可行路径逐级退化——让 git diff 输出行号(做不到)、换 delta(有行号但超卡)、隐藏或凑合。这条链暴露的不是谁懒,而是 Emacs 生态的结构性成本:可塑性极高,但每次个性化都在给自己记一笔维护税。「绑手绑脚,凑合一下就行」和「默认的就是最好的」是同一个结论的两种说法——并不是认同默认,而是判断边际收益低于摩擦成本。还有个细节值得记录:定制成品「看起来像 vim」,而作者是前 vim 用户。肌肉记忆会穿越编辑器,所以「我的比默认好看」里面,有多少只是「我的比默认更像我以前用的」,值得自省。
可继续研究/实践
把「delta 超卡」变成能测量的问题,而不是体感结论:在同一仓库、同一份 diff 上,分别测进程启动、ANSI 解析、font-lock 三段耗时,定位瓶颈究竟在哪一层。如果瓶颈在 font-lock,结论会是「行号本身不贵,给行号上色才贵」,对应的实践就是按需只对当前 hunk 计算行号与高亮,而不是对整个 buffer 精修——一个当天就能验证的小实验。
Emacs 轻聊讨论组
🎯 核心热点与专题探讨
【专题一】Rime 输入法重构:wime 算法移植与语音输入探索
群内一位开发者(WD)正在对 Rime 输入法进行深度改造,移植了 wime 的算法替换原有方案,大幅提升了出词准确率。这场讨论延伸出几个关键方向:
- 算法移植:将 wime 的词频/候选排序算法移植到 Rime,替换魔然原有的算法逻辑。有群友反馈"出词的准确率高了很多",并计划为 WD 的修改提交 PR——他改造后的输入界面"尤其适合整句输入,一眼就能看到是哪里"。
- 语音输入探索:WD 计划进一步探索语音转拼音的路径,认为"语音转拼音之后就和正常的输入路径差不多了"。群友指出中文语音识别的声调难题:"声调表示不出来?"但有人澄清"可以表达声调,主要是算法模型的问题",并提到讯飞是最早做声调识别的厂商。豆包输入法的本地模型也被提及作为参考。
- Emacs 优先策略:该输入法方案目前只在 Emacs 内可用(支持 evil-mode 下的暂存状态编辑),WD 正在移植到 Rime 独立版本。有群友感叹"这竟然是在emacs里的效果吗"。
- 微信输入法对比:群友认为"微信输入法的首字准确率一直比 rime 的中文输入方案高——是所有",但 wime 的准确率已与微信输入法接近。中英混输被公认是最大难题。
【专题二】桌面环境迁徙潮:KDE 太卡,Wayland 新秀竞逐
多位群友表达了对 KDE 性能的不满("我的kde真的太卡了"),引发了一场关于新一代 Wayland 合成器的大讨论:
- Noctalia 实测:有群友已切换到 Noctalia,"内存占用才 200M,比 kde 好多了","从 kde 切换到 noctalia 感觉自己变年轻了"。但也有质疑:"分辨率越高内存就占得越多,感觉 cpu 也比别的 shell 吃得多一点"。有人从 KDE 切换到 XFCE 则自嘲"感觉变老了"。
- Umbriel 与 niri 对比:讨论涉及 Umbriel 是否比 niri 性能更好,以及 niri 的 Xwayland 兼容性问题("niri的xwayland问题有点多"),有群友实测"几乎没问题"。
- WM 哲学辩论:围绕 scrolling tiling(滚动平铺)与 dwm multi-tag 展开了深入探讨。核心观点:niri 的滚动平铺受限于窗口位置关系,而 dwm 的 multi-tag 支持多 tag 同时激活、自由组合显示。一位群友总结:"好用的 wm 應該有組合應用窗口的功能,niri 給的是一個受限于窗口位置的組合窗口的功能。"另一方则认为 niri 的逻辑"适合大显示器和多显示器"。
- X11 依赖者的困境:有群友需要 X11 进行 RDP 远程,被建议改用 Moonlight + Sunshine 串流方案。
【专题三】AI Agent 对话界面的 UX 之争
一个项目(shoulder/obelisk)引发了对 agent 对话界面设计哲学的讨论:
- 核心观点:"当前的 agent 对话界面就是脱裤子放屁多此一举的历史倒车"。
- 有群友在 tmux 中展开所有 diff/think/shell command,"把压力给到 tmux",但也承认"展开了看不过来,看多了也是眼花"。
- 有人计划给 tmux 加浮层,"仿造 codex 放在右上角"。
- 群友观察到行业趋势:"现在好像也有在做树状/图状的对话的",并调侃"核心功能卷不动了么"。
🔑 关键概念与技术解析
- wime:一个输入法候选词排序算法方案,以词频统计为核心。群友将其移植到 Rime 框架后显著提升了出词准确率,被认为是接近微信输入法准确率的方案。
- Rime:开源输入法引擎框架,支持高度定制。群内讨论集中于为其开发新的候选词面板交互,以及移植 wime 算法。
- Noctalia / Umbriel:新一代 Wayland 合成器(compositor),主打低内存占用与流畅体验。Noctalia 内存占用约 200M,被群友视为 KDE 的轻量替代品。
- niri:Rust 编写的 Wayland 滚动平铺合成器(scrollable tiling),支持将多个窗口划为一组、按位置关系滚动浏览。
- multi-tag(dwm 概念):将多个窗口打上多个 tag,激活多个 tag 时这些窗口可自由组合显示,不受位置关系约束。与 niri 的位置绑定式分组形成对比。
- jj (Jujutsu):新一代版本控制系统。群友指出 jj 与 git 同时存在时,AI prompt 会因同时包含 git 和 jj 信息而混乱,解决方案是"都不显示"。
- Telega:Emacs 中的 Telegram 客户端。群友分享了一个跳转到未读 @提及的快捷键:
telega-chatbuf-next-unread-mention。 - mise / nvm:Node.js 版本管理器。群友推荐使用它们而非 Debian apt 安装 node,因为 apt 的 npm 存在配置坑。
- Moonlight + Sunshine:开源串流方案组合,Sunshine 作为服务端跑在主机,Moonlight 作为客户端。被推荐用于替代 X11 forwarding 进行远程桌面。
- Kero.sh:被提及的 Windows 下 AI 编程工具候选,具体细节未展开。
💎 碎片知识与金句拾遗
- Debian 的坑:"Debian apt 安装 npm 都有坑,我用了快5年才发现……如果不是 agent 用 apt 装,我都没有发现这个坑"——群友分享了 salsa.debian.org 的链接说明具体问题,并推荐使用 mise/nvm 管理 node。
- 微信客户端逆向的教训:"以前我也整过,搞了个自己写的客户端,没几天号就被封了"——群友警告不要尝试自写微信客户端,"太冒险了,自己玩玩就好不要分享"。
- 进口电器的本土化细节:有群友发现俄罗斯市场上的中国电器没有配俄文界面,"应该是从中国这边直接走私过去的";翻译软件把"高中低"的中翻成了"中学"。
- Steam Linux 占比解读:Valve 调查显示 Linux 占比 3.95%,波动与简体中文用户增减相关——"凡是简体中文用户数增长的月份 Linux 份额就会下降"。
- AI 吐 token 的深夜瓶颈:"到了晚上,开始感觉到 claude code 吐 token 的速度变慢了"——可能是高峰期负载的观察。
- iOS 组网方案:群友分享用快捷指令自动化:打开某 app 自动启动 Tailscale VPN,关闭时切换翻墙 VPN,"我一直这么用的,没感觉有啥问题"。
- WM 动画的哲学:"如果你用一個性能特別好的桌面,你就會希望所有的東西都是瞬間響應的,然後你就會很討厭動畫。" 但也有反方:"还是有点动画好,没动画太硬了,特别是滚动平铺+多工作区,有点动画可以让你建立空间感"。
- 音乐品味:群友分享久石让的 "Merry-go-round of life"(《哈尔的移动城堡》主题曲),自称"这应该是我听过最高雅的了";还有人"最近着迷于波斯风格的氛围音乐"。
- 香港输入法教育趋势:香港教育局提倡小学二年级教拼音输入法而非仓颉/速成拆字,群友调侃"狗哥,你欣赏的仓颉输入法,香港都准备弃用了"。
- 电商卖 Token:李佳琦直播间开始卖 Token,"豪送 20 万亿 Token",天猫已上线 Token 充值中心接入阿里云、智谱、Kimi、MiniMax——AI 资源正走向消费化。
- NeoEmacs 的 Reddit 热议:在 r/emacs 引发约 200 条讨论,作者吐槽"很多人只是看了一下代码行数就瞎鸡巴说",为保兼容写了大量测试代码。
🛠️ 值得深入研究的点 (Follow-up)
- Rime + wime 算法移植:WD 正在将 Emacs 内的输入法方案移植到 Rime 独立版本,并计划探索语音转拼音输入路径。这是输入法领域的一个潜在突破方向,值得关注其最终发布与效果。
- Omnidiff / Shoulder:实时显示 AI 修改文件的 diff 的工具方向。群友认为可以在 Emacs 中实现类似效果,tmux 浮层方案也在构思中——agent 对话 UI 仍是未成熟领域。
- NeoEmacs:号称 100% 兼容 GNU/Emacs 的现代实现,在 Reddit 引起热议。作者认为明年会更成熟,值得关注其后续发展。
- Noctalia / Umbriel 组合:群友实测切换到 Noctalia 后内存占用仅 200M,"一切正常",但快捷键还需适应。这套轻量 WM 方案值得跟进测试。
观点延伸
中心判断:今天最值得咀嚼的不是谁的内存占用低,而是两场看似无关的争论共享同一个瓶颈:工具的表达力,取决于它的状态模型能表达什么组合,而不是取决于它跑得多快。窗口管理器组合窗口,agent 界面组合推理过程,两者都卡在“只能按位置、按时间线性排列”这一点上。
一、niri 被诟病的不是滚动,是“相邻才可组合”
群里那句“niri 給的是一個受限于窗口位置的組合窗口的功能”,比“滚动平铺爽不爽”更接近本质。dwm 的 tag 采用集合语义:窗口属于哪些 tag,由一张布尔表表示,同屏显示就是求并集;niri 的列采用序列语义,同屏显示的窗口必须连续。因此,序列能表达的同屏组合,只是集合能表达的组合的真子集,所以“功能倒退”这个判断在模型层面是成立的,与手感无关。
反方说“我划为一组不代表要同时看”,其实点出了分组的两层用途:同屏协作,和空间记忆。niri 把这两层压在一个维度上,而 dwm 允许把两层拆开。大屏之所以显得适合 niri,不是因为它的语义更宽,而是因为屏幕足够大时,一段连续区间恰好覆盖了你想看的那几个窗口,所以那些窗口都落在同一段区间里了,问题并没有被解决。
一个可验证的工程判断:如果你经常要把“1 号桌面的编辑器、2 号桌面的浏览器、3 号桌面的终端”放在同一屏,那就是集合需求,任何滚动或工作区模型都会逼你搬窗口;如果你只需要“知道它在左边还是右边”,序列模型的心智负担确实更低。这是使用模式差异,不是性能差异。
二、把过程摊开,不等于透明
“把压力给到 tmux”是今天最诚实、也最该警惕的一句:它承认信息架构还没做,只是把折叠与展开的决策外包给了终端复用器。半小时后同一个人说“展开了看不过来,看多了也是眼花”。这不是耐心问题,根源在于线性流没有索引。
diff、think、shell 调用是三种不同粒度的东西:diff 是结果,think 是过程,shell 是副作用。硬塞进一条时间线里,读者就只能靠滚动条做随机访问。树状或图状对话被提起,说明问题不在于“核心功能卷不动了”,而在于过程数据天然是树,界面把它压成了链表。一个可行的方向是:默认只给“改变了什么”(文件、行数、一句话意图),把“为什么”收成可跳转的节点,把“怎么做的”留到需要时再展开。
三、可继续研究的方向
拿一次真实改动做双视图记录:一份线性日志,一份“文件 → 改动块 → 触发它的那次思考”的树。让同一批人分别用两种视图找回某个改动,记录耗时和错误率。如果树在“定位”上明显更快、在“通读”上更慢,结论就不该停留在该不该做树上,而应该落在两种视图各自该服务哪类问题上。这比任何 UX 品味之争都更实在。
