这周 brew update 之后,有一行描述让我停了一下。
"Vim 8 long term support version with no LLM-generated code"
这不是功能描述,是一种表态。
就好像某家餐厅在门口挂出"不用味精"的牌子——
这家餐厅要传达的,不只是关于味精。
本周一句话总结
工具还在进场,但边界开始出现了。
本周新增工具速览
🧪 New Formulae
| 名称 | 中文说明 |
|---|---|
| ansible@13 | Ansible 13 稳定版,自动化部署与配置管理 |
| baguette | iOS 26 无头模拟器管理与宿主端输入注入 |
| bun | 极快的 JS 运行时、打包器、测试运行器(终于进 core) |
| cargo-show-asm | 查看 Rust 代码生成的汇编、LLVM-IR、MIR 和 WASM |
| ec | TUI 三路 git merge 工具 |
| elio | 功能完备的终端文件管理器,带丰富预览 |
| ghcid | 基于 GHCi 的极简 Haskell IDE |
| gixy | 面向安全的 NGINX 配置静态分析器 |
| hookdeck | 把 Hookdeck 的 webhook 事件转发到本地服务 |
| k0sctl | k0s Kubernetes 集群的引导与管理工具 |
| kimi-code | Moonshot AI 出的终端 AI 编码 Agent |
| libbcg729 | ITU G.729 A/B 语音编解码器的编解码库 |
| m4rie | GF(2^e) 上稠密矩阵快速算术库(2≤e≤16) |
| miniz | 轻量级高性能 zlib/Deflate 压缩库 |
| pitchfork | 以开发者体验为核心的守护进程 CLI 管理工具 |
| rmux | tmux 风格 CLI 加守护进程运行时的终端多路复用器 |
| rura | 用于构建 shell 管道的交互式 TUI 便签本 |
| threatdeck | TUI 威胁情报监控与告警平台 |
| vim-classic | Vim 8 长期支持版,声明无 LLM 生成代码 |
| wtype | Wayland 版的 xdotool type,模拟键盘输入 |
🧩 New Casks
| 名称 | 中文说明 |
|---|---|
| buzz | 本地语音转录与翻译 |
| clickshare | Barco 会议系统无线投屏客户端 |
| dfu-blaster-pro | 把 Apple Silicon Mac 强制进 DFU 模式的工具 |
| dotnet-reactor | .NET 代码保护与混淆工具 |
| dwellclick | 无需按键、靠悬停触发点击的无障碍辅助工具 |
| font-geist-pixel | Geist 像素风字体 |
| groove-omnidialer | 外呼销售拨号管理 |
| ibm-notifier | IBM 出的企业端自定义通知与告警 Agent |
| macparakeet | 本地语音转文字、转录与会议录音 |
| microsoft-365-copilot | Microsoft 365 的 AI 生产力助手 |
| microsoft-remote-help | 微软企业 IT 支持用的远程协助与屏幕共享 |
| mindmanager | 思维导图与可视化项目管理 |
| openlogi | 本地优先的 Logitech Options+ 替代品,适配 HID++ |
| power-monitor | 电源适配器与电池状态报告 |
| shichizip-zs | 基于 mcmilk/7-Zip-zstd 的 7-Zip 衍生 GUI |
值得留意的几个方向
这周有一个我从没见过的措辞出现在 Homebrew 里。
它让其他几个工具都显得更值得一看了。
vim-classic:一行描述,一种立场
brew info vim-classic 只有一行核心描述:
"Vim 8 long term support version with no LLM-generated code"
"no LLM-generated code"——这在工具的官方元数据里出现,是我第一次见到。
这不是在说 LLM 生成的代码质量不好。
它说的是一种可追溯性:每一行代码,作者都清楚它从哪儿来、为什么在这里。
Vim 8 已经是功能意义上的成品,它不需要新功能,只需要有人认真维护。
vim-classic 的选择是用人的判断来做这件事,而不是借助辅助生成。
你可能不需要 vim-classic。Neovim 更好、vim 够用。
但它的出现本身是一个信号:
当 LLM-assisted 成为默认时,"手写"开始变成一种需要声明的特性,就像"有机"或"手工"一样。
这种逻辑早晚会蔓延到更多地方。
ec:终于有人把三路 merge 做成 TUI 了
┌─────────────────────────────────────────────┐
│ ec — TUI 3-way git mergetool │
├───────────────┬───────────┬─────────────────┤
│ LOCAL │ BASE │ REMOTE │
│ │ │ │
│ func foo() { │ func foo │ func foo() { │
│ return 1 │ () { │ return 2 │
│ } │ return │ } │
│ │ 0 │ │
│ │ } │ │
├───────────────┴───────────┴─────────────────┤
│ MERGED OUTPUT │
│ func foo() { │
│ return ▌ │
│ } │
└─────────────────────────────────────────────┘
← → 切换块 Space 选择 Enter 应用 q 退出
三路 merge 是 git 里最让人头疼的一环。
git mergetool 默认弹出 vimdiff 或者你随便配的编辑器,
多数人要么不知道怎么用,要么每次都要重新想"左边是我的还是他的"。
ec 做的事很简单:把 LOCAL / BASE / REMOTE 三路放在 TUI 里并排,
让你用键盘选择每个冲突块应该用哪个版本,然后输出 MERGED。
它省掉的,是"看着 <<< === >>> 手动对齐"那种脑力消耗。
rura:shell 管道的草稿本
很多人不知道自己其实需要一个"管道调试器"——
直到他们写出了 cat file | grep foo | awk '{print $2}' | sort | uniq -c | sort -rn 这样一条命令,
然后发现根本不知道哪一步开始出错了。
rura 是个 TUI 便签本:你在里面一段一段地搭 pipeline,
每加一步都能即时看到那一步的输出,
错了就改那一步,不用每次都重跑整条命令。
┌─────────────────────────────────────────────┐
│ rura — shell pipeline scratchpad │
├─────────────────────────────────────────────┤
│ INPUT │
│ cat access.log │
├─────────────────────────────────────────────┤
│ STEP 1 grep "404" [42 lines] │
│ STEP 2 awk '{print $7}' [42 lines] ▲ │
│ STEP 3▌ sort | uniq -c [editing...] │
├─────────────────────────────────────────────┤
│ PREVIEW │
│ 128 /api/missing │
│ 43 /favicon.ico │
│ 7 /admin/login │
└─────────────────────────────────────────────┘
它不是 shell 的替代品,是 shell 的草稿纸。
它省掉的是那种"我不确定这一步对不对,但也不想重跑一遍"的犹豫。
rmux:tmux 的精简重写,带守护进程运行时
tmux 很好,但配置文件那几百行、插件生态、偶尔出问题时的调试——
对于"我只是需要一个会话持久化的终端分窗"来说,有点重了。
rmux 的定位是:tmux 的 CLI 风格,更简单的守护进程模型。
你依然用 rmux new -s myproject、rmux attach -t myproject 这种命令,
但它的守护进程从设计上更轻,更容易推理。
这不是要取代 tmux 的项目。
它是"我知道 tmux 能做到,但我只需要 20% 的那个人"的选项。
一点个人感受
bun 终于进了 homebrew/core,而不是只在 tap 里。
这件事本身不大,但标志着它已经不是"新东西"了。
kimi-code 进场了——Moonshot AI 的编码 Agent 加入了 Claude Code、Codex、Gemini CLI 的行列。
现在 Homebrew 里的 AI 编码 Agent 已经有七八个了,
我有点好奇大家到底在用哪几个、或者全都在用。
vim-classic 是这周我想得最久的。
不是因为我会用它,而是因为它的描述方式让我意识到:
"这段代码是人写的"正在从隐含假设变成需要被声明的事。
这个转变发生得比我想象的快。
macparakeet 和 buzz——本地语音转录这个品类今年明显多了。
不知道是 M4 芯片快到了足够跑的程度,还是大家开始认真对待隐私。
或者两者都有。
结语
这一周没有爆炸性的工具,但有一行描述让我觉得这期值得写。
"no LLM-generated code"——四个词,一条隐形的分界线。
它出现在一个 Vim 的 fork 里,出现在 2026 年,
这件事本身比任何新 AI Agent 都更值得记下来。
当默认值发生变化,反其道而行就变成了一种声明。