升级打怪

 
在 vscode 中如何排查有问题的 extension?

没事逛逛github还是有益的。

这不,发现了这篇文章《Resolving extension issues with bisect》

"Just like git-bisect, but for VS Code extensions."

通过二分查找的方式,可以很快确认有问题的 extension,非常实用。


文章发布的的时间很早了,大概是2021年。

不得不说,vscode 的官方文档实在太多,很多有价值的内容,需要好好发掘。

 
🍺 Homebrew 更新周报 # 20260331 | 当"付费"成为协议

HTTP 402,一个等了二十多年的状态码,终于有人把它当真了。

三月末的更新列表里,有一种"不想等"的感觉。
不是那种急躁,是那种"既然要做,就不等标准完善了"的态度。
从终端里直接处理视频,到把付费写进 HTTP 客户端,都在说同一件事。


本周一句话总结

工具开始不再假装自己很"通用"。


本周新增工具速览

🧪 New Formulae

名称 中文说明
crip 提取服务器证书的工具
dispenso 高性能 C++ 并行编程库
jsongrep JSON 文档路径查询语言
lazycut 终端视频剪辑 TUI
miniaudio 音频播放和录制库
nextpnr-ice40 Lattice iCE40 FPGA 布线工具
opentimestamps-client 创建和验证 OpenTimestamps 证明
pay 自动处理 402 付费请求的 HTTP 客户端
pipewire-gstreamer PipeWire 的 GStreamer 插件
proxelar HTTP/HTTPS 中间人代理
qtcanvaspainter Qt Quick 加速 2D 绘图方案
qttasktree Qt 异步任务执行库
wireplumber PipeWire 会话和策略管理器
xcursorgen 从 PNG 图片生成 X 光标文件

🧩 New Casks

名称 中文说明
altar-ai AI 驱动的会议助手
claude-code@latest 终端 AI 编程助手
font-bj-cree BJ Cree 字体
font-saira-stencil Saira Stencil 字体
incident-io 事故管理平台
jiba Apple Music 元数据本地化工具
nimbalyst 用 Codex 和 Claude Code 构建的可视化工作区
notchi Claude Code 的 Notch 伴侣工具
nvidia-sync 在远程 Linux 系统上启动应用和容器的工具
ob-xf 虚拟模拟合成器
scribus@devel 开源页面排版程序开发版
voiden@beta API 开发工具测试版

值得留意的几个方向


lazycut:省掉"导出了再看"这一步

lazycut

终端里直接剪视频,听起来像是在秀肌肉。但它在省的心智成本其实是:你不用再"打开 Finder → 找到文件 → 拖进剪辑软件 → 等预览加载"。

很多时候你只是想"把这段视频前面三秒切掉",但完整的流程让你觉得"算了,就这样吧"。lazycut 把这个门槛降到了"cd 进目录就能干"的级别。

它不是在替代专业剪辑软件。它是在替你省掉"为了一个三秒操作而打开一个三分钟启动的软件"这件事。


pay:当 HTTP 402 不再是笑话

pay

HTTP 状态码 402 Payment Required,从 1997 年就写在 RFC 里,但二十多年来都只是个"保留字段"。所有人都知道它存在,但没人真的用它。

pay 这个工具的出现,不是在说"我们终于能用 402 了",而是在说"我们不想等标准完善了"。它自己定义了一套规则,让 HTTP 客户端可以直接处理付费请求——基于 Solana 的链上支付。

这种态度挺有意思的:与其等一个"所有人都同意"的标准,不如先做一个"能跑"的实现。它可能不会成为主流,但它在证明"这件事是可以做的"。


一个趋势:AI 工具开始"搬家"

这次更新里出现了三个跟 Claude Code 相关的 cask:claude-code@latest、nimbalyst、notchi。

这不是说 AI 工具变多了,而是说它们开始"离开浏览器"了。以前你要用 Claude,你就打开网页;现在你可以装个命令行工具,或者装个桌面伴侣。

