我是在一次给团队搭共享开发环境时,开始研究 DeepSeek Harness 和它的插件市场组件 dsh-market 的。最初图省事直接装在本地笔记本上,结果发现团队协作要共用一套智能体配置、插件和模型密钥,本机方案根本没法搞。于是我把整套环境挪到了腾讯云服务器上,过程中把选型、安装、插件市场接入、离线包加载这些环节都过了一遍,也踩了不少坑。这篇就完整记录我在腾讯云上从零搭起 DeepSeek Harness 和 dsh-market 插件市场的全过程,包括服务器配置建议、每一步操作的动机、最终跑通的步骤,以及几个非常典型的排障过程,给想在云端搭一套 AI 智能体插件环境的朋友做个参考。
1. 为什么我要把 dsh-market 部署在腾讯云,而不是本地跑
1.1 dsh-market 到底解决了什么问题
先搞清楚 dsh-market 是干嘛的。DeepSeek Harness 本身是一个面向多智能体编排和模型调用的运行底座,可以用命令行操作,也有桌面版界面。它支持连接各种模型推理服务,包括远程 API 和本地部署的模型,还能配置"思考模式"让模型在回答前先做内部推理。但这套底座真正用起来之后,你会发现光有运行环境还不够——智能体要干活,离不开各种各样的插件:有的负责联网检索,有的负责解析文档,有的专门对接外部工具。插件从哪来、怎么安装、怎么管理版本,就成了一个绕不开的问题。
dsh-market 就是干这个的。它本质上是一个插件市场的服务端,类似 VS Code 的插件市场,或者你手机上的应用商店。它收集、索引、分发各种 Harness 插件,并提供一套统一的安装和升级流程。你在 Harness 里配置好 dsh-market 的地址后,就能像逛应用商店一样浏览插件列表、一键安装、检查更新。
1.2 云服务器部署和本机部署的真正差别
刚开始我图省事,直接在自己电脑上装。装完发现至少四个痛点:
- 电脑不能关机,关了团队其他成员就访问不了;
- 插件配置、模型 API Key 全留在我本地,协作和交接都麻烦;
- 本地网络环境变化大,换了 WiFi 或出差,服务地址就变了;
- 一些插件需要长时间运行和稳定网络,个人电脑根本扛不住。
放到腾讯云上之后,这些问题一次解决:服务器 7x24 小时在线,外网 IP 固定,多智能体编排也可以一直跑。更重要的是,模型 API Key 和插件配置都集中存在服务器上,团队按需访问,权限可控。
我还测试过用轻量应用服务器和云服务器 CVM 两种产品形态。结论是:如果只是自己和几个同事用,选轻量应用服务器就够了,价格低,自带防火墙管理界面;如果要跑重负载的多智能体编排任务,或者可能要横向扩展计算资源,就选 CVM。下面我的安装过程以轻量应用服务器为例,但命令在 CVM 上完全通用。
2. 腾讯云买机器与基础环境准备:这步没做好,后面全是坑
2.1 实例规格怎么选:别一上来就买最贵的
在选配置这件事上,我吃过亏。第一次直接买了台 1 核 2G 的最低配,结果装完 Harness 本体和插件市场服务之后,内存还剩不到 300M,一跑多智能体编排就卡死。后来换了 2 核 4G,才算够用。
插一句,DeepSeek Harness 的资源占用大头一般有三个:Node.js 相关的服务进程、Python 运行时、以及插件市场服务本身的常驻进程。如果你只在本机简单测试,2G 内存勉强能动;但放到腾讯云上长期跑,我建议直接从 2 核 4G 起步。如果你还打算在服务器上跑本地模型,那就不是 4G 能解决的事情了,至少 16G 内存加一块支持 CUDA 的显卡,甚至得上 GPU 实例,这个不在本文讨论范围。
系统镜像我建议选 Ubuntu 22.04 LTS 或者 Debian 12。我习惯用 Ubuntu,软件源里的包比较全,遇到问题也好搜到解决方案。选系统时腾讯云会问你是否要配置安全组或防火墙,先默认放行 SSH 端口(22),其他端口后面用到再放。
2.2 登录服务器:网页终端还是本地 SSH
腾讯云控制台自带 OrcaTerm(网页版终端),如果你只是临时操作,用它最方便,打开浏览器就能进服务器。但安装插件、传文件这种重复劳动比较多,我还是建议在本地电脑上用 SSH 客户端登录。Windows 上我推荐直接用 Windows Terminal 里的 OpenSSH,或者用 MobaXterm 这种带文件管理功能的工具;Mac 和 Linux 直接用系统自带的终端就行。
连接命令很简单:
ssh root@你的服务器公网IP登录之后,先做一个常规更新:
apt update && apt upgrade -y然后安装后续要用的基础包:
apt install -y curl wget git unzip zip python3 python3-pip python3-venv这里我特别提醒一句:不要直接用系统的 python3 跑全局 pip install。Python 项目依赖隔离很重要,后面各种插件之间很容易出现依赖冲突,所以我全程用虚拟环境(venv)来装 Harness 和 dsh-market,这是我从一开始就定下的规矩。
2.3 安全组和防火墙端口放行,这一步最容易漏
很多人在腾讯云上部署服务,软件装好了,本地却访问不了,九成是端口没放行。这里涉及两层:
- 轻量应用服务器要在控制台的"防火墙"页面加规则;
- CVM 要在"安全组"里添加入站规则。
以我的轻量应用服务器为例,Harness 的 Web 管理界面默认监听 17860 端口,dsh-market 插件市场服务我用的是 8899 端口(端口可以自己改,但建议避开 8080、8888 这类常见端口,防止和其他服务冲突)。我在防火墙里加了两条 TCP 入站规则:17860 和 8899,来源填 0.0.0.0/0(如果团队固定 IP,可以填具体 IP 段更安全)。
端口放行之后,本地 SSH 和浏览器访问都要测试。测端口是否有响应,可以用:
ss -tlnp | grep -E '17860|8899'看到 LISTEN 状态就说明服务端口正常,剩下的问题基本都在腾讯云控制台的防火墙规则上。
3. 先把 DeepSeek Harness 本体装好并跑起来
3.1 本体安装:源码方式更适合二次开发
早期我在自己电脑上装 Harness 时,图省事直接用包管理器安装,后面发现两个问题:一是默认版本可能不是最新的;二是插件配置文件的位置和我想的不一样。这次在腾讯云上我改用源码安装,git clone 指定版本,可控性高很多。
当然,如果你只是临时体验,直接按官方文档用包管理器装也行。我这里讲源码方式,因为后面接入 dsh-market 时,很多路径和配置项你需要知道它们在哪。
先确认环境里有 Node.js,因为 dsh-market 服务端依赖 Node:
curl -fsSL https://deb.nodesource.com/setup_20.x | bash - apt install -y nodejs然后用 git 拉取 Harness 源码:
mkdir -p /opt/deepseek-harness cd /opt/deepseek-harness git clone https://github.com/deepseek-ai/DeepSeek-Harness.git .我拉取时习惯加--depth=1,只拉最新提交,省时间省流量:
git clone --depth=1 https://github.com/deepseek-ai/DeepSeek-Harness.git .3.2 初始化 Python 虚拟环境和依赖安装
进入项目目录后,创建虚拟环境并安装依赖:
cd /opt/deepseek-harness python3 -m venv .venv source .venv/bin/activate pip install --upgrade pip pip install -r requirements.txt这一步的时间取决于服务器网络状况,耐心等就行。装完之后验证 Harness 的 CLI 是否正常:
dsh --version如果你看到版本号输出,就说明本体已经装好了。
3.3 配置模型连接和思考模式
这一步很关键,但也最容易忽略。Harness 本体装好只是第一步,它还要连上模型才能真正干活。你需要编辑 Harness 的配置文件,把你使用的模型服务配好。
我用的模型配置分两类:
- 远程 API 类:比如 DeepSeek 官方 API,需要在配置文件里填 API Key、模型名称、接口地址;
- 本地模型类:比如你通过 Ollama 或 vLLM 在另一台机器上部署的模型,需要在配置里指定本地服务的地址。
配置完成后,先跑一个最简单的测试命令,确认 Harness 能正常和模型对话:
dsh chat --message "你好,简单介绍一下你自己"如果模型能正常回话,说明 Harness 本体已经跑通了。这时再去装 dsh-market,就不会出现"市场装好了但没法用"的尴尬情况。
我记得第一次没验证模型连接就直接去装插件市场,装好之后插件里有两个需要模型推理的功能,怎么调都报错,排查了半天才发现是模型 API Key 填错了。这个顺序希望大家吸取教训。
4. dsh-market 插件市场的安装与接入全流程
4.1 从仓库拉取 dsh-market 源码
Harness 本体跑通之后,接下来装 dsh-market。我的做法是把 dsh-market 单独放在一个目录里,和 Harness 源码分开管理,这样更新互不影响。
mkdir -p /opt/dsh-market cd /opt/dsh-market git clone --depth=1 https://github.com/deepseek-ai/dsh-market.git .目录创建好之后,用ls -la看一下项目结构,你会看到几个核心目录:server(插件市场服务端)、registry(插件注册表)、plugins(插件包目录)、docs(文档)。理解了这个结构,后面遇到问题才知道在哪个目录里找原因。
如果你在云服务器上拉取 GitHub 仓库时网络不顺畅,有一个替代方案:先在本地电脑上下载源码压缩包,然后用scp或腾讯云控制台的"文件上传"功能传到服务器,再解压,效果完全一样,而且不依赖服务器到 GitHub 的链路质量。
4.2 理解插件市场的注册表机制
dsh-market 设计和代码仓库的插件索引机制很像,它有一个注册表文件,记录所有可用插件的名称、版本、描述、下载地址和依赖关系。安装插件时,市场服务端会根据注册表信息到指定位置拉取插件包,再交给 Harness 去加载。
具体来说,dsh-market 使用目录中的marketplace.json作为注册表入口。这个文件里的每个条目,对应一个插件的基本信息。默认仓库自带的 marketplace.json 已经内置了一批官方插件,你可以直接使用;如果你有自己开发的插件,也要往这个文件里加条目,dsh-market 才能识别它。
建议你先把默认注册表备份一份,方便后面改坏时快速恢复:
cp marketplace.json marketplace.json.bak4.3 安装 dsh-market 服务端依赖并配置接入
dsh-market 的服务端代码在server目录下。进入目录,安装依赖并启动:
cd /opt/dsh-market/server npm installnpm 安装依赖的时候,如果某些包拉取较慢,可以考虑使用国内 npm 镜像源,设置方式如下:
npm config set registry https://registry.npmmirror.com设置完之后重新npm install,速度会明显提升。
依赖装好后,需要配置 dsh-market 和 Harness 的对接。打开 dsh-market 服务端的配置文件,找到 Harness 管理端口或插件目录路径的相关配置项,改成你实际 Harness 的地址。我把插件市场的监听端口设置为 8899,插件包存储路径设置为/opt/dsh-market/plugins:
cp .env.example .env vim .env.env里重点确认这几个参数:
PORT=8899:插件市场服务监听端口;HARNESS_URL=http://127.0.0.1:17860:Harness 本体的地址和端口;PLUGIN_DIR=/opt/dsh-market/plugins:插件包存放目录。
4.4 启动插件市场服务
配置完成后,用 Node 启动市场服务:
cd /opt/dsh-market/server node server.js如果你看到类似plugin registry server started on port 8899的日志,说明服务已经起来了。为了让它常驻后台运行,我用的是 nohup:
nohup node server.js > dsh-market.log 2>&1 &然后用 curl 验证本地服务是否响应:
curl http://127.0.0.1:8899/api/plugins能返回 JSON 数据,说明插件市场的 API 正常。这时再从本地浏览器访问http://你的服务器公网IP:8899,应该能看到插件市场的管理界面。如果打不开,检查我之前说的腾讯云防火墙和安全组规则。
到这里,插件市场就算正式跑起来了。最后还要一步:在 Harness 的配置里把 dsh-market 设为插件源。打开 Harness 的配置文件,找到一个叫插件源或者 marketplace 的配置段,把地址http://127.0.0.1:8899填进去。这样 Harness 才能识别 dsh-market 上架的插件。
5. 插件安装、离线包上传与腾讯云场景下的排障实录
5.1 插件商店的一键安装与依赖问题
dsh-market 跑通之后,最爽的一个操作就是"逛插件市场"。打开 Web 界面,能看到插件列表,点安装按钮,Harness 会自动从注册表拉取插件包并完成部署。一键安装的原理很简单:市场服务端把插件包下载到PLUGIN_DIR,然后通知 Harness 重新扫描插件目录。
但这个环节有个典型问题:插件本身可能依赖 Python 或 Node 的第三方库,一键安装只负责装插件本体,不负责装这些依赖。所以装完插件之后,一定要看插件的说明文档,把依赖补上。我装一个文档解析插件时,发现需要额外装pypdf和docx两个库,否则插件启用即报错。你可以在 Harness 的虚拟环境里执行:
source /opt/deepseek-harness/.venv/bin/activate pip install pypdf docx5.2 腾讯云上传插件包时的实用姿势
云环境和本机不同,你不能直接把本地文件拖进服务器。上传插件包我试过三种方法,按推荐程度排序:
一是scp命令。包不大、数量不多时最方便:
scp my-plugin.zip root@你的服务器IP:/opt/dsh-market/plugins/二是腾讯云控制台的文件上传功能。轻量应用服务器自带这个入口,适合不会用命令行的人群。上传完成后在控制台里把文件移动到插件目录即可。
三是先上传到对象存储 COS,再从服务器拉取。插件包特别大(超过几百 MB)时用这个方式更稳。
上传之后,需要在 dsh-market 后台执行"重新扫描"或"安装本地插件"的操作,我把上传的 zip 包放在/opt/dsh-market/plugins下,然后调用市场的 API:
curl -X POST http://127.0.0.1:8899/api/plugins/install-local \ -H "Content-Type: application/json" \ -d '{"name":"my-plugin", "path":"/opt/dsh-market/plugins/my-plugin.zip"}'5.3 离线包下载与手动加载
有些情况下,服务器网络条件不好,或者插件源在国外,在线安装根本拉不下来。我的应对方案是离线包加载。
具体流程是:先在本地电脑上下载好插件包(zip 格式),然后按上一节的方法上传到服务器。上传完成后,手动解压到插件目录,调整目录结构,让 Harness 能找到它:
cd /opt/dsh-market/plugins unzip my-plugin.zip -d my-plugin解压后检查目录里是否有plugin.json或类似格式的插件描述文件。只要有这个文件,Harness 扫描插件目录时就能识别它。如果没有,就要看插件说明,确认它要求的目录格式。这个"手动解压 + 配置文件引导"的方式,在服务器网络不理想时是最可靠的兜底方案。
5.4 真实踩过的坑:版本回退、拉取超时、端口冲突
最后分享一下我在这个项目里遇到的几个比较有代表性的问题。
第一个坑是版本回退问题。最新版的 dsh-market 某个版本存在插件列表加载缓慢的 bug,插件一多就转圈。我一开始不知道可以回退版本,折腾了很久。后来查文档发现 dsh-market 支持指定版本安装,在 git 仓库里直接切到历史 tag 就行:
cd /opt/dsh-market git fetch --tags git checkout v0.1.5-rc.2切到旧版本后,重新启动服务,问题就解决了。所以如果你在最新版上遇到问题,不要急着怀疑网络或配置,先试试回退到近期稳定 tag。
第二个坑是npm install拉取依赖超时。腾讯云服务器默认连接国际网络质量一般,Node 依赖经常拉到一半失败。设置国内 npm 镜像源是立竿见影的办法。Python 侧同理,pip 如果慢,可以临时换用国内 PyPI 镜像:
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple第三个坑是端口冲突。我一开始图方便,把 dsh-market 的端口设成了 8080,结果和服务器上另一个监控服务冲突,服务反复重启。建议部署前先用ss -tlnp检查端口占用,选一个冷门端口。dsh-market 和 Harness 的端口都建议固定下来,方便后续在 Nginx 里做域名转发。
第四个坑是插件配置字段冲突。有些插件在安装时默认生成配置文件,字段可能与 Harness 全局配置里已有字段同名,导致后加载的插件覆盖先加载的配置。排查方法是逐个检查插件目录下的 *.yaml 或 config 文件,确认没有重复定义相同字段。这个问题不好定位,建议一开始就规范命名,或者直接在插件说明里标注与全局配置的关系。
整个部署过程走下来,最核心的经验其实是三条:一是先把 Harness 本体跑通再去装插件市场,避免重复排障;二是云服务器的防火墙和安全组一定要提前放行端口;三是网络拉取失败时别硬等,换镜像源或离线包都是成熟方案。这套流程不只适用于腾讯云,你在阿里云、华为云甚至公司内网服务器上部署,思路完全一致,需要改的只是防火墙操作入口不同而已。如果有人按这篇在部署时卡在哪个环节,我建议先看日志,dsh-market 的日志在启动时指定的dsh-market.log里,Harness 的日志一般在项目目录下的logs文件夹,错误信息比猜要快得多。