Skip to content

Releases

v0.1.9

Choose a tag to compare

@SuperPaiGu SuperPaiGu released this 12 Sep 16:06

dsh-desktop v0.1.9

给 DeepSeek Harness(DSH)加一个原生桌面窗口,用已安装的 dsh 拉起服务。

本次覆盖 v0.1.3 → v0.1.9 的全部改动。其中 v0.1.4 起的多数修复,针对的是 dsh 0.1.5 引入的启动 token 鉴权(裸根地址一律 401)所暴露出来的旧隐患。

⚠️ 如果你在用 dsh 0.1.5 及以上,请务必升级到本版:早期版本会在「关掉桌面端后重开」时反复报「已在 3080 找到 dsh 服务,但它要求启动 token」,只能手动杀端口。

本次更新

v0.1.9

  • 修复:遗留服务仍然认不出来(这是「关不干净」的真正根因)。 0.1.8 的判定里有一条「记录的启动进程必须仍然存活」,但 cmd /c <dsh.cmd> 这个包装器可能在 node 服务起来后就退出了 —— 于是判定失败、记账被当成陈旧记录清掉、退回「附加」、拿不到 token 报错。
    现在不再依赖包装器是否存活:占端口的进程只要是「我们记录的监听进程」,或「一个 dsh web 服务、且启动时间不晚于我们记账的时刻」,就判定为自己人;杀之前还会核对命令行(必须同时出现 dsh 与 web)才动手。
  • 退出路径加了兜底:即使包装器已退出、进程句柄为空,关窗时也按端口找到并结束本次启动的服务,从源头减少残留。
  • 回归测试 19 项(覆盖遗留收回的两种判定路径、就绪时补记监听 PID、退出兜底)。

v0.1.8

  • 修复:记账记的监听 PID 一直是 null,导致「收回遗留服务」从未生效。 记账发生在 spawn() 之后立刻,那一刻服务还没绑定端口,findListenerPid() 自然是空 —— 而收回逻辑要求「账上的监听 PID == 当前监听 PID」,空值永不匹配。
    现在服务就绪后补记真实的监听 PID;对旧格式(监听 PID 为空)的记录另加启动时间兜底。

v0.1.7

  • 修复:关掉桌面端后 3080 不释放,重开时报「已在 3080 找到 dsh 服务,但它要求启动 token,而所有已知日志里都没有」。
    窗口关闭并不保证退出钩子一定执行(被结束进程、崩溃、注销都会跳过),而桌面端拉起的 dsh web 隔着 cmd /c 包装且是 detached 的 —— 于是它会活下来,带着一个只存在于某次日志里的启动 token。下次启动去「附加」它必然失败,只能手动杀端口。

    现在桌面端给自己拉起的服务记账(<userData>\spawned-servers.json)。下次启动时若发现「账上那个进程仍占着该端口」,就判定为自己上次的遗留并先停掉、再重新拉起。判定用身份而不是「是否还活着」:只有账上记录的监听进程、且此刻仍占着该端口才算数 —— 手工启动的服务没有账目,永远不会被误杀。

  • 回归测试 18 项(新增 2 项覆盖遗留收回:必须在附加探测之前执行、记账在启动时写入并在正常停止时清除)。

v0.1.6

  • 修复:接入外部主服务时的 401 白页。新增 mainServiceLog 配置(默认 <userData>\logs\dsh-main.log),knownToken() 一并读取;token 候选改为按日志倒序全部尝试(陈旧行不再遮蔽有效行),并用「303 = 有效 / 401 = 无效」校验(redirect: 'manual' 停在第 1 跳)。
  • 拿不到 token 时明确报错并给出两条出路,不再静默白页。

