DeepSeek Harness 插件报错合集:DSH plugin 不加载、Web UI 异常与会话缓存修复
DeepSeek Harness 的插件报错、Web UI 异常与会话缓存问题,几乎都落在三个区域:插件包本身的问题(ESM、inject、包改名)、Web 界面与运行时的坑(工作区、加密上下文、远程访问)、会话数据的损坏或失配(日志断档、缓存失效)。 报错原文对号入座,先按本文修复,没解决就先升级到 rc.7/rc.8——官方近期版本修复了大量这类缺陷,很多「界面异常」其实是旧版本 bug。
插件报错:不加载、ERR_REQUIRE_ESM、缺失 inject 与包改名
插件类报错集中在包的格式与依赖上:清单缺失、ESM 兼容、inject 声明、包改名、重复实例。 以下报错来自社区实跑汇总(来源)。
ERR_REQUIRE_ESM:CommonJS 依赖了 ESM-only 包
ERR_REQUIRE_ESM 表示 CommonJS 代码用 require 加载了一个只提供 ESM 导出的包。 常见于插件作者没处理好模块格式:
- 确认 Node 是 LTS(20+):执行
node --version,建议输出v20.x以上,ESM 支持才完整; - 重启 dsh web 让插件重新加载:
Ctrl+C停止,再执行dsh web启动; - 仍报错说明是插件包本身的问题——反馈作者改成兼容导出(同时提供 CJS / ESM),或改装其他替代插件,可在 DSH Plugin Hub 插件页看更新记录。
cannot get property "systemPrompt" without inject
这条报错是说插件代码在声明依赖(inject)之前就读取了 systemPrompt 等服务,注入还没发生。 属于插件 bug:
- 确认是否装了插件的最新版(旧版常见此问题)——在「设置 → 插件中心」查看该插件是否有可更新版本,有就更新后重启 dsh web;
- 更新后仍报错,反馈插件作者补齐 inject 声明;
- 临时办法:按 《dsh 怎么关闭插件而不卸载》 禁用该插件后重启 dsh web——报错消失、其余功能正常,即可确认问题出在该插件。
@deepseek-ai/dsh-type-meta 找不到:包已改名
官方已把 @deepseek-ai/dsh-type-meta 改名为 @deepseek-ai/dsh-typert-protocol(2026-08-11 的官方改名台账,该包承载 Typert Remote 协议、装饰器、绑定与编解码器,现目录 packages/typert/protocol,来源)。老依赖名报错的原因不是「没发布」,而是改名后旧名字不再存在:
- 更新用到它的插件 / profile 依赖——在 profile 的 package.json 里把
@deepseek-ai/dsh-type-meta替换为@deepseek-ai/dsh-typert-protocol,然后重新安装:预期:依赖解析不再报bashpnpm installCannot find module '@deepseek-ai/dsh-type-meta'; - 或直接更新 dsh 与相关插件到包含该改名的版本(rc.7 之后):
npm update -g @deepseek-ai/dsh; - 装的是旧版 bundle 就重装一次,让依赖解析到新包名;
- 重启 dsh web,原报错消失即修复。
reading 'prepare' of undefined:工具包重复实例
reading 'prepare' of undefined 通常来自 dsh-tools 这类工具包被装出两份实例,peer 依赖没有单一化。 有用户实跑遇到:
- 在 profile 的 package.json 里确认
@deepseek-ai/dsh-tools只出现一份:输出为bashgrep -c '"@deepseek-ai/dsh-tools"' <profile目录>/package.json1才正常,大于 1 说明装了两份; - 出现两份就在「设置 → 插件中心」卸载相关插件重装,让 pnpm 把 peer 依赖提升为单实例;
- 重启 dsh web(
Ctrl+C后重新dsh web),不再报reading 'prepare' of undefined即修复。
duplicate loader entry id:bundle 重复提升
duplicate loader entry id 表示同一个插件层被重复声明(bundle 被提升出两份)。 有用户实跑遇到:
- 打开 profile 目录下的 package.json(或 dsh 配置文件),找到
dsh.profile.bundles,把重复的条目删掉,只保留一份; - 确认编辑无误后保存,再执行
pnpm install让依赖与声明同步; - 重启 dsh web(
Ctrl+C后重新dsh web),不再报 duplicate loader entry id 即修复。
插件装了不激活 / Failed to load plugins / allowBuilds 提示
这三条与其他教程重复,直接走对应专文:
- 装了不激活(缺
dsh.bundle清单) → 《DeepSeek Harness 怎么安全安装插件》 - Failed to load plugins 致命屏 → 《DSH plugin 不加载、搜索不到插件怎么办》
- allowBuilds 构建授权提示 → 《dsh plugin add 本地目录与源码安装》

