
github地址https://github.com/sdkwork-ai/deepseek-harness-desktop/本指南介绍 DeepSeek Harness 的所有受支持分发方式并最终得到可运行的应用npx、源码 checkout、从源码构建 Docker、Docker Release 离线包、从源码部署 Kubernetes、Kubernetes Release 离线包以及打包后的桌面应用。以下命令固定使用仓库当前版本0.1.0-rc.12它也是当前的 GitHub Latest。GitHub 会将每个通过全部产物校验的dsh-v*发布标记为普通 Release即使其 SemVer 包含-rc在这些公开 dsh Release 中SemVer 最高的 tag 持有 Latest。出现更新版本时请在查看dsh-v后面的版本号并替换固定值。版本中的-rc段仍表示候选版本。选择安装方式方式适用场景所需软件版本来源本地地址桌面应用需要原生 Windows、macOS 或 Linux 应用不需要 Node.js 或 DockerGitHub Release不打开 HTTP 端口npx Web UI需要最短的本地 Web 启动流程Node.js 和 npm/npxnpmnext渠道http://127.0.0.1:3080npx headless CLI需要执行一次命令行任务Node.js 和 npm/npxnpmnext渠道不打开 HTTP 端口源码 checkout需要准确的 GitHub tag 或修改代码Git、Node.js、Corepack 和 pnpmGit taghttp://127.0.0.1:3080从源码构建 Docker需要在本机构建容器Git、Docker Engine 和 Docker ComposeGit taghttp://127.0.0.1:4080Docker Release 离线包需要免构建的已验证镜像Docker Engine、Docker Compose 和归档工具GitHub Releasehttp://127.0.0.1:4080从源码部署 Kubernetes需要在 Minikube 或 kind 中使用本地构建的镜像Git、Docker、kubectl、Minikube 或 kindGit taghttp://127.0.0.1:4081Kubernetes Release 离线包需要在集群中使用离线 Release 镜像Docker、kubectl、归档工具和集群GitHub Release使用 port-forward 时为http://127.0.0.1:4081默认端口经过有意区分。npx 和源码方式使用3080Docker 发布到4080Kubernetes 示例转发到4081。桌面应用使用 Electron IPC不打开 HTTP 端口。通用设置模型凭据Web UI 和桌面应用可以不带 API key 启动。打开应用后进入设置 模型添加提供方、输入 API key 并保存。然后选择工作区创建会话并发送任务。headless CLI、Docker 和 Kubernetes 示例从启动环境读取 DeepSeek key。只在启动应用的 shell 中设置不要提交到仓库exportDEEPSEEK_API_KEYyour-keyOptional custom DeepSeek-compatible endpoint:exportDEEPSEEK_BASE_URLhttps://your-endpoint.example.com在 Windows PowerShell 中$env:DEEPSEEK_API_KEYyour-keyOptional custom DeepSeek-compatible endpoint:$env:DEEPSEEK_BASE_URLhttps://your-endpoint.example.com可选的DEEPSEEK_BASE_URL必须来自启动环境不要放进项目的.env文件。Web 用户可以改为在模型设置中配置自定义提供方。数据与网络暴露npx、源码和桌面方式使用$DSH_HOME未设置时使用~/.dsh。这些方式共享 profile、设置、凭据、会话、附件和工作区记录。Docker 使用dsh-data和dsh-workspace命名卷。Kubernetes 使用dsh-data和dsh-workspace持久卷声明。Web 服务不提供身份认证或 TLS。默认监听地址仅限 loopback。将任何 Web 部署暴露给其他计算机之前必须放在带身份认证和 TLS 的反向代理或 Ingress 后并在DSH_TRUSTED_HOSTS中配置浏览器使用的准确 authority。使用 npx 安装前置条件从安装 Node.js^22.19.0或24.0.0然后确认 Node.js 和 npx 可用node --versionnpx --versionnpx 包使用单独发布的 npmnext渠道版本可能早于最新 GitHub Release。依赖准确版本之前请先检查输出的版本号npx deepseek-ai/dshnext --version必须匹配某个dsh-vGitHub tag 时请使用源码、容器或桌面安装方式。启动 Web UI在需要作为智能体默认工作区的目录中运行npx deepseek-ai/dshnext web等待输出dsh web: http://127.0.0.1:3080然后打开。配置模型点击选择工作区选择启动命令时所在的目录创建会话并发送任务。在另一个终端中验证 HTTP 监听curl --fail http://127.0.0.1:3080/在 Windows PowerShell 中(Invoke-WebRequesthttp://127.0.0.1:3080/).StatusCode在服务终端中按CtrlC停止。如果3080已被占用请选择另一个仅本地使用的端口不要复用容器端口npx deepseek-ai/dshnext web --port 3081执行一次 headless 任务设置DEEPSEEK_API_KEY进入目标工作区并运行npx deepseek-ai/dshnext --profile headlesssummarize this workspace该命令会创建并持久化一个会话输出最终回答后退出不打开 HTTP 端口。任务正常完成时退出状态为0其他结束原因的退出状态为1。更新或移除npx 每次运行时解析所选 npm 渠道因此没有需要更新或卸载的应用目录。npm 可能保留下载缓存删除该缓存是可选操作也不会删除 Harness 数据。只有在备份了必须保留的会话、设置、凭据和 profile 后才能删除~/.dsh或%USERPROFILE%\.dsh。从源码 checkout 运行前置条件安装以下工具Git 2.26 或更高版本。Node.js^22.19.0或24.0.0。启用 Corepack 的 pnpm。仓库固定使用 pnpm11.7.0。确认工具链git --versionnode --versioncorepackenablepnpm --version如果所选 Node.js 发行版不提供corepack请先安装 Corepack再重新运行corepack enable。Clone 并构建Clone 当前 Release tag安装锁定的依赖并构建所有包与 Web 前端gitclone--branch dsh-v0.1.0-rc.12 --depth 1 https://github.com/sdkwork-ai/deepseek-harness-desktop.gitcddeepseek-harness-desktopcorepackenablecorepack prepare pnpm11.7.0 --activatepnpm install --frozen-lockfilepnpm run build只有明确要跟随开发分支时才省略--branch dsh-v0.1.0-rc.12 --depth 1。全新 checkout 必须先完成pnpm run build然后才能启动生产 Web profile。启动并验证启动 Web UIpnpm dsh web打开配置模型选择当前 checkout 或另一个工作区然后运行任务。使用 npx 小节中的同一条 curl 或 PowerShell 命令完成验证。如需改为执行一次命令行任务pnpm dsh --profile headlesssummarize this workspace源码启动器不会检测过期的构建产物。拉取或修改影响包或 Web 前端的代码后请重新运行pnpm run build。更新或移除将现有 checkout 切换到另一个带 tag 的 Releasegit fetch --tagsgit checkout dsh-v0.1.0-rc.12pnpm install --frozen-lockfilepnpm run build删除 checkout 前先停止运行中的进程。删除 checkout 不会移除共享的 Harness home。从源码构建并运行 Docker前置条件按照安装 Git、Docker Engine 和 Compose v2 插件或安装。Windows 和 macOS Docker Desktop 必须运行 Linux 容器。git --versiondocker versiondocker compose version从源码构建容器不要求宿主机安装 Node.js 或 pnpm。构建并启动Clone 当前 tag 并构建原生架构镜像gitclone--branch dsh-v0.1.0-rc.12 --depth 1 https://github.com/sdkwork-ai/deepseek-harness-desktop.gitcddeepseek-harness-desktopdocker build -t localhost/deepseek-harness:local.在 Linux、macOS 或 WSL 中设置 key并启动刚刚构建的镜像exportDEEPSEEK_API_KEYyour-keydocker compose up -d --no-build --wait--wait-timeout 180在 Windows PowerShell 中$env:DEEPSEEK_API_KEYyour-keydocker compose up-d--no-build--wait--wait-timeout180打开选择工作区并运行任务。确认容器状态和 HTTP 响应docker compose pscurl --fail http://127.0.0.1:4080/健康检查未进入 healthy 状态时运行docker compose logs -f dsh。如需更换 Docker 宿主机端口请在启动 Compose 前设置DSH_PUBLISH_PORT不要复用3080或4081。停止或移除停止服务并保留两个命名卷docker compose down --remove-orphans只有在不再需要已存储的会话和工作区时才删除服务及其 Harness 数据docker compose down --volumes --remove-orphans安装 Docker Release 离线包GitHub Releases 提供amd64和arm64两种原生 Linux 镜像。项目没有官方镜像仓库因此不要使用docker pull。部署包只包含 Compose 和 Kubernetes 文件不包含镜像或 Dockerfile必须同时下载与 Docker engine 架构匹配的镜像包。下载并校验在 Linux、macOS 或 WSL 中运行以下命令。它会检测宿主机架构并下载当前部署包、匹配的镜像及两份校验和文件version0.1.0-rc.12basehttps://github.com/sdkwork-ai/deepseek-harness-desktop/releases/download/dsh-v${version}case$(uname -m)inx86_64|amd64)archamd64 ;;aarch64|arm64)archarm64 ;;*)echounsupported container architecture2;exit1 ;;esaccurl --fail --location --remote-name$base/dsh-container-${version}.tar.gzcurl --fail --location --remote-name$base/dsh-container-${version}.tar.gz.sha256curl --fail --location --remote-name$base/dsh-container-image-${version}-linux-${arch}.tar.gzcurl --fail --location --remote-name$base/dsh-container-image-${version}-linux-${arch}.tar.gz.sha256sha256sum--checkdsh-container-${version}.tar.gz.sha256sha256sum--checkdsh-container-image-${version}-linux-${arch}.tar.gz.sha256在 macOS 中将两条sha256sum --check命令替换为shasum -a 256 --check。在 Windows 中可以在 WSL 内运行上述命令也可以用Get-FileHash -Algorithm SHA256与每个已下载.sha256文件的第一列比较。加载并启动加载镜像解压部署包并启动其中已经打包的 Compose 文件gzip -dcdsh-container-image-${version}-linux-${arch}.tar.gz| docker loadtar -xzfdsh-container-${version}.tar.gzcddsh-container-${version}exportDEEPSEEK_API_KEYyour-keydocker compose up -d --wait--wait-timeout 180docker compose pscurl --fail http://127.0.0.1:4080/PowerShell 可以通过docker load --input dsh-container-image--linux-.tar.gz加载压缩镜像。打包后的 Compose 文件已经引用localhost/deepseek-harness:不要使用--build或docker compose pull运行它。打开。停止与移除命令和从源码构建 Docker 时相同。准备本地 Kubernetes 集群仓库中的 Kubernetes 部署要求 kubectl、带默认 StorageClass 的集群以及每个目标节点都可用的镜像。以下示例使用 Docker 驱动的 Minikube。清单会创建一个副本、5Gi和10Gi两个ReadWriteOnce声明、ClusterIP Service、NetworkPolicy 和健康探针。在 Ubuntu 22.04 或 WSL 2 中安装 kubectl 和 Minikube先安装 Docker然后运行case$(uname -m)inx86_64|amd64)archamd64 ;;aarch64|arm64)archarm64 ;;*)echounsupported Kubernetes client architecture2;exit1 ;;esactools_dir$(mktemp -d)kubectl_version$(curl --fail --show-error --silent --location https://dl.k8s.io/release/stable.txt)curl --fail --show-error --location \https://dl.k8s.io/release/${kubectl_version}/bin/linux/${arch}/kubectl\--output${tools_dir}/kubectlcurl --fail --show-error --location \https://dl.k8s.io/release/${kubectl_version}/bin/linux/${arch}/kubectl.sha256\--output${tools_dir}/kubectl.sha256curl --fail --show-error --location \https://storage.googleapis.com/minikube/releases/latest/minikube-linux-${arch}\--output${tools_dir}/minikubecurl --fail --show-error --location \https://storage.googleapis.com/minikube/releases/latest/minikube-linux-${arch}.sha256\--output${tools_dir}/minikube.sha256(cd${tools_dir}printf%s kubectl\n$(cat kubectl.sha256)|sha256sum--check)(cd${tools_dir}printf%s minikube\n$(cat minikube.sha256)|sha256sum--check)sudo install -m 0755${tools_dir}/kubectl/usr/local/bin/kubectlsudo install -m 0755${tools_dir}/minikube/usr/local/bin/minikuberm-f${tools_dir}/kubectl${tools_dir}/kubectl.sha256\${tools_dir}/minikube${tools_dir}/minikube.sha256rmdir${tools_dir}docker versionkubectl version --clientminikube version在 Windows 或 macOS 中请按照和安装 Docker Desktop、kubectl 和 Minikube然后运行相同的三个版本检查命令。从源码部署 Kubernetes构建并加载镜像Clone 当前 tag、构建镜像、启动 Minikube并将镜像归档加载到其容器运行时gitclone--branch dsh-v0.1.0-rc.12 --depth 1 https://github.com/sdkwork-ai/deepseek-harness-desktop.gitcddeepseek-harness-desktopdocker build -t localhost/deepseek-harness:local.docker save --output dsh-container-local.tar localhost/deepseek-harness:localminikube start --driverdocker --container-runtimecontainerdminikube image load dsh-container-local.tar使用 kind 时先启动 kind 集群再将最后一条命令替换为kind load image-archive dsh-container-local.tar。应用并验证创建必需的 Secret并避免将 key 写入清单然后应用 kustomization 并等待 DeploymentexportDEEPSEEK_API_KEYyour-keykubectl create secret generic dsh-credentials \--from-literalDEEPSEEK_API_KEY$DEEPSEEK_API_KEY\--dry-runclient --outputyaml | kubectl apply -f -kubectl apply -k deploy/kuberneteskubectl rollout status deployment/dsh --timeout180skubectl get pods,pvc,svc在单独的终端中保持以下命令运行kubectl port-forward svc/dsh 4081:4080打开选择工作区并运行任务。在另一个终端中验证curl --fail http://127.0.0.1:4081/部署 Kubernetes Release 离线包下载并加载下载并校验 Docker 离线包说明中使用的同四个 Release 文件然后启动 Minikube 并加载 Release 镜像version0.1.0-rc.12basehttps://github.com/sdkwork-ai/deepseek-harness-desktop/releases/download/dsh-v${version}case$(uname -m)inx86_64|amd64)archamd64 ;;aarch64|arm64)archarm64 ;;*)echounsupported container architecture2;exit1 ;;esaccurl --fail --location --remote-name$base/dsh-container-${version}.tar.gzcurl --fail --location --remote-name$base/dsh-container-${version}.tar.gz.sha256curl --fail --location --remote-name$base/dsh-container-image-${version}-linux-${arch}.tar.gzcurl --fail --location --remote-name$base/dsh-container-image-${version}-linux-${arch}.tar.gz.sha256sha256sum--checkdsh-container-${version}.tar.gz.sha256sha256sum--checkdsh-container-image-${version}-linux-${arch}.tar.gz.sha256minikube start --driverdocker --container-runtimecontainerdgzip -dcdsh-container-image-${version}-linux-${arch}.tar.gz\dsh-container-image-${version}-linux-${arch}.tarminikube image loaddsh-container-image-${version}-linux-${arch}.tartar -xzfdsh-container-${version}.tar.gzcddsh-container-${version}在 macOS 中对两份校验和文件使用shasum -a 256 --check。使用 kind 时将 Minikube 镜像加载命令替换为kind load image-archive dsh-container-image--linux-.tar。应用并验证在解压后的部署目录中创建 Secret 并部署exportDEEPSEEK_API_KEYyour-keykubectl create secret generic dsh-credentials \--from-literalDEEPSEEK_API_KEY$DEEPSEEK_API_KEY\--dry-runclient --outputyaml | kubectl apply -f -kubectl apply -k deploy/kuberneteskubectl rollout status deployment/dsh --timeout180skubectl get pods,pvc,svckubectl port-forward svc/dsh 4081:4080保持 port-forward 运行并打开。使用生产集群Release 不提供官方 registry 镜像。对于多节点或远程集群请先将归档加载到 Docker为镜像添加自有 registry tag 并推送然后在应用清单前更新 Kustomize 镜像替换。每个可能调度到的节点都必须能够拉取所选架构的镜像gzip -dcdsh-container-image-${version}-linux-${arch}.tar.gz| docker loaddocker taglocalhost/deepseek-harness:${version}registry.example.com/deepseek-harness:${version}docker pushregistry.example.com/deepseek-harness:${version}cddeploy/kuberneteskustomize editsetimagelocalhost/deepseek-harnessregistry.example.com/deepseek-harness:${version}kubectl apply -k .kubectl rollout status deployment/dsh --timeout180s该生产示例还需要独立的kustomizeCLI。暴露 Service 前请在configmap.yaml中配置准确的外部 authority并使用提供身份认证和 TLS 终止的 Ingress。DSH_TRUSTED_HOSTS是 Host allowlist不是身份认证。停止或移除移除工作负载并保留持久卷声明kubectl delete deployment/dsh service/dsh configmap/dsh-config networkpolicy/dsh secret/dsh-credentialsminikube stop只有在不再需要其中的会话和工作区时才删除持久卷声明或整个 Minikube 集群kubectl delete pvc dsh-data dsh-workspaceminikube delete安装桌面应用选择安装包打开选择dsh-v0.1.0-rc.12或更新的目标 Release并下载SHA256SUMS以及与操作系统和 CPU 架构匹配的文件。平台架构安装包便携归档Windowsx64 或 arm64DeepSeek-Harness-version-win-arch.exeDeepSeek-Harness-version-win-arch.zipmacOSIntel x64 或 Apple silicon arm64DeepSeek-Harness-version-mac-arch.dmgDeepSeek-Harness-version-mac-arch.zipLinuxx64*-linux-x86_64.AppImage、*-linux-amd64.deb或*-linux-x86_64.rpm*-linux-x64.tar.gzLinuxarm64*-linux-arm64.AppImage、*-linux-arm64.deb或*-linux-aarch64.rpm*-linux-arm64.tar.gz名为latest*.yml和*.blockmap的文件是更新元数据不是安装包。校验下载文件在 Linux 中只校验所选文件因为SHA256SUMS还会列出本地可能没有下载的其他文件version0.1.0-rc.12assetDeepSeek-Harness-${version}-linux-x86_64.AppImageawk -v name$asset$2 nameSHA256SUMS |sha256sum--check在 macOS 中version0.1.0-rc.12assetDeepSeek-Harness-${version}-mac-x64.dmgawk -v name$asset$2 nameSHA256SUMS | shasum -a 256 --check在 Windows PowerShell 中$version0.1.0-rc.12$assetDeepSeek-Harness-$version-win-x64.exe$actual (Get-FileHash-LiteralPath$asset-AlgorithmSHA256).Hash.ToLowerInvariant()$lineGet-Content.\SHA256SUMS |Where-Object{$_-match^[0-9a-f]{64}$([regex]::Escape($asset))$}if($null-eq$line) {throwNo checksum found for$asset}$expected ($line-split\s,2)[0]if($actual-ne$expected) {throwChecksum mismatch for$asset}Write-Output$assetchecksum verifiedRelease 候选版本没有签名Windows SmartScreen、macOS Gatekeeper 或 Linux 桌面可能要求确认。确认操作系统提示前请先验证校验和与仓库来源。在 Windows 中安装运行.exe完成当前用户的交互式安装。如需便携安装请解压.zip并运行dsh-desktop.exe。Intel 或 AMD PC 选择 Windows x64ARM PC 选择 Windows arm64。在 macOS 中安装打开.dmg然后将 DeepSeek Harness 移动到 Applications。如需便携安装请解压.zip并打开其中的应用 bundle。Intel Mac 选择 macOS x64Apple silicon 选择 macOS arm64。未签名的候选版本可能需要从 Finder 右键菜单打开已经验证的应用。在 Linux 中安装在 Debian 或 Ubuntu 中version0.1.0-rc.12deb_archamd64sudo apt install./DeepSeek-Harness-${version}-linux-${deb_arch}.debARM64 系统将deb_arch设为arm64。在 Fedora、RHEL 或其他 RPM 系发行版中version0.1.0-rc.12rpm_archx86_64sudo dnf install./DeepSeek-Harness-${version}-linux-${rpm_arch}.rpmARM64 系统将rpm_arch设为aarch64。AppImage 和 tar 归档是便携安装方式version0.1.0-rc.12appimage_archx86_64tar_archx64chmodxDeepSeek-Harness-${version}-linux-${appimage_arch}.AppImage./DeepSeek-Harness-${version}-linux-${appimage_arch}.AppImagemkdirdsh-desktoptar -xzfDeepSeek-Harness-${version}-linux-${tar_arch}.tar.gz\--strip-components1 -C dsh-desktop./dsh-desktop/dsh-desktopARM64 系统使用appimage_archarm64和tar_archarm64。首次运行、更新与移除打开设置 模型配置提供方选择工作区并创建会话。桌面应用不打开 HTTP 端口。默认关闭窗口后进程仍保留在系统托盘中请使用托盘中的退出命令停止应用。打包后的应用会检查对应的 GitHub Release 渠道。Windows 和 Linux 版本支持自动下载和转交安装程序。未签名的 macOS 版本会打开 Release 页面由用户手动安装。使用操作系统的应用管理器移除通过安装包安装的应用。便携文件或 AppImage 可以直接删除。移除应用不会删除共享的 Harness home。