dsh cli 是什么?DeepSeek Harness 命令行工具安装、DSH plugin 命令速查

概念与架构发布于 2026-10-13作者: DeepSeek Plugin 插件市场
dsh cliDeepSeek HarnessDSH plugin命令行工具npm 安装
dsh cli 就是 DeepSeek Harness 的命令行工具 dsh,官方唯一的 Node 应用启动器。本文讲它是什么、与 Web / 桌面版的关系,怎么装(npm 全局或 npx),以及 dsh、dsh web、dsh plugin 三族命令入口与常见退出码。

dsh cli 指的就是 DeepSeek Harness 的命令行工具 dsh——它是官方唯一受支持的 Node 应用启动器,负责加载某个 profile 并把后续参数交给它;Web UI、无界面任务、SDK 都是它启动的不同 profile。

DeepSeek Harness CLI 概览

本文把「dsh cli」讲透三件事:它是什么、与 Web / 桌面版是什么关系,怎么装,以及日常要用的三族命令入口与退出码。 先把结论摆前面:它不是一个独立产品,而是所有形态的共同入口——你敲的每一条 dsh 命令,本质都是在「选一个 profile 并启动它」。命令细节可以对照《dsh 命令大全》速查,本篇优先讲清概念与安装。

dsh cli 是什么:DeepSeek Harness 的统一启动器,以及它与 Web、桌面版的关系

dsh 是 DeepSeek Harness 的命令行启动器,只做一件事:加载选中的 profile,然后把其余参数交给被启动的应用去解析(来源)。 把它讲准,有四个要点:

  • 它是唯一的启动入口:官方明确,dsh 命令是唯一受支持的 Node 应用启动器;SDK 与 ACP 都是 profile,而不是单独的公开二进制。
  • 语法与加载是分开的:命令语法由 src/args.ts 负责,src/bin.ts 只动态加载被选中的 runner,所以「不认识就交给应用」这条边界很稳。
  • 它不是「另一个界面」:Web UI 是 dsh web 启动的 web profile 在浏览器里的形态,无界面任务是 headless profile,SDK/ACP 各自是 profile——界面不同,底层是同一套能力。
  • 和桌面版的关系:桌面版与 Web UI 提供图形与浏览界面,CLI 提供同一套能力的命令行入口,你可以按场景在两者之间切换。两者取舍见《DeepSeek Harness Web UI 与桌面版怎么选》。

一句话:CLI 是「启动器」,不是「界面」;你换的是它启动的东西,不是它本身。

dsh web 与 dsh --profile web 是同一次加载

dsh web 只是 dsh --profile web 的硬编码别名:两者都加载 web profile,并把后面的参数交给它(来源)。 同理,dsh <name> 是 dsh --profile <name> 的简写,会在 $DSH_HOME/profiles/<name> 下启动同名 profile。你在哪个目录执行 dsh,那个目录就会成为它默认的工作区根,而 profile 始终固定在 $DSH_HOME/profiles/<name> 下。所以看命令时别把 dsh web 当成另一个产品——它和 dsh --profile headless "任务" 走的是同一条加载路径,区别只是选了哪个 profile。启动器自己只解析 --profile、--patch、--help 这类 flag,第一个它不认识的 token 之后,剩余参数原样交给被启动的应用(来源)。

dsh cli 怎么安装:npm 全局安装与 npx 临时运行

装 CLI 有两种方式:npm install -g @deepseek-ai/dsh 全局安装后直接用 dsh,或者不装、用 npx @deepseek-ai/dsh 临时拉取运行(来源)。 按顺序操作:

  1. 确认 Node 与 npm 在 — 执行 node -v 与 npm -v。预期:两条都输出版本号。
  2. 全局安装 — 执行 npm install -g @deepseek-ai/dsh。预期:安装成功,dsh --version 能打印启动器版本。
  3. 起 Web UI — 执行 dsh web。预期:终端打印地址,服务在 http://127.0.0.1:3080。
  4. 或走 npx 免安装 — 执行 npx @deepseek-ai/dsh web。预期:与本机安装效果一致,只是每次拉最新版。
  5. 配密钥与工作区 — 在 Web UI 设置里填 API 密钥、选工作区。预期:能发第一条任务。
  6. 补插件 — 装好后需要扩展能力,从插件市场补,见下方链接。预期:插件能力出现在界面里。
