AI 工作流进化史 -- 从 VSCode 到 Emacs, 改变了什么? 没有改变什么?

从年初至今, 我的开发工作流经历了一场静默的革命.

起初不过是在浏览器里与各类 ChatBot 闲聊, 直到智谱推出 GLM Coding Plan, 我购买了 Lite 套餐, 并在 VSCode 里装上了 Cline. 从那以后, 一切都变了: 我开始了一场场的探索, 从编辑器到终端, 从 MCP 到自定义 Skill, 我一步步搭建起一套属于自己的开源工作流.

这篇文章, 我想聊聊这套工作流的演变过程 -- AI 究竟在何种程度上改变了我的工作方式, 还有它没能改变什么.


一, 工具链: 开源先行

目前我的工作流的核心工具大致分为三层:

  • CLI 层: CrushOpenCode
  • 编辑器层: ZedEmacs
  • 系统层: Guix

贯穿其中的核心原则是: 开源先行.


1. 编辑器

最初的一切始于 VSCode.

在年初时, 我将主力操作系统系统迁移到了 Guix, 整个生态还在从 NixOS 过渡的过程中, 环境尚未完全稳定.

Cline 作为 VSCode 的 AI 插件, 配合 GLM 的 Coding Plan, 让我第一次体验到了 "vibe coding" 的快感--描述需求, 看着 AI 自动生成代码, 执行命令, 修复错误, 开发流程变得异常流畅, 高效.

随后, 我将主力编辑器切换到了 Zed.

这个决定很大程度上源于个人的所谓 技术审美:

  • Zed 基于 Rust, 使用了自研的 UI 框架
  • 而 VSCode 确使用了 Electron 框架

我一直认为, Electron 对于 "文本编辑器" 这个场景来说太 "重" 了--它本质上是一个精简版的 Chromium, 带着整个浏览器内核来渲染几个窗口, 未免有些杀鸡用牛刀.

相比之下, Zed 用一门"系统级语言"从头构建, 这种工程态度更符合我的口味. 这也就是我之前提到的一个观点, 即:"编程语言是有使用场景的", 框架也有.

然而现实给了我当头一棒: Zed 在内存占用上压根没比 VSCode 轻多少

或许是我日常打开的代码库规模还不够大, 没能触碰到它的极限优化场景; 又或许, 现代 IDE 的功能复杂度决定了它们终究难逃资源消耗的宿命.

更让我失望的是 Zed 的 AI 集成--尽管它标榜 "AI-Native" (这个不是我编的, 它还真是一直都在与 JetBrains 进行各种合作, 来推动 Coding 相关 Agent 的基础设施建设), 内置的 Agent 功能却相当笨拙, 至少对于我来说, 视觉上的效果也确实是不如之前在用的 Cline.

但它也确实是做出来了不少好东西, 比如说最近推动的 ACP (Agent Client Protocol) 协议规范, 它确实是让其他编辑器能够更加容易地引入 AI Agent (比如说兼容 ACP 协议的 Emacs, NeoVim 插件, 这个太好用了, 直接配置好插件就能够让 Emacs 也接入到我目前的所有 AI 工作流), 还能够在一个界面中管理电脑中安装的所有支持相关协议的 CLI, 对于会话非常多的情况来说是很不错的.

作为编辑器本身, Zed 也足够纯粹, 足够快, 这依然值得肯定, 目前 Zed 的开发也非常积极 (至少相较于 Helix 来说, 它绝对是模范).

将 Zed 作为主力编辑器的过程中, 我逐渐发现了它在 Guix 上的水土不服.

Zed 喜欢直接调用 npm 安装组件 (比如 prettier), 也喜欢下载预编译的二进制文件. 这两点在 Guix 上都是雷区: 前者因为 Guix 的隔离环境而常常失败, 后者则与 Guix 的可复现哲学相冲突--未经 Guix 包管理的二进制文件, 就像往精密机械里撒沙子.

于是我开始转向 Emacs.

这个决定起初只是出于系统兼容性的妥协, 但很快变成了主动拥抱.

