DeepSeek 已经把 Harness(命令行里叫 dsh)的桌面安装包挂到官网:一项是 macOS(Apple silicon),一项是 Windows(64-bit)。仓库 README 仍把它标成开发者预览,并写明后续会有破坏兼容的改动;2026-10-03 发布的 v0.2.1-alpha.1 已经删掉运行时 invariant 插件。协议上它是 MIT,模型可以走自带目录里的第三方提供商,也可以接到自定义的 OpenAI Chat Completions、OpenAI Responses 或 Anthropic Messages 端点。

安装包现在从哪下

产品页 deepseek.com/en/harness 写着全球公开预览、开源,并用可组合插件扩展 Agent 能做的事。下载链接目前是:

  • macOS(Apple silicon):https://download.deepseek.com/desktop/dsh-latest-macos-arm64.dmg
  • Windows(64-bit):https://download.deepseek.com/desktop/dsh-latest-windows-x64.exe

文件名带 latest,页面本身不钉死版本号。装完后以客户端显示的版本和 GitHub Releases 为准。本文对照的最新预发布是 v0.2.1-alpha.1(Release 页记为 2026-10-03 06:42,页面未标时区)。

不想装桌面端时,README 的路径是先装 Node.js,再在本机拉起 Web UI:

npx @deepseek-ai/dsh web

默认地址是 http://127.0.0.1:3080,本机启动会尝试打开浏览器。SSH 启动只打印主机上的 URL。加上 --no-open 则只起服务。

桌面端从 v0.2.0-rc.2(Release 页 2026-09-29)开始,可以在菜单栏里安装并管理 dsh 命令,用来管插件,不必再单独装 Node 或 pnpm。同一条说明也指出:这条命令要经过 “Manage dsh command” 菜单项才会装上。rc.2 的修复记录里还出现过 macOS Intel 桌面端内置 Node 的签名问题;当前产品页下载项只有 Apple silicon 与 Windows 64 位这两条,不能据此认为现在还提供 Intel 安装包。

插件是运行时本身,创造模式负责把它装进去

README 的架构句是 everything-is-a-plugin,运行时底座是 Cordis。产品页上的自我介绍也是同一句:桌面应用或从代码拉起 Web UI,日常文件与表格、写代码、检索并引用来源、后台脚本,都挂在这套插件运行时上。

创造模式(Creator mode)是产品页给出的扩展入口:可以安装现成插件,也可以在对话里让它写插件,用来加工具、技能和界面。官网示例是直接说「写一个番茄钟插件」,会话里会加载 cordis-plugin-development 技能、写包、再调用插件管理器安装。v0.2.1-alpha.1 在插件管理页加了「让 Agent 创建插件」:点进去会保留草稿并进入创造模式,需求发出去之后才开始执行。

产品页把 Agent teams、Auto approval review、Scheduled tasks、Voice input 标成 Experimental。这里和 Release 有一处时间差:v0.2.1-alpha.1 把自动化任务改成 Web 内置能力,提醒工具只在标准、创造和 PTC 模式提供,极简模式和子代理拿不到;旧的实验组合包选择会自动清掉,已经建好的任务保留。你屏幕上如果还看到独立的 Scheduled tasks 实验插件,以实际安装的版本为准。

同一版还改了默认模式:关掉代码工作视图之后,标准、创造和自定义模式仍可选;内置 PTC 或极简的默认值改成标准,已经存在的会话保持原模式。

Claude Code Mods 兼容层只核对子集

v0.2.1-alpha.1 加了实验性的 Claude Code Mods 兼容层。Release 写得很直白,这一阶段主要是验证 Claude Code Mods API 的能力大体是 DeepSeek Harness 插件能力的子集,并不打算给用户提供完整、可直接使用的兼容。

站里 10 月 3 日已经发过 Mods 本身怎么写:Claude Code Mods:几行 TypeScript 就能改提示、拦工具、画界面。那边讲的是 Anthropic 插件里的 TypeScript 函数。dsh 这边的兼容层不要当成那套 API 的移植教程,官方也没有承诺现有 Mods 能原样跑起来。

预览期已经拆过的接口

README 把破坏性变更写成了硬约束。v0.2.1-alpha.1 的破坏性变更写得很具体:移除运行时 invariant 插件,以及各包的 ./invariant 导出。依赖这些诊断入口的扩展和自定义 profile 必须改。

同一版还有两处会让已有插件对不上号:

  • 子路径插件不再读取独立的 package.json,显示文本和图标必须走对应子路径导出。
  • 输入区统计从整行 stats 拆成 activity 和 usage 两个入口。覆盖旧 stats 行的插件要改注册 ID。

另外,替换已安装包的版本仍需要重启。v0.2.0-rc.2 还把第三方模型目录和兼容适配更新到 pi-ai 0.87.1,一部分旧模型 ID 被拿掉,保存过的选择可能要重选。

接第三方和自定义端点

官方模型文档 Configure models 写了两条路。DeepSeek 自己在设置里填 API Key,密钥只写不回显,存在 $DSH_HOME/.credentials.yaml。添加模型提供商时,卡片默认是目录内的第三方,文档举例包括 openai、anthropic、Kimi 对应的 moonshotai、GLM 对应的 zai。用 OAuth 登录的提供商(文档点名 Codex)这里还不支持。

目录里没有的中转、公司网关或自建服务,改用自定义模型 API。协议三选一:OpenAI Chat Completions、OpenAI Responses、Anthropic Messages,写进当前 profile 的 cordis.patch.yml 时分别是 openai-completions、openai-responses、anthropic-messages。一个提供商只绑一种协议。Provider ID 一旦用于会话和凭据引用就不能改名,要换名字就新建再删旧的。

文档同时提醒:pi-ai 认不出的地址会按 OpenAI 本身来组请求,多数 OpenAI 兼容网关至少会拒绝其中一样。推理模型的系统提示可能被放进 developer 角色,输出上限可能写成 max_completion_tokens。网关不接受时,要在路由上改 compat,例如:

- id: llm-pi-ai
  config:
    providers:
      my-gateway:
        apiKeyEnv: GATEWAY_API_KEY
        api: openai-completions
        baseURL: https://gateway.example/v1
        compat:
          supportsDeveloperRole: false
          maxTokensField: max_tokens
        models:
          - id: my-model

模型发现走的是 OpenAI 兼容的 GET /models。端点不提供这个接口,或返回格式对不上,就手工填模型 ID。配置在下一次请求生效,不必为了改模型重启服务。

若已经写了插件或自定义 profile,升级到 v0.2.1-alpha.1 之前先查三处:还有没有 ./invariant,子路径插件是否还靠独立的 package.json 提供显示文本和图标,以及有没有插件注册在旧的 stats 入口上。

— 感谢阅读 —

一起交流

分享你的思考,让讨论更进一步。