DSH 插件安装失败:从「git 未安装」到「网络线路问题」的完整排障复盘

发布时间:2026/10/29 22:55:11

DSH 插件安装失败:从「git 未安装」到「网络线路问题」的完整排障复盘 DSH 插件安装失败从「git 未安装」到「网络线路问题」的完整排障复盘一句话摘要装一个 GitHub 上的 DSH 插件连续踩了git 缺失、npm 同名撞车、pnpm store 告警、git 证书不受信、网络线路间歇性断开五个坑 —— 本文把每一步的前提、交付物、坑的表现、如何避坑完整复盘。· 结论先行报错第一行往往不是真正的错误。那条git ls-remote ... 不是内部或外部命令才是根因系统没装 git。别按 npm 名字装 GitHub 插件。npm 上的dsh-plugin-manager是另一个作者的项目同名同版本纯属「名字撞车」按名字装会装错东西必须用GitHub 仓库 URL / tarball。git 证书报错SEC_E_UNTRUSTED_ROOTGit for Windows 默认走 Windows SChannel遇到「根证书不受信」→ 一条命令git config --global http.sslBackend openssl即可绕过。Connection was reset/Could not connect这是网络线路问题不是 git 也不是 VPN 的错。特征是间歇性—— 换个网络手机热点常能通。「浏览器能开、命令行不能」 浏览器走 QUIC/DoHgit 走 TCP两者路径不同不能用浏览器结果推断命令行。插件装好后要重启 DSH才加载且该插件硬编码了webprofile 路径在desktopprofile 下它的 MCP 管理会去改web的配置插件作者设计如此非安装问题。一、前提条件问题产生的前提在复盘前我先把「当时处于什么环境」明晰一下否则很多现象可能会被误判前提说明为何重要操作系统Windows 11家庭版中文版Git for Windowsgit 默认用SChannelWindows 证书库容易出「根证书不受信」DSH 桌面端DSH Desktopprofile 名为desktop安装发生在C:\Users\……\.dsh\profiles\desktop插件来源github.com/liqichen/dsh-plugin-managergit 仓库托管pnpm 装 git 依赖必须本地有gitnpm 同名包npm 上已有dsh-plugin-manager0.1.0作者 hrhgit名字撞车按名字装会装成别人的项目pnpmDSH 内置 pnpm v11.8.0pnpm 11 的 store 校验在不同运行环境下结果不同网络到 GitHub 的线路间歇性不稳定家庭宽带、移动网络均如此会出现Connection reset/ 超时已装 VPN(CNPC)CSP OpenVPN GUI进程在跑但不表示在接管流量易误判⚠️ 重点「VPN 进程在运行」≠「VPN 在接管你的流量」。后面阶段六会拆解。二、问题现象原始报错用户执行安装后终端/面板输出一大段其中最关键的是这几行✓ Lockfile passes supply-chain policies (verified 4d ago) [WARN] deprecated linxin666/dsh-web-ui-all0.3.5: 迁移到 linxin666/dsh-web-all [ERROR] Command failed with exit code 1: git ls-remote https://github.com/liqichen/dsh-plugin-manager.git HEAD HEAD^{} git 不是内部或外部命令也不是可运行的程序或批处理文件。 ← ⬅ 真正的错误但显示为乱码 dsh: pnpm failed in profile directory C:\Users\……\.dsh\profiles\desktop坑 1 – 错误被「噪音」淹没 中文乱码。报错前面有 Lockfile 校验、deprecated 警告、pnpm 更新提示真正错误藏在倒数几行而且 Windows CMD 下的中文报错是GBK 乱码git ڲⲿ差点被当成看不懂的乱码忽略。✅避坑只看[ERROR]/failed后面的命令那一行并抓住「不是内部或外部命令」这个特征词它就是「没找到该程序」。用chcp 65001切 UTF-8 可让中文正常显示。三、排障决策树先看结论再往下走插件安装报错 └─ 报错里有没有 不是内部或外部命令 / ls-remote / git 有 → 系统没装 git 或 PATH 没生效 → 装 git / 修复 PATH 无 → 往下 └─ 报错是不是 证书 / SEC_E_UNTRUSTED_ROOT / schannel 是 → git 走的是 SChannel根证书不受信 → 设 http.sslBackendopenssl 无 → 往下 └─ 报错是不是 Connection was reset / Could not connect / timeout 是 → 网络线路问题间歇性→ 换网络 / 代理 / 镜像 / 重试 无 → 往下 └─ 报错是不是 ERR_PNPM_UNEXPECTED_STORE / unable to open database file 是 → store 位置/权限问题 → 指定 --store-dir / 提权四、分阶段复盘目标 → 交付物 → 坑 → 避坑阶段 1 · 确诊「git 未安装」 目标搞清 pnpm 为什么在解析 git 依赖时退出。 交付物确认系统无gitGet-Command git为空常见路径C:\Program Files\Git\cmd\git.exe不存在。 坑的表现git ls-remote ... 不是内部或外部命令命令行里git --version直接报错。✅ 避坑装 gitchoco install git -y需管理员装完必须开新终端已运行进程的 PATH 不会刷新见阶段 5。阶段 2 · 干掉「npm 同名撞车」 目标确定到底该装「哪个 dsh-plugin-manager」。 交付物查明 npm 上的dsh-plugin-manager0.1.0是hrhgit的项目你要装的是liqichen的仓库同名同版本但不同项目它的package.json里repository指向github.com/hrhgit/...。 坑的表现如果直接dsh plugin add dsh-plugin-manager会安安静静装成另一个项目功能对不上且很难察觉。✅ 避坑装前核对repository/description用 GitHub仓库 URL / commit tarball安装而不是裸名字。阶段 3 · 用「GitHub tarball」绕过 git阶段性成功 目标在没有 git 的前提下先把插件装上。 交付物用 commit 快照 tarball 让 pnpm 直接下载无需git ls-remotedsh plugin--profiledesktopadd--store-dirC:\Users\……\AppData\Local\pnpm\store\https://github.com/liqichen/dsh-plugin-manager/archive/36a73f0174f0714243ba01afcc9a5ffaa36b0b04.tar.gz装完后package.json的dependencies与dsh.profile.bundles都写入dsh-plugin-managernode_modules/dsh-plugin-manager/文件齐全。 坑的表现第一次报ERR_PNPM_UNEXPECTED_STOREnode_modules链接的 store 和 pnpm 当前默认 store 不一致。第二次报ERR_SQLITE_ERROR unable to open database file写入全局 store 被权限/沙箱拦截。✅ 避坑store 不一致 → 显式--store-dir node_modules 实际链接的那个 store。写 store 被拒 → 需完整写权限受限命令行环境里即使--store-dir也可能写不进要提升权限。⚠️诚实提醒这个 store 告警往往跟运行环境有关受限/沙箱命令行 vs 真实 GUIpnpm 默认 store 可能不同。很多场景下真实用户环境根本没有此问题别把它当成必然坑。阶段 4 · 验证安装与加载 目标确认插件「真的装进去了、且会被加载」。 交付物三条都过package.jsondependencies含dsh-plugin-managerdsh.profile.bundles含dsh-plugin-manager。node_modules/dsh-plugin-manager/index.js、client.js、cordis.patch.yml、package.json齐全。让 DSH 实际组合一次配置dsh--profiledesktop --dump-config输出出现# dsh-plugin-manager和它插入的- id: plugin-manager-ui即加载链路打通。 坑的表现dsh.client.inject里的deepseek-ai/dsh-client-runtime等在 profile 的node_modules顶层找不到→ 误以为缺依赖。✅ 避坑这些deepseek-ai/dsh-client-*是宿主deepseek-ai/dsh-web-app运行时提供的不进 profile 的node_modules属正常。 坑的表现装完当前 DSH 实例还没加载它是新 bundle 层要重启。✅ 避坑重启 DSH再进「设置 → 插件管理」。阶段 5 · 修复 git 的「证书不受信」 目标让 git 能正常连 GitHub。 交付物gitconfig--globalhttp.sslBackend opensslgitls-remote https://github.com/liqichen/dsh-plugin-manager.git HEAD# 36a73f0174f0714243ba01afcc9a5ffaa36b0b04 HEAD ✅ 坑的表现git ls-remote ... schannel: SEC_E_UNTRUSTED_ROOT (0x80090325) 证书由不受信任的颁发机构颁发。✅ 避坑 根因Git for Windows 默认 SChannelWindows 证书库对 GitHub 根证书不信任切到 OpenSSL 后端用 git 自带的 CA 包即可。写在~/.gitconfig用git config --global --unset http.sslBackend可撤销。 坑的表现装完 git 后旧终端/DSH 里git仍找不到系统 PATH 已更新但已启动的进程 PATH 没有刷新。✅ 避坑重开终端 / 重启 DSH用git --version验证。阶段 6 · 拆解「网络线路问题」最大的坑 目标解释Recv failure: Connection was reset/Could not connect to github.com:443 ... 超时。 交付物确诊这是间歇性网络线路问题与 git 配置、VPN 均无关换网络手机热点后git ls-remote成功。 坑的表现与判定逐条排除「是 VPN 吗」—— 排查发现VPN 进程在跑CNPC_C330、openvpn-gui但虚拟网卡全部「已断开」Media disconnected其默认路由跃点数 256备用真正生效的是直连线路跃点数 0系统代理也处于关闭状态。→并非 VPN 接管流量。教训单看「进程存在」会误判要看「路由/网卡实际状态」。「是 DNS 吗」——github.com解析到20.205.243.166api.github.com解析到紧挨着的20.205.243.168却能通。说明不是 DNS 解析不到而是对特定边结点 IP 的 TCP 连接不通。教训解析出 IP ≠ 该 IP 能连要真正建立 TCP 才算通。「是 IPv6 吗」——github.com无 AAAA(IPv6) 记录 → 排除。「为什么浏览器能开、命令行不能」—— 浏览器走QUIC(UDP)/DoHgit/pnpm 走TCP两者路径不同。教训不能用浏览器结果推断命令行能否连通。「是间歇性吗」—— 是该 IP 的 TCP 连接间歇性被重置/超时换网络往往就好。✅ 避坑按需三选一换一条更稳的网络/线路后重试有代理则git config --global http.proxy http://127.0.0.1:端口用加速镜像前缀如https://ghproxy.com/https://github.com/...。五、坑点汇总表一表看懂#坑表现根因避坑1错误被噪音淹没乱码git 不是内部或外部命令显示成 GBK 乱码真正错误在倒数几行CMD 中文乱码只看[ERROR]后的命令行chcp 65001切 UTF-82git 未安装git ls-remote ... 不是内部或外部命令系统没装 git装 git装后开新终端3npm 同名撞车dsh-plugin-manager是别人的项目npm 已有同名同版本包用仓库 URL/tarball装前核对 repository4pnpm store 不一致ERR_PNPM_UNEXPECTED_STOREnode_modules 与 pnpm 默认 store 不同显式--store-dir但要警惕可能是环境差异5写 store 失败ERR_SQLITE_ERROR unable to open database file写全局 store 被权限/沙箱拦截提升写权限受限环境别硬试6加载需重启装完 DSH 无反应新 bundle 层需重启加载重启 DSH用--dump-config先验证链路7证书不受信SEC_E_UNTRUSTED_ROOTSChannel 不信任 GitHub 根证书git config --global http.sslBackend openssl8PATH 未刷新新装 git 旧进程找不到已启动进程 PATH 不更新重开终端/重启 DSH9网络线路问题Connection was reset/ 超时到 GitHub 特定 IP 的 TCP 连接间歇性不稳换网络/代理/镜像重试10VPN 误判以为 VPN 在接管流量VPN 进程在跑但网卡断开/路由为备用看网卡状态与路由跃点数别只看进程11浏览器≠命令行浏览器能开但 git 不通浏览器走 QUIC/DoHgit 走 TCP以命令行实测为准12插件硬编码 web 路径desktop profile 下 MCP 管理改错文件作者写死~/.dsh/profiles/web/...用前看文档或在 web profile 使用六、快速排查清单下次直接照做当再次遇到「DSH 插件装不上」先看报错中[ERROR]后的命令与错误行别被前面噪音带偏。git --version没有 → 装 git开新终端。确认安装源npm 名字 vs GitHub 仓库装前核对 repositoryGitHub 插件优先用 URL/tarball。若报 store 相关 →pnpm config get store-dir与node_modules/.modules.yaml的storeDir对比不一致就显式--store-dir。若报unable to open database file→ 检查是否有写全局 store 的权限。若报证书 →git config --global http.sslBackend openssl。若报Connection reset / Could not connect / timeout→ 这是网络间歇性换网络 / 代理 / 镜像 / 重试别去改 git 配置。装完用dsh --profile 名字 --dump-config看是否出现该 bundle 层。确认以上后重启 DSH再进设置面板使用。七、结论与长期建议95% 的「git 装不上 GitHub 插件」 没装 git 网络线路不稳定跟 DSH 本身无关。git 证书问题用一条http.sslBackend openssl根治写在~/.gitconfig保留即可。GitHub 插件安装优先用仓库 URL/tarball避免 npm 同名撞车装前核对repository。网络线路是最大变量GitHub 在你所在网络常间歇性不通。要长期稳定用 GitHub建议代理或镜像不要裸连大流量场景。重启装插件、改 PATH、改 git 配置后凡是「看起来没生效」先重启进程/DSH。附录 · 本文用到的关键命令与文件# 查 gitgit--versiongitls-remote https://github.com/liqichen/dsh-plugin-manager.git HEAD# 修证书 / 走代理gitconfig--globalhttp.sslBackend opensslgitconfig--globalhttp.proxy http://127.0.0.1:端口# 装插件GitHub tarball无需本地 gitdsh plugin--profiledesktopadd\--store-dirC:\Users\……\AppData\Local\pnpm\store\https://github.com/liqichen/dsh-plugin-manager/archive/commit.tar.gz# 验证加载链路dsh--profiledesktop --dump-config# 查 store / 路由 / 网络pnpmconfig get store-dir route print-4Resolve-DnsName github.com-TypeA关键文件package.jsondependenciesdsh.profile.bundles、node_modules/.modules.yamlstoreDir、node_modules/dsh-plugin-manager/{package.json,cordis.patch.yml,index.js,client.js}、~/.gitconfighttp.sslBackend。
延伸阅读

