跳到正文
Chandler Nguyen
AI阅读时间1分钟

我的 Mac 死了。我用 Chrome 和 DeepSeek 把它重建了起来。

我的 Mac 死了,于是我把硬盘抹掉,只靠 Chrome 和一个 agent harness 从头来过。现在这台机器的可用空间比之前 多了约 60 GB,而我已经不再用“应用”为单位来思考了。

我的 Mac mini 死了。不是那种轰然倒下的死法——它只是变成了一台我信不过的机器,而理智的做法就是把硬盘抹掉,从头重装。

这套流程我走过很多遍了。仪式从来没变过:重装系统,然后花一整个晚上把东西一个个装回来。Homebrew。Node。Python。十来个你已经想不起来什么时候装过的命令行工具。然后三周之后,你发现漏掉了一个——因为某个以前能用的东西现在不能用了。

这次我换了个做法。

我先装 Chrome,然后在 Terminal 里跑一条命令把 harness 本身装上。整张清单就这些。剩下的我让它自己去配。

在这件事里,Chrome 不是摆设。它是我唯一真正想要的 GUI 应用,同时也是 agent 需要浏览器时去驱动的那一个。浏览器工具跟其他东西一样,写在 harness 的配置里,而不是靠手工安装。

harness 正是我一直忽略的那一环

过去两年,我想 AI 编码工具的时候,主要想的是模型。哪个模型最聪明,哪个最便宜,哪个写前端代码更好。我为这个问题取消过订阅,也写过不止一篇文章。

我一直低估的是 harness——真正坐在我和机器之间的那个东西。模型提供智力。harness 提供手、提供“我平时怎么干活”的记忆,还有界面。

这次重建,干活的是 OpenCode 这个 harness,模型是 DeepSeek V4.1 Flash。但我已经不再觉得这两层里的任何一层应该固定成唯一选择,因为挑它们的依据完全不是一回事。

模型我按四件事来挑: 它有多聪明、生成有多快(每秒多少 token,这个感受比我预想的强得多)、花多少钱,以及我发过去的数据会被怎么处理。

成本这件事不能只看标价,因为标价不等于你实际付的钱。真正要紧的数字是缓存命中率。当 harness 能维持一个稳定的上下文时,大部分输入都由缓存提供,账单就会塌下来——我的 DeepSeek 缓存命中率常年高于 99%。两个 token 单价相同的模型,实际花销可能差得很远,取决于你的 harness 能不能把缓存留住。

我也不会把所有事情都走同一个模型。不同的任务适合不同的模型,机械性的活儿用一个免费模型往往就够了——拿前沿模型去干这种事纯属浪费。

harness 我按偏好来挑。 界面,还有习惯。我用 OpenCode,因为我的习惯长在那里;同时我也跑 DeepSeek 自家的 harness,因为我喜欢在两边都干活。工作时我用的是另一个——Antigravity CLI 驱动 Gemini 4 Argon 或 3.8 Flash——因为那份工作的形状不一样:我丢给它一个计划,它能一连干上几个小时。

这些事没有任何 benchmark 能替你定,不像模型还有一个分数可看。你得知道自己要什么,然后照着它去挑。

八月我写过,我把工作收敛到单一模型加单一 harness,但没点出真正改变我的那个东西。那篇文章的结尾我说,我会开始更多地用 Flash,因为在这个价位上没有理由不用。这篇讲的就是那件事,只更正一点:单一这个直觉才是错的。

这个区分听起来很学术,直到你用它重建一台电脑。然后它很快就不学术了。一个能跑命令、读写文件、装软件包、还会试着自己检查工作的 harness,不是一个自动补全框。它更像是一层操作系统——而一旦你有了这一层,需要你自己装的东西就变得非常少。

具体流程,一步一步来

每次的模式都一样,而且都不是我以前的工作方式:

  1. 描述结果,而不是步骤。 不是“这是 brew 命令”,而是“我需要在本地跑这类脚本,你配一下”。
  2. 让 agent 去安装和配置,包括把它自己刚弄坏的东西修好。
  3. 验证——这一步还是我的。 agent 能把它跑过的命令原样给你看,这正是让验证变便宜的原因。
  4. 我验证不了的东西,就自己动手。 服务密钥和 SSH 凭据是仅有的两样我亲手创建、没有交出去的东西。
  5. 读它到底做了什么,并且接受它迟早会给出一个听起来很合理的错误答案。 不用每一行都读——读到足以知道这台机器上变了什么,也足以看出那个看起来对、其实不对的改动。

和我以前的重装相比,差别用表格比用文字说更清楚:

我以前的重装这一次
手工安装的部分系统,然后一晚上的 Homebrew、Node、Python 和十来个 CLI 工具Chrome,外加一条装 harness 的命令
其他所有东西我自己,花一个晚上agent,按需
状态存在哪里本地服务、运行时、容器镜像一个配置文件,和一次授权过的连接
会积累什么每一次实验留下的沉积什么都不装“以防万一”