bash
# 全局安装后用 dsh 裸命令
npm install -g @deepseek-ai/dsh
dsh web

# 不安装,npx 临时运行
npx @deepseek-ai/dsh web

# 确认版本
dsh --version

两种方式只差「要不要每次拉包」:长期日常用全局装、偶尔试或写进 CI 用 npx,二者读同一份 $DSH_HOME 数据,安装、参数与缓存的完整对比见旧文《npx @deepseek-ai/dsh web 参数与全局安装对比》。

dsh cli 常用命令入口:dsh、dsh web、dsh plugin

日常会敲的入口就三族:dsh web 起 Web UI、dsh --profile <name> 起任意 profile(headless 跑一次性任务)、dsh plugin --profile <name> <pnpm 参数> 管理插件(来源)。 速查表:

命令用途
dsh web--profile web 的硬编码别名,启动 Web UI
dsh --profile headless "任务"跑一次全新会话,打印最终答案后退出
dsh --profile <name>启动任意已装 profile
dsh plugin --profile <name> <pnpm 参数>在 profile 目录内转发给 pnpm,管理插件

几条必须知道的边界(来源):

  1. 参数归属:启动器只解析自己的参数,第一个它不认识的 token 之后,全部原样交给应用。所以 dsh --profile web --port 8080 里,--port 是 web 应用的参数。
  2. dsh web 的地址固定:默认 http://127.0.0.1:3080,端口用 --port 改,但 CLI 不支持 --host 0.0.0.0。
  3. 装插件先初始化 profile:第一次 add 之前先跑一次 dsh web,让 web profile 生成。
  4. 一键管插件更省事:装好社区插件市场后,浏览、一键安装、更新、卸载都能在图形界面完成。

参数归属与常见退出码

启动器的退出码只表达一件事:命令与配置有没有被正常接受——dsh --help 退 0,被拒绝的参数或未知命令退非零(来源)。 日常最常撞上的几种:

  1. 用法错误退非零 — 未知子命令、把别的模式的选项塞进来、重复传 --profile,都会在启动前被拒绝并退出非零,不会带着错配置运行。
  2. --help 退 0 — dsh --help 打印启动器自己的帮助,dsh web --help 打印 web 应用的帮助,两者都不真正启动服务。
  3. headless 按任务结果退码 — dsh --profile headless "任务" 任务完成退 0,否则退 1,适合写进脚本判断成败。
  4. 启动失败退 1 并落日志 — 必需插件激活失败时,进程打印诊断并以退出码 1 结束,同时在 $DSH_HOME/logs/(默认 ~/.dsh/logs/)写一份 startup-<时间>-<uuid>.log。
  5. profile 不存在会明确报错 — 缺失的 profile 不静默失败,而是提示用 dsh plugin --profile <name> add <package> 先把它建起来。

想把每个命令的参数、退出码都吃透,直接翻《dsh 命令大全》。全局装好 dsh 之后,如果你更想要界面化的 DeepSeek插件 管理方式,装一个 DSH Plugin Hub,就能在 Web UI 的「设置 → 插件市场」里可视化地装、更新、卸载。