最初, 还是因为之前提到的 Zed 的相关问题, 这些在 Guix 上确实是很头痛的, 但是 Guix 的 Emacs 生态建设的非常优秀, 所以我就在考虑要不要迁移.

正好, 我想要测试一下 AI 的能力, 所以就先依靠 AI 做出来了一套 VSCode 布局的 Emacs 配置, 一看效果还不错, 确实看起来挺好的, 所以就开始认真准备迁移工作了.

我全程利用 AI Agent 来配置 Emacs: 本人只提供需求与参考方案, 最常使用的提示词是-- "请参考 VSCode 和 JetBrains 全家桶的操作逻辑". 目标是打磨出一套对鼠标友好, 符合现代 IDE 直觉的 Emacs 配置.

在这个过程中, 我逐渐意识到 Emacs 的真正威力: 它的功能完备程度远超想象, 且在 Guix 上能够获得原生级的, 无缝的体验. 唯一的不适应是操作逻辑--从模态编辑到快捷键体系, 都需要时间磨合.

但有了 AI 辅助, 这个学习曲线被大幅削平了. 我只需要像 AI 不断地提问, 以及提出意见和建议, 他就能够进行对我回答, 对代码库进行修改, 以符合我的直觉, 所以我只需要享受 Emacs 的好处就行了, 剩下的让 AI Agent 来处理就好.


2. CLI 工具

从 GUI 转向终端, 是我工作流的另一次质变.

我一直对闭源设施保持警惕, 因此始终回避 Claude Code (所以我也没用过 JetBrains 的编辑器, IDEA 除外, 但这个我也没有用的很深入). 在寻找开源替代方案时, 我发现了 Qwen CLI, 它在我印象里是基于 Gemini CLI 制作出来的, Gemini CLI 在刚出来的时候确实是造成了不小的轰动, 所以我很相信它的实力.

搭配阿里的 Coding Plan 使用, 开启 YOLO 模式后, AI 就可以在终端里自主执行命令, 读写文件, 迭代代码, 那种"放手让 AI 去干"的体验确实酣畅淋漓.

随后我尝试了 OpenCode 配合 Oh My OpenAgent, 多 Agent 协作的架构相当超前, 也正是从这时起, 我开始格外关注 CLI 工具的 SubAgent 能力--能否让 AI 自主拆分任务, 调用子代理, 成了我评估工具的核心指标.

同时, 当阿里的 Coding Plan 停售并清退 Lite 计划的所有用户时, 我也意识到了: 千万不要把任何东西都押在一家. 避免单点故障的最佳方法, 永远是找到更加开放的平台, 这样即使需要切换模型, 也不会需要大幅度修改目前的所有工作流.

为什么选择 Crush?

Crush 最吸引我的点在于它的实现语言--Go.

当市面上绝大多数 AI CLI 工具都用 TypeScript 堆出来, 更不用说其中的大半部分都堆的毫无意义时, 一个用 Go 编写的客户端显得格外清爽.

它的二进制体积小, 启动快, 资源占用低 (由于 Go 的特性, 它可以做到单文件运行, 简洁优雅), 更难得的是, 它并没有因为轻量而在功能上缩水: SubAgent, MCP Server, Skill 系统一应俱全, 加上一个足够炫酷的 TUI 界面, 恰好击中了我的需求.

但它还是有一定发展前景的, 目前缺少的功能还是很多 (比如说 Agent 体系, 即 Claude code 中可以看到的所谓 PlanBuild), 假如这些问题能够解决的话, 那么就可以更上一层楼了.

为什么减少使用 OpenCode?

OpenCode 走的是另一个极端:功能庞大而全面,尤其是配合 Oh My OpenAgent 后,多 Agent 协作的效果令人印象深刻.

但它就是我说的, 使用 TypeScript 堆出来的 CLI 之一, 我认为语言之间还是会有一些 "适用场景" 的, 至少你 JS / TS 就应该在网页场景上好好待着, 在终端内这种环境下, 应该选用一些更加适合接触系统底层等相关环境的语言, 可以是 C / Rust / Go / Python 等等等等, 但我觉得不应该是 TS.