更多相关文章

2026/10/29 10:44:43

记录U9客开项目的部署

近来项目少做的原因,U9的一个客开模式(CustomProxy),开发结束后老是忘记具体部署是怎样的,为此浪费掉不少时间。记录下来备查吧。 在Portal目录(X:\yonyou\U9CE\Portal >U9C)下建立一个wss目录,将以上开…

2026/10/30 2:30:55

slub trace

trace() 是 SLUB 调试中跟踪对象分配/释放事件的函数,对应 SLAB_TRACE 调试标志。它在对象每次被分配或释放时打印一条跟踪日志,用于观察对象的生命周期。一、函数签名static void trace(struct kmem_cache *s, struct slab *slab, void *object,int all…

2026/10/30 2:30:55

深度学习:目标检测算法——YOLO 系列演进

引言 分类只回答"图里有什么",检测还要回答"在哪、有几个"。从自动驾驶识别行人,到工厂流水线挑次品,目标检测是计算机视觉最能直接产生商业价值的任务之一。本篇用一条主线——YOLO 如何把检测做到实时——串起整个领域…

2026/10/30 2:25:54

CISP-PTE备考笔记|SQL注入(联合查询)手工复现与原理分析

本文为 CISP-PTE 备考学习笔记,所有操作仅在官方授权靶场、本地自建靶场环境完成。 文中 Payload 仅用于原理学习、靶场练习。严禁直接套用在任何未授权公网业务系统。未经授权对网站进行注入、扫描属于违法行为,请遵守《网络安全法》。 本文目的&#x…

2026/10/29 17:05:52

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/29 17:06:02

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/29 17:06:13

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/30 0:00:46

NCP1342高频准谐振反激控制器:从设计约束到验收的完整方案

简介:NCP1342 高频准谐振反激控制器应用介绍译文文档,面向电源设计工程师、硬件研发人员及开关电源学习者,帮助读者跨越英文原版资料的语言门槛,系统理解这款高集成度 QR Flyback 控制器的设计要点。文档围绕芯片核心特性展开&…

2026/10/30 0:00:46

NCP1342准谐振反激电源设计:从选型到验收的全流程解析

简介:这份文档面向电源设计工程师与开关电源学习者,系统梳理NCP1342高频准谐振反激控制器的应用要点,帮助读者快速理解这款高集成度离线电源变换器控制芯片的工作机制与设计方法。内容涵盖芯片核心特性、引脚功能定义、电气特性参数表、最大额…

2026/10/30 0:00:46

Web系统自动登出机制设计与实现全解析

1. 系统自动登出机制的设计初衷在各类Web应用和后台管理系统中,自动登出功能早已成为标配。这个看似简单的功能背后,实际上涉及用户安全、资源管理和体验优化的多重考量。作为从业十多年的老开发,我见过太多因为登出逻辑设计不当导致的安全事…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