有两件事让这一切成为可能。一是 harness 把配置放在我能读、能改的文件里——我能清楚看到接了什么,也能改。二是我的 MCP 服务器里,跑在远程的越来越多。Supabase、Resend、Vercel 都是我授权过一次的 URL,不在我的硬盘上。本地的那些通过 npx 按需运行,所以不到用它的那一刻就不算装上。

我的机器以前装着一堆服务。现在它装着一个配置文件和一枚 token,服务本身在别处。

磁盘一直是空的

我没有专门为了测这个而做这件事,所以把它当作一个观察,而不是一次测量。但这个数字很难忽略:和以前那套配置相比,同样一台机器上,我现在多了大约 60 GB 可用空间。

对一台 SSD 焊死在主板上的机器来说,这不是可以忽略的零头。存储是现代 Mac 上少有的几件没法后加的东西,而且定价贵得离谱。多出来的 60 GB,已经接近升级到下一档存储要花的钱了。

这些空间去了哪里,解释起来比证明起来容易。有些工具现在按需运行,而不是常驻硬盘;预装东西的习惯也淡了,因为等需要的时候再要,成本很低。

从“应用态”到“意图态”

下面这个转变,我自己也还在琢磨它能走多远。

我人生里的大部分计算经历都是应用态的。我想做一件事,就去找能做成这件事的应用,装上,学它的界面,然后活在它设定好的框框里。应用是工作的单位。

现在这种干活的方式是意图态的。我描述我需要什么。某个有本事在机器上动手的东西会自己判断需要哪些零件、把它们配好、然后做完。应用变成了一个实现细节,有时候甚至是我从没主动装过的细节。

这比“AI 帮我写代码”要大得多。写代码从来不是我的瓶颈;瓶颈是想做一件事和把它做出来之间的距离。现在这个距离短了很多。

这也是我为什么一直半开玩笑地说,我最后可能会换到 Linux。我在 macOS 上待了这么多年,原因从来不是这个系统本身,而是我攒下来的那套配置,换平台就得重来一遍。如果你的环境主要是一个配置文件加一个能干的 agent,底下跑的是哪个平台,就没有以前那么要紧了。这周我不会换。我只是不再确定还有什么能拦住我。

我得承认,这个变化我没预见到。如果五年前有人告诉我,一台新 Mac 加一个浏览器再加一个 agent 就够我重新开工,我会以为你在描述一个 demo,而不是一个安静的周二晚上。

我不主张什么

说几条诚实的保留意见,因为关于这套东西的兴奋文章我读得够多,多到该对自己保持一点警惕。

  • 现在 harness 成了新的锁定。 模型越来越容易换,但我的习惯、配置和工作流都长在 harness 里。这是实实在在的依赖,我盯着它。
  • “它把什么都装好了”不等于“我理解我的机器”。 我对自己这套配置的熟悉程度,反而不如当年手工组装的时候。这是真实的代价,也正是我上面留了第五步的原因。
  • 这不是免费的。 过去 30 天大约 $60,而这个数字不只是我写代码——它还包括我几个产品在生产环境里跑着的 DeepSeek API。作为参照,一年前同样的用法每月要花掉我大概 $200。(这个转变我在八月写过。)

常见问题

AI 编码里的 harness 是什么?

harness 是把模型接到真实环境上的那个程序。模型负责推理;harness 给它工具——执行命令、读写文件、调用外部服务——并管理围绕这些工具展开的对话和权限。OpenCode 刻意做成模型无关,所以我能直接换掉底下的模型,其他什么都不用动。Claude Code 和 Codex 也是 harness,只不过各自都是围绕自家厂商的模型搭的。我的经验法则:选模型看能力、速度、成本和数据处理;选 harness 看你是不是真的喜欢在里面干活。

真的只靠一个浏览器和一个 AI agent,就能把新电脑配好吗?

就我这套配置而言——一个主要在终端和浏览器里干活的开发者——大体上可以,而且是一条命令,不是零条。你需要一个浏览器去连模型、连网络,需要一种方式把 harness 本身装上,还需要愿意去验证 agent 做了什么。设计师或者会计的机器适不适用,我不敢假设。

为什么这套配置占的磁盘少这么多?

比我以前那套少了大约 60 GB,有三个原因。有些服务改成远程运行,通过一个 URL 访问,而不是装在本地。有些工具改成按需运行,而不是常驻硬盘。还有,“以防万一”先装上的习惯会慢慢消失——因为等以后需要时再要,成本很低。


还是有点意外,“装个 Chrome 看看会怎样”最后变成了一台能用的电脑。

祝好,Chandler :P