也正因为它依赖多家大模型 API 协同工作, 使用成本也随之水涨船高, 尤其是现在各家 AI 公司都在开始涨价, 连 Copilot Student 都开始砍可用模型了, 成本就更加昂贵了. 最近我在刻意削减各类订阅开支, 以让自己的每月花销达到一个可控水准, 所以 OpenCode 的使用频率便自然下降了.


二, 体验与反思

首先, 我想说: AI 不是魔法,而是杠杆

几个月的深度使用下来, 我有几点格外深刻的体会.

1. AI 的上限, 始终由使用者决定

首先要破除一个迷思: AI 不会读心术. 它只能通过你的描述来理解意图, 执行任务.

因此, AI 产出的质量天花板, 实际上取决于使用者的语言功底与思维清晰度. 观察周围人对 AI 的使用时, 我发现了一个普遍现象: 许多人并不知道如何与现阶段的 AI 协作.

在以前 DeepSeek 大火的时候, 我曾亲眼看到了别人的提示词-- "给我来一份物理试卷". 我震惊了, 但转念一想, 这也正常, 大部分人对于 AI 的理解或者说是期望, 就是来自于科幻作品里那个 "无所不能" 的帮手或者帮凶, 实际上它也不应该叫作 AI, 而更应该叫作 AGI / ASI.

我们离 AGI 还很遥远, 更不用说 ASI 了. 今天的 AI 需要 Harness Engine, Agent 框架来确保其能够正常运作, 需要各种 Tools 来扩展能力边界. 但这里存在一个悖论--如果你根本不知道某种工具或方法的存在, 你又如何要求 AI 使用它呢?

所谓 "AI 自进化" 的叙事, 在我看来多少有些误导, 至少目前还没做到. 即便是像 Hermes Agent 这类标榜"自进化"的框架, 其本质也不过是一套自动化的上下文管理系统: 自动总结历史经验, 转化为领域特定的Skill, 供后续任务调用. 当模型真正需要提升能力时, 仍然需要人类去训练更强大的基座模型.

这些框架让 AI 更"听话", 更能遵循历史经验, 从而减少重复思考, 提升任务效率--它们确实能填补不同模型之间的能力鸿沟, 让较弱的模型通过更好的上下文管理逼近强模型的表现, 但模型本身的能力并不会因此发生质变.

理解这一点至关重要: AI 是杠杆,而非替代品是. 杠杆可以放大你的能力, 也可以放大你的无知.

2. AI 让经典工具焕发新生

如果说 AI 给我最大的惊喜是什么, 那一定是它让我发现了 Emacs 的价值.

在 AI 介入之前, Emacs 给我的印象无非是笨重, 晦涩, 学习曲线陡峭--一个属于上世纪的编辑器化石. 但当 AI 抹平了"理解并使用"的门槛后, Emacs 的优势便一览无余:

  • 近乎无限的扩展性: 无论你想得到还是想不到的功能, 几乎都有成熟的插件生态. 即便没有现成方案, 借助 AI 辅助编写 Elisp, 自定义功能也变得触手可及.
  • 基础功能的极致打磨: 内置功能的完善程度令人咋舌, 尤其是 Org Mode. 作为笔记与知识管理系统, Org Mode 的灵活性和深度是 Obsidian 等现代工具难以企及的--那种纯文本与结构化数据的完美融合, 那种 Emacs 生态独有的可编程性, 一旦习惯便很难回头.

这个发现让我产生了一个更大的观点: AI 时代,我们更应该深度挖掘既有工具的潜力,而非盲目追逐新玩具.

当 AI 能够帮你驾驭复杂工具时, 那些经过几十年社区打磨的"老古董", 反而可能比层出不穷的新产品更可靠, 更强大.