工具的形态在变,从"通用界面"变成"专用场景"。这种变化的底层逻辑是:当一个工具被频繁使用时,人们会希望它"更近一点"。不是功能上的近,是物理距离上的近——少开一个标签页,少切一次窗口。


一点个人感受

jsongrep 我可能会装,因为 jq 的语法我永远记不住,而"grep"这个词能让我少查一次文档。

pay 我不会装,不是因为它不好,而是因为我不觉得现在"用 HTTP 付费"是个刚需。但我会记住它,因为它在证明一件事:标准可以是"先做出来"再慢慢达成共识的。

至于那些 AI 伴侣工具,我觉得方向很明确,但可能还早。现在装一堆小工具,不如等它们合并成一个。


结语

三月的最后一天,工具列表还是那么长。
但越来越少有工具会说"我什么都能干"。
它们都在说"我只干一件事,但我干得比你想象的近"。

工具在变,但节奏不必跟着变。


下期见。

 
FreeTube 使用体验

FreeTube 使用过程中经常遇到错误,e.g.:

Uncaught Exception:
Error: spawn iina ENOENT
at ChildProcess._handle.onexit (node:internal/child_process:285:19)
at onErrorNT (node:internal/child_process:483:16)
at process.processTicksAndRejections (node:internal/process/task_queues:82:21)

A JavaScript error occurred in the main process


步骤1:先设置 Invidious API

2026-03-30_13-45

通过 Invidious Instances 获取开源的地址,然后点击【将当前实例设为默认】即可。

步骤2: 不要配置外部播放器

2026-03-30_13-46

理论上,FreeTube 支持外部播放器,但是由于技术原因,需要一些配置。

如果配置不合理,体验会很差。所以,当前推荐【不要配置外部播放器】。

项目组有个专门讨论的 Discussions


Ref

 
Apifox供应链攻击之后:一次开发者的自检清单

这件事情发生有2天了,起初根本没在意。

今天在 v2 再次刷到 此次 ApiFox 是否中招自查命令

【包括不限于: SSH 私钥、Git 凭证和命令行历史】,这段话让我有了后怕。

接着,迅速检查电脑和采取修复以及防御手段。


检查电脑

下列涉及的命令都是 macOS 支持的,其他平台参考

  1. 检查 Electron localStorage 中是否存在 _rl_headers、_rl_mc 键
grep -arlE "rl_mc|rl_headers" ~/Library/Application\ Support/apifox/Local\ Storage/leveldb
  1. 检查 dns 历史中是否存在 apifox.it.com 的解析记录
sudo dscacheutil -q host -a name apifox.it.com

  1. 检查历史 HTTP 请求头中是否包含 af_uuid、af_os 等异常字段,

这个事情处理有点难度,建议使用 AI 工具来执行。

2026-03-27_11-30

修复和防御

特别说明,本次事件受影响范围:受影响用户为“公网 SaaS 版 Apifox 桌面客户端”用户。SaaS Web 版用户不受影响;私有化部署版用户不受影响。

立即采取的行动:

  1. 立即升级: 请尽快将 Apifox 客户端升级至 2.8.19 或最新版本。

  2. 重置凭证: 若您在上述风险时间段内使用过受影响版本,请务必联系您的团队,全面排查并重置在设备里 ~/.ssh/~/.zsh_history~/.bash_history~/.git-credentials 等处存储过的敏感凭证(包括但不限于 Git 密钥、鉴权密钥、数据库密码、云服务 Access Key 及环境变量等)。

  3. 阻断恶意域名:apifox.it.com ,可以在 host 文件里增加配置:127.0.0.1 apifox.it.com

2026-03-27_11-31

为什么会发生这样的事情?

供应链攻击,本质不是漏洞,而是“信任链被利用”。

为了防范此类事情再次发生,作为开发者,有必要列一个自检清单。

