我把 DeepSeek Harness 跑了一遍,终于知道它和 Codex 差在哪了

"

Codex把 Agent 组装好交给你,DeepSeek Harness把 Agent 的组装方式也交给了你。

------ 子昕

DeepSeek Harness 出来几天,我先把自己看进了源码。

我打开官网,先看架构参考,又去看"第一个插件"的开发教程。Cordis、事件、插件、配置层,一个接一个。看了很久,我还没写出它是什么,已经快要开始给它画架构图了。

如果你也点开过这两页,应该知道我在说什么。

后来我才发现,一页是给架构开发者的,一页是给插件作者的。第一次使用 Harness,根本不用从这里开始。

如果用过 Codex,先把它们分开

模型本身不会真的打开终端、修改文件。它能读懂上下文,生成回答,也能提出调用工具的请求。

把文件读出来、把命令跑起来的,是模型外面的Agent 程序。

官方首页用一个很短的公式表达这个关系。

Agent = Model + Harness

DeepSeek、GPT、Claude 这些是模型。Codex、Claude Code 这类产品,已经把模型、文件读写、终端、权限、会话和界面组合好了。选一个项目,就可以开始做事。

DeepSeek Harness 也能跑编码 Agent,但它把这些组成部分露了出来。你可以换模型、换工具、改权限,甚至重新组装一套 Agent。

它还带着一个可以直接使用的本地 Web 界面,所以不是只能拿来研究的 SDK。

这就是它和 Codex 最容易混淆、也最值得分开的地方。

「Codex 交付的是一套已经组装好的编码工作流,Harness 连组装方式也一起交给了你。」

目前 Harness 还是 developer preview,兼容性会继续变化。第一次用,先拿一个小任务试试,比先把整套架构读完更有效。

先跑一次,再看新建会话

电脑上有 Node.js 的话,运行下面这条命令。

npx @deepseek-ai/dsh web

终端会打开一个本地服务,默认地址是 http://127.0.0.1:3080。

进入页面后,在"设置 → 模型"里填 DeepSeek API Key,再选一个工作区,也就是准备让 Agent 读取和修改的项目目录。

没选工作区之前,输入框不能用。这个小细节很能说明 Harness 的定位。它要和一个本地目录一起工作,不是脱离项目的聊天窗口。

第一条任务可以很小。让它读一遍项目结构,找到启动入口,或者解释一个已经出现的报错。先看它怎么读文件、怎么说明理由,比一上来就让它重构项目更容易判断。

真正容易让人困惑的,是新建会话时出现的四个模式。它们其实是四套预先组装好的 Agent preset。

💡 可以把 preset 理解成一份清单,提前写好了这个 Agent 能看到哪些工具、收到哪些提示,以及工具以什么方式呈现。这里换的不是模型,也不是"聪明程度"。

四个模式到底在换什么

标准模式就是完整的编码 Agent,带着文件编辑、Shell、搜索、计划和工作流等常用能力。第一次使用,选它就行。

PTC 模式容易被看成一个新算法。它实际换的是调用工具的方式。

普通模式里,模型搜索一次、读取一次、统计一次,每一步都发一个工具请求。

PTC 给它多了一个 run_code 入口,模型可以临时写一小段 TypeScript,在这段程序里循环调用工具、过滤结果,再把汇总值返回。

比如让它检查几百个文件里的 TODO。你不需要写 TypeScript,也不会因为选了 PTC 就换了一个模型。写程序的是 Agent 自己,目的是把重复的遍历和统计交给代码组织。

为了看清它们的差别,我给 Standard 和 PTC 发了同一个只读任务,扫描 Harness 仓库里的 package.json,统计内部依赖,再列出依赖最多的包。

Standard 的过程很好理解。它先用 Bash 完成扫描,拿到 248 个文件的结果,然后逐个读取排名靠前的包。模型每判断一次,再决定下一步调用哪个工具。

PTC 的页面里出现了明显不同的东西。它先生成一段 TypeScript,把排除目录、读取 workspace、统计依赖和排序写进代码,再通过 run_code 执行。下面那串很长的 Read 调度记录,就是程序在内部调度工具留下的记录。

这次 Standard 有 10 次顶层工具调用,PTC 有 6 次,其中包含 run_code。

不过 PTC 内部仍然发生了大量工具调度,第一次扫描还把 node_modules 算了进去,后面才重新过滤。

两种模式最后得到的结果基本一致。

「实测下来,能确认的是,PTC 模式把一部分机械操作放进了程序里,改变了工具调用的组织方式;它并没有把所有工作神奇地压成一次调用。」

极简模式只留下持久 Bash 和文本替换编辑器。它适合想观察最小工具集,或者专门测试一个简单 Agent 的人,日常写项目一般用不到。

创造模式面向准备修改 Harness 自身的人。它保留标准模式的能力,又加上运行时检查、插件实验和 preset 创作指导。第一次使用时,可以先把它放在后面。