同样地, 我认为 NixOSGuix 这类强调可复现性 (Reproducibility) 的发行版, 在 AI 时代有着独特的优势:

  • 可审计性: 当 AI Agent 需要修改系统配置时, 所有变更都集中在一处 (配置文件仓库), 而非散落在 /etc, .config, systemd 服务等各个角落. 你完全可以审查 AI 到底改了什么.
  • 原子化回滚: 配置出错? 一条命令回滚到上一个世代, 这种安全感在让 AI 自动操作系统时尤为重要.
  • 上下文集中: AI 不需要在庞大的文件系统中漫无目的地搜索, 只需关注声明式配置, 大大降低了上下文消耗的 tokens 数量.

这类发行版过去最大的障碍是 学习成本, 而 AI 恰好能将其降至可接受的范围.

我想象中的 "AI-Native 系统" 并非在现有系统上贴一个 ChatBot (看看 Windows 11 的 Copilot 就知道了, 除了占用任务栏空间, 对系统故障排查, 配置优化几乎毫无帮助), 而是让 AI 真正参与到系统决策中, 同时让用户保留审查与回滚的权力--人机协作, 而非人机替代.


三, 警惕: 不要把灵魂卖给闭源 AI

最后, 我想泼一点冷水.

AI 的高效无可否认, 但绝不能把所有工作重心都押在 AI 身上, 更不能把完整工作流交给 某个闭源的 Agent 框架.

Anthropic 的 Claude Code 确实强大, 但试想一下: 一旦遭遇封号, 限流或政策变更, 所有深度依赖它的工作流都会在瞬间瘫痪. 到那时, 不是你在使用 AI, 而是 AI 在牵着你走.

我认为更健康的姿态是: 持续学习, 以 AI 为辅.

让 AI 处理重复劳动与 boilerplate, 但保持对底层原理的理解: 让 AI 帮你配置 Emacs, 但你自己要知道 init.el 里写了什么; 让 AI 生成代码, 但代码的架构与边界仍由你设计.

AI 是极好的副驾驶, 但方向盘应该始终握在人类手中.


结语

VSCodeZed, 从 ClineCrush, 再到如今的 Emacs, 我的工作流演变本质上是一场对"控制权"的追寻 -- 从闭源到开源, 从 GUI 到终端, 从被动接受到主动配置. AI 在这场演变中既是催化剂, 也是试金石: 它放大了好工具的价值, 也暴露了坏架构的脆弱.

这场革命才刚刚开始. 保持好奇,保持警惕,保持学习.

Windows/Linux, 你该怎么选择?

引言: 为什么使用 Linux?

在讨论任何具体的 Linux 发行版之前, 我们必须先回答一个根本性的问题: 你为什么要使用 Linux?

如果你是一个 Windows 的重度用户, 习惯了现有的生态和操作方式, 仅仅因为别人的推荐或"听说 Linux 更好"就试图迁移, 那么答案很明确: 别勉强自己. 使用习惯一旦形成, 很难因三言两语而改变. Windows 凭借其广泛的软硬件兼容性, 对盗版的历史宽容度以及深厚的用户基础, 稳固地占据着桌面端的主导地位.

真正适合使用 Linux 的理由只有一个: 你想用,并且对开源生态感兴趣.

只有当你享受探索系统底层, 愿意折腾配置, 或者单纯喜爱开源软件带来的自由时, Linux 才能发挥它的价值. 否则, 无论是游戏兼容性 (尽管 Steam Proton 进步巨大, 但仍需处理脚本和兼容层问题) 还是日常办公, 强行迁移只会带来痛苦.

基于这个前提, 我们来深入探讨一下近年来备受关注的 NixOS, 并将其与主流的 Arch Linux, Ubuntu / Mint 以及其他新兴发行版进行对比, 希望各位能够根据这篇文章, 来找到自己 真正想要的是什么.


一, NixOS: 把"屎点"放在最前面, 换来长久的安宁

1. 核心理念: 声明式配置与可复现性

NixOS 最显著的特点, 也是它最大的门槛, 在于其的特色--- - 声明式配置(Declarative Configuration).