本地开发环境

  • 是否开启自动更新?
  • 是否验证安装包来源(hash / 签名)?
  • 是否区分“工作环境 / 测试环境”?

👉 建议:

  • 关键工具关闭自动更新
  • 下载后的安装包做 hash 校验(哪怕是关键工具)
  • 严格区分“工作环境 / 测试环境”

依赖管理

  • 是否锁版本(package-lock.json / go.sum 等)
  • 是否盲目 latest
  • 是否使用第三方镜像源(npm mirror / pip 源)

👉 建议:

  • 关键依赖锁定版本
  • 建立私有化仓库,减少第三方镜像源依赖

CI/CD 与自动化

  • CI 是否每次重新拉依赖?
  • 是否有缓存污染风险?
  • 构建流程是否可追溯?

👉 建议:

  • 固定依赖版本
  • 构建环境可复现(Docker / lockfile)

权限与隔离

  • 是否在开发机使用高权限运行工具?
  • 是否把敏感 token 放在本地明文?
  • 是否做最小权限控制?

👉 建议:

  • 为开发机创建非高权限的特定账户
  • 敏感数据加密

Ref

 
使用 SideStore & LiveContainer 都安装了哪些app?
IMG_0518
  • Kazumi
  • SameBoy
  • Asspp
  • Tachimanga
  • Mangayomi
  • YouTube
  • VCMI
  • Aidoku
  • iPA 商店
  • 源阅读
  • Venera

为何会有这些app?难度 Apple Store 还不够多?

个人理解,需求难以满足😌,懂?!


Ref

 
ipa 砸壳

iOS 的 IPA “砸壳”(Decrypt / Dump Mach-O)本质是:把 App Store 加密的二进制在运行时解密并导出。不同方法的核心差异在于:是否越狱、是否依赖调试工具、以及稳定性。


下面列举一些砸壳的方式:

方法 是否越狱 成功率 难度 推荐程度
frida dump ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐⭐
Clutch ⭐⭐⭐⭐ ⭐⭐⭐⭐
dumpdecrypted ⭐⭐⭐ ⭐⭐⭐
非越狱 frida ⭐⭐ ⭐⭐
重签名注入 ⭐⭐ ⭐⭐
TrollStore ⭐⭐⭐ ⭐⭐⭐

个人看法,最好使用越狱的手机砸壳,简单稳定。


对于不折腾技术的人来说,可以使用第三方(服务或者社区)提供的已经砸过壳的资源。

推荐2个:

事实上还有很多,大家在使用的时候注意安全和隐私即可。


Ref

 
ipa 获取方式

一些场景下,我们需要获取 ipa 安装包。

通常可以用 Apple Configurator 2 获得。

如果是非 macOS 系统,需要略懂一点技术。


ipatool

  • 支持的操作系统(Windows、Linux 或 macOS)
  • 有 Apple ID 可以使用 App Store

同时满足上面👆2个 条件,就能愉快玩耍。

2026-03-24_18-52

运行时报错不要慌,在官方issues上有答案。

# 登录账户
ipatool auth login -e your-account -p your-password
# 搜索 app
ipatool search --limit 1 app-name
# 购买 app
ipatool purchase -b bundle-id
# 下载 ipa
ipatool download -i app-id -b bundle-id

Asspp

如果想在手机上操作,也可以使用 Asspp。

Asspp

具体操作方式,参考README

使用 Asspp 的优势,可以同时切换多个 Apple ID

另外也可以使用 App Store IPA 在线下载工具


Ref

 
🍺 Homebrew 更新周报 # 20260323 | 当开发环境开始围绕 AI 重组

开发工具的边界正在从“代码编辑器”向“上下文与代理”扩散。

这一期看起来是常规的 CLI 与数据库工具更新,
但仔细看,会发现多个项目都在解决同一个问题:
如何让 AI 与开发环境协同工作。


本周一句话总结

