外观
Emacs 社区日报 2026-09-16
约 5684 字大约 19 分钟
2026-09-16
自动整理自 Telegram 讨论组,每天更新。内容为 AI 摘要,仅作信息索引与回顾。

Emacs 中文讨论组
🎯 核心热点与专题探讨
专题一:Emacs 31/32 的 Lucid/自绘重绘 Bug 排查
群内最持久的讨论之一。围绕 --with-x-toolkit=no(原生 X 绘制)与 Lucid 两种构建方式,多位用户在 Emacs 31 上复现“大片区域不刷新”的问题——包括 magit 折叠后不重绘、光标所在行高亮失效、C-x b 即可触发等。老风扇给出一个 patch 尝试修复,用户实测仍存在偶发重绘失效,但“无伤大雅”。有人指出该问题是从 30.1 到 31 之间引入的,且“没人用 lucid”所以长期无人修。使用 wayland 的群友反馈 lucid 字体不糊、不受缩放影响,pgtk 反而“怎么调都不太对”。
专题二:AI Agent 接入编辑器的不同方式与体验
围绕 opencode、pi、ds 等 AI agent 与编辑器的结合展开。核心观点是:ACP(Agent Client Protocol)作为统一接口,有望在同一个界面用同一套操作方式驾驭不同 agent。有人提到 zed 支持 ACP,但 vscode 同事大多“开个终端跑 opencode”。关于模型表现,群友实测 gpt sol 接 pi 比接 codex 有 10-20% 性能下降,得出结论“肯定还是用参与了后训练的自家 harness 比较好”。也提到 DeepSeek 的新模型训练在极简模式下,只给一个 shell 工具可能比给各种花哨工具更好。
专题三:Vibe Coding 的反思与争议
有人发出“暴论”:未来的开源仓库都应自带 skill.md 告诉 agent 最佳实践。随即引发争论——有人调侃“代码我都不手动写了,我还读文档?”,也有人尖锐批评“vibe coding 是一个让人不断去放弃 review 和思考的过程”。关于 Emacs 社区对 AI 的态度,有人指出“源码维护拒绝 ai,但配置、包这些谁管得着”,RMS 对 AI 生成代码的版权问题持保守立场。还提到 RMS 曾想搞一个 office 版的 Emacs,被群友泼冷水:“开源拖拉机想要啥就自己写,凭什么 RMS 许个愿就有人写”。
专题四:Elisp 新手引导的社群冲突
一个小白问 shell-command 怎么传入变量,引发了一场关于“读文档”与“耐心带新人”的激烈争论。有资深用户讽刺“总有人是新手的,戾气不用那么重”,也有人坚持“学而不思则罔”,甚至断言“全部读完 Emacs 文档也就两个月”。随后有人翻出旧账质疑:“你自己有全部读完 emacs 和 elisp 文档吗?”气氛一度紧张。最后以“授人以鱼不如授人以渔”收场,也有人感慨“不如叫人用 AI 了”。
🔑 关键概念与技术解析
ACP(Agent Client Protocol):一种统一 AI agent 与编辑器的通信协议。群友评价其优势在于“消除掉各类 agent 在界面、操作流程上的不同”,使 zed 等编辑器可以用同样的操作方式接管不同 agent。但 ACP 目前有连接速度问题——pi 连接慢约 30s,而
dsh秒连。Lucid:一种 X Window 的 toolkit(Xaw,X Athena Widgets)。与 pgtk、gtk2 等并列。在 wayland 下通过 xwayland 使用时,字体渲染不糊、缩放表现稳定。但 31 版本存在严重的重绘 bug。
--with-x-toolkit=no:指不使用任何 toolkit,由 Emacs 自己用原生 X 绘制(自绘)。不是“没有 X11”,而是绕过 toolkit 层。仍可产生 GUI,只是绘制路径不同。cl-return(cl-lib):Elisp 本身没有显式return关键字,函数是隐式返回。但通过cl-lib的cl-return可以在任意点提前返回,还可以返回多个值。群友调侃“Haskell 有 return 但还是不知道返回什么”。xref-change-to-xref-edit-mode:Emacs 31 新增的能力,可在 xref buffer 中直接进入编辑模式,类似 wgrep 对 grep buffer 的编辑能力。群友实测发现 undo 不会反映到原文件的 modified 状态,怀疑是 NEWS 文档与实际行为不一致。max-mini-window-lines/resize-mini-windows:决定 shell-command 输出是在 echo area 显示还是弹出 buffer。输出短时在 minibuffer 显示,长时自动弹出输出 buffer。
💎 碎片知识与金句拾遗
- “我越使用 AI 我就越懒得去 review 和去思考” —— 对 vibe coding 的警惕性自省。
- “至少先了解一下 REPL 是什么” —— 劝新手别跳过基础。
- “向群友许愿跟向 LLM 许愿没啥区别吧?” —— 对“伸手党”文化的观察。
- “顶富用 API vibe” —— 吐槽 DeepSeek 纯 API 价格贵(月初 2B 就烧了 500 多)。
- “dpsk pro 太 TM 贵了”“今天的 pro 就是 flash” —— DeepSeek 定价/模型代际的碎片情报。
- “用 ediff 看 diff” —— 在 Emacs 中结合 AI agent 的有趣玩法。
- “不用 vim mode 改用鼠标,换上 modus 主题,把字体调大一点,就没有任何手感问题了” —— 给 zed 手感差开的药方。
- “我发现只要不用 vim mode…… 就没有任何手感问题了” —— zed 的鼠标操作体验被肯定。
- “我的 vi 就是 emacsclient” —— 一句话的 workflow 宣言。
- “less 主要支持半屏滚动,可以配 lessopen” —— 只读文件时用 less 的理由,以及 lesspipe 可解压/解析多种格式。
- “直接 C-l 好像就是半屏了” ——
C-v C-l组合实现半屏滚动,但“不太适合 dvorak 用户”。 - “我把 (format "%s-minimap" ...) 提取成变量后这个变量的值是当前 buffer” —— 新手在写 code-minimap 插件时踩的 Elisp 作用域坑。
- “有了这个字体补丁以后我也感觉到了好处” —— 指 magent 项目(https://github.com/Jamie-Cui/magent)。
- “helm 在 igc3 分支下重启就崩” —— 可能是 rust 写的 flx 二进制包导致,连日志都没有立刻退出。
- “counsel-rg 比 consult-rg 好用” —— vritser 的日常推荐。
- “如果你把 lucid 编译出来也是可以用的,我刚刚用 —with-x-toolkit=no 编译了” —— 构建选择的实操分享。
- “Excel 遥遥领先,别人赶不上” —— 讨论办公软件时对 Excel 的评价。
- “PPT 的一大功能就是矢量绘图” —— 反驳“PPT 就是图片轮播”的观点。
- “graphviz 不太能控制图形的位置,画出来总很丑” —— 画图工具的主观吐槽。
- “SVG 经常出现位置不对、元素堆叠的问题,哪怕是 sol 这个模型也不例外” —— AI 生成图形布局的现状。
- “32 比 31 还是修复了些 bug 的” —— 群友尝试 32 分支的动机。
- “30.1 很是稳定” —— 对旧版本的肯定。
- “pgtk 字体大小处于不是整数的区间,怪怪的” —— 分数缩放下 pgtk 的字体渲染体验。
🛠️ 值得深入研究的点 (Follow-up)
老风扇的 Lucid 重绘 patch:虽然仍存在光标所在行高亮偶发失效,但已有用户测试“直接启动 segfault”(指可用性不稳定)。问题根源疑似在
EmacsWidget的Expose/GraphicsExpose被吞掉。值得持续追踪。canvas-minimap(像素级 minimap):群友分享了 Reddit 上的实现 https://www.reddit.com/r/emacs/comments/1w8cp2v/canvasminimap_a_pixelbased_minimap_using_emacs/ ,属于 Emacs 侧边 minimap 的新方案。另一位群友则用 Elisp + shell-command 自研 minimap,在“检测输入后更新 buffer”与“外部守护进程轮询文件”之间纠结——前者性能开销大,后者实现复杂。
xhs.el(grok 模仿 chirp 写的 Emacs 包):两天时间弄出 2.8G 缓存,说明 AI 生成的代码在缓存管理方面存在严重问题,值得调研其实现细节。
skill.md仓库规范:群友提出的“未来开源仓库自带 agent 使用文档”的设想,直接关联到 agent 生态下的开源协作范式,可作为后续话题。ACP 与 zed 的深度集成:群友设想“在 zed 里用 ACP,用同一套操作方式操作不同 agent”。目前 ACP 连接速度差异较大(pi 慢 30s,dsh 秒连),说明 ACP 本身仍有性能优化空间,值得进一步实验。
Emacs 32 分支:群友正在使用 32 分支(lucid 构建),据说修复了部分 bug。对于关注 Emacs 未来的开发者,32 分支的稳定性与重绘表现值得跟踪。
观点延伸
当天最值得咀嚼的,不是“哪个 Agent 更强”,而是一个更硬的问题:AI 编程的性能边界,越来越不只由模型决定,而由 harness、工具接口、上下文装配和验证闭环共同决定。
1. 统一接口解决的是迁移成本,不是能力差距
ACP 的价值很明确:让不同 Agent 在同一编辑器里共享上下文入口、交互方式和界面,减少用户切换工具时的认知负担。但这只是“操作层统一”,不是“执行层统一”。群里提到同一个模型接入不同 harness 后出现明显性能差异,已经说明:Agent 如何组织工具调用、何时读取文件、如何回看 diff、怎样处理失败,都会改变最终结果。
因此,ACP 更像 USB,而不是发动机。它能让设备接得上,却不能保证设备性能一致。真正值得比较的指标,不应只是连接速度或单次回答质量,还包括:首个有效动作的延迟、无效工具调用比例、修改后的测试通过率、失败后的恢复能力,以及用户能否清楚地审查每一步。
2. “只给一个 shell”不是极简崇拜,而是降低接口熵
群里关于只提供 shell 工具的讨论,隐含着一个工程判断:工具越多,不一定越强。每增加一个结构复杂、描述不一致、边界模糊的工具,模型就多了一层选择成本和误用风险。一个能力强、反馈清晰、权限边界明确的 shell,反而可能让 Agent 学会稳定的操作策略。
但极简接口的前提是可观测性足够好。命令必须有可靠退出码,输出不能被截断得无法判断,文件修改要能通过 diff 复核,危险操作要有明确边界。否则“一个 shell”只是把复杂度从工具定义转移到了调试现场。
3. Emacs 的优势在于把验证重新嵌回工作流
用 Emacs 接 Agent,真正有价值的并非把终端搬进 buffer,而是把 Agent 的产物接入 Emacs 原有的语义工具:用 ediff 看修改,用 xref 定位符号,用 REPL 验证表达式,用 buffer 和窗口系统观察状态变化。这样,AI 输出不再是一个需要整体接受的黑盒,而是一组可以局部检查、回滚和继续编辑的中间结果。
这也解释了为什么“越用 AI 越懒得 review”是危险信号:如果 Agent 让验证变得更麻烦,用户就会自然地只看结果。好的集成应当反过来,让 review 比手写代码时更便宜。
可继续研究/实践
可以做一个小型对照实验:固定同一任务、模型和仓库,只替换 harness 或接入方式,记录工具调用日志、首个有效动作延迟、diff 大小、测试结果和人工返工次数。再分别比较“终端 Agent”“ACP 接入编辑器”和“Emacs 原生集成”。若不能证明集成降低了验证成本,统一界面就只是换了皮肤,而不是提升了工程效率。
Emacs 轻聊讨论组
🎯 核心热点与专题探讨
专题一:供应链安全与语言选择之战(TS vs Rust/C)
这是全天最激烈、持续时间最长的争论之一。导火索是 nextjs 等大型项目被爆出供应链攻击(序列化注入、npm install 恶意脚本),引发了群内对“为什么这些项目都是 ts/py 写的”的质疑。
- 核心痛点:
npm install会执行代码,而不仅仅是下载文件。某成员分享了自己“版本号就差一个小点”差点被干的经历,并直言“所以我都不装 ts 写的工具”。 - 防御策略:
- 用独立的 Linux 用户跑 TS 项目,隔离敏感数据。
- 更新依赖时,让 AI 通读变更源码,排查供应链攻击。
- 使用
npm install --ignore-scripts绕过安装脚本。 - 终极方案: 某成员直接宣布“完全不考虑任何 typescript 写的东西”,转向“有 C 的用 C,没有 C 的用 Rust”。这几乎成了群内的“技术信仰宣言”。
- 名场面: 有人讽刺最好的防御是“不装 node”,并贴出
node: command not found的截图,引起一片叫好。
专题二:AI 编码工具范式与模型能力边界
围绕 Codex、DeepSeek Harness (dsh)、GPT-6、Gemini 等工具,讨论了 AI 在真实编码中的定位。
- dsh 极简模式封神: 成员发现 dsh(DeepSeek Harness)的“极简模式”效果远好于标准模式。标准模式下模型思考会循环,极简模式下则“快刀斩乱麻”,准确度和思维能力出奇地高。甚至有人对比后认为“极简模式比 luna 强多了”。
- AI 写代码的坑:
- Elisp 领域: DeepSeek 不擅长写 elisp,容易出现变量不存在、括号错误等问题。群友分享经验:定义好辅助函数,靠快速迭代修复。
- SQL 领域: “gpt6 写的代码,查询类需求实现起来用 select for update”,被吐槽“没太懂这是为了哪门子的安全”。
- 测试领域: “test 看似写的很多,点进去都是一坨”,AI 写的测试代码质量堪忧。
- AI 能力边界共识: 认为“直接生成二进制”是吹牛逼,模型连编译器都搞不定;AI 直出 SVG 都很困难。但 AI 在总结、查询、数据分析等通用任务上表现极佳(例如 Gemini 用于文档重构和总结)。
专题三:构建工具与 C++ 模块的复杂依赖
讨论从“go-task / just / bb-task 怎么选”开始,最终升华到“Makefile 是否万能”的哲学问题。
- 核心观点: 有成员坚持“学习各种工具加起来都不如精通 makefile 有用”,认为 Makefile 的依赖处理能力被低估,项目结构应适配 Makefile。
- 反面案例: 有人指出 C++20 模块的编译有严格顺序依赖(模块接口 BMI),导致
.o文件之间产生八竿子打不着的依赖关系,Makefile 处理起来是灾难,且不能多线程编译。LSP 也因为不知道 import 的模块是哪个文件而无法支持。 - 结论: 最终回到“换语言就能解决”的调侃,但承认 C++ 模块提案已经 6 年,CMake 今年才支持,说明工具链演进极其缓慢。
🔑 关键概念与技术解析
- dsh (DeepSeek Harness): DeepSeek 推出的 Agent 框架,自带 CLI 工具。其“极简模式”只保留简单命令、不加载其它模块,针对后训练优化过,能避免标准模式下的思考循环,效率和准确度显著提升。
- nelisp: 一个用 Rust 从零重写 Emacs Lisp 解释器的项目。它自带 Elisp 的 C 函数(如
string-to-number、make-process),目标是让 Elisp 脱离 Emacs 运行,方便开发 TUI 应用。 - jsfuck: 一个利用 JS 隐式类型转换(弱类型+动态类型)进行代码混淆的网站,最终可以将代码压缩成仅由
+![]()组成的写法,体现了 JS 类型系统的“自由”与诡异。 - Monk.party: 一个共享 API Key 中转站,提供 Gemini、GPT 等模型的低门槛接入,但有严格的频率限制(冷却时间)。其“上游渠道暴露”问题被群友指摘,但“日限 ¥200”的定价策略被认为抓住了需求痛点。
- MT (Multi-Token Prediction): 在部分 CLI 工具(如 Go/Rust)中新增的配置 flag,指多 token 预测,用于减少大模型推理时的 token 消耗(节省输入 token)。
- C++20 Modules (BMI): 模块化编译后生成的“二进制模块接口”。其它源文件需要先编译出该接口才能编译,导致构建过程有严格顺序要求,且无法并行,对构建工具和 LSP 支持是巨大挑战。
💎 碎片知识与金句拾遗
- AI 不会让你不加班,反而可能让你加班更猛。 —— 群友感叹“有 AI 加的更猛了”。
- “我这种单 agent 就能搞定工作的废物已经学不动了” —— 面对群里持续讨论 AI Agent,某成员如此自嘲。
- “马斯克那个直接生成二进制的想法是吹牛逼,模型现在连编译器都搞不定” —— 对 AI 能力边界的清醒认知。
- “我从来不背单词,俺没能力去外企。” —— 被问及背单词时,群友如此耿直回答。
- “中国的饮食文化,很难不得幽门螺旋杆菌。中国基本不分餐。” —— 由点外卖话题延伸到饮食健康,得出了这个生活观察。
- “Deepseek 不太擅长写 elisp,但好在它速度很快,能够快速修复。” —— 用速度弥补准确率的典型策略。
- “AI 写的太多 review 不过来,test 看似写的很多,点进去都是一坨。” —— 对 AI 代码质量的精准吐槽。
- “你们说为啥这些项目都是 ts py 写的呢?” → “因为他们的作者没被供应链攻击干过。” —— 经典对答,直指生态信任问题。
- “dsh 缓存 99%,拼尽全力蹬不完额度。” —— 对 DeepSeek 缓存机制的夸张描述,暗示其 API 成本极低。
- “打工人”的共鸣: “加班工资 = 25元/h”、“加班工资的三倍,并不是我日薪的三倍”、“我们固定晚上 30,周六 60,但要申请,不打卡”。
- 业界奇闻: “Anthropic 内部员工正把 Claude 当作他们的‘神’,曾为 Claude 3 Sonnet 举行葬礼。” —— 讨论 AI 文化时转发的新闻,引发“妈呀,a➗也太吓人了”的感叹。
- AI 玩游戏: “我用的是 xdotool + 截屏,来玩 Mineclonia(Luanti 上的 Minecraft 风格游戏)。” —— 展示了 AI 通过视觉操作游戏的可能性。
- 冷门工具推荐: “如果是在 Windows 上用 telega.el,需要
tdlib.dll和telega-server.exe,还有 msys 依赖。” —— 维护者正在收集 Windows 教程引用。 - 开源社区观察: “jkitchin 这位大佬开始转向用 VSCode 了。” —— 提到
org-mode大佬 John Kitchin 的动向。
🛠️ 值得深入研究的点 (Follow-up)
- nelisp (Rust 重写 Elisp): 群友计划用它将 Emacs 工具链抽出来,并结合 AI Agent 做 TUI 开发。Rust 重写的解释器如果成熟,可能颠覆 Emacs 生态的扩展方式,值得关注其仓库进展。
- dsh 极简模式: 已在多个场景被验证“比标准模式强得多”。该模式作为模型后训练的优化方向,可能成为未来 Agent CLI 的标配,值得深入研究其 prompt 设计和加载策略。
- sing-box (iOS MT 版): 群友希望加入 HTTPS MITM 和 HTTP Inspector 功能,实现精细化广告屏蔽(比域名/IP 屏蔽更精细)。虽然工程量大,但若能实现,将是 iOS 代理工具的重大突破。
- Socket (socket.dev): 用于检测 npm/pypi 依赖包投毒和漏洞的安全监控服务。在供应链攻击频发的当下,它有望成为开发者工具链的标配。
- DAGU (dagucloud/dagu): 群友分享的“最强 workflow 编排工具”,跨平台支持 Go/Rust 等 4 种语言,被视为 Go-task 和 just 的替代方案,但 Linux 生态位尚不明确,值得观察。
观点延伸
当天最值得咀嚼的,不是“TS、Python 还是 Rust/C”谁更高级,而是一个更具体的判断:工具的风险边界,已经不能只按语言和功能划分,而要按它能触达什么权限来划分。
1. “不用 Node”是情绪,“最小权限”才是工程方案
群里从 npm install 会执行代码,迅速推导出“不装 TS 工具”“有 C 用 C,没有 C 用 Rust”。这种选择有现实依据:依赖安装、构建脚本和自动更新,确实把“下载软件”变成了“执行陌生程序”。但语言本身不是安全边界。C 项目同样可能携带恶意构建脚本,Rust 项目也会拉取依赖、执行构建过程;一个预编译二进制甚至比源码更难审计。
真正可复用的方案,是把工具放进受控环境:独立用户、无敏感文件、限制网络和密钥访问,安装阶段默认关闭脚本,更新前锁定版本并检查变更,运行后再验证它实际访问了哪些资源。AI 可以帮忙读 diff,但不能替代隔离;“让模型审源码”是提高发现率,不是授权模型承担安全责任。判断一个工具是否值得用,应该从“它是什么语言写的”升级为“它默认拥有什么权限”。
2. dsh 极简模式说明:Agent 的问题常常不是模型不够强,而是上下文和工具过载
群里对 dsh 极简模式的评价很有张力:标准模式会循环,极简模式反而更快、更准、更利落。这与“模型越强,工具越多越好”的直觉相反。工具、规则、历史上下文和自动 compact 并非免费,它们会扩大决策空间,也会让模型不断重新解释任务。对于边界清楚、反馈快速的工作,少加载能力可能比增加能力更可靠。
这也解释了为什么 Elisp 场景中,“速度快、错了能马上修”仍然有价值:只要 Emacs、lint、格式化和测试构成闭环,模型就不必一次性理解整个生态。更好的 Agent 不是替人类完成所有判断,而是把任务拆成可验证的小回路:先给计划,再改局部;改完立即调用解释器或测试;失败时保留错误现场,而不是继续生成更多代码。
可继续实践的方向是建立一套“风险分级运行模板”:低风险查询使用极简模式;代码修改必须经过 lint、测试和 diff review;涉及依赖安装、密钥、生产数据的任务自动切换到隔离用户。最终要优化的不是单次生成速度,而是从意图到可验证结果的总成本。