与传统发行版 (如 Ubuntu, Arch) 在安装后通过命令行逐个安装软件, 手动修改分散在 /etc~ 目录下的配置文件不同, NixOS 要求你将整个系统的状态定义在一个 (或多个, 我推荐是拆成多份, 不然盯着一个几千行的代码库就太痛苦了) 配置文件 (通常是 configuration.nixflake.nix) 中.

  • "把屎点放在最前面": 在初期, 你需要花费大量时间编写配置文件, 定义内核参数, 文件系统, 用户, 软件包, 服务甚至桌面环境的细节. 这个过程可能比传统安装繁琐得多, 其中可能会遇到缺少文档, 找不到自己需要的包等等情况, 而这些很容易让一个人当场放弃.
  • 长久的收益: 一旦配置完成, 你就拥有了一个 完全可复现 的系统.
    • 一键重装/迁移: 换电脑或重装系统时, 只需将配置文件克隆下来, 运行一条命令 (如 nixos-rebuild switch), 系统就会精确地恢复到之前的状态, 包括所有软件及其版本. 这就是所谓"提桶跑路"的能力.
    • 版本锁定与回滚: 通过 flake.lock 文件, 你可以将系统锁定在特定的软件版本组合上. 即使上游更新导致问题, 你也可以轻松回滚到之前的稳定状态. 系统不会因为一次失败的更新而毁掉你的工作环境.
    • 原子更新: 更新过程是原子化的, 如果新配置启动失败, 重启即可自动回到旧版本, 同时在启动时, 你也可以自由地选择是否要重启到之前的某一个配置中.

2. Flakes 与 Home Manager: 现代化的配置管理

  • Flakes: 这是 Nix 生态系统的一次重大进化. 它引入了依赖锁定机制, 使得项目 (即你的系统配置) 的依赖关系更加明确和稳定, 不使用 Flakes 的 NixOS 仿佛失去了一半的威力. 通过 Flakes, 你可以轻松地将 Nixpkgs 以及你自己加入的一众第三方 Flake 锁定到具体的 Git commit, 确保环境的一致性.
  • Home Manager: 它能管理用户主目录 (/home) 下的配置文件 (如 Shell 配置, 编辑器设置, 主题等). 这意味着你的 整个用户环境 都可以被版本控制 (如上传到 GitHub / GitLab), 实现真正的"代码即配置".

3. 依赖管理与隔离

NixOS 的包管理机制巧妙地解决了传统 Linux 发行版中常见的"依赖地狱"问题:

  • 隔离存储: 每个软件包及其依赖都存储在 /nix/store 下的独立路径中, 路径哈希包含了所有依赖的指纹.
  • 按需共用: 如果多个软件依赖完全相同的库版本, 它们会共用同一份; 如果版本不同, 则各自独立存储, 互不干扰.

这种机制使得系统极其纯净, 卸载软件不会在系统中留下残留文件 (如果你使用 home-manager 管理一切的话, 甚至可以做到不在. / config 等目录中留下残留文件), 也不会破坏其他软件的依赖.

4. 挑战与解决方案: 二进制与非自由软件

NixOS 并非完美无缺, 其主要挑战在于运行闭源二进制文件或特定依赖的应用 (如某些游戏, 专有软件):

动态链接问题: 由于 NixOS 的文件系统结构特殊 (FHS 标准不完全兼容), 直接运行外部二进制文件往往会缺少动态库.

解决方案:

  • steam-run: NixOS 社区提供了 steam-run 工具, 它原本是作为启动 steam 的跳板 (steam 强制要求一个 FHS 环境, 因为其代码内包含了硬编码的路径), 但是由于其包含了不少用于启动 steam 的依赖, 所以也很适合运行其他二进制文件.
  • 容器化: 对于更复杂的应用 (如某些模拟器, 特定 JDK 版本需求的应用), 可以使用 Distrobox 或其他容器工具, 在容器内运行一个传统的 Linux 发行版 (如 ArchLinux, 个人比较推荐, 因为它会更加的轻量化, 而且也可以直接利用其来安装 AUR 上的软件), 然后将应用导出集成到 NixOS 菜单中. 虽然稍微麻烦, 但能保证宿主系统的纯净.

