# DeepSeek Harness 实测：Codex 9 分钟搞定，V4 Pro 20 分钟搞不定

- 原文链接：https://mp.weixin.qq.com/s/gB9FgNZTvNpPG6PtiEDudw
- 来源：微信公众号「叶小钗」；作者：叶小钗
- 发布时间：2026-08-18 09:00 CST（页面时间戳）
- 获取时间：2026-08-18
- 原文清洗：保留架构、执行链路、工具治理与实测论证；移除课程推广和图片。

## 正文

作者将 DeepSeek Harness（DSH）理解为模型之外的 Agent 运行系统，并用“Agent = Model + Harness”概括二者关系。其关注点不是新的单任务推理范式，而是把模型、文件系统、沙箱、会话日志、工具以及驱动执行的主循环都实现为插件；项目公开的工程主张是 “Everything is a plugin”。

### 运行区域与装配

DSH 由 Node Host、Browser 和命令行入口组成。Browser 负责界面与交互，经由 Web Host 把请求送入 Node Host；命令行的 headless runner 则直接走同一 Agent 核心。不同入口复用模型、工具、会话和主循环，差异主要在交互与启动方式。

系统以 Profile 和 Bundle 装配插件：Bundle 是一组预先搭配的插件，Profile 决定本次启动启用哪些组合，用户配置可继续叠加。Cordis Loader 最终将配置解析为运行中的插件树。插件不是按配置顺序盲目启动，而是按声明的服务依赖激活。例如文件工具等待文件系统服务可用后才执行其 `apply`。

### Cordis：依赖、服务和事件

文章把 Cordis 描述为负责依赖与生命周期的插件框架。插件既声明所需服务，也可提供服务；依赖未满足时保持等待，服务出现后启动。服务被替换或卸载时，依赖者先清理，再在新实现就绪时重新激活。每个插件由 Fiber 跟踪依赖状态和生命周期，并保存事件监听、服务注册等副作用的清理函数。

长期存在的能力通过服务连接，例如文件工具只依赖 `ctx.fs`，而不关心当前底层是本地磁盘还是远程环境。仅在某个时机介入的逻辑通过事件连接：模型请求前可压缩上下文，工具执行前可做策略判定。文章强调主循环在执行路径中居中，但在 Cordis 看来仍只是可替换、可清理的插件。

### Capability Seam：可替换能力的三方契约

DSH 把可替换能力拆为 Service Definition、Provider 与 Consumer。前者定义稳定的调用接口和共享数据类型，Provider 处理本地、沙箱或远程协议差异，Consumer 将能力暴露给上层。文章用文件系统说明：`FileSystem` 规定读写和列目录能力，不同 Provider 实现本地、受限或 E2B 文件系统；`tool-fs` 仅按接口把它包装为模型工具。

这里的 `FsTarget` 是 Provider 交给 Consumer 的文件引用。Consumer 可把它传回 `readText()`、`writeText()` 等接口，却不应假定它对应真实路径还是远程路径。这个边界使切换 Provider 时不必重写工具和主循环。模型接入、会话和其他能力也可沿用同一模式。

### 一条消息的执行与调度

用户消息进入 Inbox，主循环取出后写入 `turn/start`。一个 turn 从开始处理任务持续到确认无需继续；一个 step 是一次模型请求及其工具调用，因此一个 turn 可包含多个 step。每个 step 前，`agent/pre-step` 允许插件压缩、补充、改写或拒绝输入；模型与工具完成后，若仍需判断则启动下一 step。turn 结束前的 `agent/turn-stopping` 允许插件补入消息，只有无人要求继续时才写 `turn/end`。

消息发送方显式指定处理时机，而非由系统做语义判断：`followup()` 将普通新任务放入 `next-turn`；`steer()` 将运行中的补充要求放入 `next-step`；`inject()` 供插件或后台任务注入后续模型需要的上下文。三者最终都写入 Inbox，但决定了是延续当前 turn 还是排队到下一 turn。

### Session 日志与可重建历史

文章提出：凡进入模型请求的内容都应能从 Session 日志重建。用户消息、模型回复、工具结果、系统提示和工具定义均记录为事实；投影将日志整理成当前对话，缓存减少重复计算，请求前再检查投影与日志的一致性。这样会话中断可恢复、历史位置可分支、界面回放也不必另存一套对话。

日志采用追加式记录。上下文压缩应产生供后续模型使用的替代内容，而不是直接改写旧记录。模型可能因输出上限产生没有有效文本的 assistant 消息；这类记录可保留 token 用量，但不进入后续模型历史。

### 工具策略与记录

工具注册表先经过通用策略，再交给具体工具与 Provider。`tools/pre-execute` 的监听器可放行、要求审批或拒绝；需要审批但审批服务不可用、或审批未获通过时，注册表返回拒绝结果。文章称单调守卫只能拒绝或弃权，因此后续宽松策略不能推翻先前的拒绝。

获准调用可统一接入超时、重试和指标；执行后的内容再经后处理，先发出只读 `tools/result` 通知，再由 Agent loop 写入 Session，供模型继续判断。文件和 Shell 沙箱还可在 Provider 层实施具体限制。分层的目的，是让 Bash、网页搜索和子 Agent 保留各自业务，而权限、超时、观测与记录不必各自重写。

### 作者的单任务对比

作者以一个页面初始化慢、约十个接口耗时约 2 至 4 秒的应用问题，给 Codex、DSH 中的 DeepSeek V4 Flash 与 V4 Pro 相同排查提示。其记录称 Codex 用 9 分钟增加了一个聚合接口，周额度下降约 2%；V4 Flash 用约 20 分钟把各接口降至 800ms 以下但未合并接口；V4 Pro 两轮约 20 分钟后未产出可观察改动，文中另称 Flash 约 0.82 元、Pro 约 1.33 元。

这些结果是单一项目、单一提示、特定版本与人工观察下的作者自述，不含代码、基线、网络条件、验收标准、模型采样参数或可复现轨迹，不能用于推导通用模型能力排序或成本结论。

### 结论与采用边界

作者认为 DSH 的价值在于可组合运行时：能力选择、配置和依赖关系成为显性工程对象，也带来配置、排障与日志理解的复杂度。文中同时提醒项目处于 developer preview，后续可能不兼容；适合作为 Agent 工程样本和设计参考，不宜未经评估直接作为稳定生产底座。

标签： #主题/AI-Agent #主题/Harness #主题/插件运行时 #主题/Agent-Loop #主题/工具治理 #节点/服务依赖 #节点/消息调度 #节点/会话重建 #场景/公众号长文
