DeepSeek Harness 桌面版预览:一切皆插件

DeepSeek Harness 桌面版预览:一切皆插件

如果你之前想试试 DeepSeek Harness,多半卡在第一步:先装 Node.js,再开终端敲 npx @deepseek-ai/dsh web,然后浏览器打开 127.0.0.1:3080。

对开发者这没什么,对其他人来说,这一步就劝退了大半。

现在这一步没了。桌面版预览已经上线官网,macOS 和 Windows 各一个安装包,下载、双击、打开。

一、先说结论:它和命令行版是同一个东西

有一点必须先讲清楚,否则容易误解。

桌面版不是另起炉灶的独立产品,它是把官方 Web UI 装进了一个原生窗口里。底层完全是同一套:同样的插件体系、同样的会话记录、同样的权限确认机制。你在命令行版里配好的会话、配置、插件,桌面版里直接就是通的。

换句话说:变的是外壳,不是内核。桌面版的价值不在于多了什么能力,而在于把「使用它」的门槛从「会敲命令」降到了「会双击」。

二、设计理念:一切皆插件

要理解 Harness 和别的智能体工具差在哪,得先理解它挂在官网第一行的那句话:Everything is a Plugin。

「一切皆插件」的分层结构:界面层、能力层、运行时层,以及底层的 Cordis 框架

这不是一句营销口号,它有几个很具体的后果:

说法具体含义
连 agent loop 本身都是插件不只是「工具」可以扩展。智能体循环、模型适配器、会话日志、工具注册表,全都可以从配置里替换掉
没有特权核心没有一层「内核代码」是你动不了的。扩展方式是把插件挂在旁边,而不是改核心
注册自动撤销通过上下文注册的东西——事件监听、工具、定时器——在插件卸载时自动清理,不需要手动写 removeListener
依赖声明式就绪插件声明自己依赖哪些服务,框架会等依赖就绪后才加载它

支撑这套设计的是底层框架 Cordis,它的定位是「插件向共享上下文贡献服务、类型化事件和可撤销的副作用」。

这套设计的现实意义在于:换模型、加工具、改界面,都不需要动核心代码。这也是它能在短时间内长出大量第三方插件的原因——后面会讲这个数字有多大。

三、桌面版比命令行版多了什么

命令行版桌面版
安装先装 Node.js,再用 npx 拉包下载安装包,双击安装
启动终端敲命令点图标
界面浏览器打开 127.0.0.1:3080独立窗口
后台常驻终端一关,服务就停托盘常驻,关掉窗口任务照跑
完成通知无,得盯着任务完成弹系统通知
主题跟随浏览器跟随系统深浅色
更新手动自动

这七项里,真正改变使用方式的其实只有两项:

托盘常驻。智能体跑一个任务动辄几分钟。命令行版下你关掉终端服务就停了,桌面版关掉窗口它还在后台跑,想起来了点开看进度。

完成通知。这是「能不能放心走开」的关键。以前你要么盯着屏幕,要么过一会儿回来看一眼;现在任务跑完会弹通知,中间这段时间可以干别的。

四、下载与安装

官方下载页:https://www.deepseek.com/en/download/

系统要求(有一个坑要注意)

系统要求
macOS仅支持 Apple 芯片,macOS 13 或更新
Intel Mac暂不支持(官网明确标注)
WindowsWindows 10 或更新,64 位
用 Intel 芯片 Mac 的话,这一版装不了,别浪费时间找安装包。

安装包信息

平台文件名大小
macOS (Apple 芯片)dsh-latest-macos-arm64.dmg约 353 MB
Windows (64 位)dsh-latest-windows-x64.exe约 276 MB

安装方式就是常规操作:macOS 打开 DMG 把应用拖进「应用程序」;Windows 运行 EXE 按提示装完。

五、第一次打开:三步

步骤怎么做
1. 配置模型打开 设置 → 模型,在 DeepSeek 卡片里填入 API 密钥并保存。不用重启,下一次请求就生效
2. 选择工作区点「选择工作区」,添加一个项目目录并选中
3. 发任务建一个会话,直接说需求,比如让它总结一个仓库