缺少关键的软件: 虽然 Nixpkgs 可以算得上是一整个 linux 生态里面最大的软件仓库, 但还是难免会遇到一些缺少软件包, 或者软件包没有及时更新的情况, 如果你不太愿意去 发 issue 给Nixpkgs (但其实这个的效果也比较的随缘,毕竟 Nixpkgs 的 Github 仓库那边还积压了一大堆 issue )自行学习打包 的话, 那么以下也提供一些解决方案.

解决方案:

  • 第三方包管理器: 目前的第三方包管理器其实是很多的, 它们能够在各大发行版里面使用, 利用它们来补充需要的软件包会是一个不错的选择. 在这里我推荐 flatpak玲珑, flatpak 自然不用我多说, 玲珑(linyaps) 作为新秀也是一个很好的选择, 尤其是你当极度依赖国产软件时.
  • 容器: 使用 Distrobox 或其他容器工具, 在容器内运行一个其他的 Linux 发行版, 个人比较推荐 ArchLinux, AUR 还是太方便了, 安装之后利用 distrobox 自带的 distrobox export 指令来导出到菜单就好, 用起来其实会很自然, 就是还是得考虑可复现性.

二, 其他发行版横向对比

1. Arch Linux: 学习 Linux 的最佳课堂

  • 定位: 适合想要深入学习 Linux 内部原理的用户.
  • 优势:
    • 从零构建: 安装过程迫使你手动分区, 挂载文件系统, 配置引导, 安装基础包. 这能让你深刻理解 Linux 系统的启动流程和组成部分 (EFI, Swap, fstab, chroot 等).
    • AUR (Arch User Repository): 拥有极其丰富的软件资源, 几乎能找到任何软件.
    • 滚动更新: 始终拥有最新的软件版本.
  • 劣势与风险:
    • 系统脆弱性: 由于是滚动更新且高度自定义, 不当的操作 (尤其是滥用 AUR 中质量参差不齐的包) 容易导致系统崩溃.
    • 迁移成本高: 配置分散, 重装系统或迁移到新机器时, 需要重新手动配置或依赖备份脚本, 不如 NixOS 那样天然具备"一键复刻"能力.
    • 维护责任: 用户需要时刻关注更新日志, 手动解决潜在的冲突.
  • 建议: 它是学习 Linux 的绝佳工具, 但作为生产环境需要一定的维护精力. 假如你选择使用 Arch 的话, 就需要爱惜你的 Arch 系统, 并谨慎安装 AUR 包. 如果有条件的话, 可以选择学习一下撰写 post-install 脚本, 这也会为常规的发行版带来一定的可复现能力.

2. Ubuntu / Linux Mint: 开箱即用的新手首选

  • 定位: 适合完全的新手, 企业环境, 或只需要"能用就行"的用户.
  • 优势:
    • 开箱即用: 预装了大量常用软件, 图形化界面友好 (尤其是 Linux Mint, 其 Cinnamon 桌面非常接近 Windows 操作逻辑).
    • 社区庞大: 遇到问题容易找到教程和解决方案.
    • 稳定性: LTS 版本提供长期支持, 适合服务器和生产环境.
  • 劣势:
    • 配置分散: 系统配置和软件管理相对传统, 缺乏 NixOS 那样的集中声明式管理 (其实所有发行版都有这个问题, 也有发行版提供一些图形化的配置工具, 比如说像是 openSUSE, 可以让你在一个界面里面完成所有的系统配置).
    • 定制镜像麻烦: 一般来说, 你安装了这些 预配置 的发行版的话, 就要去接受它在 iso 中的大部分配置, 如果想自定义一个包含特定软件的 ISO 镜像以便迁移的话, 需要经历复杂的打包流程, 且每次更新 ISO 内的软件都需要重新打包. 而 NixOS 只需修改配置文件并运行 nixos-rebuild build-iso 即可生成新的镜像.
    • 更新缓慢: 假如你很追求一些新软件包的话, 那它们大概无法提供, 并且它甚至可能造成一些最新硬件的兼容性问题.
  • 建议: 如果你只是想体验 Linux, 或者在虚拟机中使用, 亦或是学校 / 公司强制要求, Ubuntu / Mint 就是最好的选择.