开发工具链正在为 AI 代理准备新的接口层。


本周新增工具速览

🧪 New Formulae

名称 中文说明
apache-arrow-adbc 基于 Arrow 的跨语言数据库访问接口
cline 面向复杂任务的 AI 编码代理
ctx7 管理 AI 编程上下文与技能文档的工具
cyan iOS 应用注入与修改工具
dtop 跨主机 Docker 监控终端面板
et 支持 IP 漫游的远程终端
ggml 轻量级机器学习张量库
icestorm iCE40 FPGA 比特流分析工具
lief 可执行文件分析与修改库
oh-my-agent 多 Agent 工作流运行框架
portless 用可读名称替代本地端口号
summarize 多模态内容摘要工具
wmbusmeters 读取智能仪表数据的工具
zycore-c Zyan C 核心库

🧩 New Casks

名称 中文说明
dbeaverteam 通用数据库客户端
dbvr 轻量级数据库操作 CLI
fidelity-trader+ 股票交易平台
font-selawik Selawik 字体
supasidebar 类 Arc 的跨浏览器侧边栏
tencent-ugit 腾讯 Git 图形客户端
voicemod 实时变声与音效工具

值得留意的几个方向


cline:AI 编程代理开始走向“复杂任务执行”

cline

cline 并不是一个简单的代码生成工具,而是一个可以持续执行任务的 AI 编码代理。它的价值在于把“生成代码”升级为“管理开发流程”,例如跨文件修改、测试修复和任务拆解。这类工具的意义不在于写代码更快,而是降低人类维护上下文与状态的心智负担,让开发者从指挥者变成监督者。


apache-arrow-adbc:数据库访问正在被重新标准化

ADBC 试图把数据库访问统一到 Apache Arrow 的内存格式之上,让不同语言与数据库之间共享同一套数据接口。这意味着数据分析、机器学习与应用程序之间的数据复制和序列化成本会显著下降。对需要跨语言或高性能数据处理的系统来说,这是一种从根层提升效率的基础设施。


portless:本地开发环境正在向“可读化网络”演进

portless 通过为本地服务分配稳定、可读的 URL(如 api.local)来替代随机端口号。这不仅提升人类可读性,也让 AI Agent 能更稳定地调用本地服务。随着本地服务数量增加,这种命名层实际上是在给开发环境补上一层“DNS”,减少记忆端口与修改配置的认知成本。


一点个人感受

这一期的工具并没有特别“炫技”的项目,但多个工具都在围绕同一件事:
让开发环境对 AI 更友好。

有些工具你可能永远不会直接安装,比如 ADBC;
但它们一旦被框架或数据库采用,就会悄悄进入你的日常工作流。


结语

开发工具的演进往往不是通过一个明星项目完成的,
而是通过一组看似分散的小工具慢慢重构生态。

工具在变,但节奏不必跟着变。

 
SideStore刷新问题:The data couldn’t be read because it isn’t in the correct format

The data couldn’t be read because it isn’t in the correct format.

Error Log

最近一直被这个问题困扰😕,非常影响使用体验:我几乎每天都要计算时间,以确保不会过期掉签。

在网上找了大量资料,总结了2个方案解决。


在说解决方案之前,需要先对这个问题产生的原因有所了解。

大致情况就是:

gsa.apple.com 域名的访问被限制🚫

如果在使用 SideStore / LocalDevVPN / iLoader 过程中,访问不了,就会导致刷新失败。


方案一

找一台挂梯子🪜的电脑,手机和电脑在同一局域网,在手机网络中配置代理,连接电脑。

具体可【参考】


方案二

使用VPN工具自带的TUN模式,目前已知具有这个功能的VPN如下:

使用 Clash Mi 项目【自带的配置工具】可以比较快速的解决。

2026-03-17_10-54

然后在生成的文件中加入:

tun:
  loopback-address:
    - 10.7.0.1

具体参考

