npm 卸载 dsh 怎么做?DeepSeek Harness 全局卸载命令、报错与残留清理

卸载与清理发布于 2026-09-12作者: DeepSeek Plugin 插件市场
DeepSeek Harnessnpm 卸载 dshdsh 卸载全局安装EACCES
npm 卸载 dsh 只有一行:npm uninstall -g @deepseek-ai/dsh;用 pnpm 全局装的换 pnpm remove -g。卸完还要处理 EACCES 权限报错、npx 临时目录与 ~/.dsh 数据目录。

npm 卸载 dsh 本身只有一行——npm uninstall -g @deepseek-ai/dsh(参数是包名,不是命令名);麻烦都在后半段:EACCES 权限错误怎么处理、卸完命令为什么还在、npx 临时目录与 ~/.dsh 数据目录各删不删。 DSH插件 与 DeepSeek插件 都不是全局包,它们装在 profile 下面,程序卸载后仍留在磁盘上。这篇按「判断装法 → 执行卸载 → 排错 → 清残留 → 验证」五步讲完。

DSH plugin 卸载第一步:确认 dsh 当初是哪种安装方式

卸载动作取决于当初的安装方式,先判断再动手,能少踩一半的坑;判断装法也是所有后续动作的前提,一条命令就能看清。 四种装法与对应的卸载动作:

当初怎么装的判断依据怎么卸
npm install -gnpm ls -g --depth=0 里有 @deepseek-ai/dshnpm uninstall -g @deepseek-ai/dsh
pnpm add -gpnpm 全局列表里有该包pnpm remove -g @deepseek-ai/dsh
只用 npx全局列表里没有,但命令能跑没有实体可卸,清 ~/.npm/_npx 即可
源码构建本机有 clone 的仓库目录删仓库目录(~/.dsh 数据另算)

三种装法的完整对照可以看《DeepSeek Harness 怎么卸载》;本篇只把 npm / pnpm 这条通道讲到能排错的程度。 操作步骤:

  1. 停掉正在运行的 dsh(关闭对应终端窗口或按 Ctrl+C),并确认端口已释放:lsof -i :3080 无输出(Windows 用 netstat -ano | findstr 3080);
  2. 查看 npm 全局包列表:npm ls -g --depth=0预期:列表中出现 @deepseek-ai/dsh@<版本>,说明走的是 npm 全局安装;
  3. 再看一眼全局目录在哪:npm prefix -g预期:输出形如 /usr/local/opt/homebrew~/.nvm/versions/node/<版本>——如果是 nvm 路径,说明全局目录跟着 Node 版本走;
  4. 顺手确认还有没有别的入口:which -a dsh(Windows 用 where dsh)。预期:只列出一条、且位于第 3 步前缀的 bin 下;列出多条说明机器上有两份以上安装,卸完一条还有一条。

用 nvm / fnm 的注意:每个 Node 版本各有一份全局包。第 2 步看到包、但卸完命令还在,往往是切到了另一个版本——先 nvm use <当初安装的版本> 再卸。

DSH plugin 卸载第二步:npm 与 pnpm 两种写法

确认走 npm 全局后,卸载就是一条命令;pnpm 全局换对应子命令即可。 操作步骤:

  1. npm 全局安装的,执行:
bash
npm uninstall -g @deepseek-ai/dsh
  1. 预期:终端输出 removed ... packages(或 up to date),不出现任何错误;全局包列表里该条目消失;

  2. pnpm 全局安装的,改用:

bash
pnpm remove -g @deepseek-ai/dsh
  1. 预期:pnpm 报告已移除该包;如果当初跑过 pnpm setup,再去 pnpm root -g 的上一级 bin 目录确认 dsh 软链接已消失;

  2. 若提示包不存在(npm ERR! code E404 之外的空结果或 up to date),说明它早已被卸载——直接跳到验证环节。

参数永远写包名 @deepseek-ai/dshdsh 会因找不到同名包而报 E404,这也是「卸载命令没反应」最常见的原因。

npm 卸载 DeepSeek Harness 报权限错误(EACCES / EPERM)怎么办

EACCES 的根因只有一个:当前用户对 npm 全局目录没有写权限——多半是当初用 sudo 装过,或 Node 由系统包管理器安装。 先别急着加 sudo,按安装来源选对应做法:

  1. 当初就是用 sudo npm install -g 装的:保持一致,用 sudo npm uninstall -g @deepseek-ai/dsh预期:卸载成功;缺点是全局目录仍归 root,下次装别的全局包还会撞同一堵墙;
  2. 用 nvm / fnm 管理 Node 的:根本不需要 sudo——先 nvm use <当初的版本>(或 fnm use),再原样跑卸载命令。预期:命令直接成功,因为全局目录就在用户家目录里;
  3. 系统 Node(Homebrew、apt、官方 pkg 装的)且全局目录归 root:卸载仍需 sudo(或用第 1 条),但建议顺手把后续全局包改到用户目录:
bash
npm config set prefix ~/.npm-global

预期:之后 npm prefix -g 输出 ~/.npm-global;记得把 ~/.npm-global/bin 加进 PATH,否则新装的全局命令找不到。注意这只影响以后安装的包,已经装在系统目录里的那份不会因此搬迁,还是得用 sudo 卸干净; 4. 别为了省事对 nvm 环境用 sudosudo npm 会以 root 身份解析到另一套 Node 与另一份全局目录,可能把包装到 root 家目录,反而制造出「卸不掉」的第二份安装。

卸完 dsh 命令还在?DeepSeek Harness 多份安装与 shell 缓存排查

「卸载成功但命令还能跑」几乎都指向三件事:还有另一份安装、shell 哈希缓存、或者你本来就用 npx。 逐条排除:

  1. 列出全部命令入口which -a dsh(Windows 用 where dsh)。预期:若仍有一条输出,看它落在哪个目录——/opt/homebrew/bin/usr/local/bin~/.nvm/versions/node/*/bin$PNPM_HOME,按目录判断是哪份安装,再用对应的包管理器卸(见第一步的对照表);
  2. 切换 Node 版本后重查:nvm 用户执行 nvm ls 看装了哪些版本,逐个 nvm use 后再 npm ls -g --depth=0,把出现 @deepseek-ai/dsh 的版本都卸一遍;
  3. 清 shell 的命令路径缓存:执行 hash -r(zsh 也可 rehash),再执行 dsh --version预期:若之前是缓存在作祟,这次会直接提示 command not found;
  4. 确认是不是 npx 方式:如果从未全局安装,dsh 只可能来自 npx 的临时环境。执行 ls ~/.npm/_npx 看有没有内容,有就清掉(见下节)。预期:清理后不再有可执行的 dsh

版本相关症状(更新了但版本没变)是另一条排查线,见《dsh 更新了版本没变怎么办》。

npm 卸载 dsh 后的残留、DSH plugin 数据与 ~/.dsh 目录怎么处理

卸载只删程序,不碰用户数据;残留要分成「npm 侧缓存」和「用户数据」两类分别决定。 逐项处理:

  1. npx 临时环境(只有用过 npx 才需要清):
bash
rm -rf ~/.npm/_npx

预期:目录消失;下次 npx @deepseek-ai/dsh web 会重新下载,不丢任何数据;

  1. npm 下载缓存(想释放磁盘时再清,不影响功能):
bash
npm cache clean --force

预期~/.npm/_cacache 被清空;之后首次安装需重新下载。注意它不会清 ~/.npm/_npx,两者是不同位置

  1. ~/.dsh 数据目录:这里存着 settings.yaml.credentials.yamlprofiles/(含已装插件)与会话日志 sessions/只想卸程序就保留——重装后配置、插件、会话都还在,这正是「卸载不影响数据」的含义;

  2. 确定不再使用再删数据目录

bash
cp -r ~/.dsh ~/.dsh.bak && rm -rf ~/.dsh

预期:数据目录消失,先备份后删除,事后可从 .dsh.bak 恢复。只清聊天记录、保留配置与插件的分层做法见《DeepSeek Harness 怎么删除会话》与《dsh 怎么重置、恢复初始状态》;

  1. 插件比程序多活一步:插件是装在 profile 下的独立依赖,程序卸了它仍在磁盘上。想顺带清掉,删 ~/.dsh/profiles/<name> 即可,细节见《DSH plugin 卸载后残留怎么清理》。

DSH plugin 卸载验证、注意事项与插件侧核对

验证看三处:全局包列表、命令入口、命令能否执行——三项都干净才算卸完。 操作步骤:

  1. npm ls -g --depth=0预期:不再出现 @deepseek-ai/dsh
  2. which -a dsh(Windows 用 where dsh)。预期:无任何输出;
  3. 新开一个终端执行 dsh --version预期:提示 command not found / 不是内部或外部命令。

注意事项:

  • 先停进程再卸:正在运行的 dsh 会占着文件,先关服务再卸载最稳。
  • 参数写包名npm uninstall -g @deepseek-ai/dsh,不是 dsh
  • 慎用 sudo:只在当初用 sudo 装、或全局目录确属 root 时使用;nvm 环境用 sudo 会制造第二份安装。
  • ~/.dsh 是数据不是程序:卸载不会删它,删除前务必先备份——里面是设置、凭据、插件与会话。
  • nvm 用户逐个版本检查:每个 Node 版本各有一份全局包,切换后重新确认一遍。
  • 卸载与更新是不同的通道:如果只是想换版本,别卸载重装,看《npm 怎么更新 dsh》的三条路分工。

程序卸载只处理本体;插件、来源与版本这类信息用可视化列表核对最不容易漏。 DSH Plugin Hub 的已安装列表会显示每个插件的来源(插件中心 / 手动安装)、版本与可更新状态,卸载前先在这里过一遍,就知道哪些是目录插件、哪些是当初手动装的,清理时不会误删或漏删。想通过界面卸载单个插件,走《DSH Plugin Hub 怎么卸载插件》。

DSH Plugin Hub 卸载确认弹窗:卸载前先核对插件来源与影响范围

来源:npm Docs - npm uninstalldeepseek-ai/deepseek-harness官方 Quickstart

常见问题

npm 卸载 dsh 的命令是什么?当初用 pnpm 全局装的该怎么卸?

卸载 DeepSeek Harness 时,npm 全局装的用 npm uninstall -g @deepseek-ai/dsh,一条命令删掉包本体和 dsh 命令的软链接。当初用 pnpm 全局装的则换 pnpm remove -g @deepseek-ai/dsh;如果配置过 PNPM_HOME,再确认该目录下的 dsh 软链接已消失。卸载前先停掉正在运行的 dsh(关闭终端或 Ctrl+C)。

npm uninstall -g 报 EACCES 权限错误,能直接加 sudo 吗?

处理 DeepSeek Harness 卸载时的 EACCES 报错,先看当初怎么装的:用 sudo 装的就用 sudo npm uninstall -g @deepseek-ai/dsh 卸,一致即可;用 nvm 或 fnm 管理 Node 的,先切换到当初装的那个版本再卸,根本不需要 sudo;系统 Node 且全局目录属于 root 时,除了 sudo 卸载,更该做的是 npm config set prefix 把后续全局包改到用户目录,避免下次再撞同样的错误。

npm 卸载完 dsh,为什么终端里 dsh 命令还能用?

卸载 DeepSeek Harness 后命令还能用,有三种可能:① 本机存在多份安装(nvm 的各 Node 版本各有一份、或另有 pnpm/Homebrew 装的一份),用 which -a dsh 全部列出来逐一确认;② 当前 shell 缓存了命令路径,执行 hash -r(zsh 也可 rehash)后重试;③ 你其实一直是 npx 方式运行,从未全局安装,那本就没有可卸载的实体,清理 ~/.npm/_npx 即可。

卸载 dsh 后 ~/.dsh 数据目录要不要删?npx 缓存呢?

卸载 DeepSeek Harness 后,这两处要分开决定:~/.dsh 里是设置、凭据、profile 与已装插件——只想卸程序就留着,重装后配置和插件都还在;确定不再用再删,删前先备份。npx 侧有两个可清的位置——~/.npm/_npx(临时运行环境)与 ~/.npm/_cacache(下载缓存),删掉只影响下次启动要重新下载,不影响任何用户数据。

怎么确认 dsh 真的卸载干净、没有留下命令入口?

确认 DeepSeek Harness 卸干净要三步验证:① npm ls -g --depth=0 的列表里不再出现 @deepseek-ai/dsh;② which -a dsh 没有任何输出(Windows 用 where dsh);③ 新开一个终端执行 dsh --version,提示 command not found。三项都通过,说明程序本体已卸净;剩下的只有 ~/.dsh 数据目录,属于你自己决定留不留的部分。

相关术语

npm uninstall -g
npm 的全局卸载子命令,参数写包名(不是命令名):它对全局目录里该包执行卸载,并移除它注册的可执行文件链接。因此卸载 DeepSeek Harness 要写 @deepseek-ai/dsh,而不是 dsh。npm Docs - npm uninstall
EACCES / EPERM
npm 在全局卸载或安装时遇到的权限错误:当前用户对 npm 全局目录(prefix)没有写权限。根因通常是全局目录归 root 所有,常见于系统包管理器安装的 Node,或历史上用过 sudo 装全局包。npm Docs - npm uninstall
npm prefix -g
npm prefix -g 打印当前全局安装前缀,全局包落在 <prefix>/lib/node_modules、可执行链接落在 <prefix>/bin。用 nvm 或 fnm 时该前缀随 Node 版本变化,所以每个版本各有一份全局包。npm 官方文档
~/.npm/_npx
npx 的运行环境目录:npx 把临时使用的包解到这里的哈希子目录,并复用其中的 node_modules。它是 npx 方式在磁盘上留下的主要实体,删掉后下次执行会重新下载,不影响任何用户数据。npm 官方文档

来源