3. Fedora / openSUSE 等其他发行版

  • 定位: 适合已经对 Linux 有了一定了解的用户.
  • 优势:
    • 契合需求: 你可以去自由地选择一些符合你理念的发行版, 比如说像是追求高速更新的 Fedora, 追求集成化配置的 openSUSE, 追求极致性能优化的 cachyOS.
  • 劣势:
    • 配置分散: 这是几乎所有发行版的通病, 基本上是一个比较难解决的事情.
    • 社区力量可能不足: 虽说有很多发行版, 尤其是由公司维护的发行版, 一般都会提供详细地文档, 并且会有一个不错的社区, 但是你也会难以避免地遇到一些社区建设没那么好的发行版, 或者遇到一个你就是查不到的文档.
  • 建议:
    • 尽量多去了解和体验: 虽说可能会比较 Distro Hopping, 但是能够去体验它们的差异也是一件好事, 这有助于你去了解 Linux 社区.
    • 尝试拥有一套自己的post-install脚本: post-install 脚本, 即用于安装完之后进行系统配置的脚本, 你可以把你安装完系统之后会做的事情都利用脚本写好, 这样也方便你后续切换发行版或者进行一定程度的复现.
    • 善于利用Archwiki上的内容: Archwiki 可以说是一个 Linux 界的百科全书, 大部分问题在上面都会有解决方案, 但是你可能需要按照你的发行版进行一定程度的变通.

4. 不可变发行版 (Immutable Distros): Fedora Silverblue, openSUSE MicroOS 等

  • 理念: 将根文件系统设为只读, 通过原子更新和容器化应用 (Flatpak / Distrobox) 来保证系统稳定性. 类似 Android 或 iOS 的模式.
  • 评价:
    • 优点: 极高的稳定性, 几乎不可能弄坏系统.
  • 缺点:
    • 可定制性受限. 对于喜欢修改系统底层, 编译自定义内核模块或深度调整系统行为的 Linux 爱好者来说, 这种"黑盒"模式可能令人感到束缚.
      对比 NixOS: NixOS 也提供了类似的原子更新和回滚能力, 但它 不牺牲可定制性. 你依然可以通过配置文件修改系统的方方面面, 甚至覆盖 (override) 特定软件包的编译选项. 这种"既稳又灵活"的特性是 NixOS 的独特优势.

三, 总结与建议: 如何选择?

1. 什么时候选择 NixOS?

  • 你已经是 Linux 资深用户, 厌倦了每次换电脑都要重新配置环境.
  • 你需要在多台机器上部署完全一致的环境 (如开发团队, 服务器集群).
  • 你追求极致的系统可复现性和版本控制能力.
  • 你喜欢"配置即代码"的理念, 愿意投入时间学习 Nix 语言.
  • 你想要一个既能原子更新 / 回滚, 又能深度定制的系统.

2. 什么时候选择 Arch Linux?

  • 你想深入学习 Linux 的工作原理.
  • 你喜欢滚动更新, 总是想用最新软件.
  • 你享受手动构建系统的过程, 并愿意承担维护责任.
  • 你需要 AUR 中特有的软件, 且能辨别其安全性.

3. 什么时候选择 Ubuntu / Linux Mint?

  • 你是 Linux 新手, 只想快速上手.
  • 你需要一个稳定, 开箱即用的桌面环境.
  • 你在虚拟机中临时使用 Linux.
  • 你的工作或学习环境强制要求使用特定发行版.

4. 什么时候选择其他发行版?

  • 你找到了一个在理念上比较吸引你的发行版.
  • 你对 Linux 已经有了一定程度的了解.
  • 你想要去多上手几个发行版, 以权衡利弊.

