这两天deepseek harness发布,在这之前我也没有接触过Claude,codex等agent,所以就抱着好奇的态度去尝试了一下。我在dy和b站上搜索了相关的视频,文章,在对它进行安装时首先遇到的第一个问题就是安装node js环境时,双击msi安装包无法正常运行,原因是win11的注册表信息和这个软件安装包的版本不一样,解决方法是修改注册表信息,即msi的数据。在这之后,我便对着视频里的那样让harness帮我完成一些简单的任务,我感到很新奇,agent比我们平时用的那些ai解决任务要好很多,并且它是要先接在一个文件夹里,之后的所以任务都是在所属文件夹下运行,等任务多了也不会显得杂乱无章。
我让它完成的第一个任务是生成一个3d动态粒子型的爱心图像,且包含xyz笛卡尔坐标系,但结果跟我想象的不一样,显得更粗制滥造些,也可能是我给它的命令并不全面。后来,我把全部页面窗口关闭,这时候我发现我再次登录harness这个网站时,显示无法连接,这是我碰到的第二个问题,我当即上网搜索了一下,发现原来是每次运行使用harness时,都得现在cmd上启动相应的服务程序,否则就会出现上述情况。(dsh web)由于出现这个问题,我就像其他博主分享的那样直接让harness帮我做一个桌面版,不用我每次预先打开cmd输入指令再打开网页,但随之而来又出现了第三个问题,由于我是在第一个任务底下进行的(此时的会话名称是3d动态爱心粒子图像生成),最终生成的桌面版harness的图标是一个爱心,名称则是3d爱心啥的。后来我对它进行了纠正,但仍然感觉有点不大对劲,我便放弃了这一做法。接着,我在github上下载了视觉插件以供harness能够识别图像,并且我还安装了主题插件,本来是想更换壁纸,但是这时候又需要冗余的操作指令,我就没有再深究下去。最后我想着安装一下赋予dsh表情包,使语言趣味化的插件。但是,但我重启web后我发现我竟然登不上harness了,这让我十分惊恐,我将问题截图发给ai,按照它的操作我并没有解决问题。接下来我去dy,b站上搜索了很久相关问题,但并没有得出所以然。最后,我在tb上找了一个服务帮我解决了这一问题,他解决得比我预想的要轻松很多。
按照他的说法,问题出在,harness在安装时,它先安装了插件,但是没有预先安装插件的依赖。他的解决方法是,重装了dsh本体,以及插件的依赖。同时他让我以后安装类似插件时要先安装插件的依赖,再安装插件。我重新登上harness后,就让它帮我检查了这一问题,并整理如下。
日期:2026-08-16 | 涉及插件:
dsh-biaoqingbao(表情包)v0.2.0 一句话结论:插件源码被放到了 DSH 档案目录树之外(D 盘),导致其服务端代码的 ESM 依赖解析失败(ERR_MODULE_NOT_FOUND),dsh web 启动时打印错误。
一、事件时间线
| 时间 | 事件 |
|---|---|
| 安装时 | 皮肤包(maid-atelier)→ 成功(纯客户端,无服务端依赖,未触发问题) |
| 安装时 | 表情包插件(dsh-biaoqingbao)→ 表面成功(bundles 已注册),但源码在 D:\dsh-biaoqingbao,仅靠 junction 链接进档案 |
| 重启后 | cmd 窗口报错:ERR_MODULE_NOT_FOUND: Cannot find package '@deepseek-ai/dsh-tools' imported from ...\dsh-biaoqingbao\lib\index.js |
| 用户观感 | “系统崩了,dsh 运行不了” |
| 诊断 | 服务其实未崩(3080 端口仍响应);报错来自插件加载失败(被 Promise.allSettled 收集,不影响其他模块) |
| 修复后 | 插件移入档案目录树内 → ESM 加载测试通过 |
二、根因分析(三层)
1. 直接原因:ESM 依赖解析失败
插件 lib/index.js 有 import { defineTool } from '@deepseek-ai/dsh-tools',启动加载时 Node 报模块找不到。
2. 根本原因:插件物理位置在档案目录树之外
-
DSH 的依赖自愈机制(
healProfilesModuleFallback)会把@deepseek-ai/*全家桶以 junction 铺到~/.dsh/profiles/node_modules/下; -
Node 的 ESM 解析规则是:从模块文件的”真实路径”逐级向上找 node_modules;
-
插件真实路径在
D:\dsh-biaoqingbao\lib\index.js→ 向上找D:\...的 node_modules → 永远够不到profiles\node_modules\@deepseek-ai→ 报错; -
对照:vision-tools 源码真实落在
profiles\web\node_modules内 → 向上能找到 → 一直正常;皮肤无服务端 import → 不涉及解析 → 没炸。
3. 触发条件 / 间接原因
-
安装时采用了”下载到 D 盘 + junction 链接”的中转方式,且安装后未验证服务端依赖能否解析;
-
附赠的隐藏雷:
dsh plugin add内部用spawnSync(..., {shell:true})转发给 pnpm,在 Windows 上会把含空格的参数拆断(本机工作区D:\deepseek harness含空格),先后两次污染 manifest(deepseek、biaoqingbao等悬空 link 条目)——此为另一类安装事故,与依赖问题无关但同次发生。
三、解决方案
已完成的修复(立即生效,重启后验证)
-
插件源码移入档案目录树内:
D:\dsh-biaoqingbao→C:\Users\周 长江\.dsh\profiles\web\plugins\biaoqingbao -
修正
profiles\web\package.json:-
依赖改为
"dsh-biaoqingbao": "link:./plugins/biaoqingbao"(相对路径,指向档案内) -
清掉事故遗留的垃圾依赖(
deepseek、biaoqingbao悬空 link) -
dsh.profile.bundles恢复含dsh-biaoqingbao的完整 5 层
-
-
清理 node_modules 中的悬空 junction;
-
跑
pnpm install(无参数,规避 Windows 参数拆分 bug)重建链接; -
验证:对
...\node_modules\dsh-biaoqingbao\lib\index.js做真实 ESM import →ESM IMPORT OK, exports: apply,inject,name,依赖解析通过。
预防规则(以后安装插件)
| 情形 | 处理 |
|---|---|
插件有服务端代码(lib/)且 import 了 @deepseek-ai/* 或第三方包 |
必须放档案目录树内(profiles\web\plugins\<名>),再用 link:./plugins/<名> 注册 |
| 纯客户端插件(只有 client bundle) | 位置不限(皮肤即此类) |
从 npm registry 安装(dsh plugin add <包名>) |
安全,文件天然落在档案内 |
| 任何本地目录安装 | 路径不得含空格(Windows spawn 拆分 bug);装完做 ESM 加载验证 |
安装后的标准验证
node --input-type=module -e "await import('file:///<档案>/profiles/web/node_modules/<插件>/lib/index.js'); console.log('OK')"
不报 ERR_MODULE_NOT_FOUND 即通过。
四、现状与待办
-
✅ 插件依赖解析已修复(磁盘层面验证通过)
-
⏳ 待办:重启
dsh web(当前 3080 上还是修复前加载失败的旧实例),确认侧栏出现「表情包」入口 -
💡 备注:皮肤
maid-atelier源码仍在D:\dsh-deep-whale