sing-box 有点麻烦👿

apple store 上架的版本,目前是1.11.4,已经有一年时间未更新。

20260317110111_140_156

然而,sing-box 的TUN模式下支持 loopback_address 功能,需要 1.12.0 起。

2026-03-17_11-22

所以,通过加入 sing-box 项目的 TestFlight 获得app是比较快速🔜的方式。

2026-03-17_11-20

另外,就只能通过自行编译获得。
但似乎有其他问题,即使构建了ipa文件,也安装不上。

2026-03-17_11-27

感觉 sing-box 的开发者也挺难,在自己的blog中写道:

2026-03-17_11-29

多说一句,Shadowrocket 支持 TUN 模式,但类似 loopback_address 的功能不知道如何配置,需要去社区找资料。


Ref

 
🍺 Homebrew 更新周报 # 20260316 | 当开发工具开始接管复杂性

很多新工具,并不是为了增加能力,而是减少摩擦。

当项目规模变大,
真正消耗注意力的往往不是功能实现,
而是构建、协作和隔离这些基础环节。


本周一句话总结

这周新增工具明显围绕 构建效率、AI Agent 安全运行、协作开发体验 三个方向展开。


本周新增工具速览

🧪 New Formulae

名称 中文说明
buildkitd Docker BuildKit 构建守护进程,支持并发构建与高效缓存
docker-engine Docker 容器运行环境
ffc.h 单头文件 C99 高性能浮点解析库
flowrs Apache Airflow 的终端界面管理工具
garden 管理 Git 仓库集合的工具
gittype 把源码变成打字练习的 CLI 游戏
ipapatch iOS IPA 文件补丁与插件修改工具
models 浏览 AI 模型、基准测试与代理工具的 TUI
nfd2nfc 文件名编码 NFD → NFC 转换工具,提升跨平台兼容性
nono 面向 AI Agent 的能力隔离沙盒 Shell
powershell 跨平台命令行 Shell 与脚本语言
scala-cli Scala 运行与构建工具
sem-cli 语义化版本控制 CLI
topicctl Kafka Topic 声明式管理工具
tsshd 支持漫游的 UDP SSH 服务
upterm 即时终端共享工具
vapoursynth-bm3d VapourSynth 视频降噪滤镜
vapoursynth-descale VapourSynth 反缩放插件
weave 基于 tree-sitter 的 Git 语义级合并驱动
zsign 跨平台 iOS 应用签名工具
zvbi 视频垂直消隐信号解码库
zxc 高性能非对称无损压缩库

🧩 New Casks

名称 中文说明
gram 强调稳定与隐私的代码编辑器
seamly2d 服装版型设计软件
spectra-app OpenSpec 文档管理桌面应用
ulaa 注重隐私保护的浏览器
wowup-cf 魔兽世界插件管理器
x-air-edit Behringer X AIR 调音台远程控制软件

值得留意的几个方向

buildkitd:构建系统正在变成“基础设施”

asciicast

Docker 生态真正影响效率的,其实并不是容器运行,而是镜像构建过程。

buildkitd 提供并发构建、缓存复用和 Dockerfile 解耦能力,让镜像构建更像一个可以优化的流水线,而不是一次性脚本。当 CI/CD 规模扩大时,构建时间往往成为开发效率瓶颈,而 BuildKit 的价值就在这里:它把构建过程从“黑盒步骤”变成可调优的工程组件。


nono:AI Agent 需要新的安全边界

nono-logo

随着 AI Agent 开始参与自动化开发流程,
Shell 权限问题也变得越来越敏感。

nono 通过能力模型与系统级隔离,为 AI Agent 提供一个受控运行环境。Agent 可以执行命令,但只能在被授权的能力范围内活动。这类工具的意义并不是功能多少,而是为未来的自动化开发提供一个更安全的默认运行方式。


upterm:终端协作正在变得像分享链接

upterm

