几天前我想把 DSH 接个非 DeepSeek 模型跑跑。不是对 DeepSeek 有什么不满,是想试一个东西——具体是什么后来也没试成。翻模型适配器那层时,我看见了 pi-ai 的痕迹。不是“参考过”那么含糊,是直接复用了代码。
先停一下,问个问题:DeepSeek 官方 harness,接自家模型有专门的适配器,接别家模型时,为什么要用 Pi 的那层?这事不寻常。
我一开始也以为 harness 就是模型外面的壳,模型是主角,壳是配角。后来看见那行 import,这个顺序慢慢晃动了。DSH 用 pi-ai 这个细节,就是那晃动漏出来的边角。
表层答案是:Pi 那层写得好,25 个以上 provider,本地模型、OpenRouter、Ollama、vLLM 全在里面,重写一遍纯属自己找苦头吃。用现成的省时间。这个解释对,但没到底。
再往下呢?一个模型厂商愿意让自家 harness 的非自家模型路径依赖第三方代码,这可不只是“省事”。这是承认“接模型”这件苦差事本身值得交出去,哪怕用对手的代码。评论区 Jo Do 问得比我还狠:模型厂商发布一个用着自己没法完全控制的模型层的 harness,锁定方向是不是反了?他的意思是,harness 成了要持久的那个,模型反而变成可替换的零件。
我一开始觉得 Jo Do 夸张。后来翻评测,同一个 DeepSeek V4 Pro,在 Claude Code、OpenCode、Hermes、Pi、DSH 下跑出来不一样——模型没变,壳变了,结果变了。这时候再回头看他的问题,我不好意思说他夸张了。
30 个任务的那张对比表,我第一次扫过去记住的是 token,不是通过率。Pi 通过 21,DSH 通过 20,基本齐平。token 差得远:Pi 平均 92.5 万,DSH 8.8 万。差 10 倍。你第一反应肯定是 DSH 省 10 倍。我第一反应也是。
后来冷静下来一琢磨,这个 10 倍不能直接比。Pi 走 OpenRouter,DSH 走官方端点,缓存统计口径不同。再拉第一轮未缓存的数据出来看:Pi 4.5k token,DSH 47.6k。方向反过来。所以那个 8.8 万很大程度是缓存和端点带来的便宜,不是纯粹的“DSH 更省”。真正有意思的是这里:那个 10 倍看起来太对了,对到你会直接信,完全不用过脑子。
通过率又能说明多少?30 个任务里 27 个结果一致,有差异的只有三个:CRM 迁移归档、交接审计这两件,Pi 过 DSH 败;Sheets 到 Airtable 跟踪器,DSH 过 Pi 败。三个任务,三种形状,两个 harness 各栽一个。这比总分有信息量。它说明的不是谁强一分弱一分,是每个 harness 对“好代理循环”的假设,各有各的偏见。任务形状恰好撞上那个偏见,分数就变了。
Pi 只给模型四个工具:读取、写入、编辑、bash。系统提示词 1000 token 以内。DSH 内置 53 个工具,MCP、子代理、LSP 都有。工具多本来是卖点。但 DSH 紧接着又出了 Code/PTC 模式——让模型先生成 TypeScript SDK,把分散的工具调用合并掉——又出了 Minimal 模式,基本只留 shell 和文件编辑器。你品品这意味什么:53 个工具是卖完了,才想起来工具太密集会让模型在每个决策上下文里多出几十个候选词。Minimal 这个模式最诚实,它相当于承认有些任务里,工具少反而是优势。
DSH 把筹码押在了可编排上。Cordis 插件系统让模型适配器、工具、沙箱、会话系统、代理循环全是可替换的。每一轮触发 turn/start、system-prompt/assemble、tools/pre-execute、turn/end 这些事件,插件能挂接。会话日志用追加式记录,支持回放、从存储事件分叉。Creator 模式甚至允许代理改自己运行时的一部分。
这套东西听着就重。说白了,它不是一个“帮你写代码”的 harness,是一个“让你改 harness”的 harness。给你的接口多到你可以替换代理循环本身——但代价是你在写代码之前,得先学 profiles、plugins、providers、Cordis 这一串。
Pi 那边呢?终端里选完模型就能干活。日志没这么重的回放能力,但消息是树状的,/tree 回旧节点,换个方向继续。上手要几分钟。你要改 Pi,去 ~/.pi/agent/extensions/ 丢一个 TypeScript 文件,能挂工具、拦调用、换压缩逻辑——门槛比 Cordis 低,但能改的边界也没那么深。两种取向,没有通用的好坏。
沙箱也是这样。Pi 核心不内置沙箱,代理继承你的权限,想隔离自己上容器。DSH 内置三种模式:只读、工作区可写、完全访问。Linux 用 bwrap 和 Landlock,macOS 用 Seatbelt。而且设计成失败就关掉,不会静默回退。这个细节很能说明 DSH 的态度。但 DSH 自己也不讳言:沙箱没经过安全审计,插件在 harness 进程内跑,第三方插件拿到的机器权限不低。两边的代价,剥开都在台面上。
回到开头那个发现。DSH 项目负责人说 Pi 是内部不少人日常在用的工具——我看到 pi-ai 那行的时候,这句话突然有了画面感。一个官方 harness,接别家模型用着别人的模型层,负责人还公开说内部用别人的工具。这只能说明一件事:harness 这个东西,真实的重力比“模型附属品”重得多。
所以那组 6 分对 6 分,表面是平手,底下根本不是一个选择题。打分卡这种形式本身就是为“选了谁就是谁”准备的答案,但地下那几层剥开,它逼着你问:你写代码的时候,愿意把多少自己交给一个 harness?
Jo Do 那条提醒我一直记着——评测和轨迹会编码 harness 对“好代理循环”的假设。所以要保留至少一套直接调用原始 API 的评测。这套东西我现在还没搞,做起来很糙,数字乱得不成体系。但方向是对的:不经过 harness 那层,能看见模型自己的样子,而不是它在一个特定壳子里的样子。这个下次接着剥。