Skip to content

DeepSeek Harness Plus 0.3.0

Choose a tag to compare

@SparkElf SparkElf released this 18 Aug 16:40
· 3360 commits to master since this release
a66fc2a

DeepSeek Harness Plus 0.3.0

中文

DeepSeek Harness Plus 0.3.0 是 0.2.0 之后桌面安装、运行与数据管理体验的完整收束版本。它把"安装—配置—启动—备份—开机自启—退出"这条日常链路里所有已发现的断点补齐:安装向导不再需要从头填写、端口冲突可以当场解决、构建与启动不再弹出空控制台、安装完成后托盘与 Harness 服务常驻、用户设置和数据可以一个压缩包带走并在 WSL 与 Windows 之间迁移。同时版本号与安装器克隆的提交开始一一对应。

谁适合安装或升级

  • 正在使用 0.1.x / 0.2.x 的 Windows 桌面用户,尤其是曾被安装向导、端口占用、控制台窗口困扰的用户。
  • 需要迁移或定期备份 Harness 设置、模型配置、密钥与会话数据的用户。
  • 希望开机自动启动 Harness、或希望安装完成后托盘与服务自动常驻的用户。
  • 在 WSL 中运行 Harness、但希望托盘始终在 Windows 的用户。

完整功能变化

1. 安装向导全流程预填与重配置

此前每次打开安装向导都要从头填写安装目录、端口、代理与 API 密钥。现在:新安装时安装目录默认填到<托盘安装目录>\dsh;重新配置时安装目录、四个端口、代理全部从已保存的 runtime 回填,覆盖选项默认勾选;当目标目录已有凭据文档时 API 密钥变为可选(安装器从不覆盖已有凭据)。托盘新增"重新配置安装…"入口,无需重装即可重进向导。安装完成页提供"运行初始化设置"复选项,勾选后应用启动即弹出安装向导,即使已有 runtime 配置。

使用方式:

  1. 运行安装程序,完成页勾选"运行初始化设置"。
  2. 向导各页确认预填值(目录、端口、provider/model、密钥可选)。
  3. 安装完成后浏览器自动打开 Harness,托盘常驻系统托盘。

2. 目录选择器支持选盘符

安装目录的"选择文件夹"浏览器此前只能从用户目录逐级进入,无法换盘。现在 Windows 上浏览器以虚拟盘符层打开,顶层即 C:、D:、E:… 列表,可直接选盘再进入目录,也可一路返回盘符层。

3. 端口占用弹窗与旧服务自动替换

此前端口被占用只有一句报错,且旧 Supervisor 会按旧端口继续服务,导致"填了 3085 却侦测 3080"。现在:安装/启动时端口被占用会弹窗显示占用进程名与 PID(进程名不可用时给出裸 PID),可选择"结束进程并继续";配置端口与存活 Supervisor 不一致时,daemon 先请旧实例 shutdown,旧版本不识别该命令时按命令行强杀,再由新配置拉起新 Supervisor。

4. 备份与恢复(设置页 + 托盘)

设置页新增"备份"分区,托盘提供"备份与恢复…"入口:导出把用户设置(含 provider/模型配置)、凭据(密钥明文本身)、storages 打包为一个 zip;导入先校验清单标记与路径安全(拒绝绝对路径、反斜杠、..),通过后才停止 Harness、同名覆盖恢复、原本在运行则自动重启。运行时生成的 profilessupervisor 日志不包含在内。压缩包经仅回环的 HTTP 路由流式传输(下载/上传),不再 base64 进 JSON,大 home 不再爆内存。WSL 目标经 \\wsl.localhost UNC 访问,压缩包可在 WSL 与 Windows 安装之间迁移。

使用方式:

  1. 设置页 → 备份 → 导出备份压缩包(浏览器下载 zip)。
  2. 新环境:设置页 → 备份 → 选择压缩包并导入 → 确认覆盖。
  3. 状态行显示导出/导入结果;无效压缩包以本地化文案拒绝且不影响运行中的 Harness。

5. 无控制台启动与构建