v0.1.5

  • 新增 launcher 配置项,决定桌面窗口自己的服务跑哪个 CLI:

    值 行为
    auto(默认) 有 deepseek-harness 检出就用检出,否则用已安装的 CLI(历史行为)
    installed 只用已安装的 CLI,忽略任何检出
    checkout 只用检出,找不到就报错

    ⚠️ 默认的 auto 意味着:只要检出存在且能跑,桌面窗口就跑检出,而不是 npm 全局包。以前检出常年是同一个版本(dsh-v0.1.1-rc.2),跟 npm 版号一致所以看不出来;一旦升级检出,桌面窗口就跟着静默换版本。想让窗口固定在 npm 版就设 "launcher": "installed"。

  • 辅助端精简回一个:只保留从已安装 CLI 启动的辅助端(默认 3081)。原先的「源码辅助端」已移除——要跑源码版本请自己用 pnpm 启动。相应配置项 auxSourcePort / auxSourceHome / auxSourceRepo 一并删除。

  • 启动器选择逻辑抽到 desktop/src/launcher.js 并可单元测试:覆盖 auto/installed/checkout 三种偏好、检出存在但不可跑时的回退、以及无检出且无 CLI 的情形。

v0.1.4

  • 修复:npm 辅助端因为找不到 CLI 而启动不了。Windows 上 spawnSync('dsh') 不会按 PATHEXT 解析扩展名,而 npm 装出来的是 dsh.cmd(外加一个给 Git Bash 用的无扩展名 dsh shell 脚本),所以旧探测必然 ENOENT —— 终端里 dsh 能用,桌面端却一直报「未找到已安装的 dsh CLI」。现在改为自己按 PATH + PATHEXT 解析,且优先 .cmd(无扩展名那个 shell 脚本 cmd.exe 根本跑不了)。
  • 修复:辅助端「打开」按钮报 dsh web authentication required。dsh ≥ 0.1.5 的 web 服务用每次启动生成的一次性 token 做浏览器鉴权:裸根地址一律 401,只有它启动时打印的 /?token=... 才能换取 cookie。该 token 只存在于这个进程的 stdout,而桌面端本来就把 stdout 重定向进了辅助端日志 —— 所以「打开」现在会从日志里读回带 token 的 URL,读不到时才回退到裸根地址。
  • 面板状态行新增实例日志路径,便于排查。

v0.1.3

  • 辅助端从 1 个变成 2 个:桌面窗口右下角的面板里现在有两块独立控制区,各自有启动 / 打开 / 停止:

    实例 默认端口 启动方式 用途
    npm 辅助端 3081 已安装的 dsh CLI(npm 全局) 日常开发插件。重打包桌面端、升级 dsh 源码都不影响它,随时有一个能用的 dsh
    源码辅助端 3082 deepseek-harness 检出的构建产物 试验 dsh 源码新版本(如 0.1.5-rc.2),不动全局安装
  • npm 辅助端不再会被检出「抢走」:旧版按「检出 → DSH_BIN → 安装版 → PATH」解析启动器,只要存在检出就一定用它。现在 npm 辅助端跳过检出,固定在已安装的 CLI 上——这正是「改源码时它照样能用」的前提。

  • 新增配置项:auxPort / auxHome(npm 辅助端)、auxSourcePort(默认 3082)/ auxSourceHome / auxSourceRepo(源码辅助端)。空 home = 共用主 home;测新版本 dsh 时务必给源码辅助端单独设 home,否则新版的会话格式迁移会改写主 home 的会话。

  • 启动失败会显示原因:面板里直接显示「未找到已安装的 dsh CLI」或「未找到 deepseek-harness 检出」等提示,不再静默失败。

  • 附带修复:源码运行(electron .)时 config.json 不被读取;日志目录不存在时写入静默失败。

v0.1.2

Choose a tag to compare

@SuperPaiGu SuperPaiGu released this 12 Sep 09:43

dsh-desktop v0.1.2

给 DeepSeek Harness(DSH)加一个原生桌面窗口,用 npm 安装版 dsh 拉起服务。