远程调试 CLI 程序通常需要 SSH、VPN 或屏幕共享。

upterm 将终端共享简化为生成一个会话链接,其他人即可加入同一个终端会话。对远程排查问题、结对编程或教学来说,这种方式比传统远程桌面轻得多,也让终端第一次拥有类似在线文档的实时协作体验。


一点个人感受

这一期新增的工具里,有不少看起来并不“耀眼”。

但仔细看会发现,它们解决的往往是开发流程里那些不起眼却长期存在的问题:构建速度、远程协作、自动化安全。

这些工具可能不会每天使用,但当工程规模变大时,它们往往会突然变得非常重要。


结语

Homebrew 的更新记录,其实也是一份开发工具生态的变化日志。

当新的开发方式出现时,总会有人先写出一个小工具,把问题解决掉。

工具在变,但节奏不必跟着变。

 
utm 使用体验
2026-03-13_10-45

用了很长时间的虚拟机。

以前做web开发的时候,需要考虑界面适配,会安装多个虚拟机。

虽然,IETest,IETab 这些工具也可以模拟,但是仍然会有一些特别情况。

这时,虚拟机是不二选择。


过了这么多年,终于不用适配IE,但烦心的事情并没有减少。

PC端,Windows 和 Mac 的用户群体很多,为了获得相对较好的UI体验,需要在2个系统上调试。

目前,前端主流使用 Mac 开发,所以 Windows 的UI体验有时候很难被发现。


Mac 上比较主流的虚拟机是:

  • VMware Fusion (免费)
  • Parallels Desktop (商业)
  • VirtualBox (开源)

通常来说,对于小白用户,上手容易程度:商业 > 免费 > 开源。

付费的通常都比较好用,功能也多,性能也好。

免费的功能支持一般不及时,或者性能差,或者功能少。

开源的不适合小白。


UTM 这个项目,是在我玩 SideStore 的过程中接触到的。

一直没怎么用,感觉不会在手机上用,所以仅停留在“知道这个项目”的程度。

最近在玩 Pokémon 游戏,需要用到 Windows 运行一些汉化工具。

所以在 Mac 上安装了 UTM。


安装很顺利,UTM 官方文档写的很清晰。

体验上比 Parallels Desktop 和 VMware Fusion 要简单很多。

UTM 支持 Intel / Apple Silicon,能跑一些较老的 Windows 版本。


Ref

 
【NDS】宝可梦心灵之金游戏攻略
宝可梦_心金_日版封面

游戏介绍

游戏平台:NDS
模拟器:Delta
游戏版本:

  • 口袋妖怪(精灵宝可梦) 心灵之金 官译修正版v2.1.1(简)(JP)(ACG汉化组+Xzonn)(1024Mb)
  • 口袋妖怪(精灵宝可梦) 金心(JP)(ACG汉化组)(1024Mb)

宝可梦心灵之金发布时间表

  • 2009年9月12日 心灵之金/灵魂之银 官方发布
  • 2010年7月2日 原版汉化 by @ACG汉化组
  • 2020年2月28日 原版汉化优化 by @ACG汉化组、@Xzonn

事实上,还有很多其他衍生版本。例如:493/免通讯。493,即全部493只宝可梦。免通讯,即不需要联机通讯,进化宝可梦。

基于《原版汉化 by @ACG汉化组》的存档,可以被 @Xzonn 优化版本读取

剧情发现

挑战道馆

技能机

道具秘技

精灵性格

隐藏道具

通关组合

通关技巧

如何练级

如何刷钱

如何制作精灵球

常用术语

表述 含义
HG / hg 心金 / 心灵之金 的简称。英文(Pokémon HeartGold)
SS / ss 魂银 / 灵魂之银的简称。英文( Pokémon SoulSilver)
HM 秘传学习器
TM 招式学习器

Ref


 
🍺 Homebrew 更新周报 # 20260309 | 当工具开始服务系统本身