托盘"启动 Harness"此前会留下常驻 CMD 窗口;构建阶段也会弹出空终端。现在 Supervisor 直接以 node --import tsx/esm 启动 Web(绕过 pnpm 的 cmd.exe 链),构建五阶段(tsc host/client、tsdown host/client、vite build)直接经 node 执行,全程 windowsHide,任何构建/启动路径都不再弹控制台。

6. 托盘常驻、退出与进度通知

安装向导关闭后托盘与 Harness 服务此前会一起消失(Electron 默认最后窗口关闭即退出,而 Supervisor 以 utilityProcess 随应用生命周期)。现在托盘应用驻留到用户主动"退出";退出项显示"正在退出…"提示、8 秒宽限内尽力停止 runtime、失败或超时也照常退出且不弹错误框;托盘操作经气泡通知宣告开始/完成/失败,daemon 阶段文案进入托盘 tooltip,长操作不再无声。

7. 开机自启动

托盘新增"开机自动启动"复选项:Windows(含 runtime 目标为 WSL 的情况,托盘应用本体始终在 Windows)写入登录项注册表项;Linux 桌面写入/删除 XDG autostart .desktop 条目;每次重建托盘时读回勾选状态。

8. 版本号与克隆提交对应

此前安装器烘焙构建时最新提交,0.2.0 名下累积了所有后续 PR。现在构建提交若打着 plus-v* release tag,安装器克隆该 tag,版本号与克隆提交一一对应;本版本版本号升至 0.3.0。

9. 分支整合

#14 将六个历史分支合入 master,用户可见部分已在上文各小节完整说明;其余为 CI 打包工作流与文档整理。

10. 持久 bash 每条命令约 3.5 秒停顿的修复

此前持久 bash 工具用自有标记覆盖了 PS1,终端后端的提示符就绪路径永远匹配不上,每条命令都要等满 idleSilenceMs 静默窗(约 3.5 秒)才返回。现在 shell 初始化时重新声明后端的受控提示符,命令即时响应;默认静默配置保持不变,并以桩契约测试和真实 Loader 组合测试钉住该对齐。使用 shell/持久终端的用户升级后每条命令直接省去约 3.5 秒等待。

11. 设置页子代理(Subagent)设置

设置页插件分区新增子代理卡片:可为子代理配置 persona、工具过滤与委派深度等默认值;子代理默认编排改由插件配置承载。此前这些只能改文件,现在在设置页可见、可改、即时生效。

12. OpenAI Responses 网关兼容、模型能力开关与自定义 provider

模型设置与网关链路支持 OpenAI Responses 兼容 provider:请求按 Responses 协议构造,返回的多种 reasoning 状态被统一清理为 Harness 可展示的状态,兼容网关不再因未知状态报错或显示异常。模型页新增逐模型"支持图片输入"能力开关与"中转站兼容模式"(不向网关发送 reasoning 输入状态,避免中转站报错);"高级"区更名为"模型能力"。自定义 provider 编辑器补全名称/baseURL 校验与模型列表编辑,Responses 兼容中转站可在页面完成配置。

13. 安装器与托盘视觉重设计

按统一前端设计规范重做了安装器与托盘相关界面:安装器窗口表面统一、按原生卡片比例预览、provider 设置流程精简、选择控件打磨、设置页下拉样式对齐。视觉变化不改变任何配置语义。

14. Windows 打包 CI 与仓库/流程/代理工具(内部)

每个 master/PR 构建都经 Windows NSIS 工作流产出安装包工件,Release 附件即来自该流水线。#7#11 为流程与文档批次:release notes 双语完整性标准、PR 合并收尾流程、README 去重、以用户反馈定义边缘案例,以及 architecture-planning、code-review、implementation 等技能调整;仓库代理技能新增 harness-frontend-design、pr-authoring、pr-merge-closeout、release-notes-authoring(含模板)、fast-artifact-downloads。这些面向维护流程与代理,不改变产品行为。

用户流程或迁移说明

  1. 卸载或覆盖安装均可:直接运行 0.3.0 安装包,勾选覆盖安装并保留用户数据。
  2. 完成页勾选"运行初始化设置",确认预填配置后完成向导。
  3. 确认托盘图标常驻、浏览器打开的端口可访问;托盘"备份与恢复…"可导出第一个备份包。
  4. 从 WSL 迁移:在 WSL 环境的设置页导出备份包,Windows 新安装导入即可。