⚠️ 新手最容易卡住的地方

没选工作区之前,会话输入框是用不了的。很多人装完打开发现打不了字,以为是装坏了——不是,选上工作区就好。

一个值得知道的安全设计

API 密钥是只写的:保存之后,界面只会收到一个脱敏的描述符,永远拿不到明文。密钥存在 $DSH_HOME/.credentials.yaml 里,设置文件只保留一个引用。

另外,高危操作(删除文件、执行带权限的命令)照旧会先弹确认框,桌面化并没有削弱安全机制,你不点头它不动手。

六、插件:生态有多大,怎么玩

先给个量级感:

指标数据
官方仓库 Star 数约 21.2 万
GitHub 上带 dsh-plugin 标签的公开仓库约 1.5 万个
使用第三方插件的用户占比约 60%(官方按模型 API 用户口径统计)

插件有三层玩法,门槛依次升高:

层级怎么做适合谁
① 用官方的在插件管理页的「官方」分组里直接开启,比如自动化任务所有人
② 装别人写的插件管理页可以直接输入插件包名安装,也能停用、卸载、查看介绍与来源想扩展能力但不想写代码
③ 让 AI 自己写在「创造模式」(实验性)里用对话描述需求,它自己写、自己装、自己验证有具体想法的人

关于第三种,官网有个挺有说服力的演示:让它写一个「番茄时钟」悬浮插件,从加载技能、查阅运行时接口、写文件到安装验证,全程 5 分 24 秒,人只提了一句话。

如果你要自己写插件

插件的本体比想象的短——一个导出 apply 函数的 TypeScript 模块就是全部:

export const name = 'my-plugin'
export function apply(ctx) {
  // 在这里注册能力
}

支持函数、对象、类三种写法,多数场景用函数形式就够。需要向其他插件提供服务时才用类形式。

七、几项实用技巧

技巧 1:接自己的模型或中转站

除了 DeepSeek 官方,还能接入第三方提供商。在「添加模型提供商」卡片里可以选内置的(比如 Anthropic、OpenAI、Kimi、GLM),直接填密钥即可。

更实用的是「自定义模型 API」——中转站、公司网关、自建服务器都能接。需要填四项:Provider ID、基础 URL、API 协议、至少一个模型。

协议选项什么时候选
OpenAI Chat Completions最常见,多数网关和自建服务用这个
OpenAI Responses网关用的是这套接口时
Anthropic Messages接 Anthropic 风格的服务
⚠️ 一个容易踩的坑:API 协议必须和网关实际使用的那一种对上。一个提供商只能用一种协议——如果你的网关同时提供两种,需要建两个提供商。

另外,Provider ID 一旦确定就是永久的,因为请求、已保存的会话、模型默认值和凭据引用都会用到它。想改名只能新建一个再删掉旧的。

不知道网关提供哪些模型?卡片里有「获取可用模型」,会去问端点。但这个功能只是便利手段,不是保证——遇到不按常见格式作答的端点,手动填模型 ID 效果完全一样。

技巧 2:网络代理要设对地方

这是最常遇到的困惑:「我浏览器能上,为什么它不行?」

原因是根本不存在一个所有软件都遵循的「系统代理」,实际上是三套互不相干的机制:

机制谁遵循
操作系统的代理设置浏览器和多数原生应用
HTTP_PROXY / HTTPS_PROXY 环境变量curl、git、npm,以及 Harness
TUN 模式(虚拟网卡)所有程序,对应用透明

常见代理软件里的「系统代理」开关只写第一套。浏览器读得到,命令行工具永远看不到——这就是为什么它不走代理。

解决办法二选一:导出环境变量(HTTPS_PROXY 和 HTTP_PROXY),或者直接开 TUN 模式(后者对所有程序生效,且完全不需要变量)。

几个值得记住的限制:

