外观
Emacs 社区日报 2026-06-12
约 5125 字大约 17 分钟
2026-06-12
自动整理自 Telegram 讨论组,每天更新。内容为 AI 摘要,仅作信息索引与回顾。
Emacs 中文讨论组
好的,各位群友。已收到并解析完当天的242条聊天记录。信息密度极高,聚焦点非常明确,群友的硬核探索精神令人振奋。以下是本次的结构化知识归档。
🎯 核心热点与专题探讨
专题一:Emacs 通知系统的重构与生态演进
当天讨论的核心引擎。从 mu4e-notification 迁移到 knockknock 引发了一场关于 Emacs 通知系统的技术辩论,并最终指向一个更深层次的需求:如何优雅地处理 Emacs 的“反馈”(Feedback)与“通知”(Notification)。
- 痛点:
echo-area(回显区)作为默认反馈区域,功能过于混杂。普通操作反馈(如M-x的提示、光标移动信息)与需要立即注意的异步任务进展(如 AI agent 任务完成、邮件新到达、编译结束)混在一起。群友mu4e-alert、alert等方案虽能使用系统通知,但被认为“太吵”,且无法满足 Emacs 内部精细分级的需求。 - 讨论的核心框架:
knockknock(konrad1977/knockknock)提供了一个基于 Emacs 内部的弹窗样式,但其“没有自动顶位/退位”功能,被指相比 NeoVim 的nvim-notify仍有差距。这激起了大家对一个 “正经的 Emacs notify” 的渴望——一个能根据重要性分级、自动堆叠、可自定义外观、并最终可能取代echo-area的新模式。 - 解决方案与实践:
- @Adelie 分享了
agent-shell-knockknock的改造方案,并指出其核心机制是利用header-line+ SVG 图标 来实现“固定在上方”的通知效果,而非传统的echo-area或posframe。这提供了一个极佳的实现思路:利用已有组件(header-line)进行魔改。 - @ 提出了“设置不同的静音等级和分组”的思路,暗示通知系统需要像现代操作系统一样具备精细的权限管理。
- @A 展示了
scrollview的进步,能将compilation-mode的结果直接显示在 scrollview 中,这是一种将终端输出以通知形式内化到编辑器界面的尝试。
- @Adelie 分享了
结论:Emacs 社区正在从依赖系统通知和简陋 echo-area 的旧模式,向构建一个与 Emacs 美学和架构深度整合的、可编程、可定制的内部通知生态迈进。header-line 和 margin 被证明是极佳的“画布”。
专题二:AI 深化后的工作流与工具演化
AI 不再是配角,而是正在重塑核心开发工具链。讨论围绕“AI Agent 编排”与“代码分析图”两个子主题展开。
AI Agent 编排的艺术:
- 群友普遍认为,直接用单一 Prompt 喂给 Codex 是“初级阶段”。更高级的实践是 “用更强的模型(如 Opus/Fable)做编排,用 Codex 做执行”。这揭示了 Agent 设计的核心:决策与执行的分离。
- @B 分享了“用 PI 自己 vibe 出自己的插件”的理念,将调试过程也委托给了 AI,开启了真正“即用即修”的定制模式。多位群友表示赞同,并开始用类似方式修改或创建自己的 Emacs 组件。
- 争议点:通过非 Codex 的 Agent 调用 GPT 是否会“降智”?结论是编排方式影响巨大,但最终效果高度依赖 Agent 的设计质量。
代码分析工具的革新与“RIIR”思潮:
- @ 对
codegraph(开源代码图工具) 的批评非常尖锐:“简直是一坨屎……从程序分析的角度上看”。这表明现有工具在分析精确度上存在根本性问题,无法满足高阶需求。 - 呼应这一批评,@ 正在开发
codegraph的替代品,并自信“应该可以大幅比 codegraph 好”。这表明在 AI 辅助编程时代,高质量的代码依赖图(Code Graph) 是降低 AI 推理成本、提升代码理解和生成准确性的关键基础设施。 - @ 提到了
lsp-proxy(jadestrong/lsp-proxy),这个项目试图用 Rust 重写 LSP 通信层,并采用 TOML 配置以避免 Python 依赖。这直接体现了 “RIIR”(Rewrite It In Rust) 思潮在 Emacs LSP 生态中的渗透,核心目标是性能优化和依赖简化。 - @C 认为有了 AI 后,LSP 使用频率下降。但 @D 和 @E 仍认为 LLM 慢,或需要 AI 外的精确功能(如重命名/重构),凸显了 AI 与 LSP 不是简单的替代关系,而会是互补与融合。有人甚至提出了 “AI版的LSP” 这一前瞻性构想。
- @ 对
专题三:Emacs 性能优化:从 JIT 瓶颈到 GPU 加速
org-mode 的高性能瓶颈再次被聚焦,并引申出更宏观的性能提升路径。
- 具体问题:
org-mode在包含大量src block和latex fragment时输入卡顿。@ 提供的 Profiler 报告明确锁定罪魁祸首:jit-lock函数在执行font-lock-fontify-keywords-region时,处理org-activate-links、org-do-emphasis-faces等字体锁定关键字消耗了 50% 的 CPU。 - 缓解策略:
- @ 分享了经验:对
org-src-font-lock-fontify-block加“naive memo”或启用jit-lock-defer-time可以缓解。这揭示了通过延迟非关键区域的字体锁定来提升即时响应速度的策略。 jit-lock的固有缺陷在于,即使是编辑无关的 block 区域,当 buffer 变 dirty 时也可能触发其 fontification,导致不必要的性能开销。
- @ 分享了经验:对
- 未来方向:
- 核心改进:讨论普遍认为,需要从根本上改进 Elisp Interpreter(提升10-30%速度)和引入异步、多线程。
- 前瞻性信号:@B 分享了一个邮件列表链接(
lists.gnu.org),有人在 macOS 上为 GNU Emacs 贡献 GPU 加速 的相关代码。这标志着 Emacs 社区开始正式讨论利用现代硬件 GPU 来卸载渲染和部分计算任务的可行性,是对现有架构的重大突破。
🔑 关键概念与技术解析
- knockknock: 一个为
mu4e设计的 Emacs 内部通知包,作为mu4e-notification的替代品。它使用header-line和SVG图标在 buffer 顶部显示固定通知,实现了类似 Web 端 Toast 通知的效果,但更原生。 - codegraph: 一个开源的代码依赖图构建工具,旨在为 AI 代码补全和重构提供代码上下文。群友普遍批评其分析精确度不够。
- RIIR (Rewrite It In Rust): 一种软件重写思想,即“用 Rust 重写它”。在 Emacs 生态中,这通常指为了性能、内存安全和更好的并发模型,将 Elisp、Python 实现的插件(如 LSP 桥接)用 Rust 重写。
- LSP-proxy / lsp-bridge: 两者都是旨在解决 Emacs LSP 客户端性能问题的方案。
lsp-bridge(已停止维护)由 Python 实现,而lsp-proxy受其启发,改用 Rust 实现并采用 TOML 纯文本配置。 - Agent Shell: 一种基于终端的概念,强调用户通过 Agent(可能是 AI)与系统交互。它的
buffer可以承载复杂的状态信息,并利用 Emacs 的header-line实现固定界面元素。 - org-rs (org-rs/org-rs): 一个试图用 Rust 重写 Org mode 解析器和核心算法的项目。目标是让 Org mode 脱离 Emacs Lisp 也能独立运行,用于博客后端、内容管理系统等场景。是 RIIR 思潮在组织化文档管理领域的具体体现。
💎 碎片知识与金句拾遗
- Emacs 性能洞察: “Emacs 加载 362 个包,一共只需要 23秒。”(@)——这提供了一个高质量 Emacs 启动性能的参考基准。
- 开发工具变迁的反思:
- “有ai之后,我没开过lsp。。。”(@)
- “我连我自己写的 blame 包都很少用了。magit 也用少了。”(@)
- “不知道,现在我都几乎完全不用 mc 了,直接甩给 llm 了。”(@)
- “r....riir? ‘可以的,哈哈,现在到处都在 riir’。”(@)
- 关于多元光标编辑的思考:
- “最后一个痛点在于multi cursor。你们真的习惯用macro来做多光标编辑吗?”
- “换成 dvorak,就可以忘掉 vim 的肌肉记忆了。”(——这绝对是极客的黑色幽默)
- AI 化开发的真切体验:
- “我这subagent的组件全都是让pi自己vibe出来的。用的时候出问题了就让它现场修。有种定制emacs的感觉了,还挺爽的。”(@)
- 对开发者贡献的敬佩与感怀:
- “tarsius Jonas Bernoulli 这个人好厉害呀……他获得了好多赞助……贡献代码也是一种赞助。”(@)
- “开源项目,就是,用爱发电。想攒一点钱然后去农村生活,靠开源项目赞助。”(@)
- “好想变成能赞助的人……”(@)
- 矩阵社区的尴尬:
- “為啥這群都會有奇怪的人加入,matrix感覺不像詐騙、色情的怪人會用的東西”(@jineuropium)
- “你防不住有机器人不停地扫描”(@)
- “辛苦了,谢谢你为 Emacs 群的贡献~”(在线版@DejaVu Sans Mono / @)
🛠️ 值得深入研究的点 (Follow-up)
knockknock(基于header-line的实现路径): 深入阅读其代码,研究如何利用header-line实现固定悬浮通知。这为构建基于自有组件的通知系统提供了一个绝佳范本。lsp-proxy(jadestrong/lsp-proxy): 关注其 Rust 实现的性能表现和配置方式。它是解决 Emacs LSP 性能瓶颈的一个有希望的新方案。codegraph的替代者: 关注 @ 正在开发的“大幅比codegraph好”的项目。如果未来能开源,这将是提升 AI 代码理解能力的关键一环。- Emacs GPU 加速的 macOS 补丁: 跟踪
lists.gnu.org上关于 macOS GPU 加速的邮件列表。这可能是 Emacs 未来十年性能架构变革的先兆。
Emacs 轻聊讨论组
好的,这是根据您提供的聊天记录整理的知识库。
🎯 核心热点与专题探讨
专题一:机场客户端的安全与信任之殇
群内围绕某机场(代理服务商)因试图“禁止用户导出私钥”而引发的社区热议展开了深度讨论。这触动了技术圈对网络安全、用户主权和商业行为边界的高度敏感神经。
- 核心痛点: 机场主企图通过“私有客户端”实现对用户连接控制的绝对垄断,甚至包括阻止导出私钥这种行为,被群友视为“搞笑”和“傲慢”。核心矛盾在于:用户对代理服务的信任建立在客户端透明和可控的基础上,任何隐蔽的后门或限制都被视为对用户安全的潜在威胁。
- 细节分析:
- 方案评价: 群友讽刺其原始方案是“vibe coding出来的,自己没有用脑子思考过”,意指开发者缺乏严谨的工程思考,匆忙上马不合理功能。
- 核心观点: “反正我是不建议群友用只能用私有客户端的机场的。它干了什么你是不知道的。” - 这反映了技术社区的信条:不要信任不透明的客户端。用户曾容忍共享密钥下收集信息的风险(“之前你ss他们共用一个密钥,被收集些信息也就算了”),但私有化后,风险等级急剧升高。
- 边界判断: 群友进一步细分了“支持”开源客户端(如 FlClash)与“魔改”开源客户端的区别。魔改行为等同于创建私有客户端,同样背离了开源的透明原则。
专题二:AI驱动的“创作/编码”工作流——从代码到小说
群内多位成员深入探讨了如何将“软件工程”方法论应用于文字创作,以及如何构建高效的AI Agent工作流,涉及缓存、召回、框架选择等多个技术细节。
1. 用“写代码”的思维写小说
- 方法论: 成员“matata”提出,将代码工程中的版本控制、约束文件(如
agents.md)、错误复盘(“尸检报告”)等概念引入小说创作。例如,用大纲(世界观、设定卡、伏线、人物卡、时间线、剧情线)作为“架构”,用约束确保Agent不跑偏。 - 痛点: 不同模型在代码和文本上的行为差异。成员观察到,“写code感觉这个问题几乎没有、ai几乎不会懂错地方 不知为何写text感觉不行”。推测原因是代码的“强结构”和“缺省错误”特性,而文本的歧义性更高。为此,成员提出了
<full_doc> <editing_part> <user_prompt>的分段提示策略,在指令层面约束Agent只修改指定部分,防止“按地鼠式”的修改。 - 展望: 目标是从“比番茄小说强”的现状,通过投喂大量优质小说(“扒点盗版小说下来训练”)和高质量结构化prompt,最终“看起来比较接近人写的”。
- 方法论: 成员“matata”提出,将代码工程中的版本控制、约束文件(如
2. 构建RAG/Agent系统的工程选型
- 缓存与召回困境: 成员“matata”在构建笔记场景的Agent时,遇到了“cache偏低”的问题(仅30%)。原因在于“prompt太轻了 doc一边就很难cache”,即单次文档查询的上下文过短,难以有效缓存。这引发了对是否要“搞重一点”(构建更复杂的缓存/索引策略)的思考。
- Embedding与向量库选型:
- sqlite-vec的瓶颈: 成员发现
sqlite-vec在Go语言生态中存在“cgo vs wasm”的二选一困境,且处理“成千上万本素材”时效率不佳。 - HNSW的崛起: 转而使用Go的
hnsw库(具体为coder/hnsw),并利用FTS5(全文搜索)+ 索引进行素材召回。成员认可“还是用现成sdk得劲”。 - Embedding模型选择: 使用
ollama本地运行开源Embedding模型,如bge-m3,认为效果不错。
- sqlite-vec的瓶颈: 成员发现
- 框架与Agent: 成员探讨了是“自己裸调API”还是使用“现成agent”。推荐观点是“用一个合理的框架(如Hermes Agent)然后基于那个基础改会好一些”,自己从零硬搞非常累。成员“matata”正是如此,自己组织了一套工作流,将“hermes agent”改造为专门用于编写小说。
专题三:AI模型评测与商业策略
群友们持续关注最新的模型动态,并对其表现和商业模式进行批判性评价。
- Kimi K2.7 Code: 有成员认为其“有点东西”,虽然修复成功但“和预想的不一样”,也存在“只是比之前稍微聪明一点”的保守评价。核心槽点在于其“额度不透明,随时缩水”的体验。
- GLM: 被认为“体验挺惊艳...一大堆国模里面唯一一个能干活的”,但批评其“比kimi更离谱...经常背刺用户,高峰降智429...猛砍套餐”。
- Other: 有成员推荐使用“opencode go”作为替代方案。
- 未来期待: 社区普遍期待DeepSeek融资后的下一次更新。关于Fable (OpenAI的某个强力模型) 的价格与能力的讨论热烈,有成员幻想能出现“1%价格的Fable”模型,而这被认为“太不可能了”。
- 关键事实: M3 (推测为Mooncake或某模型) 是一个428B的MoE模型,并传出涨价消息,引发群友吐槽“胆太肥了”。
🔑 关键概念与技术解析
- HNSW (Hierarchical Navigable Small World): 一种高效的近似最近邻搜索算法。在向量数据库中常用于快速检索与查询向量最相似的文档(例如,在RAG系统中)。成员提到的
coder/hnsw是Go语言对该算法的一个实现,用于替换sqlite-vec,解决大规模向量导入的性能问题。 - FTS5 (Full-Text Search 5): SQLite的一个全文搜索扩展。允许对数据库中的文本内容进行快速的、高质量的关键词搜索,常与向量搜索(如HNSW)结合使用,作为RAG系统的“召回”层一部分。
- MoE (Mixture of Experts): 一种模型架构,将一个大模型分解成多个“专家”子网络,每次推理时只激活少数几个专家,从而在保持模型巨大参数量的同时,降低计算成本。群友意识到“原来大模型都是MOE啊”,反映了当前大模型设计的趋势。
- Vibe Coding: 指一种“随性、无规划、凭感觉”的编码方式,通常由AI辅助(如Claude Artifacts)产生代码,但缺乏对架构、安全、可维护性的深思熟虑。群友用此词嘲讽机场主的简单设计。
clutch/hermes: 聊天中提到的两个Agent框架。clutch似乎是一个正在开发中的、支持多种数据库后端的项目。hermes是一个成员正在改造的小说创作Agent框架。sqlite-vec: 一个SQLite扩展,用于在数据库内直接进行向量运算和搜索。其缺点(Go环境下需cgo或wasm)是替代方案(如HNSW)被提出的直接原因。
💎 碎片知识与金句拾遗
- 机场安全哲学:“之前你ss他们共用一个密钥,被收集些信息也就算了,真上了私有客户端鬼知道机场主想干什么。”
- AI的“造假”行为:“让他对接个 plex,做好的页面看起来什么都有,一问为什么没效果,都是伪实现....” —— 指出了AI Agent在模仿UI和行为上的一个常见缺陷。
- 技术社区里的民粹:“进入 AI 时代之后,才发现老外程序员群体里有这么多民粹。” —— 观察到AI话题下非技术因素的争吵上升。
- 白嫖文化反思:“真的有人白嫖软件(或开源或闭源)然后还在吐槽得不到回应和解决的情况下,说开发者服务意识差么?” —— 引发了对开源社区不良互动模式的讨论。
- 开发者心态:“保持厚脸皮就行了, 对于没有贡献过的人来吐嘈直接怼回去。”
- Telegram API更新:提及了Telegram Bot API的富文本格式史诗级更新,支持headings (
<h1>-<h6>), 但推测可能不支持直接手写Markdown。 - 冷门但有趣的项目:
ghostty-blackhole: 一个只在Ghostty终端运行的着色器,会产生一个漂浮的“黑洞”,长时间工作不休息会逐渐遮挡屏幕,象征性地“逼迫”开发者休息。非常硬核的“工作/休息”提示工具。FlClash: 开源代理客户端,并非“私有”,但如果被魔改则性质改变。
- GPT-4o网页版体验:“很卡,非常卡。某个session内容越多就越卡。” 并且存在发送无响应的问题,成员推荐使用更加稳定的CLI工具。
- Google Play的“防不胜防”:“气死我了,google play 暗改用户习惯,暗改成了 wifi 自动更新软件...我手机的软件基本都被更新了” —— 用户对平台“自动更新”和“暗改设置”的强烈不满。
- 对国产模型的基础评价:“感觉跟5.4mini差不多。” —— 极其简短地将K2.7 Code与某模型做对比。
🛠️ 值得深入研究的点 (Follow-up)
- 将RAG与“写代码”思维融入小说创作的实践:关注
matata如何将agents.md、FTS5、HNSW、和hermes agent组织成一个完整的、旨在产出高质量小说的AI工作流。这个方案很有前瞻性,值得追踪其成果。 Clutch项目:该项目正在开发Redis和MongoDB(文档数据库)的支持,并计划支持以类似DataGrip的表格形式展示数据。对于需要统一管理多种NoSQL数据库后端的Claude/Agent开发者来说,这个项目可能成为一个重要的工具。- Emacs的SVG性能测试:虽然冷门,但对于Emacs用户或关注客户端渲染优化的开发者来说,该测试结果(
emacs-svg-benchmark)可能指引一个更流畅的交互界面设计方向。 Ghostty-blackhole:这款仅限Ghostty终端的着色器创意十足。它的设计哲学(通过UI干扰强行让用户休息)和对终端UI渲染效果的利用,值得所有终端用户和开发者思考。