从上一版本升级后的主要变化

上一版本 当前版本
安装向导每次从头填写 目录/端口/代理/覆盖预填,密钥可选
选文件夹无法换盘 顶层盘符列表可选任意盘
端口占用仅报错 弹窗显示占用进程,可结束并继续
安装完成后托盘与服务消失 托盘常驻,服务随托盘存活
启动/构建弹空控制台 全程无控制台窗口
设置/密钥无法整体迁移 备份/恢复一个压缩包,WSL↔Windows 可迁移
0.2.0 累积所有后续提交 版本与克隆提交一一对应

下载与平台支持

平台 文件 大小 校验值或签名状态
Windows x64 DeepSeek Harness Plus Setup 0.3.0.exe — 见本 Release 附件 96,197,116 bytes SHA-256 28708eb2d80ffe471e261c658600fa81744b80f672dd8bee1d85e0b6377a04ec,未签名

Linux(AppImage/deb)与 macOS(dmg)目标可由源码构建;本 Release 仅附 Windows 安装包。安装包未签名/未公证,首次运行可能触发 SmartScreen 提示。

兼容性与使用限制

  • 0.1.x/0.2.x 的 runtime 数据(settings、凭据、storages)可直接覆盖升级保留。
  • 备份导入按同名覆盖,未包含的文件保留;导入前自动校验,无效包不影响运行中的 Harness。
  • 备份不含运行时生成的 profilessupervisor 日志。
  • 开机自启动在 Linux 依赖 XDG autostart;无显示环境不适用。
  • 旧版本 Supervisor 的替换依赖命令行特征匹配强杀,极端权限受限时由后续启动报错暴露。

本版本不包含

  • macOS 公开安装包与安装包签名/公证。
  • 自动更新通道(仍通过托盘"版本管理…"手动升级)。
  • 备份包的加密或云端存储。
  • 图片生成与完整模型能力矩阵(本版本仅交付设计文档与"支持图片输入"等开关)。

验证证据

  • Windows CI(windows-latest)Playwright Electron 套件三个用例全绿:安装器交互、完整原生安装并启动 Supervisor、备份导出/导入 UI 闭环(含标记校验、篡改恢复、密钥明文断言)。
  • 用户于 2026-08-18 在真实 Windows 环境验收通过:安装向导预填、托盘常驻、3085 可访问、备份/恢复、开机自启动、端口弹窗、无控制台。
  • 每次合入均经 Windows NSIS 工作流打包;Release 附件 SHA-256 与 CI 产物一致。

关联改动

  • PR #13#30(安装器修复、备份、托盘体验、版本对应):https://github.com/SparkElf/deepseek-harness-plus/pulls?q=is%3Apr+is%3Amerged+13..30
  • Tagged source:https://github.com/SparkElf/deepseek-harness-plus/tree/plus-v0.3.0

English

DeepSeek Harness Plus 0.3.0 closes out the desktop install/run/data-management loop that 0.2.0 opened. Every discovered break in the daily chain — install, configure, start, back up, launch at login, quit — is fixed: the wizard no longer starts from blank fields, port conflicts are resolvable on the spot, builds and launches no longer pop empty consoles, the tray and Harness service stay resident after the wizard closes, and user settings plus data travel as one zip that migrates between WSL and Windows. Version numbers now correspond to the commits installers clone.

Who should install or upgrade

  • Windows desktop users on 0.1.x / 0.2.x, especially anyone blocked by wizard friction, port conflicts, or console windows.
  • Users who need to migrate or periodically back up Harness settings, model configuration, keys, and session data.
  • Users who want Harness to launch at startup, or the tray and service to stay resident after installation.
  • Users running Harness inside WSL while keeping the tray on Windows.

Complete feature and behavior changes

1. Wizard prefill and reconfiguration

Previously every wizard run started from blank directory, ports, proxy, and API key. Now: fresh installs default the installation folder to <tray install dir>\dsh; reconfiguration prefills the directory, all four ports, and the proxy from the saved runtime with overwrite checked; the API key becomes optional when the target already stores a credentials document (the installer never overwrites credentials). The tray offers "Reconfigure installation…" to reopen the wizard without reinstalling, and the finish page's "Run initial setup" checkbox reopens the wizard at next launch even when a runtime exists.