限制说明
不支持 SOCKS 代理socks5:// 会在启动时被报告并跳过。要指向代理软件的 HTTP 端口
NO_PROXY 不支持 CIDR 网段10.0.0.0/8 这类写法无效,要用主机名或域名后缀
localhost 不用列本地地址始终直连,否则它自己的界面都会绕回环
企业 TLS 拦截代理需要额外指定组织的 CA 证书,且必须在启动前设置

技巧 3:把重复工作设成定时任务

「自动化任务」是一个需要手动开启的插件。开好之后,直接用自然语言创建提醒即可,底层会用到创建、列出、修改、删除这几个操作。

支持的调度方式相当全:

类型适用场景
延迟若干秒「20 分钟后提醒我」
绝对日期时间「明天上午 10 点」
固定间隔「每 2 小时检查一次」
每日 / 每周本地时间「每周五 17:00 整理周报」
cron 表达式需要复杂规则时
一个小建议:用自然语言描述时间有歧义时,把时区写明确,比如「每天 Asia/Shanghai 时区 23:00 提醒我查看天气」。不写的话它会用浏览器时区来理解。

还有一个容易被忽略的好设计:会话没打开时,提醒照样在保存。到点了会恢复原来的会话把消息排进去,不会打断你在做的事情。

技巧 4:接一个记忆系统,让它跨会话记事

官方提供了三份默认关闭的参考配置,用来接入第三方记忆服务:

记忆系统前置条件特点
MemorixNode 22.18+无需模型或向量服务,本地启发式模式可跑
MCP 官方参考记忆直接安装即可存本地知识图谱;只做子串匹配,不是语义检索
EngramGo 1.25.10+自动检测 Git 项目做隔离

这几份配置只是互操作参考,不代表官方认可或推荐。而且 Harness 只负责连接和发现工具,不负责帮你装服务、初始化数据库、选向量模型或建云端账号。

有个安全细节做得不错:启动这些子进程前,会主动移除名称通常表示凭据的环境变量和所有自身前缀的变量,避免密钥被顺走。

八、优缺点

优点说明
门槛大幅降低不用装 Node.js,不用碰终端,双击即用
后台常驻 + 完成通知任务跑着你可以走开,跑完弹通知
与命令行版完全互通会话、配置、插件都是通的,两个一起用也不冲突
插件生态活跃约 1.5 万个带标签的公开仓库,且能对话生成插件
安全机制没被削弱高危操作照常弹确认框;密钥只写不读
架构可替换性强连智能体循环都能换,长期演进空间大
缺点 / 限制说明
仍是开发者预览官方明确说会有破坏性更新,不建议拿来跑生产
不支持 Intel Mac官网明确标注,只能 Apple 芯片
没有 Linux 官方包官方口径是 macOS + Windows
版本号带构建日期走的是 nightly 通道,不是稳定版节奏
部分能力还在路上沙箱、智能体团队、长期记忆、浏览器自动化、移动端都还在规划中
OAuth 登录的提供商暂不支持目前需要 API 密钥方式

九、两个必须提醒的点

提醒具体做法
升级前备份数据有版本会做一次性数据迁移(设置文件被导入改名、会话日志升级)。升级前先把数据目录整个复制一份
只从官方渠道下载社区里有若干第三方封装版本。非官方包通常没有代码签名,macOS 未公证、Windows 会弹 SmartScreen 提示。要装就装官网的

写在最后

桌面版这件事,技术含量其实不高——就是把 Web UI 套了个原生壳。但它的意义不在技术,而在它把「谁能用」这个问题的答案扩大了。

命令行版本质上假设使用者是开发者:你得知道 Node.js 是什么、终端在哪、端口是什么意思。桌面版把这些假设全部去掉了,剩下一个双击。

而底层那套「一切皆插件」的架构,决定了它不会因为外壳变简单而能力缩水——门槛降低的是入口,不是上限。

当然,官方那句「仍在起步阶段」也得当真。它会变、会breaking、会有功能没做完。拿来尝鲜和探索很合适,拿来跑正经生产还得再等等。