DeepSeekDSH
独立社区指南与 DeepSeek 无隶属关系。官方源码快照

排查 DSH 问题

从准确的错误码或症状开始,一次只检查一层,这样才能知道到底是哪一步修好了问题。

本页内容

先保留错误现场,再改设置

  1. 01

    复制准确错误

    先不要关终端,把最后一条有意义的报错原文复制下来。EADDRINUSEEACCESMISSING_CREDENTIALUNKNOWN_MODEL 指向的层完全不同。

  2. 02

    记录环境

    运行 node --version,同时记下 DSH/npm 包版本、操作系统和刚才执行的完整命令。

  3. 03

    一次只改一件事

    每次做一个针对性修改后就重试。不要同时重装 Node、换 Key、改网络和工作区权限。

安装与启动

Node.js、npm、npx 与 DSH 启动。

  • Node engine 不兼容
  • 首次 npx 看起来停住
  • 3080 端口 EADDRINUSE / EACCES
打开安装指南

模型与凭证

DeepSeek 凭证、模型选择与自定义服务商。

  • MISSING_CREDENTIAL
  • UNKNOWN_MODEL
  • 401 / authentication failed
打开 API 配置指南

Web UI 与工作区

本地服务、首次就绪条件与工作区选择。

  • 127.0.0.1:3080 无法打开
  • 首次页面像卡住
  • 输入框不可用
打开 Web UI 指南

插件

pnpm、Profile、安装构建与重启边界。

  • pnpm 无法识别
  • pnpm 提示 allowBuilds
  • 新 Bundle 没有出现
打开插件目录

MCP

外部 MCP Server 连接与工具发现。

  • MCP Server 无法启动
  • 没有发现工具
  • 断开后没有恢复
打开 MCP 官方资料

安装与启动问题

系统无法识别 nodenpmnpx

关闭终端后重新打开,再运行 node --versionnpm --version。如果仍然失败,先修复 Node.js 安装或 PATH。

npm 提示 Node engine 不兼容

当前上游仓库声明的 Node 范围是 ^22.19.0 || >=24.0.0。把它与 node --version 对照。“已经是 Node 22”也可能仍然太旧,例如 22.17。先升级 Node,再排查后续包或构建错误。

npx @deepseek-ai/dsh web 看起来停住了

第一次启动时 npx 可能正在下载 DSH。没有明确错误时先保持窗口打开,等 Web UI 地址或真正的 npm/网络错误。不要连续启动多个副本,否则第二个进程可能制造端口冲突。

127.0.0.1:3080 出现 EADDRINUSE

说明已有进程监听 3080,常见情况是之前的 DSH 没退出。Windows PowerShell 可运行 Get-NetTCPConnection -LocalPort 3080 -State Listen;macOS/Linux 可运行 lsof -nP -iTCP:3080 -sTCP:LISTEN。停止旧进程,或改用 npx @deepseek-ai/dsh web --port 13080

Windows 3080 没有监听进程,但出现 EACCES

启用了 Hyper-V、WSL2 或 Docker Desktop 的 Windows 可能把包含 3080 的 TCP 范围保留给系统。运行 netsh interface ipv4 show excludedportrange protocol=tcp;如果 3080 落在排除范围里,直接选范围外的端口,例如 --port 13080。这和 EADDRINUSE 不一样,可能根本没有进程可杀。

DSH 启动过程中直接退出

先看终端最后几行。npm/下载错误按安装或网络问题处理;DSH 自己的配置或插件树错误则解决那条具体错误后再重启。

浏览器没有自动打开

本机启动通常会在完整 Loader 就绪后交给默认浏览器打开。始终可以手动打开终端打印的 URL。通过 SSH 启动时不自动打开浏览器是预期行为;DSH 会打印主机 URL,由 SSH 客户端或编辑器负责转发。需要主动禁用自动打开可使用 --no-open

打开 DSH 命令速查 →

模型与凭证问题

MISSING_CREDENTIAL

打开 Settings → Models,给当前会话使用的服务商重新保存凭证。内置 DeepSeek Key 存在 $DSH_HOME/.credentials.yaml;保存后界面只会收到脱敏描述,不会回显原始密钥。

UNKNOWN_MODEL

选择当前真实存在于已配置服务商下的模型,或为自定义服务商补上模型。不要照搬旧截图里的模型名。