How to use it:

  1. Run the installer and tick "Run initial setup" on the finish page.
  2. Confirm the prefilled values (folder, ports, provider/model, optional key).
  3. After completion the browser opens Harness and the tray stays resident.

2. Drive picker in the directory browser

The install folder browser previously could not switch drives. On Windows it now opens on a virtual drives level listing C:, D:, E:… so any drive is selectable, and you can navigate back up to the drives level at any time.

3. Port-occupancy dialog and stale-supervisor replacement

Previously an occupied port produced only an error, and an old Supervisor kept serving its old ports ("typed 3085 but it probed 3080"). Now an occupied port raises a dialog naming the holding process and PID (bare PID when unnamed) with an end-and-continue option; when a live Supervisor's configured ports differ, the daemon asks it to shut down and force-kills builds too old to know the shutdown command, then starts a fresh Supervisor from the new manifest.

4. Backup and restore (settings page + tray)

The settings dialog gains a Backup section and the tray a "Backup and restore…" entry: export packs settings (including provider/model configuration), credentials (the key values themselves), and storages into one zip; import validates the manifest marker and path safety (absolute paths, backslashes, .. rejected) before stopping Harness, overwrites same-named files, and restarts when it was running. Runtime-generated profiles and supervisor logs are excluded. Archives stream over loopback-only HTTP routes instead of base64-in-JSON, so large homes no longer exhaust memory. WSL homes are reached via \\wsl.localhost UNC, so archives migrate between WSL and Windows installs.

How to use it:

  1. Settings → Backup → Export backup archive (browser downloads the zip).
  2. In the new environment: Settings → Backup → choose the archive and import, confirm overwrite.
  3. The status line reports the result; invalid archives are rejected with localized copy without disturbing a running Harness.

5. Console-free launch and build