5. 什么时候坚持使用 Windows?

  • 你重度依赖闭源商业软件 (如 Adobe 全家桶, 特定行业软件), 且没有合适的 Linux 替代品或 Wine / 虚拟机方案.
  • 你对折腾系统毫无兴趣, 只希望电脑作为一个工具稳定工作.
  • 你是硬核游戏玩家, 且无法接受反作弊系统不兼容或性能损耗等等的问题.

结语

Linux 世界丰富多彩, 没有绝对的"最好", 只有"最适合".

  • NixOS 代表了系统管理的未来方向之一, 它将混乱的配置收敛为有序的代码, 用前期的复杂度换取后期的极致稳定与便捷.
  • Arch 是学习的最佳伴侣, 让你知其然更知其所以然.
  • Mint/Ubuntu 是通往 Linux 世界的友好大门.

最重要的是, 不要因为别人的推荐而盲目切换. 只有当你内心真正对技术产生好奇, 愿意投入时间去探索时, Linux 才会成为你的得力助手. 否则, 它只是一个让你头疼的负担.

并且, 假如你是 Linux 用户的话, 也不要试图用它们去说服 Windows 重度用户, 除非他们真的有兴趣.


文章使用了 Qwen3.5-Plus 来基于我之前视频中的文案辅助撰写, 并且进行了一定的手动修改, 以尽可能地确保专业性.

原视频链接如下:

NixOS?这是什么?好用吗?对于它的一些小讨论,顺便聊聊其他发行版
一句话:别拉不感兴趣人来用linux.谈谈我对NixOS,Arch Linux以及其他发行版的看法

新年伊始,来做点特别的事吧

没想到又过了一年啊...... 我永远都在觉得"自己今年怎么什么都没干就过去了", 但实际上要真说的话, 做的事情其实是不少的.
所以我决定给自己开一个 blog 站, 用来记录自己的一些日常, 或者说是自己的思考之类的.

为什么要记录自己?

首先要说的一点, 就是 看着自己以前的样子,很好玩.
我有事没事的时候, 就特别喜欢翻看自己以前留下的痕迹, 虽说我可能把最有价值但是最有毒的那一段给人为地抹除掉了, 但是实际上看下来还是很令人感慨的, 所以说, 我想要有选择性地记录一下我想要记录的内容, 一直留档给未来的我看, 二是能够记录自己的生活, 来让自己看着更像是"做了不少事"的样子.

为什么要建站?

简而言之, 目的其实是为了 学习.
我还是想要通过写一些前端的东西, 比如说根据我这里正在使用的主题进行修改啊之类的, 来学习一些前端的知识.
"实操"永远是一个学习各种东西的好办法, 因为实际操作一遍的话, 比单单地看着纸面上的知识会更具有"互动性", 你可以操作你学过的东西, 借此来深入了解, 并加深印象, 我认为这是一件很好的事.
毕竟我也不知道未来到底会成为什么样, 所以也只能想方设法地打磨一下自己, 让自己多学点东西, 这样也方便未来找到适合自己的工作或路径之类的.

我会记录什么?

我大概会在最近先想办法用 ai 把自己录过的几个视频的文案给扒下来, 润色之后再发出来吧.
那些视频基本上都是我梦到什么说什么, 但是意外地赞同的人很多, 还是蛮神奇的, 所以我也想要重新润色一下, 顺便再加上一些自己的见解. 以后的评论类视频, 我也会尽量地尝试去先撰写一份稿子, 然后再录制, 这样逻辑性和组织性也会更强, 能够传递更多的有效信息.
同时, 假如我在折腾某样东西并且成功了的话, 我也会把这些步骤给记录下来, 并放到博客里面, 这样也能防止未来的自己踩雷, 或是给他人提供参考文档.
新年总结或感悟的话, 尽量每年都写一篇吧, 像是这一篇文章, 我实际上是把它当作自己上一年的总结, 以及下一年的展望来看待的, 所以会打上一个"总结"的 tag.

总之, 我想朝着未来的方向不断前进, 想成为心目中的自己, 希望这个博客能够帮助到自己, 也希望能够帮助到在翻这个博客的大家, 感谢各位的支持和陪伴, 才能让我有着前行的动力.