标准是完整组装,PTC 是用代码组织多步工具操作,极简是主动删掉大部分工具,创造是用来制作新组装。

这样看,四个选项就不再是四种"人格"。

"轨迹"里能看到 Agent 怎么做事

Harness 的每个会话都有"对话"和"轨迹"两个页面。

对话页给人看最终过程和答案,轨迹页把输入、模型请求、工具调用和返回结果按时间排开。

橙色是工具调用,紫色是模型输出,绿色是注入的上下文。

点开某一行,还能看到 Bash 收到了什么命令、读取了哪个文件,以及工具返回了什么。比较 Standard 和 PTC 时,我也是从这里确认两种模式的调用过程确实不同。

这里的"轨迹"不是模型完整的内心活动。它记录的是 Harness 能观察到的会话事件,比如模型输出、上下文注入、工具参数和执行结果。

任务卡住时,它比只看最后一句报错更容易找到问题出在哪一步。

权限是另一组设置

用过 Codex 的人对 read-only、workspace-write、danger-full-access 应该已经很熟悉,它们决定文件和命令能改到哪里,以及什么时候需要审批。

第一次试 Harness,保持 workspace-write 就够了。它主要约束写入位置,并不等于整台电脑都被隔离,读取范围、网络访问和进程可见性不会自动缩到工作区里。

💡 Plan mode 也只是工作流状态,让 Agent 先调查和提交方案,再进入执行,不会替代权限设置。

模型怎么接

最短的路是直接填 DeepSeek API Key。

想接其他模型,可以在"添加提供方"里选择 Anthropic、OpenAI 等内置提供方,填对应凭据。

公司网关或自建服务则走"添加自定义提供方",填写基础 URL、API 协议、凭据和模型名。

!踩坑提示 🕳

自定义接入不是把 URL 粘进去就结束了,服务端要支持相应协议,认证方式也要对上。

插件和 Harness 有什么关系

插件就是 Harness 组装能力的基本单位。一个插件可以加入模型适配器、工具、界面或工作流,而上面那四套 Agent preset,本质上也是不同的插件组合。

关于插件,后续会继续讨论,包括如何开发自己的插件以及如何安装社区优秀插件等。

桌面端是哪一层

官方仓库目前发布的仍然是 CLI 和本地 Web UI,没有官方 Electron 或 Tauri 桌面应用。

最近看到的"DeepSeek Harness Desktop":

主要是社区项目,而且同名项目不止一个。

它们做的事情通常是把 Node、CLI 和本地 Web UI 包装成双击就能启动的桌面程序,方便一些。

现在该不该试

如果只是想尽快把代码任务做完,Codex、Claude Code 这类成品会更省心。它们把常用的工具、权限和工作流整理好了,而且目前用起来已经相当顺手和强大。

但如果你想知道一个 Agent 是怎样把模型、工具和权限拼在一起的,Harness 提供了一个很直接的入口,而且真的能在本地跑起来。

DeepSeek Harness 目前只是开发预览版,版本还在快速变化,适合有时间精力且愿意折腾的开发者去折腾。至于其他人,暂时还是先老老实实用 Codex 和 Claude Code 这些成熟产品吧。

「读到这里,只需要记住一句话。Codex 把 Agent 组装好交给你,DeepSeek Harness 把 Agent 的组装方式也交给了你。」

我是子昕,专注 AI 工具、AI 编程、AI 提效等技术分享。

如果你觉得今天这篇有收获,欢迎点赞、在看、转发三连,我们下篇见。

相关推荐
云边有个稻草人2 小时前
飞算JavaAI能处理SaaS套餐变更业务吗?
java·springboot·ai编程·java开发·飞算javaai·java代码生成·ai coding模型
颜进强2 小时前
04 - 一张图看懂 OpenSpec 变更的一生:从创建到归档
前端·后端·ai编程
Cobyte2 小时前
Claude Code 的 Task System 的实现原理
后端·aigc·ai编程
文心快码BaiduComate2 小时前
额度不足的痛,我们懂!文心快码Comate测试版不限量Token第二弹来了!
程序员·ai编程·创业
殷紫川3 小时前
DeepSeek Harness :当"一切皆插件"成为 Agent 的新底座
openai·ai编程·deepseek
沐泽__3 小时前
Vibe Coding 全流程:从需求到上线的 7 步
学习方法·ai编程
todoitbo3 小时前
飞算JavaAI的多租户权限隔离实测
java·springboot·ai编程·java开发·飞算javaai·java代码生成
明月_清风5 小时前
Pi Agent 深度解析:开源极简终端 AI 编码代理的终极指南
前端·后端·ai编程
因吹斯汀5 小时前
基于 Pi,我居然自己搞了一个好用的 AI Agent 桌面工作台
aigc·openai·ai编程