Web UI 与运行时异常:发送按钮灰色、crypto.randomUUID 与远程访问
Web UI 报错分两类:界面状态问题(工作区没选、输入框渲染崩)和运行环境问题(非安全上下文、远程访问受限)。 以下报错来自社区实跑汇总(来源)。
发送按钮一直灰色
发送按钮灰色最常见的原因是没选工作区——没有工作区,Agent 就没有可操作目录,发送被禁用。 处理:
- 在 Web UI 顶部选择或创建一个工作区目录;
- 选完后发送按钮应可点、输入框可输入文字;
- 仍灰色就刷新页面(F5);
- 还不行就确认后台 dsh web 进程是新的——端口被旧进程占用时界面可能连的是旧实例,用
lsof -i :3080(macOS / Linux)检查并停掉旧进程后重启,方法见 《127.0.0.1:3080 打不开、访问被拒怎么办》。
技能 CLI 能用、Web UI 里不可用
有用户实跑遇到:命令行里技能正常,Web UI 里找不到或调不动。 官方 dsh-base 组合层默认包含 skill-filesystem、tool-skill 等技能插件(来源),但不同 agent preset 对技能集合的暴露范围不同(官方测试中存在 standard / minimal 两种技能装配),Web 与 CLI 用到的技能可能不一致:
- 在 Web UI 的技能管理(设置 → 技能)里检查目标技能是否已启用,未启用就打开开关;
- 核对当前 profile 用的 agent preset:执行
dsh --dump-config查看 preset 字段,换成暴露更多技能的 preset 后重启 dsh web; - 仍不可用则以 CLI 为准(直接执行
dsh命令行调用),并把「Web UI 与 CLI 技能不一致」反馈到插件仓库。
crypto.randomUUID is not a function
浏览器在明文 http(非安全上下文)下会禁用 Web Crypto 相关能力,crypto.randomUUID 就不存在。 有用户实跑确认此报错与访问协议有关:
- 本机访问改用
http://localhost:3080(localhost 视为安全上下文),不要用http://192.168.x.x这类明文地址; - 换地址后刷新页面,按 F12 打开开发者工具,在 Console 里执行
crypto.randomUUID()——能返回一段 UUID 即修复; - 远程访问时通过带 TLS 的反向代理(如 Caddy / Nginx 配 HTTPS)暴露页面,浏览器进入安全上下文后该能力恢复;
- 本机直接用 localhost 即可绕开。
Composer 输入框消失
Composer(输入区)消失常见于历史消息里的 markdown 图片引用损坏,渲染流程抛错导致输入组件没挂载。 有用户实跑遇到:
- 先按 F5 刷新页面重载,看输入框是否恢复;
- 仍复现就清掉当前会话里损坏的图片引用消息(删除含失效图片引用的那条消息),或直接开新会话;
- 长期频繁出现,检查是否旧版本缺陷——更新到 rc.7+ 后重试(
npm update -g @deepseek-ai/dsh)。
/api/commands/list 返回 404
新装插件后调用 /api/commands/list 返回 404,通常是插件注册的路由还没生效。 处理:
- 重启 dsh web:
Ctrl+C停止,再执行dsh web启动; - 确认插件已正确激活(见上文「插件装了不激活」),未激活先处理激活问题;
- 重启后在浏览器访问
http://localhost:3080/api/commands/list,应返回 200 与 JSON 数据,而非 404。
技能菜单前缀匹配限制
技能菜单按前缀匹配技能名,输入长前缀或中英文混写时容易匹配不到。 有用户实跑遇到:
- 直接输入技能名最核心的几个字符(如技能名本身,而不是带版本号的全名);
- 避免输入带版本号 / 长描述的完整文本;
- 匹配不到时就先在技能下拉里选中目标技能再对话,或用 CLI 调用
dsh对应命令。
远程访问时「设置 → 插件」空白
通过远程浏览器访问时,插件管理面板空白——插件管理与本机文件系统绑定,dsh web 默认只监听 127.0.0.1。 有用户实跑遇到:
- 回到运行 dsh 的那台机器上,浏览器访问
127.0.0.1:3080,「设置 → 插件」应正常显示插件列表; - 远程访问只适合查看与对话类操作,插件安装 / 卸载请在本机完成——远程看不到插件面板是设计如此,不是故障;
- 本机操作更省事的方式是「设置 → 插件中心」DSH Plugin Hub,图形化管理插件。

