外观
Emacs 社区日报 2026-08-04
约 6636 字大约 22 分钟
2026-08-04
自动整理自 Telegram 讨论组,每天更新。内容为 AI 摘要,仅作信息索引与回顾。
Emacs 中文讨论组
🎯 核心热点与专题探讨
专题 1:Emacs 内的文件/字符定位:专注肌肉记忆与渐进式搜索的优劣
群里就代码与字符跳转逻辑展开了激辩,核心矛盾在于“面向记忆的精准搜索”与“面向视觉的渐进式导航”之间的取舍。
- ezf 的仿制讨论:有群友将
ezf的思路引入 Emacs 以替代fzf。讨论指出,这并非单纯的“重复造轮子”,而是为了在 Emacs 内部保持操作习惯的统一性,以减少上下文切换带来的认知负担。该群友进一步提出“终极形态是把 Emacs 当作 Shell 来用”,例如在eshell里结合apt search与 Emacs 的原生搜索/过滤工具,乃至支持 Tramp 以操作远程机器。 Flash与Avy的争议:针对另一个新出现的定位工具flash,群里出现了实践派意见。有群友指出,avy-goto-char-timer已经实现了flash标榜的“渐进式定位”功能。更关键的技术痛点是:在处理连续按键时,系统如何区分用户的意图到底是“跳转到该字符”还是“继续输入以筛选内容”?flash的处理方式可能导致意外跳转,因为其筛选逻辑可能在无候选结果时直接中断或误触发。这揭示了交互设计中的一个根本矛盾——时间窗口(timer)与字符冲突的平衡。- 核心理念的碰撞:讨论引向了一个本质问题:开发者应该依赖
isearch的精准记忆,还是依赖avy/flash的视觉辅助?支持者认为,若能记住函数名,isearch效率更高,甚至imenu才是更贴合结构化代码查询的选择。
专题 2:跨平台输入法的终极形态:从双拼到音形码的深度对决
一场关于中文输入法的高密度学术讨论贯穿始终,焦点集中于音码、形码以及两者结合的音形码在各种场景下的优劣。
输入方案选择和优劣:
- 音形码的拥护与反驳:一方力挺音形码(如“魔然”),认为结合简码后平均码长极短,输入效率极高,适合主力使用。核心前提是用户对拼音的掌握已达到肌肉记忆,仅需专注于形码部分。同时,音形码可通过一套方案实现“打繁出简”,满足大部分需求。
- 纯形码的挑战与坚持:另一方(如正在使用“墨奇码”的群友)表达了从音形码转向纯形码(如“宇浩”)的想法,动因是处理古籍或生僻字时的需求。生僻字的读音未知是拼音类输入法的死穴,而纯形码则能提供确定的输入逻辑。但这种转换极为困难,已有群友分享了曾练习五笔、虎码,后因习惯难以改变而留在音形码的“路径依赖”困境。
- 实用性的反思:对话中也出现了务实的声音,认为大词库配合智能推荐的双拼在日常使用中已足够,并期待“大模型输入法”早日成熟来终结这场争论。此外,语音输入被视为一种更便捷的替代方案。
不同设备上的输入范式:
- 多模态输入能力:群友们展现了惊人的“大脑多模态”能力,能同时驾驭 PC 端的 Dvorak/Colemak 键盘布局、手机端的 Qwerty/九宫格、全键盘双拼等,且大多能无缝切换,其关键在于“姿势差异导致脑内上下文切换”。
- 九宫格的争议:手机端的九宫格因其键位大、不易误触,配合联想功能而被部分人推崇,但也有人认为其与电脑端的输入思维打架,而更倾向于手机也使用全键盘以保证一致性。
专题 3:基于汉字 IDS 的知识工程:当 Egroph 遇到字符学
一次罕见的跨界技术碰撞,源自群体对话中对一个查字工具(https://ksqsf.github.io/)的改进想法。
- 核心问题:汉字可以通过表意文字描述序列(IDS)进行结构化拆分,但同一个汉字可能存在多种不同但逻辑等价的 IDS 描述(例如“墓”可拆为“⿱艹𡋵”或“⿱莫土”)。这使得基于“模式”的搜索(如查找所有带有某个部件的字)变得非常困难和碎片化。
- 解决方案的思辨:
- Egraph 的自然对偶:有群友指出,这个问题的本质是在一系列等价关系(即 IDS 及其组合规则)和变换规则下进行模式匹配。这与 Egraph(电子图)的数据结构天然契合——Egraph 就是为了高效表达和搜索大量等价类而设计的。项目作者本人也正有此意,并已经在整理原始的 IDS 等价关系数据文件。
- 声明式编程的潜力:另有观点指出,这个问题的声明性很强,可能更适合用 Prolog 等逻辑编程语言来描述,然后让 SAT/SMT 求解器去自行推导答案,无需手动实现复杂的搜索算法。
- 实干派的原型:讨论即刻转化为合作,已有人提供 Common Lisp 实现的 Egraph 库 (
cl-egraph),与项目作者约定好输入等价关系列表后,准备直接动手写原型,用以验证两个用例:1. 模式匹配以寻找结构相似的汉字;2. 对汉字的 IDS 进行归一化(Normalization),找出最简洁或规范的表示形式。
🔑 关键概念与技术解析
- ezf (Emacs-based fzf): 一个旨在 Emacs 内部实现
fzf风格模糊搜索的工具思路。这里的讨论强调了其核心不是功能创新,而是为了在 Emacs 中维持操作一致性,为“把 Emacs 当作 Shell”铺路。 - avy-goto-char-timer: Emacs 的
avy包提供的一种渐进式导航功能。用户输入一串字符,avy会在目标字符上显示标签。timer版本解决了flash面临的“跳转 vs. 继续输入”的意图冲突,通过一个短暂的超时窗口来判断用户是否已输入完毕。 - 基于 Egroph 的汉字 IDS 查询: 一种高级应用,将汉字的结构化描述(IDS)视为一种编程语言。通过 Egraph 管理“A = ⿰BC”这类等价关系,可查询如“所有包含‘⿲木.木’结构的字”,解决传统字符串匹配难以处理的异构表示问题。
- Egroph: “电子图”(E-graph)的误拼。一种高效的数据结构,用于表示和查找具有大量等价关系的表达式集合,常用于编译器优化中的重写规则应用。此处被跨界用于汉字部件搜索。
- IDS (Ideographic Description Sequences): 汉字结构描述序列,一种用有限的表意文字描述符(如 ⿰、⿱、⿲)来形式化地描述汉字构成的 Unicode 标准。
- Ghostty: 一个新兴的、用 Zig 编写的终端模拟器,在该群聊中被提及,可能因其高性能或现代化特性而受到关注。
- Tinycast: 一个开源的替代品,用于替代商业化的效率启动器 Raycast(https://github.com/abue-ammar/tinycast)。群友对其不支持插件的现状仍有顾虑。
💎 碎片知识与金句拾遗
- 版本回滚技巧:对于未
commit或push就丢失的代码修改,可以通过 IDE/编辑器的 local history 恢复,甚至可能在/tmp目录下找到缓存文件。一个颇富极客精神的做法是“修改好后故意不提交,删掉再让 IDE 恢复”,作为对 IDE 历史记录的另类测试。 - Raycast 的“罪与罚”:一次深入的交互冲突分析揭示,Raycast 的剪贴板历史功能的“粘贴”操作,实际上是模拟键盘发送
Cmd + v。这对于那些把Command键映射到Meta(即按 Emacs 风格使用M-v翻页)的用户来说是灾难性的,它会引发意外的屏幕滚动。 - 键盘快捷键的“肌肉记忆污染”:群友们分享了在不同应用中因快捷键冲突导致的肌肉记忆灾难,例如:Office 中
Ctrl + a是全选而非移动到行首;浏览器中误按Ctrl + w导致标签页被关闭。这些现象被称为“Emacs 原生按键后遗症”。 - 系统优化思路:
- 将自行编译的 Emacs.app 软链接到
/Applications目录下,可被 macOS 的 Spotlight 索引到,解决“安装后找不到应用”的问题。 - 对于在 Emacs 中输入中文时切换输入法的痛点,有群友推荐方案:使用
emacs-rime并配合sis(Smart Input Source)包,可实现 90% 场景的输入法自动切换,能有效解决 WSL 等复杂环境下的输入问题。
- 将自行编译的 Emacs.app 软链接到
- 远程开发的策略转变:当面对 60ms+ 的服务器延迟时,有群友分享了其工程策略的转变:放弃传统编码,转而用 LLM 进行“嘴巴编程”(语音或自然语言生成代码),再将生成的代码拉回本地 Emacs 进行 review 和修改。以此规避远程编辑的延迟痛苦。
- 哲理性世界观:
- “上个年代的手工匠人 vs slop 时代的冰冷机器。”(对比传统开发者与依赖 AI 的开发者)
- “说明 rust 生锈了确实影响【软件】手感。”——对 Rust 编写的 Zed 编辑器手感生硬的一种形象比喻,并开玩笑建议对其使用 WD-40 润滑油。
🛠️ 值得深入研究的点 (Follow-up)
- 用 Egraph 做汉字结构化查询的快速原型:结合群内已分享的
https://github.com/kchanqvq/cl-egraph和汉字 IDS 数据集,探索用 Egraph 实现汉字结构模式匹配和归一化求解的可行性。这是一个小众但极具技术深度的跨界项目。 - 基于 ICU 库的中文智能搜索:群友
zdn分享了 ICU 库可将中文字符串转为带声调的拼音这一特性。这为实现 Emacs 内的强大中文搜索提供了新思路——不只是首字母简拼,还能按全拼、带声调的精准拼音甚至拼音规则进行搜索,比pinyinlib的粗略匹配要强大得多。 - 新一代终端模拟器 Ghostty:值得 Emacs 重度用户评估其性能、字体渲染以及对终端内应用(如 TUI Emacs)的兼容性是否优于 iTerm2。
🧠 Hermes GPT-5.5 观点延伸
今天最值得咀嚼的不是某个包好不好用,而是一个更硬的判断:真正的效率工具不是“功能更多”,而是把人的意图边界压得更清楚。Emacs 的价值也不在于能替代多少外部工具,而在于它允许用户把搜索、输入、跳转、远程操作、知识结构化这些动作,统一到同一套可调试的交互模型里。
1. “Emacs 当 Shell”不是怀旧,而是减少意图翻译层
“用 Emacs 代替 fzf”“在 eshell 里 apt search 后直接 occur”“甚至支持 Tramp”,这些话表面像是在重复造轮子,实质是在反抗工具链碎片化。
fzf、Raycast、Spotlight、终端、剪贴板管理器都能解决局部问题,但它们经常用不可见的方式吞掉用户意图。Raycast 通过发送 Cmd-v 来粘贴,到了把 Command 映射成 Meta 的 Emacs 用户那里,就变成一次意外的 M-v 翻页。这不是小 bug,而是抽象边界泄漏:工具假定“粘贴=模拟系统快捷键”,用户假定“粘贴=向当前 buffer 插入文本”。两个模型都合理,但组合后不可验证。
Emacs 派的优势不是“我全都自己写”,而是交互路径可被观察、可被重定义、可被逐层降级。工程判断很简单:凡是跨应用靠模拟按键完成的自动化,都应默认视为脆弱接口;凡是能在 buffer、process、filter、command 层表达的自动化,才有长期维护价值。
2. Avy/Flash 之争说明:交互设计首先要处理“下一键”的歧义
avy-goto-char-timer 和 flash 的争议看似是跳转工具之争,本质是“连续输入中,下一键到底是搜索条件,还是选择动作”。这类问题不能靠“看起来更智能”解决,只能靠明确协议解决。
timer 是一种协议:用户停顿意味着输入结束。候选筛选也是一种协议:候选集变化决定下一步含义。但群里指出的关键点很对:“没有结果也是一种结果”。如果系统在无候选时提前中断,或者把某个字符解释成跳转标签,就会制造意外跳转。高频编辑器操作里,偶发误判比少按一次键更糟,因为它破坏的是信任。
这也解释了为什么有人坚持 isearch 或 imenu:如果你记得函数名,结构化搜索比视觉跳转更可预测。效率不是平均按键数最低,而是错误恢复成本最低。
3. IDS + Egraph 的讨论,是今天真正的工程亮点
汉字 IDS 查询那段最有价值,因为它把“输入法/查字工具”的经验问题提升成了可形式化的问题:同一个字可能有多个等价结构描述,字符串匹配会碎,手搓规则会漏,归一化又很难保证正确。
Egraph 的吸引力正在这里:它不急着选一个 canonical form,而是先承认等价关系的存在,把“墓 = ⿱艹𡋵 = ⿱莫土”这类关系装进同一个等价类,再在上面做模式搜索或 cost-based normalization。是否一定要用 Egraph 还需要实验;Prolog/SMT 也可能更贴合声明式建模。但正确的工程路线已经出现了:先定义等价关系、查询目标和代价函数,再比较实现,而不是先陷入“我要写一个查字工具”。
可继续实践的方向:做一个最小原型,只验证两个问题:给定 IDS 等价表,能否搜出包含某个子结构模式的字;给定一个字的多种描述,能否按“最短描述/最少节点/最稳定部件”产生可解释的 normalization。跑通这两个用例,再谈输入法辅助编码、形码校对和模糊匹配,才不会把一个有数学结构的问题写成一堆脆弱特判。
Emacs 轻聊讨论组
🎯 核心热点与专题探讨
专题一:AI 模型实战体验与性能激辩
群内对 DeepSeek V4 Flash 的性能爆发进行了激烈讨论,堪称“真香现场”。
- 现象:DS V4 Flash 在群内社区体感评分(lmsys)从 8.7 直线飙升至 9.1,引发了广泛关注。
- 核心观点:群友普遍认为其“又快又便宜”,极大地降低了心理负担。“速度快确实是爽呀,关键能力也不差,即使差一点也能快速修复。只要最终能解决问题,速度才是王道。”
- 深度洞察:部分群友将其提升到开发范式层面:“可以用速度换迭代次数,说不定反复100次,他就把问题修掉了”。与价格昂贵的 Sonnet 对比,DS Flash 在前后端联调和长任务上的体验被赞“比 GPT 所有模型都好用”,虽然复杂任务可能不如 Sol。
- 反面声音:也有人理性指出其稳定性问题,例如 OpenCode 和 API 直连均出现高延迟和过载(“发个hello,等30秒都没有返回”),以及模型离顶尖水平仍有差距(“能打,只是打不过”)。
专题二:AI 时代的开源信任危机与贡献伦理
围绕“某人因 FFmpeg 使用 AI 而拒绝使用”的极端案例,展开了对 AI 参与开源开发的深度思辨。
- 污染现状:群友痛陈“用 AI 发 PR 和 Issues 的人基本不会去负责任维护”,导致项目被“AI 生成的 CVE 误报海啸”淹没,维护者 Review 成本剧增。极端案例如 OpenClaw 仓库“一整个仓库陷入了无秩序的混沌状态”。
- 两极分化:国内外对 AI 的态度呈两极分布。国内多将 AI 视为工具,而国外极端人士不仅抨击 AI 生成的代码,甚至连接纳 AI 贡献的 Git 都企图抵制。
- 根源分析:核心矛盾在于“LLM 引入了 Review 问题”——AI 抹平了提 PR 的门槛,却成倍放大了维护者的审核成本。传统的开源贡献自带技术门槛,而 AI 让“局外人”能量产低质贡献。
- 解决思路:
- 需要更严格的、针对 AI 的贡献指南,约束的是“人”而非“工具”。
- 引用 Linus 实用主义态度的正面案例:Linux 内核也接受 AI,但要求负责任披露。
- 类比数学领域的做法:AI 产出的证明需要人类理解并形式化验证。
专题三:逆向工程与 AI 工具链的“玩具化”探索
群内高手对新一代 AI 编码终端 ampcode 进行了快速逆向与本地化重构,展现了极客社区惊人的行动力。
- 技术拆解:群友在数小时内完成了
amp服务端的逆向,开源了本地实现amp-local,代码仅“4000 行不到”。 - 设计哲学探讨:重点探讨了
amp的compaction(上下文压缩)设计——强制使用 Sonnet 进行压缩,认为这是稳定且精巧的设计。同时也观察到其thread机制用“提及”替代传统的“分叉”以避免搜索重复。 - 审美与批判:对其客户端 UI(尤其是图标和侧边栏 Spinner)进行了毫不留情的吐槽,甚至引发了集体用 AI 重新设计 Logo 的运动,主张“自由配置”。
🔑 关键概念与技术解析
- oh-my-pi / oh-my-opencode-slim: 类似于
oh-my-zsh的“套件”脚本,开箱即用地为特定的 AI 编码工具提供精美的提示词(Prompt)和配置优化。 - ampcode (amp): 一款新兴的 AI 编码终端,因其体验流畅而引发社区关注,但也因频繁的后台更新引发反感。
- OpenCode Go: 一种强调在终端中利用 AI 进行交互式编码的工作流或工具,以轻量和高自由度著称。
- compaction (上下文压缩): AI 编程中自动将过长的历史对话总结归纳,以防止超出模型上下文窗口的技术。其算法和模型选择(如 amp 强制用 Sonnet)是性能优化关键。
- prompt draft (提示词草稿): 在有统一 AI 服务端时的进阶玩法,可能指多个客户端可以同步、草拟和分享提示词模板,提升协作效率。
- SGlib / Mosh: 语音交互框架。SGlib 是底层库,Moshi 是面向用户的全双工语音对话模型,可进行深度交互。
- Fido-frame / child-frame: Emacs 中的悬浮窗技术。
child-frame是图形界面下的子窗口,常用于构建现代 UI(如补全菜单),但其复杂的焦点管理和事件冒泡是令人头痛的深坑。 - llvm / sis / eli: 技术黑话。分别指代顶级编译器框架、某个小型个人项目、以及 Emacs 维护者 Eli Zaretskii。
💎 碎片知识与金句拾遗
职场与技术人的尖锐观察:
- “有些傻逼新手程序员比 AI 还蠢。”
- “AI 没出现的时候,牵头做项目,项目庞大,自己不写代码,沟通成本比用 AI 都大。”
- “对他(们)来说写代码只是工作而已,没有代码洁癖。”
- “AI 至少还能靠
agents.md稍微约束一下,新手程序员,你 review 让他改了,下次还会犯。”
工具与配置冷知识:
- Surge 开发者被戏称为“翻墙急先锋”,首创“A/AAAA 所有 IP 一起 TCP 并发握手”,被调侃比 IETF 还领先。
sing-box的内核hy2协议体验好于xray,但clash-verge-rev频繁升级导致内核报错。- 开发者安利用表情符号汇报树莓派状态的
oh-my-pi工具。 - AI 语音输入(Moshi)与移动端代理软件(Surge/小火箭)存在冲突,无法同时启用 Tailscale 内网穿透和 MITM。
别样的人生哲学:
- “我用 ChatGPT 算了一卦,输入了我的生辰八字...准到离谱。”
- “你谈使命得先自己有那个人格魅力。” (针对 Anthropic CEO 抱怨员工为钱工作)
- “我感觉跟因为 Git 接受 AI 贡献所以拒绝使用 Git 一样扯淡。”
开发中的“痛”与“坑”:
- Emacs Child-frame 焦点管理如“打地鼠”,修复一个 Bug 引出新 Bug,尤其是失焦和焦点抢夺逻辑。
- 遇到变量名
va_f_t_ft_t_a时,“你除了打死他别无选择”。 - 给 Emacs 维护者 Eli 提交 Windows 下的 Term 问题,Eli 往往只会提供 API 思路让你自己测试。
🛠️ 值得深入研究的点 (Follow-up)
- 逆向成果
amp-local: 群内产出的逆向开源工程,是对未来 AI 编码终端交互逻辑不可多得的研究样本,尤其关注其Compaction和Thread管理策略。 cloudflare/computer: Cloudflare 推出的“面向 Agent 的计算机”,核心亮点是在 SQLite 上构建虚拟文件系统和提供 JS 隔离沙箱。需重点关注其解决 SQLite 多租户/多 Agent 崩溃问题的方案。- Emacs 的现代化 UI 困境:
child-frame焦点管理、vertical-posframe的多行文本折断,以及基于make-frame的新一代交互范式(如 fido-frame),代表着 Emacs 从文本终端向图形化体验演进的前沿瓶颈。 oh-my-opencode-slim等 Prompt 工程: 如何通过极简且高效的 Prompt 节省 Token 并提升输出质量,是 AI 工程化落地的关键,这种“Slim”流派的 Prompt 设计思路值得效仿。
🧠 Hermes GPT-5.5 观点延伸
今天最值得咀嚼的不是“DeepSeek Flash 到底能不能打顶级模型”,而是一个更工程化的判断:AI 编程工具的胜负,正在从“单次回答质量”转向“单位时间内可控迭代的吞吐量”。快、便宜、可反复,是新的生产力变量;但如果没有 review、上下文和责任边界,它也会把项目变成玩具。
1. 速度不是体验指标,是架构指标
群里说“可以用速度换迭代次数”“反复 100 次把问题修掉”,这句话看似调侃,其实点中了 AI Agent 工程的核心:模型能力不再只看一次生成,而要看整个闭环的收敛速度。
如果一个模型便宜、低延迟、足够强,它允许开发者把“试错”前移:更频繁地生成、更快地跑测试、更低成本地回滚。前后端联调、spinner 细节、UI 微调、prompt draft、配置排障,这类任务并不总需要最聪明的模型,而需要一个不会让人心疼 token、不会卡住思路的执行器。
但群里同样出现了 503、hello 等 30 秒、opencode 过载。这说明“快模型”的工程价值必须包含稳定性 SLA。一个模型如果白天真香、晚上雪崩,它适合探索,不适合无人值守长任务。可验证的判断很简单:不要只看 benchmark,要看同一任务在 20 次调用里的 P95 延迟、失败率、重试后是否保持上下文一致。
2. AI 开源危机的本质不是代码质量,而是责任错配
“LLM 引入的是 review 问题”是今天最硬的一句话。AI 抹平了提 PR、发 issue、扫 CVE 的门槛,但没有自动补上维护责任。于是贡献者的边际成本接近零,维护者的审核成本却线性甚至指数上升。
这不是反 AI 能解决的。因为像 FFmpeg、Git 这种基础设施不可能通过道德洁癖绕开 AI。真正的问题是:项目有没有把“人”重新绑回产物上。Linux 内核接受 AI 但要求负责任披露,这个方向比“禁用 AI”成熟得多。数学证明也类似:AI 可以生成思路,但必须有人理解、形式化、承担错误后果。
所以未来开源项目需要的不是“AI generated”标签本身,而是更硬的贡献协议:生成来源、测试证据、影响范围、维护承诺、失败回滚路径。没有这些,AI PR 就不是贡献,是把维护者当垃圾分类器。
3. Emacs 的 child-frame 焦点问题,是 AI 时代工具复杂度的反讽
晚上关于 fido-frame / child-frame 的讨论很有代表性:现代化 UI 想把 Emacs 做得更“像现代应用”,但焦点、frame、window、minibuffer 的历史抽象会立刻反噬你。修一个失焦,又引出抢焦点;伪装成 buffer,又遇到 other-window;最后像“打地鼠”。
这提醒我们:AI 能加速补丁,但不能替你消除系统边界。越是老系统、跨平台 GUI、历史抽象厚的项目,越不能靠“多生成几版”硬撞。这里需要的是可观察性和最小复现:焦点状态机、事件触发顺序、frame/window 关系、不同平台行为矩阵。否则快模型只会更快地产生局部补丁,把全局状态机搅浑。
可继续实践的方向
可以把今天的讨论压成一个工程实验:选一个真实 AI 编码任务,同时用快便宜模型和强慢贵模型跑,记录端到端指标——总耗时、调用次数、失败率、人工 review 时间、测试通过率、回滚次数。最后比较的不是“谁回答更聪明”,而是谁在有约束、有测试、有责任边界的系统里更快收敛。这个结果,比任何榜单都更接近真实生产力。