使用 DeepSeek Harness CLI 的注意事项与局限

  1. 启动器只解析自己的参数 — 第一个不认识的 token 之后都交给应用,参数写错位置会被当成应用参数处理。
  2. profile 之间互不干扰 — DSH插件 与配置按 profile 隔离,web 与 headless 各装各的,换 profile 等于换一套插件集。
  3. Web 默认只听本机 — 绑定 127.0.0.1:3080,且刻意不支持 --host 0.0.0.0;要限制来源主机用 --trusted-host。
  4. npx 每次拉最新 — 免安装方便,但版本不受你控制;要固定版本就用 @版本号 或走全局安装。
  5. 预览阶段会变 — DeepSeek Harness 处于开发者预览阶段,官方明确未来会有破坏兼容性的变更(来源),命令与界面以当前版本为准。

与其记住 dsh plugin add、remove、update 一族命令再自己去 profile 目录核对依赖,不如在全局装好 dsh 后补一个 DSH Plugin Hub:命令行管启动、界面管插件,两件事各归各位。

自定义安装

来源:dsh CLI README、@deepseek-ai/dsh on npm、dsh-plugin.org 插件市场

常见问题

dsh cli 到底是什么?它跟 DeepSeek Harness 的 Web UI、桌面版是什么关系?

dsh cli 指 DeepSeek Harness 的命令行工具 dsh,它是官方唯一受支持的 Node 应用启动器,负责加载选中的 profile 并把后续参数交给它。Web UI 是它启动的 web profile 在浏览器里的形态,无界面任务是 headless profile,所以 Web、桌面与命令行共享同一套能力,只是入口和界面不同。

dsh cli 怎么安装?npm 全局安装和 npx 临时运行该选哪个?

两种都行:全局安装执行 npm install -g @deepseek-ai/dsh,之后可直接敲 dsh;不想装就用 npx @deepseek-ai/dsh,每次拉最新版运行。长期日常使用建议全局装,偶尔试或 CI 里跑用 npx 更干净,两者启动的都是同一个启动器。

dsh cli 装好后常用命令有哪些?dsh、dsh web、dsh plugin 分别干什么?

三族命令:dsh web 启动 Web UI(等价 dsh --profile web);dsh --profile headless "任务" 跑一次会话打印结果后退出、代表任意 profile;dsh plugin --profile <name> <pnpm 参数> 管理插件。启动器只解析自己的参数,第一个它不认识的参数之后都交给被启动的应用。

为什么 dsh web 起来的服务只能在 127.0.0.1:3080 打开?能改成别的地址吗?

dsh web 默认服务在 http://127.0.0.1:3080,端口可以用 --port 改,例如 dsh web --port 8080。但 CLI 有意不支持 --host 0.0.0.0,传入会以用法错误退出;要限制来源主机用可重复的 --trusted-host 添加受信主机名,而不是把服务暴露到全网。

npm 全局安装 dsh cli 后,怎么加上插件市场的界面来装插件?

全局装好 dsh 后先跑一次 dsh web 让 web profile 初始化,再装社区市场插件,例如执行 dsh plugin --profile web add dsh-plugin,重启后界面里就会多出插件市场。之后浏览、一键安装、更新与卸载都能在图形界面里完成,不必每次敲 dsh plugin add。

相关术语

dsh
dsh 是 DeepSeek Harness 的命令行启动器,也是官方唯一受支持的 Node 应用启动器,负责加载选中的 profile 并把其余参数交给被启动的应用解析。— dsh CLI README
profile
profile 是 DeepSeek Harness 插件 bundle 补丁层的有序堆叠,存在于 $DSH_HOME/profiles/<name>;dsh cli 每次启动都是在加载某个 profile,Web 与无界面模式各是一个 profile。— dsh CLI README
dsh web
dsh web 是 dsh 启动 Web UI 的命令,等价于 dsh --profile web;它默认服务在 http://127.0.0.1:3080,端口可用 --port 调整。— dsh CLI README
@deepseek-ai/dsh
@deepseek-ai/dsh 是 DeepSeek Harness 命令行工具发布的 npm 包名,全局安装命令为 npm install -g @deepseek-ai/dsh,免安装则用 npx @deepseek-ai/dsh 调用。— @deepseek-ai/dsh on npm

来源