越来越多工具正在离开桌面,走向系统深处。

这一期没有特别“吸睛”的应用。
但多了不少你可能永远不会直接运行的工具。
它们更像基础设施的一部分,在系统背后慢慢改变开发方式。


本周一句话总结

这是一组明显面向“开发环境基础设施”的更新。

很多新增项目并不是给用户使用的应用,
而是构成:

  • 容器运行环境
  • AI 编程工作流
  • 权限系统
  • CLI 自动化生态

的一部分。


本周新增工具速览

🧪 New Formulae

名称 中文说明
apkeep 从不同来源下载 APK 文件的 CLI 工具
atuin-server atuin shell 历史同步服务
checkpwn 检查邮箱是否出现在泄露数据库中
cloudflare-speed-cli 基于 Cloudflare 的测速工具
containerd 开源容器运行时
dlpack 跨框架共享张量数据结构
git-pkgs 追踪 Git 历史中的依赖变化
googleworkspace-cli Google Workspace 命令行工具
kubectl-tree 以树形结构浏览 Kubernetes 对象
[email protected] 轻量级脚本语言 Lua
mkbrr 创建与修改 torrent 文件
openspec 面向 AI 编程助手的规范驱动开发工具
pet 命令行代码片段管理器
rustypaste-cli rustypaste 服务 CLI
spicedb 类 Google Zanzibar 权限数据库
termusic Rust 编写的 TUI 音乐播放器
torf-cli torrent 文件创建与编辑工具
vapoursynth-bestsource 视频处理工具
vuls 无代理漏洞扫描器
x-cli Twitter 命令行工具

🧩 New Casks

名称 中文说明
font-ghanachocolate Ghana Chocolate 字体
font-miranda-sans Miranda Sans 字体
ltx-desktop LTX 视频生成模型桌面应用
paseo AI 编码 Agent 的自托管守护进程
spokenly AI 语音转录与编辑工具
t3-code AI 代码代理 GUI
tablepro MySQL / PostgreSQL / SQLite 数据库客户端
vcmi 《英雄无敌 III》开源引擎

值得留意的几个方向

这一节不求全,
只挑几个真正值得停下来看的技术信号。


containerd:容器世界真正的运行核心

2026-03-09_17-25

容器技术通常被理解为:Docker。

但在现代云原生架构中,
真正负责运行容器的其实是 containerd

技术栈结构大致是:

Docker
   ↓
containerd
   ↓
runc
   ↓
Linux kernel

containerd 负责:

  • 镜像管理
  • 容器生命周期
  • 资源隔离
  • runtime 调度

Kubernetes、Docker、许多 PaaS 平台
实际上都依赖它。

Homebrew 收录 containerd 的意义是:

开发环境正在变得更接近生产环境。

越来越多开发者开始在本地直接运行完整容器栈,
而不是依赖一层封装好的 Docker Desktop。

这也是一个明显趋势:

开发机正在变成一个“小型云平台”。


SpiceDB:权限系统正在数据库化

2026-03-09_17-27

spicedb 是本期最值得关注的基础设施项目之一。

它的设计灵感来自 Google 的著名权限系统:

Zanzibar

Zanzibar 支撑着:

  • Google Drive
  • YouTube
  • Google Docs

的权限关系。


为什么权限系统这么难

传统权限模型通常是:

user → role → resource

但现代 SaaS 的权限关系会变成:

用户
团队
组织
资源
共享
继承
协作

权限关系会形成复杂图结构。

SpiceDB 的做法是:

把权限关系当作图数据库处理。

例如:

user:alice
   member_of
team:design

team:design
   owns
doc:proposal

这样就可以动态计算权限。


为什么重要

未来复杂应用几乎都需要:

  • 协作权限
  • 多组织结构
  • 细粒度授权

SpiceDB 这类系统正在成为:

权限基础设施。


OpenSpec:AI 编程开始进入“规范驱动”