Tray "Start Harness" previously left a persistent CMD window and builds popped empty terminals. The Supervisor now launches Web directly via node --import tsx/esm (bypassing pnpm's cmd.exe chain) and the five build stages (tsc host/client, tsdown host/client, vite build) run directly through node, all with windowsHide; no console window appears on any build or launch path.

6. Tray residency, quit, and progress notifications

Closing the wizard previously took the tray, Supervisor, and Web down together (Electron quits on last-window close by default and the Supervisor is a utilityProcess tied to the app). The tray app now stays resident until Quit; Quit shows a quitting hint, stops the runtime within an eight-second budget, and quits regardless without error dialogs; tray actions announce start/completion/failure via balloon notifications and daemon phase messages feed the tray tooltip.

7. Launch at startup

A tray checkbox toggles launch-at-startup: Windows (including WSL runtime targets, since the tray app itself runs on Windows) writes the login-item registry entry; Linux desktops write or remove an XDG autostart .desktop entry; the checked state reads back on every tray rebuild.

8. Version-to-commit correspondence

Installers previously baked the build-time latest commit, so 0.2.0 accumulated every later PR. Builds made from a plus-v* release tag now clone exactly that tag; the version is bumped to 0.3.0.

9. Branch consolidation

#14 merged six historical branches into master; the user-visible parts are fully described in the subsections above; the remainder is CI packaging workflows and documentation.

10. Persistent bash no longer stalls ~3.5s per command

The persistent bash tool used to override PS1 with its own marker, so the terminal backend's prompt-readiness path never matched and every command waited out the idleSilenceMs silence window (~3.5s). Shell init now reasserts the backend's controlled prompt, so commands return immediately; the shipped silence defaults are unchanged and pinned by a stub contract test plus a real Loader composition. Every shell/persistent-terminal command saves ~3.5s after upgrade.

11. Subagent settings in the settings page

The settings plugins section gains subagent cards: persona, tool filter, and delegation depth defaults are configurable per subagent, with subagent default composition now carried by plugin configuration. Previously file-only, these are now visible and editable in the settings page with immediate effect.

12. OpenAI Responses gateway compatibility, model capability toggles, and custom providers

The model settings and gateway path support OpenAI Responses-compatible providers: requests are shaped for the Responses protocol and the returned reasoning statuses are sanitized into states Harness can display, so compatible gateways no longer error or render oddly on unknown statuses. The models page gains a per-model "Supports image input" capability toggle and a "Gateway compatibility mode" (omits reasoning input status so relays do not error); the advanced group is renamed "Model capabilities". The custom provider editor completes name/baseURL validation and model list editing, so Responses-compatible relays are configurable from the page.

13. Installer and tray visual redesign

The installer and tray surfaces were redesigned under the unified frontend design standard: unified installer window surface, native card-scale preview, streamlined provider setup, polished selection controls, and settings dropdown styling alignment. Visual only; no configuration semantics changed.

14. Windows packaging CI and repository/process/agent tooling (internal)

Every master/PR build produces an installer artifact through the Windows NSIS workflow; the release asset comes from that pipeline. #7#11 are the process/documentation batch: bilingual release-notes completeness standard, PR merge closeout process, README dedup, user-feedback-defined edge cases, plus architecture-planning, code-review, and implementation skill updates; repository agent skills gained harness-frontend-design, pr-authoring, pr-merge-closeout, release-notes-authoring (with template), and fast-artifact-downloads. These serve the maintaining process and agent, not product behavior.

User workflow or migration

  1. Overwrite-install is safe: run the 0.3.0 installer and tick overwrite to keep user data.
  2. Tick "Run initial setup" on the finish page and confirm the prefilled configuration.
  3. Confirm the tray icon is resident and the opened port responds; export a first backup from "Backup and restore…".
  4. Migrating from WSL: export the backup inside the WSL environment and import it in the Windows install.

Main changes from the previous version

Previous version Current version
Wizard starts from blank fields Directory/ports/proxy/overwrite prefilled, key optional
Folder browser cannot switch drives Drives level lists every drive
Port conflict only errors Dialog names the holder, end-and-continue
Tray and service vanish after wizard Tray resident; service lives with the tray
Empty consoles on launch/build Console-free everywhere
Settings/keys not migratable One-zip backup/restore, WSL↔Windows migration
0.2.0 accumulated all later commits Version corresponds to cloned commit

Downloads and platform support

Platform File Size Checksum or signing status
Windows x64 DeepSeek Harness Plus Setup 0.3.0.exe — attached to this release 96,197,116 bytes SHA-256 28708eb2d80ffe471e261c658600fa81744b80f672dd8bee1d85e0b6377a04ec, unsigned

Linux (AppImage/deb) and macOS (dmg) targets build from source; this release attaches the Windows installer only. The installer is unsigned/not notarized; first run may trigger SmartScreen.

Compatibility and limitations

  • 0.1.x/0.2.x runtime data (settings, credentials, storages) survives overwrite upgrade.
  • Import overwrites same-named files and keeps others; validation runs first and invalid archives never stop a running Harness.
  • Backups exclude runtime-generated profiles and supervisor logs.
  • Launch-at-startup on Linux depends on XDG autostart; headless environments do not apply.
  • Replacing very old Supervisors relies on command-line matching for the force kill; under restricted permissions the next start surfaces the error.

Not included in this release

  • Public macOS packages and installer signing/notarization.
  • An auto-update channel (upgrade remains manual via "Manage versions…").
  • Encryption or cloud storage for backup archives.
  • Image generation and a full model-capability matrix (this release ships only the design note plus the "Supports image input" toggle).

Verification evidence

  • Windows CI (windows-latest) Playwright Electron suite fully green across three cases: installer interactions, complete native install with Supervisor start, and the backup export/import UI loop (marker validation, tamper restore, key-value assertions).
  • User acceptance on a real Windows machine on 2026-08-18: wizard prefill, tray residency, port reachable, backup/restore, launch-at-startup, port dialog, console-free.
  • Every merge passed the Windows NSIS packaging workflow; the release asset SHA-256 matches the CI artifact.

Related changes

  • PRs #13#30 (installer repair, backup, tray experience, version correspondence): https://github.com/SparkElf/deepseek-harness-plus/pulls?q=is%3Apr+is%3Amerged
  • Tagged source: https://github.com/SparkElf/deepseek-harness-plus/tree/plus-v0.3.0