会话与缓存异常:日志损坏、KV 缓存下降与 Failed to fetch
会话恢复类报错源于数据本身的损坏或失配:日志断档、系统提示词顺序漂移、畸形增量数据。 以下报错来自社区实跑汇总(来源)。
恢复时会话日志损坏(序号断层)
恢复会话时提示日志损坏,表现为序号断层(中间缺了几条记录)。 有用户实跑遇到:
- 先导出当前会话数据留底(用 Web UI 的导出功能,或直接把会话文件复制到别处);
- 开新会话继续,避免日志继续错位;
- 更新到 rc.7+(
npm update -g @deepseek-ai/dsh),该版修复了大历史分页栈溢出等会话问题——更新后新会话不再提示日志损坏,即确认是旧版本写入缺陷。
恢复后 KV 缓存命中率骤降
恢复会话后 KV 缓存命中率明显下降,通常是系统提示词顺序漂移导致缓存键失配。 有用户实跑遇到:
- 让会话重新生成一次系统提示词(如切换模型再切回),重建缓存后命中率应回升;
- 或直接开新会话,缓存从零重建,命中率恢复正常;
- 频繁出现时检查是否有插件在会话中改写了系统提示词——临时禁用可疑插件再试。
History 报 Failed to fetch (internal)
History 面板报 Failed to fetch (internal),多为流式工具增量数据畸形导致前端拉取失败。 处理:
- 先按 F5 刷新页面重试——偶发的畸形数据刷新即可恢复;
- 仍复现就先导出会话数据留底,再开新会话;
- 版本较旧先更新:
npm update -g @deepseek-ai/dsh——rc.7 修复了持久 Bash 卡顿、max-tokens 截断等一批会导致增量数据异常的缺陷,更新后新会话不再复现即确认。
凭证与模型报错速查
凭证与模型类报错(MISSING_CREDENTIAL、UNKNOWN_MODEL、获取可用模型 401、maximum context length is 1048576 tokens)不属于插件问题,完整排查见《DeepSeek Harness 模型报错与凭证排查》。 这里只给最快入口:
| 报错 | 最快动作 |
|---|---|
| MISSING_CREDENTIAL | 在 ~/.dsh/.credentials.yaml 写入 DEEPSEEK_API_KEY |
| UNKNOWN_MODEL | 检查模型名与 provider 声明是否一致 |
| 获取可用模型 401 | base URL、key、模型名三者必须匹配 |
| maximum context length is 1048576 tokens | 开新会话 / 缩系统提示词 / 调低 max_tokens |
旧版本缺陷修复对照(更新即解决)
很多「插件 / Web UI 报错」其实是旧版本 bug——先更新,再排查。 官方近期修复记录(来源):
- v0.1.0-rc.7:修复 max-tokens 截断(长回复被截)、持久 Bash 会话卡顿、大历史分页栈溢出(历史很多时页面卡死)、Safari 光标错位(输入框光标乱跳)。
- v0.1.0-rc.8:修复图片尺寸过大 / 历史图片累计载荷过高导致模型请求失败、自定义 OpenAI 兼容网关请求格式差异、dsh web 自动打开浏览器、改善下载依赖体积。
- 更新命令:全局安装
npm update -g @deepseek-ai/dsh;npx 方式npx @deepseek-ai/dsh@latest web;源码方式git pull后重新构建。
注意事项
- 先对号入座找报错原文,别凭印象乱卸载。
- 插件类报错先确认「装的是最新版」「只装了一份」。
- Web UI 报错先确认访问的是
localhost而非明文 http。 - 会话类报错先导出数据再动会话,避免数据二次损坏。
- 排查前先确认版本:版本过旧(rc.7 之前)的多数界面异常直接更新解决。
来源:dshbase 常见问题排错、v0.1.0-rc.7 / v0.1.0-rc.8 Release Notes、packages/typert/protocol、apps/cli/composition.md
常见问题
ERR_REQUIRE_ESM 表示 CommonJS 代码 require 了一个 ESM-only 包。把运行环境切到支持 ESM 的版本(Node 20+),或让插件作者发布同时兼容的构建;先重启 dsh web 并确认 Node 是 LTS,多数情况能绕过。
说明该包没有声明 dsh.bundle 清单,只会作为普通依赖装上而不激活配置层。需要作者补上 dsh.bundle 声明再发布;也可先在《DeepSeek Harness 怎么安全安装插件》里核对安装来源与验证步骤。
发送按钮灰色最常见的原因是没选工作区——在 Web UI 顶部选择或创建一个工作区目录即可。若仍未解决,检查是否旧版本 bug:v0.1.0-rc.7 修复了 max-tokens 截断等一批问题,先更新版本。
浏览器在明文 http(非安全上下文)下会禁用 Web Crypto 能力。改用 https、localhost 访问,或通过反向代理提供安全上下文即可。有用户实跑确认此报错与访问协议有关。
多为会话恢复时流式工具增量数据畸形导致前端拉取失败。先刷新页面,若复现就导出当前会话数据后开新会话;新版 v0.1.0-rc.7 修复了持久 Bash 卡顿与历史分页栈溢出等会话相关缺陷,更新版本后再试。