腾讯云上搭建dsh-market:DeepSeek Harness插件市场完整部署指南
发布时间:2026/9/24 22:16:36 作者:尧图编辑部 阅读量:1,286

1. 动手之前先弄明白 dsh-market 到底解决的是什么问题最近不少人在折腾 DeepSeek Harness 的本地化部署。工具本身装好只是第一步真正让智能体平台具备实用价值的是它背后的插件体系。dsh-market 就是 DeepSeek Harness 的插件市场组件你可以把它理解成一个专门为 Harness 生态服务的应用商店负责插件的浏览、下载、安装、升级和卸载。很多人一开始没想明白这件事以为把 DeepSeek Harness 主程序跑起来就万事大吉了。等真正用到多智能体编排、接入外部工具链、给 Workflow 挂自定义能力的时候才发现主程序只是个骨架血肉全靠插件往上填。dsh-market 解决的正是这个痛点它让插件管理从“手动往目录里扔文件”升级成了“像用应用商店一样点几下就完成”同时提供了版本管理、依赖声明和状态追踪这在智能体项目复杂化之后几乎是刚需。为什么我会强调在腾讯云环境下搭建原因有三。第一插件市场里的插件资源往往体积不小而且 Harness 主程序在运行时会频繁读写插件元数据和索引文件本地机器跑容易受网络波动影响放云服务器上则常年稳定在线。第二腾讯云在国内的访问速度有天然优势特别是你后续要配合 FastGPT、知识库或其他云端服务做集成的时候地域之间的内网互通和低延迟非常关键。第三云服务器本身就是“随时可重建”的装坏了、配置搞乱了快照一恢复就重来试错成本极低。这篇文章的目标读者是那种已经把 DeepSeek Harness 跑起来、但还停留在“裸奔”状态或者尝试装插件市场却总在某个环节卡住的朋友。我会从腾讯云的环境准备一直讲到最后的排错思路尽量把每一步背后的原因也讲清楚不搞“照着敲完就行”的那种教程。2. 腾讯云环境准备服务器选型与系统初始化2.1 实例规格怎么选别浪费钱也别掉链子安装 dsh-market 本身对硬件的要求其实不高它本质上是一个管理插件元数据和文件的服务CPU 和内存消耗都很有限。但你要考虑的是“它和谁一起跑”。绝大多数情况下dsh-market 不是单独部署的它要配合 DeepSeek Harness 主程序尤其是带 WebUI 的桌面版或服务版再加上本地模型的推理进程资源占用就上去了。我的建议是如果你只是轻量试用2核4G起。如果你要接本地模型跑推理尤其是 7B 以上参数的量化模型4核8G 是最低可用的门槛16G 才谈得上流畅。腾讯云现在的标准型 S5、S6 系列都够用没必要上高主频的计算型硬盘倒是建议直接上 SSD 云硬盘插件文件多是小文件随机读写性能直接影响插件列表的加载速度。提示地域选择上如果你主要面向国内访问选腾讯云北京、上海、广州这几个节点都行。后续要和其他腾讯云产品内网互通的话比如对象存储 COS 或者云数据库尽量选同一个地域内网流量免费延迟也低得多。2.2 系统镜像与登录方式系统镜像我推荐 Ubuntu 22.04 LTS兼容性最省心。CentOS 7 虽好但已经进入维护末期新装机器没必要再用它给自己找麻烦。Ubuntu 的 apt 源里的 Node.js 版本可能偏旧后面我会讲怎么处理先按下不表。创建实例的时候有两个细节常常被忽略。第一个是登录方式建议直接设置密钥登录不要用密码。一方面是安全性考虑另一方面是后续你要通过 scp 或者 rsync 传插件包密钥登录能省掉每次输密码的麻烦。第二个是安全组规则默认的安全组通常只放行了 22 端口SSH而 dsh-market 和 Harness 主程序都需要 Web 端口这个务必要在创建实例之后立即配置不然后面服务起了一看浏览器访问不了容易误判是安装出了问题。安全组配置其实很简单在腾讯云控制台找到“安全组”入口对当前实例绑定的安全组添加放行规则。具体端口我放到后面说因为不同的启动方式端口还不一样你只需要记住这个操作路径就行。2.3 基础依赖安装Node.js 环境与版本管理dsh-market 基于 Node.js 生态所以安装 Node.js 是第一步。千万别用系统自带的 apt 直接安装版本通常很老装完大概率会碰上依赖兼容性问题。我更推荐用 nvm 来做 Node.js 的版本管理好处是以后切换版本只需要一条命令。# 在服务器执行安装 nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash # 重新加载 shell 环境 source ~/.bashrc # 查看可用的 Node.js 版本 nvm list-remote # 安装 LTS 版本 nvm install 20.18.0 nvm use 20.18.0 nvm alias default 20.18.0 # 验证安装 node -v npm -v选择 Node.js 20 LTS 的理由很简单dsh-market 的依赖树里有不少包在新版本 V8 引擎下有更好的性能表现而且 20 系已经进入维护期稳定性经过了足够长时间的验证。18 也能跑但没必要刻意降级。3. 从拉取代码到跑通服务dsh-market 完整安装流程3.1 获取 dsh-market 源码包的正确姿势dsh-market 的代码托管在 GitHub 上和 DeepSeek Harness 主项目是独立的仓库。核心技术栈是 TypeScript Express服务端渲染接口风格沿用了 Harness 生态一贯的 RESTful 规范。获取源码的方式有两个。第一种方式也是最推荐的是直接克隆 GitHub 仓库# 克隆 dsh-market 仓库 git clone https://github.com/deepseek-harness/dsh-market.git cd dsh-market注意如果你所在的网络环境访问 GitHub 不稳定你可以用代理镜像站或者尝试先在本地下载 zip 压缩包再通过腾讯云控制台的“文件上传”功能传上去这个功能在轻量应用服务器的控制台里尤其好用支持直接从本机拖拽上传文件。第二种方式是下载 Release 版本的离线包。GitHub 的 Release 页面会提供打包好的 tarball好处是代码经过作者整理去掉了开发目录的冗余文件体积更小。无论哪种方式拿到源码之后先检查一下目录结构确认有package.json和src目录别下错成别的项目了。3.2 配置环境变量与基础参数dsh-market 和其他 Node.js 服务一样通过环境变量控制运行参数。项目根目录下通常会有.env.example文件第一次安装时先复制再修改cp .env.example .env vim .env几个关键环境变量的含义我解释一下这几项几乎决定了服务能不能被外部正常访问环境变量默认值说明PORT5868dsh-market 服务监听端口HOST0.0.0.0监听地址务必保持为 0.0.0.0否则外网无法访问MARKET_PLUGIN_DIR./plugins插件存放目录建议改为绝对路径ALLOW_PUBLISHtrue是否允许上传新插件个人部署一般保持开启特别注意HOST这个变量。很多人装完发现服务在本机能开但浏览器访问不了八成的可能性是这里写成了127.0.0.1。写0.0.0.0的意思是监听服务器上所有网络接口另一个 IP 是只监听本机回环地址等于自断外网访问路径。MARKET_PLUGIN_DIR我也建议改成绝对路径比如/root/dsh-market/plugins。因为如果用相对路径当你通过 systemd 或者nohup等方式以后台模式启动服务时工作目录的变化会导致插件目录丢失这是个非常隐蔽的坑。3.3 安装依赖并启动服务配置完成后安装依赖并启动服务npm install # 开发模式启动适合调试 npm run dev # 生产模式启动适合长期运行 npm run build npm run start第一次npm install会花一些时间因为 dsh-market 的依赖项不少。如果你在安装过程中出现网络超时可以用腾讯云镜像源的 npm 加速npm config set registry https://mirrors.cloud.tencent.com/npm/ npm install启动命令的执行结果里如果能看到类似Market serve at http://0.0.0.0:5868的日志输出说明服务已经起来了。但我建议你不要直接退出终端先按 CtrlC 停掉然后用 systemd 把它注册成系统服务这样即使你关闭 SSH 窗口服务也能常驻运行。下面是一个最小可用的 systemd 服务配置[Unit] Descriptiondsh-market Afternetwork.target [Service] Typesimple WorkingDirectory/root/dsh-market ExecStart/usr/bin/npm run start Restartalways RestartSec3 EnvironmentNODE_ENVproduction [Install] WantedBymulti-user.target写入配置文件后sudo vi /etc/systemd/system/dsh-market.service sudo systemctl daemon-reload sudo systemctl enable dsh-market sudo systemctl start dsh-market3.4 验证插件市场已经上线服务跑起来之后验证工作要分三层层层递进地确认没有隐患。第一层本地验证。在服务器上执行curl http://127.0.0.1:5868/api/health正常会返回一个 JSON 对象里面包含服务状态和版本号。这一步验证的是“服务本身是否健康”。第二层公网访问验证。在你本地电脑的浏览器打开http://你的服务器公网IP:5868能看到插件市场页面说明服务监听地址和安全组规则都没问题了。这一步验证的是“网络通路是否打通”。第三层接入 Harness 主程序验证。在 DeepSeek Harness 的配置文件里找到插件市场相关的配置项把地址指向 dsh-market 的 URL。这一步才是真正的目的——让 Harness 主程序能识别并拉取插件市场的插件列表。三层验证都过了安装才算真正完成。4. 让插件市场接入 DeepSeek Harness 主程序4.1 Harness 侧的配置调整dsh-market 单独跑起来只是半边活更重要的是让它和 DeepSeek Harness 主程序产生联动。DeepSeek Harness 的插件机制设计得有点像 VS Code 的扩展体系主程序启动时会扫描已配置的插件市场源获取可用的插件列表并在界面的插件面板中展示。在 Harness 主程序中你需要在启动参数或配置文件中指定 dsh-market 的地址。以 CLI 启动为例通常会有一个--plugin-market或类似的参数# 启动 DeepSeek Harness 并指定插件市场地址 deepseek-harness --plugin-market http://your-server-ip:5868如果你用的是桌面版或 WebUI 版本通常在“设置 - 插件/扩展”面板里会有一个“添加插件市场源”的输入框填上地址后保存即可。这里有一个关键细节如果 Harness 主程序和 dsh-market 不在同一台机器上你需要在 dsh-market 的.env文件里设置跨域相关的配置CORS_ALLOWED_ORIGINS否则 Harness 从页面端发起的请求会被浏览器的同源策略拦截。具体允许的域名列表要看你的 Harness 服务部署在哪个地址填进去后重启 dsh-market 生效。4.2 插件的上传、安装与版本管理dsh-market 的上传界面支持两种方式一种是从本地上传插件压缩包另一种是直接填入 GitHub 仓库地址远程拉取。我个人的经验是在阿里云或 GitHub 上找插件的时候优先用远程拉取方式它能保证拉到的是仓库的最新代码而本地打包上传更适合你二次开发过的插件。上传插件之后dsh-market 会自动解析插件目录下的manifest.json文件读取插件的名称、版本号、描述、入口文件和依赖列表等信息。这里建议所有插件作者都养成一个习惯manifest.json里的version字段要严格遵循 semver 语义化版本规范即“主版本号.次版本号.修订号”不然插件市场无法正确判断版本新旧升级逻辑会乱套。在 Harness 主程序的插件面板里点击安装时首先会向 dsh-market 请求插件包列表然后根据当前 Harness 的版本筛选出兼容的插件版本最后将插件包下载解压到本地插件目录。整个链路里任何一环的地址配置错误都会导致安装失败这也是第二节里为什么反复强调网络验证的原因。4.3 多个智能体场景下的插件编排思路插件市场装好了最常见的使用场景就是多智能体编排。DeepSeek Harness 本身支持创建多个智能体每个智能体可以配置不同的插件组合。比如一个“代码审查智能体”可以挂载代码分析插件和 GitHub 集成插件而一个“文档撰写智能体”只需要挂载 Markdown 工具插件。dsh-market 在这种情况下扮演的就是“插件资源池”的角色。你不用在每台机器上手动复制插件包只要服务器上的市场源管理好了任何一台连接了该市场源的 Harness 实例都能随时拉取到最新版本。对于团队协作的场景这种做法能大幅降低维护成本。我之前在知乎上看到有人问“dsh-market 能不能离线使用”答案是可以。只要你在服务器上把所有需要的插件都上传到市场里后续所有 Harness 实例只从这个市场源拉取插件即使服务器本身没有外网访问能力插件分发依然可以正常工作。这个特性在私有化部署场景下非常实用。5. 安装过程中最容易踩的五个坑以及完整的排查链路5.1 端口被占用导致服务秒退现象执行npm run start后终端弹出Error: listen EADDRINUSE: address already in use :::5868。原因端口 5868 已经被其他进程占用。腾讯云服务器上这种情况不算罕见有些云监控组件或宝塔面板可能会占用某些高位端口。排查链路# 第一步检查端口占用 lsof -i :5868 # 或者 netstat -tlnp | grep 5868 # 第二步确认占用进程是什么如果不是必要进程可以结束它 kill -9 PID # 第三步如果端口被某个核心服务占用那就换个端口修改 .env 里的 PORT我个人的习惯是不跟系统进程抢端口直接改.env里的PORT换成 8080 或 8868 这类不太敏感的高位端口一劳永逸。5.2 Node.js 版本太低导致依赖编译失败现象npm install时出现node-gyp相关的编译错误报错信息里有gyp ERR!字样。原因dsh-market 的部分依赖包尤其是文件监听和加密相关的库在安装时需要编译原生模块而旧版本的 Node.js 不包含这些编译所需的头文件工具链。排查链路# 第一步检查当前 Node.js 版本 node -v # 第二步如果低于 20用 nvm 升级 nvm install 20.18.0 nvm use 20.18.0 # 第三步清理旧的依赖和缓存重新安装 rm -rf node_modules package-lock.json npm cache clean --force npm install这里特别提醒不要一看到编译报错就去装 Python 或 Visual Studio先想想 Node.js 版本是否满足要求。腾讯云服务器的默认镜像里 Node.js 如果走 apt 安装大概率是 18 以下的旧版本直接固定用 nvm 装新版本能省掉后面无数麻烦。5.3 安全组没有放行端口现象服务器本机curl能通但本地浏览器访问超时或拒绝连接。原因腾讯云安全组默认只放行 SSH 端口不会自动放行你在服务器上开启的 Web 服务端口。排查链路# 第一步在服务器上确认服务正常监听 curl http://127.0.0.1:5868 # 第二步检查监听的 IP 地址把 HOST 变量确认了一遍 cat .env | grep HOST # 第三步在腾讯云控制台检查安全组规则添加入站规则 # 协议TCP端口5868来源0.0.0.0/0或限定特定 IP安全组配置看似简单但它是新手最常犯的错误。很多人在本地开发环境习惯了防火墙全开到云服务器上就忘了这回事。建议养成一个习惯每换一个端口先看安全组。5.4 插件列表加载空白现象Harness 主程序的插件面板能打开但列表是空的没有报错。原因这是最隐蔽的问题之一。dsh-market 虽然没有报错但 Harness 主程序请求插件列表时dsh-market 返回了空数组。通常是因为插件存储目录中没有可用的插件元数据或者市场源在启动时没找到plugins目录下的索引文件。排查链路# 第一步检查插件目录是否为空 ls -la /root/dsh-market/plugins/ # 第二步如果目录为空先去上传几个插件市场不是“自带插件”的 # 第三步检查 dsh-market 的运行日志看启动时是否提示找不到索引文件 journalctl -u dsh-market —no-pager | tail -100很多人刚装好 dsh-market打开一看列表空白第一反应是“程序坏了”其实不是。默认的插件仓库就是空的需要你自己上传插件或者从 GitHub 索引源拉取插件列表。这一步要提前有心理准备。5.5 访问页面异常JS 资源加载失败现象浏览器打开 dsh-market 页面样式全丢或者控制台报一堆Failed to load resource: net::ERR_CONNECTION_REFUSED。原因dsh-market 的前端资源是打包后由服务端托管的如果你通过反向代理比如 Nginx来暴露端口但没有正确配置 WebSocket 或静态资源路径页面就会加载异常。排查链路# 第一步确认有没有用反向代理。如果你没用 Nginx跳过这个坑 # 第二步在 Nginx 配置文件里确认 proxy_pass 是否正确 # 第三步检查是否配置了静态资源目录dsh-market 的静态文件在 dist/ 或 public/ 下如果只是个人使用其实不太建议上 Nginx直接暴露端口访问最简单。等以后要绑域名、配 HTTPS 的时候再引入 Nginx 反向代理也不迟。如果已经用了 Nginx遇到样式丢失的问题优先检查location块里的proxy_pass和root路径有没有配错。6. 进阶玩法离线部署、备份迁移与团队共享6.1 离线安装 dsh-market 的完整思路有些腾讯云服务器出于合规或安全考虑不允许出方向访问外网。这种情况下git clone和npm install都会失败。解决方案分三步。第一步在你本地电脑上先克隆 dsh-market 仓库执行npm install完成依赖安装。第二步将整个目录打包包括node_modules通过腾讯云控制台的“文件上传”功能上传到服务器或者用scp命令传输tar -zcvf dsh-market-full.tar.gz dsh-market/ scp dsh-market-full.tar.gz useryour-server-ip:/root/第三步在服务器上解压直接执行npm run start。因为依赖已经装好了跳过npm install这个网络敏感步骤整个过程可以实现完全离线。提示本地环境和服务器环境如果要保持 Node.js 版本一致打包前先确认本地版本和服务器 nvm 安装的版本匹配避免出现“本地编译的原生模块在服务器上加载失败”的问题。6.2 插件数据备份与服务器迁移插件的价值在于积累。辛辛苦苦收集和开发的几十个插件如果服务器到期或者误操作导致数据丢失重新找回来极其痛苦。dsh-market 的数据备份比数据库备份简单得多只需要备份两个东西。一个是plugins目录里面是所有插件的原始文件。另一个是.env配置文件里的自定义项主要是端口、目录路径和跨域设置。ynop备份命令很简单# 导出插件目录 tar -zcvf dsh-market-plugins-backup.tar.gz /root/dsh-market/plugins/ # 备份配置文件 cp /root/dsh-market/.env /root/dsh-market.env.backup迁移到新服务器时先按标准流程把 dsh-market 跑起来然后把备份的plugins目录解压覆盖到新环境重启 dsh-market 即可。6.3 多个开发者共享一个插件市场如果你是团队使用多个开发者各自在自己的机器上跑 DeepSeek Harness那么 dsh-market 完全可以作为团队内部的公共基础设施。每个人不需要再单独搭建插件市场只要把 Harness 主程序的插件市场源配置指向这台腾讯云服务器即可。团队共享场景要注意权限控制。dsh-market 的ALLOW_PUBLISH环境变量如果设为true那么任何能访问到该服务的人都可以上传插件这在公网环境下有安全隐患。建议在安全组里限制 5868 端口的访问来源只允许团队的公网 IP 访问或者使用 Nginx 配置 Basic Auth 认证。7. 写在安装之后的一些个人经验最后聊点实际操作的感受。我自己第一次装 dsh-market 的时候也是抱着“照葫芦画瓢”的心态结果被安全组和 HOST 两个问题折腾了大半天。回头来看这类开源组件安装的本质就是一个“服务能起、外网能通、主程序能连”的三段式链路每一步都有对应的验证方法毛҉病往往出在配置项和网络策略上而不是代码本身。两个小的建议送给准备动手的朋友。第一配置过程中每一步改动都记录下来。我建议直接在服务器的.env文件旁边写个NOTES.md记录修改了哪些参数、为什么改、改了之后验证结果是什么。时间一长你会发现这份笔记比多数教程都值钱。第二先跑通最小链路再做复杂配置。不要一上来就配置 Nginx、域名、HTTPS、多智能体编排先把curl 127.0.0.1通了再开安全组端口再让 Harness 主程序连上一层一层叠加。每加一层就验证一次出问题的时候你很清楚问题出在哪一层排错速度快得不是一星半点。万一读到这篇文章的时候版本已经更新某些命令对不上了不要慌去 GitHub 仓库看 README 和 Release Notes思路不变。框架会变但这套“服务能起、外网能通、主程序能连”的验证思维换哪个工具都适用。