大家好,想分享一个我为自己的 Arch 环境打造的 Zsh 配置框架:ZFL(Zsh Function Library)。
GitHub:https://github.com/Royikiss/zfl
ZFL 是什么?
ZFL 是一个模块化 Zsh 配置与函数库,核心设计原则只有一条:shell 启动必须是即时的,没有例外。
主要特性
零延迟启动(懒加载)
- 启动时只注册轻量级桩函数,实际脚本在命令第一次执行时才 source。
- Tab 补全同理:首次 时才加载完整补全映射。
- 无论你挂了多少函数,启动开销几乎为零。
非阻塞启动任务(FD 3 隔离)
- 后台启动任务通过文件描述符 3 路由,与 stdin 完全解耦。
- 防止后台进程意外读取或劫持前台终端——这是很多异步 Zsh 方案的隐患。
只读非阻塞更新检测(check_update)
- 启动时异步查询 pacman/yay 和 Flatpak 的待更新包数量。
- 绝不调用 sudo,绝不阻塞提示符。
- 锁目录防止重复并发检测。
- 可配置提示策略:once_per_day / pending_first / strict_daily。
AI 协作上下文打包工具(aicp)
- 将代码库打包为单一 token 预算控制的上下文块,供 LLM 消费。
- 支持 fast/balanced/deep/full 预设与多维过滤。
- 交互式 --exec 模式:解析 LLM XML 工具调用,展示源码范围,并在用户确认后交互式应用 unified diff 补丁。
静态质量门禁(zfl lint)
- 内置 linter 检测全局变量泄漏、文件描述符泄漏、硬编码 ANSI 颜色、缺失元数据头部、命名风格违规。
- 与 GitHub Actions 集成,作为 CI 门禁。
- zfl list 展示所有可用工具及其描述(从标准化元数据头部自动解析)。
安装
git clone https://github.com/Royikiss/zfl.git ~/.config/zsh
在 ~/.zshrc 中添加:
if [[ -f "$HOME/.config/zsh/base.zsh" ]]; then
source "$HOME/.config/zsh/base.zsh"
fi
重启终端或 source ~/.zshrc。
为什么不用 Oh My Zsh / Zinit / Zplug?
那些是优秀的插件管理框架,ZFL 的定位不同:
- 最小启动开销(没有插件管理器运行时)
- 内置 linter 强制执行编码规范
- 对异步任务的 FD 安全性有一等公民支持
- 开箱即用的 AI 工具集成
两者并不冲突,可以同时使用。
欢迎 Bug 反馈、功能建议和 PR。
如果你在 Arch 上用 Zsh,关心启动性能或 shell 脚本的代码质量,希望 ZFL 对你有用!