openspec_bg

AI 编程工具越来越多,
但一个问题也越来越明显:

AI 很擅长写代码,
却很难保持系统结构一致。

OpenSpec 的目标是:

让开发流程变成:

Spec → AI → Code

而不是:

Prompt → Code

Spec 可能包括:

  • API 规范
  • 数据结构
  • 行为约束
  • 架构约定

AI 只负责生成实现。

这其实是一种新的开发模式:

Spec Driven Development(SDD)

它解决的不是代码问题,而是:

AI 如何参与系统工程。


kubectl-tree:理解 Kubernetes 的结构

example-1

Kubernetes 对新手来说最大的困难之一是:

对象关系。

例如:

Deployment
   ↓
ReplicaSet
   ↓
Pod

同时还有:

  • Service
  • Ingress
  • ConfigMap
  • Secret

关系复杂且分散。

kubectl-tree 的做法非常简单:

把对象关系变成一棵树。

示例:

deployment/web
 └─ replicaset/web-123
     └─ pod/web-abc

这种视图对调试问题非常有用。

当 Kubernetes 规模变大时,
理解对象结构本身就是一种成本。

这个工具正是在减少这种心智负担。


pet:命令行时代的“代码片段库”

pet

很多开发者都有这样的文件:

commands.txt
cheatsheet.md
notes.md

里面记录各种:

  • docker 命令
  • kubectl 命令
  • ffmpeg 命令

pet 做的事情很简单:

把这些命令变成可搜索、可执行的片段库。

例如:

pet search docker
pet run kubectl-restart

当 CLI 工具越来越多时,
“记住命令”本身就变成负担。

pet 的价值是:

把记忆成本转化为工具能力。


cloudflare-speed-cli:测速工具的另一个方向

cloudflare-speed-cli

测速工具很多,但大多数使用:

Speedtest 网络。

Cloudflare-speed-cli 的特点是:

直接测试 Cloudflare 网络路径。

这对于很多开发者其实更真实:

因为大量服务现在都在 Cloudflare CDN 上。

如果你经常访问:

  • GitHub
  • npm
  • Cloudflare Workers
  • 各类 CDN

这个测速结果可能比传统 Speedtest 更有意义。


一点个人感受

这一期让我印象最深的是一种“基础设施感”。

很多新增项目:

  • 不提供 GUI
  • 不解决日常效率
  • 不直接面对用户

却在悄悄改变开发环境。

像 containerd、spicedb 这样的工具,
你可能永远不会直接运行。

但未来的软件系统很可能就建立在这些组件之上。


结语

Homebrew 的更新列表有时像一份技术世界的地下水位报告。

你未必能看见它,
却能感觉到环境正在慢慢改变。

工具在变,但节奏不必跟着变。

 
git worktree

示例

1. 创建一个裸仓库

git clone --bare https://github.com/your-org/your-monorepo.git your-monorepo
cd your-monorepo

2. 为每个分支创建工作树

# 主开发工作树
git worktree add ./main main

# 代理 A 的功能分支
git worktree add ./feature-auth feat/auth

# 代理 B 的 bug 修复分支
git worktree add ./fix-api fix/api-error

每个工作树都是一个完整的检出,拥有自己的文件,但它们都共享同一个 .git 对象存储。

3. 启用全局虚拟存储

在你的仓库中的 pnpm-workspace.yaml 文件中添加 enableGlobalVirtualStore: true

packages:
  - 'packages/*'

enableGlobalVirtualStore: true

4. 在每个工作树中安装依赖项

cd main && pnpm install
cd ../feature-auth && pnpm install
cd ../fix-api && pnpm install

第一次执行 pnpm install 会将软件包下载到全局存储中。 在其他工作树中进行后续安装几乎是瞬间完成的,因为它们只会创建指向同一存储的符号链接。

2026-03-27_17-49

Ref

 
Page 1 of 5
Next