本次更新

  • 新增「辅助端」按钮:桌面窗口右下角悬浮按钮,可一键 启动 / 打开 / 停止 一个独立端口(默认 3081)的 dsh 实例。
    • 主服务(默认 3080)仍由桌面端独占、关窗即停;辅助端是独立服务,关桌面端不会停它。
    • 更新桌面端 / 插件时不用停辅助端;主用桌面端时,也能在辅助端里测新功能、试新版本 dsh。
    • 配置(%APPDATA%\dsh-desktop\config.json):auxPort(默认 3081)、auxHome(默认空 = 共用主 home;测新版本建议填路径隔离)。
  • 修复:关窗后服务残留占用端口(改为按端口杀掉真正的 node 服务整棵进程树)。
  • 修复:安装版 CLI 无法启动(cmd /c 引号被再转义)。
  • 修复:不再自动弹出浏览器(启动服务加 --no-open)。
  • install 自动下载 exe:无内置 exe 时从本 Release 自动下载 DSH-Desktop-*.exe。

安装

手动(tgz)

dsh plugin --profile web add ./dsh-desktop-0.1.2.tgz
cd %DSH_HOME%\profiles\web
pnpm exec dsh-desktop install

从 GitHub 直接安装

dsh plugin --profile web add github:SuperPaiGu/dsh-desktop
pnpm exec dsh-desktop install

仅 Windows。桌面窗口与 Web 界面是同一份数据。

dsh-desktop v0.1.1

Choose a tag to compare

@SuperPaiGu SuperPaiGu released this 03 Sep 12:42

dsh-desktop v0.1.1

给 DeepSeek Harness(DSH)加一个原生桌面窗口,用 npm 安装版 dsh 拉起服务。

本次更新

  • install 自动下载 exe:git / npm 渠道不再需要手动下载大 tgz;无内置 exe 时,dsh-desktop install 会自动从本 Release 下载 DSH-Desktop-0.1.0-x64.exe(私有仓库请设环境变量 GITHUB_PERSONAL_ACCESS_TOKEN)。
  • 修复:安装版 CLI 无法启动——cmd /c dsh.cmd 的引号被 Windows 再转义成 "...",导致报「不是内部或外部命令」。
  • 修复:关窗后服务残留占用 3080——关窗只杀了 cmd 壳、留下真正的 node 服务变孤儿进程;现改为关窗时按端口找到真正的 node 服务并杀掉整棵进程树。
  • 修复:不再自动弹出浏览器——启动服务时加 --no-open,桌面窗口本身就是界面。
  • 兼容 DSH 0.1.1(用 npm 安装版 @deepseek-ai/dsh 拉起服务)。

安装

手动(tgz)

dsh plugin --profile web add ./dsh-desktop-0.1.1.tgz
cd %DSH_HOME%\profiles\web
pnpm exec dsh-desktop install

从 GitHub 直接安装

dsh plugin --profile web add github:SuperPaiGu/dsh-desktop
pnpm exec dsh-desktop install   # 自动从 Release 下载 exe

仅 Windows。桌面窗口与 Web 界面是同一份数据。安装前请确认 dsh 命令可用(npm i -g @deepseek-ai/dsh)。

dsh-desktop v0.1.0 — DSH 桌面窗口插件 + 便携 exe

Choose a tag to compare

@SuperPaiGu SuperPaiGu released this 16 Aug 03:12

给 DeepSeek Harness 加一个桌面窗口。装好后桌面上有「DSH 桌面版」图标,双击即用:
DSH 没在运行会自动启动,在运行则直接接入(同一界面、同一会话),关窗口自动停掉自己启动的服务。

安装(三步)

  1. 下载本 Release 的 dsh-desktop-0.1.0.tgz
  2. 终端执行:
    dsh plugin --profile web add ./dsh-desktop-0.1.0.tgz
  3. 继续执行:
    cd %DSH_HOME%\profiles\web
    pnpm exec dsh-desktop install

完成。也可以从 GitHub 直接安装(不带 exe,/desktop 用 Edge 窗口):
dsh plugin --profile web add github:SuperPaiGu/dsh-desktop

要求

  • Windows 10/11
  • 可用的 dsh + Node ≥ 22 + pnpm

本版本内容

  • /desktop 命令(Web UI 命令面板)
  • dsh-desktop 命令(run / install)
  • 便携桌面 exe(自建服务支持源码检出与安装版 dsh 两种形态)