实测要点
- DeepSeek Harness 是开源 Agent 底盘,CLI 叫
dsh;它不是 DeepSeek 模型,也不是一张 API 价目表。 - 我们用
npx @deepseek-ai/dsh拉到 0.1.5-rc.1(Node.js v24.14.1)。dsh --help把产品说成「按序叠加的插件组合包」。 dsh --profile web --dump-default-config打出 152 条插件;默认模型deepseek-official/deepseek-flash;Web 默认127.0.0.1:3080;Agent preset 默认standard。- 模型走
ctx.llm适配器,工具走ctx.tools,循环走ctx.agentLoop。换模型 ≠ 换工具,也 ≠ 换循环。 - 开发者预览会破坏兼容。官方入口:deepseek.com/harness、GitHub。
先分清「模型 / 工具 / 循环」三层,再决定要不要把 dsh 当日常编码 Agent。
DeepSeek Harness 是什么
DeepSeek Harness 是 DeepSeek 开源的 Agent 运行时。仓库 README 写得很直:它由 Cordis 撑起「一切皆插件」——模型适配器、工具注册表、会话日志、沙箱,以及 Agent 循环本身,都可以在配置层替换,而不必去改 Harness 源码。产品页同样把能力列成插件:模型、工具、技能、会话、沙箱、存储、循环、调度、UI。
命令行名字是 dsh。这和「DeepSeek V4-Flash 多少钱」不是同一类搜索。后者买的是模型推理;前者装的是把模型、工具和会话串起来的底盘。Token 账单仍看模型提供方,见 DeepSeek V4-Flash API 价格。
官方同步标明:这是开发者预览,会有破坏性变更。2026-08-13 仓库公开后,文档比营销页细,但默认把读者当成要写插件的人。本文只回答「是什么、怎么组合、我们实际跑出了什么」,不把 Cordis 事件域当入门课文。
我们测了什么:环境、命令、原始数字
标题若写「实测」,就必须有环境、任务、方法和原始输出。下面是我们本机跑过的部分,不是官网截图复述。
环境:macOS(darwin 25.4.0),Node.js v24.14.1。用 npx --yes @deepseek-ai/dsh,不 clone 源码。为避免写进默认 ~/.dsh,把 DSH_HOME 指到隔离目录后再 dump 配置。
任务:① 读 CLI 帮助与版本;② 读 web 子命令帮助;③ 导出 web profile 的默认组合树(不含用户层、不含 --patch)。我们没有在这篇里跑带 API Key 的完整编码任务,因此下面不把「改了某个仓库」写成实测。
npx --yes @deepseek-ai/dsh --version # 0.1.5-rc.1 npx --yes @deepseek-ai/dsh --help npx --yes @deepseek-ai/dsh web --help export DSH_HOME="$PWD/.tmp_dsh_home" npx --yes @deepseek-ai/dsh --profile web --dump-default-config
dsh --help 原文把产品定义为:在用户覆盖之下,按序叠加插件组合包(plugin-bundle patch)。子命令只有两条主线:web(--profile web 的别名)和 plugin(把剩余参数转给该 profile 目录里的 pnpm)。示例里还有 headless 一次一任务、--dump-config 打印组合树、--from-default-profile 从模板派生自定义 profile。
dsh web --help 印出的监听默认值与文档一致:--host、--port(0 让操作系统选空闲端口)、--no-open、--trusted-host。配置树里 webserver 默认 127.0.0.1、3080。
| 项 | 测到的值 | 证据 |
|---|---|---|
| npm 包版本 | 0.1.5-rc.1 | dsh --version |
| 默认模型 | deepseek-official / deepseek-flash | dump 里 agent-default-model |
| Web 监听 | 127.0.0.1:3080 | dump 里 webserver |
| 默认 preset | standard | dump 里 agent-presets |
| 默认组合树行数 | 539 行 YAML / 152 条 id | --dump-default-config |
| 标记 disabled | 26 条(多为 tool-*) | 同一份 dump |
26 条 disabled: true 主要是 tool-bash、tool-fs、tool-skill、tool-web 这类面向模型的工具:dsh-web-app 先把它们关掉,等工作区 / preset 再打开。所以「dump 里工具是灰的」不等于「Web UI 没有 bash」。这是组合层的细节,营销页不会写。
模型、工具、循环怎么组合
架构文档把运行中的 dsh 写成一棵启动时按层叠加的插件树。你日常只碰四样东西:
- Profile:
$DSH_HOME/profiles/<name>里的具名组装。随附模板有web、headless、sdk、sdk-minimal、acp。 - Bundle:带
dsh.bundle的 npm 包,贡献一份 patch。第一次初始化时,@deepseek-ai/dsh-base是第一层。 - 插件模块:导出
apply(ctx)的 TypeScript。模型适配器ctx.llm.registerAdapter();工具ctx.tools;循环是ctx.agentLoop。 - 覆盖顺序:各 bundle patch → profile 自己的
cordis.patch.yml→ home 级 patch → 命令行--patch。
| 层 | 你碰什么 | 换成什么 | 别搞混 |
|---|---|---|---|
| 模型 | Settings → Models,或 $DSH_HOME/settings.yaml | 官方卡、内置提供方、自定义网关 | 换模型不会自动换 bash 实现 |
| 工具 | preset / DSH_TOOLS_MODE / 工具插件 | 标准全套、极简双工具、自己注册 | 工具 schema 进提示词,和模型目录是两本账 |
| 循环 | 默认 dsh-agent-loop,可整段替换 | 另一个 loop 插件 | 大多数产品把 loop 写死,dsh 故意不写死 |
| 入口 | dsh web / headless / sdk / acp | 同一套 CLI,不同 profile | 不要再发明第二个可执行文件 |
装第三方插件的官方路径是 dsh plugin --profile web add <包名或 git>。我们跑 dsh plugin --profile web --help 时,它直接把 pnpm 的帮助打出来——文档说「转发给 pnpm」不是比喻。本地试验可以 dsh web --patch ./cordis.yml,教程见 第一个插件。发布到 GitHub 时加上 dsh-plugin topic。
绑模型时,DeepSeek 官方卡只收一把 API Key,密钥进 $DSH_HOME/.credentials.yaml。自定义网关要小写 Provider ID、base URL、协议(openai-completions / openai-responses / anthropic-messages)。Provider ID 不能改名:会话和默认模型都指向它。网关能通 Key 仍可能 400——推理模型可能把系统提示发成 developer 角色、输出上限发成 max_completion_tokens。官方要你在 settings.yaml 写 compat.supportsDeveloperRole: false 和 maxTokensField: max_tokens。步骤见 Configure models。
Web UI 还要先选 workspace,否则输入框不可用;官方建议先发一句「总结这个仓库」。见 Use the Web UI。技能(Skills)是另一套程序性说明,和 dsh 插件不是同一个东西;背景见 Hermes Agent Skills 清单。
四种模式怎么选
产品页列了四种运行模式。我们 dump 到的默认 preset 是 standard,与「标准模式」对齐。其余三种以官方说明为准,下表不把未跑过的模式写成「我们测了」。
| 模式 | 官方给什么 | 什么时候用 | 别指望 |
|---|---|---|---|
| 标准 | 文件编辑、Shell、检索、Skills、计划、目标、子代理、工作流 | 日常编码 Agent | 它不会替你选对模型价 |
| PTC | 标准能力 + Code Mode SDK,模型用一段 TypeScript 组合多步工具 | 工具调用链很长、想少来回 | 网关协议不对时一样失败 |
| 极简 | 持久 bash + str_replace_editor | 给模型做最小工具基准 | 没有完整检索/工作流 |
| 创造 | 标准能力 + 检查运行时、内存里试插件、写新 preset | 你要自制组合,而不是只聊天 | 预览期 API 会变 |
权限另有三档,写在 dump 的 permission 插件里:read-only、workspace-write(默认,可用 DSH_PERMISSION_MODE 改)、danger-full-access。标准模式不等于「已经放开写整个磁盘」。
和 Claude Code / Hermes 谁该用
把 dsh 理解成「可拆的底盘」,选择会清楚很多。
- 要可替换的模型、工具、循环,并准备写插件:用 DeepSeek Harness。预览期请锁版本。
- 要产品化编码 Agent、账单按套餐走:先看 Claude Code 2026 价格,不要指望 dsh 复制同一套订阅体验。
- 要 Skills / Gateway 那套程序性记忆:Hermes 更贴;dsh 也有
dsh-skill,但默认 dump 里 filesystem skill 是关掉的,直到组合打开它。 - 已经在跑 MCP:协议层仍独立,见 MCP 开发者指南。dsh 文档把它当作客户端能力,不是「装了 dsh 就不用 MCP」。
第三方评测提到可选 bundle 能把任务委派给 Claude Code / Codex。我们这份默认 web dump 没有出现 subagent-claude-code 这类条目,所以不写成「开箱即委派」。Agent 技术栈怎么叠,见 2026 AI Agent 技术栈。
FAQ
DeepSeek Harness 和 DeepSeek 模型是一回事吗?
不是。Harness 是运行时;模型是推理服务。默认路由指向官方 DeepSeek,但你可以加 OpenAI、Anthropic 或自定义网关。账单跟你选的提供方走。
dsh 怎么安装、Web UI 默认端口?
官方:npx @deepseek-ai/dsh web。我们测到包版本 0.1.5-rc.1,默认 127.0.0.1:3080。SSH 场景加 --no-open。源码路径是 clone 后 pnpm install && pnpm run build && pnpm dsh web。
模型、工具到底怎么组合?
Profile 叠 bundle,bundle 用 patch 插入插件。模型注册在 ctx.llm,工具在 ctx.tools,循环在 ctx.agentLoop。看自己机器上的树:dsh --profile web --dump-config。
四种模式怎么选?
日常编码用标准(默认)。要比模型本身,用极简。工具链很长,看 PTC。要自制 preset,用创造。预览期名称和能力可能改。
开发者预览能不能上生产?
官方警告会有破坏性变更。可以在隔离目录、锁 npm 版本做实验;不要把未锁定的 npx 直接挂到生产证书机。
小结
DeepSeek Harness 回答的是「Agent 底盘怎么拆」,不是「DeepSeek 模型排第几」。我们在 0.1.5-rc.1 上看到的硬事实:web 默认树 152 条插件、默认 Flash、3080 端口、preset=standard。组合顺序是 profile → bundle → 模型适配器 / 工具注册表 / 循环,而不是在一个二进制里写死。