401 / authentication failed

说明请求已经带着凭证到达服务商但被拒绝。确认粘贴的是有效 Key。自定义服务商执行模型发现时也可能在 OpenAI-compatible GET /models 上返回 401。

配置了 apiKeyEnv,仍然提示没有凭证

apiKeyEnv 写的是“环境变量名称”,不是把密钥直接写进去。DSH 在进程启动时继承环境;如果 DSH 已经运行之后才新增或修改变量,需要从包含该变量的 Shell 重启 DSH。

输入框显示 Select model

选择当前可用的服务商与模型。如果保存的默认模型来自一个已经删除的服务商,也会出现这个状态。已经发过请求的 Session 会保留它自己日志里记录的模型;修改默认值主要影响新 Session。

图片在发送前就被拒绝

手工添加的自定义模型默认按纯文本处理,除非配置明确声明图片输入。DeepSeek 官方 chat-completions 路由本身是纯文本路由,不能靠改这个字段变成视觉模型。

Web UI 与工作区问题

127.0.0.1:3080 无法打开

确认 DSH 终端进程仍在,并使用它实际打印的地址。如果启动已经报 EADDRINUSEEACCES,先解决端口错误,不要只刷新浏览器。

首次 Web UI 看起来卡住,或输入框不可用

新 Web UI 有三个独立就绪条件:保存服务商凭证、选择工作区、选择模型。启动 DSH 时所在的目录只是初始文件系统位置,并不会自动成为已选工作区;仍然要点击 Choose workspace 明确选中。

旧教程让你使用 --host 0.0.0.0

不要把这个参数直接套到当前官方 CLI。当前 CLI behavior reference 明确说明 Web alias 暂不支持 --host 0.0.0.0。远程使用优先采用 SSH/编辑器端口转发,或你当前版本明确支持的部署方式。

DSH 说改了文件,但找不到

在 DSH 外部直接打开当前已选工作区核验文件,并确认请求路径确实位于这个工作区。

工作区出现 Permission denied

首次测试使用普通用户拥有的文件夹,不要选择受保护系统目录或需要管理员权限的位置。

插件管理问题

运行插件管理时提示 pnpm 无法识别

官方 dsh plugin 会把包管理操作转给 pnpm,因此 CLI 管理插件时 pnpm 必须在 PATH 上。它和“只用 npm 快速启动 Web UI”是两回事:普通 Web UI 快速启动本身不要求先装 pnpm。

安装 Git 源码插件时 pnpm 提示 allowBuilds

Git-hosted 源码插件可能在安装时通过 prepare 执行构建。pnpm 10+ 会先拦住并要求在目标 Profile 的 pnpm-workspace.yaml 明确批准。把它理解为“允许第三方代码在安装阶段执行”,先审源码,不要为了消除报错直接批准。

插件操作成功,但运行中的 Bundle 没出现

新增、移除或更新 Bundle 会修改磁盘上的 Profile,但已经运行的 Profile 继续使用本次启动时的 Bundle 集合。修改 Bundle 后需要重启对应 Profile 或 DSH Desktop。

插件装到了错误的 Profile

不同 Profile 有独立依赖与 Bundle 组合。CLI 操作时明确目标 Profile;装到一个 Profile 的插件不会偷偷复制到另一个。

网络、代理与证书错误

如果 npm 明确打印网络、代理、DNS、超时或证书错误,应先把它当作网络问题处理。

公司 HTTP/HTTPS 代理

在支持 Node 环境代理开关的版本上,可以在启动 DSH 时使用 NODE_USE_ENV_PROXY=1 继承 HTTP_PROXY/HTTPS_PROXY。同时用 NO_PROXY 排除 127.0.0.1localhost::1,否则 DSH 本地请求也可能被发到公司代理。只有网络确实要求代理时才这样配置。

npm view @deepseek-ai/dsh version

如果最基础的 npm 请求也失败,先修复 npm/网络;如果它成功但 DSH 失败,再回到 DSH 的准确错误。

仍然失败?准备一份有用的反馈

至少提供操作系统、node --version、DSH/包版本、运行命令和准确错误原文。端口问题写明端口与错误码;服务商问题说明类型但不要暴露 Key。发布前移除 Token、私有仓库名称和敏感工作区内容。