DeepSeek Harness(DSH)全面介绍与上手指南
讲清 DeepSeek Harness 是什么、怎么用 npx 启动 Web UI、接入 DeepSeek 或其他模型、默认权限和沙箱边界,以及社区非官方的 DSH Go 安卓客户端,均链接官方文档。
核验日期:2026-11-09。本文依据 DeepSeek Harness 仓库的 README、安全说明和用户文档,以及 DSH Go 仓库的 README 整理。本站尚未实际安装运行这两个项目,文中的命令和界面路径都来自官方文档,没有经过我们自己验证。DSH 目前是开发者预览版(核验时 npm 上最新为 0.2.2-rc.1),官方明确说会有破坏兼容性的变更,命令以文中链接的原文为准。
DeepSeek Harness(命令名 dsh)是 DeepSeek AI 开源的 agent harness(智能体运行框架):它不是一个新模型,而是一套让模型读写文件、执行命令、调用工具、维护计划的运行环境。官方的设计口号是“一切皆插件”,底层用的是 Cordis 插件框架。日常使用最直接的入口是一个本机 Web UI,另外还有无界面的 headless、SDK、ACP 等运行模式。
DSH Go 则是社区开发者做的非官方 Android 客户端,它的 README 写明与 DeepSeek 无关联。它可以在手机里装一套 Linux 环境直接跑 DSH,也可以连到你电脑或服务器上的 DSH。本文先讲官方 DSH,再讲 DSH Go,最后说明两者的关系。
如果你想先看源码审查结果,见 DeepSeek Harness 资料页 和 DSH Go 资料页。
先看安全说明
官方仓库要求运行前先读 SAFETY.zh.md。要点如下(以下为官方原意的转述):
- DSH 是实验性的开发者预览软件,没有做过安全审计,不能当作安全或可用于生产的软件。
- 它会执行模型生成的代码和命令,加载第三方插件,并能访问提供给它的网络、进程、凭据和文件。模型出错、程序缺陷、配置错误、恶意输入或不可信插件,都可能损坏主机、删改文件或泄露数据。
- 沙箱、审批和权限控制能降低风险,但不保证隔离。
- 官方建议用最小权限运行,优先放在一次性的虚拟机、容器或专用环境里,并备份它能访问到的文件。
我们的建议是:第一次试用时,开一个只放测试项目的目录,或者直接在虚拟机里跑。
第一步:安装并启动 Web UI
官方给了两种方式,都需要 Node.js。仓库 package.json 和 npm 包里声明的 Node 版本要求是 >= 24.9.0,版本太旧可能无法启动,先用 node -v 确认。
用 npm 直接运行(推荐先试这个):
npx @deepseek-ai/dsh web
默认会在 http://127.0.0.1:3080 启动 Web UI,本机启动时会自动打开浏览器;加 --no-open 只启动服务、不开浏览器。通过 SSH 在远程机器上启动时,它只打印地址,因为本地转发的端口由你的 SSH 客户端或编辑器决定。
从源码运行:
git clone https://github.com/deepseek-ai/deepseek-harness.git
cd deepseek-harness
pnpm install
pnpm run build
pnpm dsh web
pnpm run build 负责准备构建产物,pnpm dsh web 直接使用这些产物,不会重新构建。仓库锁定的包管理器是 pnpm 11。见 官方 README。
注意你在哪个目录启动。 dsh 会把启动时所在的目录当作默认的文件位置,所以请在你打算让它工作的项目目录里运行命令,而不是在主目录里。
第二步:配置模型
Web UI 启动后,打开 设置 → 模型:
- DeepSeek:在 DeepSeek 卡片里填入 DeepSeek 开放平台 的 API 密钥并保存,立即生效,不用重启。
- 其他提供商:选择“添加模型提供商”,列表里有
anthropic、openai、Kimi 对应的moonshotai、GLM 对应的zai等内置项,填 key 即可。 - 中转站、公司网关或自建服务:切到“自定义模型 API”,填 Provider ID、基础 URL、协议和模型。协议只有三种可选:OpenAI Chat Completions、OpenAI Responses、Anthropic Messages,必须选网关实际使用的那种。Provider ID 创建后不能改,想改名只能新建一个再删掉旧的。
密钥在页面上是只写的,保存后不会再显示明文,存放在 $DSH_HOME/.credentials.yaml。用 dsh web 启动时,模型等设置写在 $DSH_HOME/profiles/web/cordis.patch.yml,也可以直接编辑这个文件。
费用方面:DSH 软件本身按 MIT 许可证免费,模型调用按你所用提供商的价格计费,本文不列具体价格。见 官方模型配置指南。
第三步:选择工作区,跑第一个任务
全新的 Web UI 没有选中任何工作区,选中工作区之前输入框是不可用的。点“选择工作区”,添加你启动 dsh 时所在的项目目录并选中,然后新建会话。官方示例让它先做一件只读的事:
Summarize this repository and identify its main packages.
官方文档说,Agent 可以读写工作区文件、运行命令、委派子任务和维护计划;遇到当前权限策略要求审批的操作时,Web UI 会先询问你。见 Web UI 指南。
权限和沙箱:默认是什么,边界在哪
DSH 把“沙箱模式”和“审批策略”打包成几个预设,在界面上作为一个权限选择器出现。根据 权限预设文档,默认配置有两项:
| 预设 | 沙箱模式 | 审批 | 含义 |
|---|---|---|---|
workspace-write |
只允许写工作区(及显式加入的目录、临时目录) | 需要审批时询问 | 日常使用的起点 |
danger-full-access |
不做文件限制 | 从不询问 | 完全放开,只适合一次性环境 |
另有一个实验性的 Auto 选项(由 Auto review 插件提供),组合是完全放开的文件访问加上需要时询问。
要清楚沙箱管的范围。根据 沙箱文档:
- 沙箱只约束文件写入,网络访问和进程可见性不在它的管控范围内。
- 后端是 Linux 的 bwrap/Landlock、macOS 的 Seatbelt 和 Windows 的 ACL 受限令牌;较旧的 Landlock 版本和 Windows 后端属于“部分强制执行”,不能当作绝对边界。
所以,即使用的是 workspace-write,也不要在它能访问的环境里放生产凭据。
其他运行方式
dsh web 只是其中一种入口。根据 CLI 文档,同一个 dsh 命令还能这样用:
| 命令 | 用途 |
|---|---|
dsh --profile headless "任务描述" |
无界面运行一次任务,打印最终答复后退出,适合脚本和 CI |
dsh --profile sdk |
通过 stdio 的 JSON-RPC 对接 SDK 客户端(另有 Python SDK) |
dsh --profile acp |
通过 ACP 协议对接自动化客户端 |
dsh plugin --profile <名称> <pnpm 参数> |
管理某个 profile 的插件 |
插件就是普通的 npm 包,官方鼓励插件作者给仓库打上 dsh-plugin 话题。安装第三方插件前要看清来源:安全说明把不可信插件列为主要风险之一。仓库里还有 Electron 桌面端源码(apps/desktop),但核验时最新的 GitHub Release 没有附带安装包。
想在别的设备上访问 Web UI?
Web UI 默认只监听本机回环地址,其他设备访问不到。官方的做法是在前面放反向代理,并用 --public-url 和 --trusted-host 告诉 DSH 外部地址,或者用 --tls-cert、--tls-key 让它自己提供 HTTPS。启动时打印的链接里带有访问令牌,只发给你信任的人,也不要用明文 HTTP 暴露到公网。见 反向代理部署文档。
DSH Go:在 Android 手机上用 DSH
DSH Go 是社区开发者 ccch1mneyyy 做的 Android 客户端,用 Flutter 编写,主体代码为 AGPL-3.0,sdk/ 和 examples/ 为 MIT。它的 README 写明:这是社区开发的非官方项目,与 DeepSeek 无关联。核验时最新版本为 v1.0.13。
它有两种用法:
- 手机本机运行:在 App 内安装 Ubuntu、Node.js 和 DSH 运行环境,不需要 Root 或 Termux,需预留约 1 GB 空间。注意:引擎在手机上,模型请求仍然发给你配置的模型提供商,需要联网,也照常计费,本机运行不等于离线。
- 遥控电脑上的 DSH:通过 SSH 或社区项目 DSHarness Remote 连接电脑或服务器上的 DSH。只连远程时,手机上不必安装本机环境。README 说明,走 DSHarness Remote 时功能较少:只支持图片附件,不能在 App 内打开网页版,插件管理只能开关。
安装:要求 Android 8.0 及以上。从 GitHub Releases 下载 APK,常见手机选 arm64 包,没有 32 位 ARM 版本。它不在 Google Play 上,需要允许“安装未知来源应用”;目前也没有 iOS 和鸿蒙版本。手机上装过签名不同的早期测试包时不能直接覆盖安装,卸载旧版会清空对话、Linux 环境和设置。
使用前要知道的几件事(均来自 DSH Go README):
- “发送匿名使用统计”默认开启,可在首次引导或“设置 → 隐私与分享”里关闭。
- “手机操控”功能开启后,本机引擎可以读屏幕、点按和输入;任务需要的屏幕文字可能发给模型,支持看图的模型还可能收到截图。作者建议不要在存有支付或银行信息的设备上解除限制。
- 分享链接是端到端加密的,但拿到完整链接的人可以读取并保存内容。
两者是什么关系,该用哪个
| DeepSeek Harness(DSH) | DSH Go | |
|---|---|---|
| 开发者 | DeepSeek AI 官方 | 社区开发者,与 DeepSeek 无关联 |
| 是什么 | Agent 运行框架本身 | 运行或连接 DSH 的 Android 客户端 |
| 运行在哪 | 电脑或服务器(Node.js) | Android 手机(本机运行或遥控电脑) |
| 许可证 | MIT | AGPL-3.0(sdk/、examples/ 为 MIT) |
| 分发方式 | npm 包,或从源码构建 | GitHub Releases 上的 APK 侧载 |
| 版本状态 | 开发者预览,核验时 GitHub 上只有预发布版本 | 核验时为 v1.0.13,发版频繁 |
简单说:DSH Go 不替代 DSH,它跑的就是 DSH。先在电脑上用 npx @deepseek-ai/dsh web 把官方 Web UI 跑通,确认模型和权限设置都没问题,再考虑要不要用 DSH Go 在手机上接着用。只想在手机浏览器里临时看一眼的话,官方 0.2.2-rc.1 的发布说明提到 Web UI 已经改进了手机和平板适配,配合上面的反向代理方式也可以用,但同样要注意访问令牌的安全。
常见问题
DSH 是一个新模型吗?
不是。它是运行框架,需要你自己接入模型。默认推荐 DeepSeek API,也可以接 Anthropic、OpenAI、Kimi、GLM 或任何兼容上述三种协议的网关。
为什么 DSH 没出现在本站“本周正式版本”里?
核验时 DSH 在 GitHub 上发布的都是预发布版本(alpha、rc),而 趋势页 的“本周发布新版本”只统计正式版本。
能用于生产吗?
官方安全说明的原话是不能把它当作安全或可用于生产的软件,而且开发者预览期间会有破坏兼容性的变更。
DSH Go 是 DeepSeek 出的吗?
不是。DSH Go 的 README 明确说它是社区开发的非官方项目,与 DeepSeek 无关联,也不代表 DeepSeek。