Skip to content

Releases: sakanamaru/dsh-minato

dsh-minato 3.0.7(外部审查修复 + 审查回应 / external-review fixes and our response)

Choose a tag to compare

@github-actions github-actions released this 07 Oct 08:47
Immutable release. Only release title and notes can be modified.

dsh-minato

产物来源 / Provenance:commit=46b4b47bf6ec4813336efee33de5c524163196d2 · tag=v3.0.7 · tag CI run 37595591991(success)
—— tag 就打在产出这些产物的那个提交上 ✓ 产物哈希见 hashes.txt 与各 .sha256 ✓

dsh-minato 3.0.7 — 2026-10-07

一句话:外部审查发现的备份/导出缺陷已全部修好 —— backup-export 从"恒失败"恢复可用 ✓ 失败路径退出码不再骗人 ✓
需要你采取行动吗? 不需要 ✓(若你曾用 3.0.0–3.0.6 的 backup-export,升级后重试一次即可 ✓)
本版改了:六条备份链修复(导出/退出码/截断闸门/junction 守卫/根路径/自哈希缓存)· 导出误判 D13 · 空格路径 L4 · 安装器假红 N3 · 首次官方包 Linux 真机验证(含 GUI)✓

完整发版说明 · 审查回应 · Linux 真机验证(点开展开)

⚠️ 非官方工具,由社区独立开发,与 DeepSeek 官方无关。本工具不是 dsh 插件:它是独立进程,不注入 dsh,dsh 没装也能用。

一句话:一个外部审查者逐行审了备份/恢复链,我们复现了他的每一条、修掉六条、并第一次把「审查回应」写进发版说明;
随后又用 Linux 真机端到端运行结案了他的 N2 悬案(改正的是注释与文档,代码行为一行未改 ✓)、并修掉一个安装器退出码假红。

In one line: an external reviewer audited the backup/restore chain line by line; we reproduced
every finding, fixed six of them, and for the first time ship a point-by-point review response.
A real Linux end-to-end run then closed his N2 open question (comments and docs were corrected;
not a single line of behaviour changed) and fixed a false-red installer exit code.


审查回应 / Review response

口径:复现过的写复现、复现不出的直说、没测的标未测 ✓ 每一条都指向测试或端到端命令 ✓
完整往来留档:docs/审查报告-2026-10-07-审核意见.md · docs/对审查报告的回应-2026-10-07.md · docs/结案函-2026-10-07.md

编号 外部发现 我们的复现 修法 现在靠什么守住
D1 backup-export 对正常包恒失败,并留下无完成标记的副本 运行时复现:BKEXPORT_FAIL + 导出目录 401 文件 / manifest 0 ✗ CopyTree 返回值语义修正(返回真实复制数)✓ verify_restore_apply.ps1 端到端 + 命令矩阵里的 BKEXPORT_OK 成功路径 ✓
D2 失败路径退出码仍是 0(return 0 174 处 / 非零 3 处) 计数复现(与审查数字逐字一致 ✓) 失败路径改 return 1(成功仍 0;用法 2;启动自完整性 3)✓ 命令矩阵断言退出码 ✓
D3 完成性闸门三处 fail-open(want<0 放行、哈希核对在其后) 复现 ✓ 全程 fail-closed + 哈希核对前置,与 backup-list --verify 结论对齐 ✓ 契约测试:截断包必须被拒收 ✓
D4 恢复的顶层文件缺目标端 reparse 守卫 复现 ✓ 顶层文件加守卫(三处)+ 跳过规则统一 SkipRules.SkipDir ✓ 契约测试:mklink /J 端到端,回滚即红 ✓
D5 IsSubPath 对文件系统根恒 false 复现 ✓ 根路径直接前缀比对 ✓ 契约测试:根 / 盘根 / .. 断言 ✓
D7 自哈希缓存键缺路径分量 复现 ✓ 文件名改 `SHA256(路径 长度
C1/C2/C3 "文档超出证据":把回滚 / symlink / .. 写成"已验证" 抽核证实(.. 测试 0 处、ROLLED_BACK 仅产品源码 1 处 ✓) 在 docs/release-notes-v3.0.0.md 逐条加「2026-10-07 复核修订」注记、收回"真机双向验证"措辞;README 双语 Known limits +3 ✓ 发版清单新增硬规矩:每个"已验证"必须指向一条会失败的测试或一次真实端到端运行 ✓
N2 "不带 --apply 的真实恢复永远不会写进用户默认数据根":Program.cs 的这条注释与同文件 dstRoot = paths.DataRoot 自相矛盾 真机端到端复现(v3.0.7 官方包 · Ubuntu 26.04 VM):unset DSH_HOME + restore --path <包>(不带 --apply)→ RESTORE_OK、exit 0,并从 ~/.dsh 抓了 RESTORE_PRE_BACKUP;事后 ~/.dsh/.anonymous-user-id 与 .credentials.yaml 的 mtime 被刷新(sha256 未变 —— 写入的是相同字节,所以摘要证明不了"没写" ✗) 外部审查者说对了 ✓ 我们用真机端到端运行结案(mtime 证据 ✓);不带 --apply 恢复到生效数据根是本工具的 v2 兼容核心用途 → 不改行为 ✗ 改正的是注释与文档的说法:Program.cs · RestoreApplyPolicy.cs · v3/README.md · PRIVACY.md · VERIFY.md · LINUX-TEST.md ✓ --apply 的真实语义现在写明为"跳过运行中闸门 + 要求隔离数据根"(不是"允许写盘")✓;verify_restore_apply.ps1 端到端 + 契约测试继续守住 --apply 准入(未设 $DSH_HOME → 拒绝、默认位置 → 拒绝)✓ 证据:docs/Linux真机验证-2026-10-07-官方包.md §3 ✓
N3 本次 Linux 真机自测发现的安装器假红(非外部审查):install.sh 正常安装后退出码 3 真机复现:干净安装 → ! **清单只覆盖 103 / 106 个文件** ✗ 覆盖不全 → **不算通过** + exit 3;根因 = 自检的分母把安装器自建的 .dsh-minato-files / .dsh-minato-install 与清单自身 hashes.txt(无法含自身摘要)也算成"应被清单覆盖";同一目录里 sha256sum -c hashes.txt 是 103/103 全 OK 自检分母改为"我们的载荷"(安装清单 .dsh-minato-files 里记录、清单应当覆盖的文件)✓ 覆盖率判据保留(清单项 + 缺失 ≥ 载荷数)✗ 未削弱 真机:修复前 exit 3 → 修复后 exit 0(✓ 指纹全部一致(103 项,覆盖 103/103 项载荷))✓;并故意篡改一个载荷文件 → 指纹不符 + exit 3 ✓(断言仍会红 ✓)证据:真机报告 §4 + 本版修复记录 ✓

我们上报的三条"未测"(不装 ✓):包内单文件截断的自证能力(D6)· File.Copy 对目标端符号链接的运行时语义(D4 的行为面)· cp -R 源内符号链接与 readlink 引号(需 Linux 真机)—— Linux 真机验证本版已推进到 v3.0.7 官方包(见下节 ✓),但这三条仍未在真机上构造用例,仍是"已实现;测试未覆盖" ✓

新增 / Added

  • overview 命令(只读):一个进程给出概览页所需全部标记行 → GUI 每拍从 4 个进程降到 1 个 ✓
  • 两个界面偏好键 gui_shell / gui_style(布局与风格可持久化 ✓ 静默落盘、走动作闸门 ✓)
  • close_action / host 两个键真正生效(host 带白名单,仅 127.0.0.1 / localhost,默认行为不变 ✓)
  • v3/tests/verify_command_matrix.ps1:命令 × 隔离数据根冒烟矩阵(14 条命令/行为,断言标记行 + 退出码 + 越界自证 ✓)并接进 CI(新 job v3-smoke-matrix,windows-latest ✓)
  • docs/VERIFY.md:用户如何独立核对每条承诺(跑什么命令 / 看哪行标记 / 什么算通过 ✓)
  • token 口径拆开:SESSIONS_TOTAL 增加 uncached=,GUI 显示为「新输入 · 缓存命中 · 生成」✓

修复 / Fixed

  • 上表六条备份链缺陷(D1/D2/D3/D4/D5/D7)✓
  • 页眉自动刷新条遮挡标题 · 会话页排序下拉统一 SlimCombo + 指标块最小宽度(回归)
  • 契约测试 355 → 385 项(本版新增:截断包拒收 / junction 穿透 / 根路径 / 投毒缓存 / 导出失败不留半成品等断言 ✓)

变更 / Changed

  • ⚠️ 行为变化:host / close_action 现在真的生效;失败路径退出码变为非零(此前所有拒绝都返回 0 ✗ → 脚本现在可以 || echo failed 了 ✓)
  • 超时放宽:写操作 10 分钟封顶(不再杀半截 npm / 备份 ✓)· Windows 进程探测去 shell-out(status 1275→894ms ✓)
  • GUI 信息架构重整:概览/看板去重、Shells.cs 拆 partial、新增 ConfirmDialog ✓
  • linux_smoke.sh:26 行 0 断言 → 20 项断言 ✓(此前它挂在 CI 里只能因崩溃变红 ✗)· verify_backup_chain.sh 加 EXPECTED_MIN ✓

产物 / Assets

文件 说明
dsh-minato-3.0.7-win-x64-setup.exe (+.sha256) Windows 安装器
dsh-minato-win-x64.zip (+.sha256) Windows 免安装包
dsh-minato-linux-x64.tar.gz (+.sha256) Linux x64 包
hashes.txt / hashes.txt.asc 全部产物 SHA-256 及 GPG 签名

验证 / Verification

  • 本地:CLI 构建 0 错误 · GUI 构建 0 错误 · 契约 385/385 · GUI 逻辑 69/69 · 插件 25 ·
    verify_fixes 72/72(命令面一一对应 ✓)· verify_restore_apply 41/41 · 命令矩阵 44/44 ·
    v2 复刻全部通过 · 13 项就绪度门槛 == 全部就绪 ==
    (以上为 2026-10-07 本批改动后复跑 的实测数字 ✓)
  • CI 两平台 + 新 job v3-smoke-matrix ✓(Windows 包内含 GUI 窗口冒烟 ✓)
  • 数量不等于保证:上述测试数不能用来证明安全承诺;每条承诺的证据见 docs/VERIFY.md ✓

Linux 真机验证(2026-10-07 · 首次验官方包 v3.0.7)/ Linux real-machine verification

完整证据(可复现命令 + 真实输出 + 行号):docs/Linux真机验证-2026-10-07-官方包.md(项目根留档,未进仓库 ✓)
环境:Ubuntu 26.04.1 LTS 真机 VM(2 核 / 3.3 GB / 根分区余 4.0 GB)· 对象:draft release v3.0.7 的 dsh-minato-linux-x64.tar.gz
此前多版发版说明都写着"Linux 真机验证仍停在 3.0.0" ✗ —— 本版推进到 v3.0.7 官方包 ✓ 但不是"全部已验证" ✗(未测项见下 ✓)

项目 结论 靠什么(真实端到端运行 / 会失败的断言)
产物摘要 ✅ 宿主 Get-FileHash = 资产 .sha256 = 客人 sha256sum -c,三处 7a0bc34e…bfdb,字节数 48383868 一致 三处独立计算 ✓
包形态 · 清单 ✅ hashes.txt 在(9650 B / 103 条);sha256sum -c hashes.txt = 103/103 OK;无任何清单项缺失(唯一未覆盖的是清单自身 ✓ 正常设计) 解包后 sha256sum -c hashes.txt(exit 0)✓
包形态 · 执行位 ✅ 包内 *.sh 2/2 -rwxr-xr-x(不可执行计数 0);dsh-minato / cli-small/dsh-minato / gui/dsht-gui(ELF apphost)均可执行 逐项 ls -l + 逐脚本执行位测试 ✓
自检闸门真的生效 ✅ 从解包目录跑 ./dsh-minato version → 输出只有 DSHT_VERSION 3.0.7,没有 INTEGRITY_SKIPPED;对照实验:移走 hashes.txt 后该行立刻出现,放回即消失 §2 对照实验 + doctor 的 [OK] Integrity 自身 exe 与随包 hashes.txt 一致 ✓
真实数据根 + restore(N2 结案) ❌→✅ 不带 --apply 会写默认数据根(mtime 物证);结论:行为是 v2 兼容设计,改正的是注释与文档 ✓ §3:基线 tar + 逐文件 sha256 + mtime 三重对照;--apply 对照实验(未设 $DSH_HOME → 拒绝 exit 1)✓
安装器 ✅ 正常安装可用(~/.local/share/dsh-minato · 106 文件 · 命令链接 + 菜单项正确 · CLI 报 3.0.7);退出码假红已修(本版 N3):修复前 exit 3 → 修复后 exit 0 真机跑 install.sh(修复前 / 修复后)+ 篡改载荷对照(→ 指纹不符 + exit 3)✓
卸载 ✅ 干净:自建 106 项 + 命令链接 + 菜单项全删,~/.dsh 仍 26 文件(不动数据 ✓) 真机 install.sh --uninstall + 前后文件数 ✓
GUI 首次在 Linux 起来 ✅ 窗口映射(dsh-minato — V3 1213×768)· 截图 shots/gui-work/linux-vm-3.0.7.png(2289 色)· 界面显示真机真实数据(会话总数 4) xwininfo + xwd 抓窗口(Wayland 下根窗口截图全黑,是失败对照 ✓)✓
包内 linux_smoke.sh ✅ PASS=22 FAIL=0,exit 0 真机 timeout 600 ./linux_smoke.sh ✓

仍未测(照报告 §9 如实列,别当"已验证" ✗):Windows 包真机 · install.sh 的 --prefix / --no-desktop / DSH_MINATO_BINDIR 等其余开关 ·
卸载后再装与幂等反复跑(本次只跑到"同一 prefix 重装")· GUI 交互功能(点各导航页 / 按钮行为)· 断网 / 代理 / 只读文件系统 / 磁盘满 ·
linux_smoke.sh 在"服务未运行"的干净机器上的分支 · 我们上报的三条"未测"(截断自证 D6 · File.Copy 对目标端链接 · cp -R / readlink)的真机用例 ✓

关于安装器的自动化:本版修掉了"正常安装却 exit 3"的假红(N3),依据是真机手跑 —— 当时仓库里
没有任何 CI 步骤执行 install.sh ✗(它只被 cp 进包 + chmod +x ✓,verify-linux.sh 也不跑它 ✓)。
此后已补上:Linux job 新增一步真跑 install.sh(临时 prefix,断言 exit 0)→ 再 --uninstall
(断言 exit 0 且 $HOME/.dsh 前后快照逐字未变 ✓)。

已知边界 / Known limits

  • 布局观感类改动测试覆盖不到 ✗ 需人工过 10 页 × 4 风格
  • 退出码契约:1=失败 · 2=用法/未知命令 · 3=启动自完整性 ✓(成功 0 ✓)
    —— 安装器 install.sh 另有自己的契约:0=装成功 · 1=拒绝安装 · 3=指纹/覆盖率不符 ✓(本版修掉"正常安装也给 3"的假红 ✓ 见 N3 ✓)
  • MainWindow.axaml.cs 的历史折行重排已隔离成独立提交,忽略空白后仍有残差;该文件行尾为 LF(仓库多数 .cs 为 CRLF)——blob 经 autocrlf 归一,不影响产物 ✓
  • 工作树 32 个文件混行尾(卫生项)· 配置落盘无 DPAPI/0600 加固 · GUI 仍用字符串拼命令行(ArgumentList 迁移未做)
  • Linux 真机验证已从 3.0.0 推进到本版官方包 v3.0.7 ✓(Ubuntu 26.04 真机 VM,见上节)——但不是"全部已验证" ✗:
    未覆盖 Windows 包真机 · install.sh 其余开关 · 卸载后再装 / 幂等反复跑 · GUI 交互点击 · 断网 / 只读 fs / 磁盘满等异常路径 ·
    linux_smoke.sh 的"服务未运行"分支 · 以及我们上报的三条"未测"(截断自证 D6 / File.Copy 对目标端链接 / cp -R 与 readlink)✓
  • restore 不带 --apply 会写入生效数据根(未设 $DSH_HOME 时即默认 ~/.dsh)—— 这是 v2 兼容的有意行为 ✓
    不是缺陷;唯一额外守卫是"服务不在运行"。需要"只写隔离根"时用 --apply(未设 $DSH_HOME 或数据根等于默认位置 → RESTORE_FAIL)✓
  • backup-export 会自动创建不存在的 --to 目录 ✓;--to 在执行前即持久化 ✓(外部审查后新记录的行为)

许可 / License

MIT(代码)。图标不是 MIT —— 见 docs/ASSETS.md。
GitHub:@sakanamaru

上面折叠的是完整证据链(每条修复:是否复现 → 修法 → 现在靠什么测试守住 ✓)。
之所以折叠而不是删除:本项目对外的核心约定是 "说法必须与代码一致" ✓ —— 折叠是为了让第一屏先给结论与行动 ✓ 不是把证据藏起来 ✓

dsh-minato 3.0.6(审查修复 8 条 + 性能与界面重整 / review fixes, performance and a GUI reshuffle)

Choose a tag to compare

@github-actions github-actions released this 06 Oct 11:34
Immutable release. Only release title and notes can be modified.

dsh-minato

dsh-minato 3.0.6 — 2026-10-06(审查修复 8 条 + 性能与界面重整 / review fixes, performance and a GUI reshuffle)

⚠️ 非官方工具,由社区独立开发,与 DeepSeek 官方无关。本工具不是 dsh 插件:它是独立进程,不注入 dsh,dsh 没装也能用。

一句话:一轮独立审查的 8 条必修 + 一批真实的性能收益(一次进程替代四次、Windows 进程探测去掉 shell-out、超时不再杀半截任务)叠加一次 GUI 信息架构重整(概览/看板去重)。

In one line: eight audited fixes, real performance wins (one process instead of four, no more
shell-outs for process probing, no more half-killed long tasks), and a deduplicated GUI.

需要你做什么 / Action required:是(建议升级)—— 备份日志此前与事实相反(完整备份不写日志、不完整反而写 backup OK),会让「备份成功了」的判断失真;写操作超时放宽到 10 分钟,避免长安装/大备份被 30 秒硬超时杀成半截。

本版改了什么(概述)

  • 新增只读 overview 命令:一个进程给出概览页所需的全部标记行(status --detail + sessions + backup-list + profiles),GUI 每拍由 4 个进程降到 1 个;各子块输出逐字不变,任一子块失败不打断其余块。
  • 修复审查必修 8 条:C1 备份日志与事实相反(完整备份不写日志、不完整反而写 backup OK → 现无条件写,不完整用 WARN + backup INCOMPLETE),另含 C3 不可达 return、C8 注释与代码不符、H1 恒空控件、H2 死分支、U1 设置页四个 V3 无效项、U3 概览重复渲染、C6 隐私与安全文档不实。
  • 修复:页眉自动刷新条遮挡标题(PageHeader 缺 Grid.SetColumn);会话页排序下拉统一 SlimCombo + 指标块最小宽度(回归修复)。
  • 变更:写操作超时放宽到 10 分钟封顶(update / install / uninstall / backup / restore / import 等,不再中途杀掉半截 npm 安装或备份包),只读命令仍 30 秒;Windows 进程探测去掉 shell-out(status 实测 1275ms → 894ms)。
  • 变更:GUI 信息架构重整(概览 ⇄ 看板去重、Shells.cs 拆 4 个 partial);⚠️ 行为变化:host 与 close_action 现在真的生效(此前选了没反应),新增 gui_shell / gui_style 两个界面偏好键。

commit=1af7c737b7128b689a47f54a57e02059539d01d1 · tag=v3.0.6

完整发版说明(点开展开)

新增 / Added

  • overview 命令(只读):一个进程给出概览页所需的全部标记行
    (status --detail + sessions + backup-list + profiles)→ GUI 每拍从 4 个进程降到 1 个
    ✓(0.5 秒实时档的成本大头正是进程启动)。各子块输出逐字不变 ✓,任一子块失败不打断其余块 ✓
    A new read-only overview command aggregating four marker families in one process.
  • 两个界面偏好键:gui_shell(0..4 侧栏布局)/ gui_style(0..3 视觉风格)——
    顶栏切换即时静默落盘(走动作闸门、忙时排队合并 ✓ 不弹 toast)、启动回读 ✓
  • close_action / host 两个键真正生效(此前只回显 ✗):host 带白名单,仅接受 127.0.0.1 / localhost,
    默认值下行为完全不变 ✓

修复 / Fixed

  • 审查必修 8 条(docs/审查发现-2026-10-06.md + 其审核/复核意见):
    • C1 备份日志与事实相反:完整备份不写日志、不完整反而写 backup OK ✗ →
      现在无条件写,不完整用 WARN + backup INCOMPLETE(已双向实测 ✓)
    • C3 不可达 return(CS0162 归零)· C8 插件注释与代码不符 · H1 恒空控件 ·
      H2 死 [stderr] 分支 · U3 概览重复渲染"原始输出"
    • U1 设置页四个在 V3 无效的项(close_action/host/check_update/lang)——其中两个已在本次真正接线 ✓
    • C6 docs/PRIVACY.md 写入声明不实(现在如实列出"主动确认后才修改 profile 插件配置")+ 网络表补全为权威清单;
      .github/SECURITY.md 范围句更新为跨平台 CLI + GUI + 插件
  • 页眉自动刷新条遮挡标题(PageHeader 缺 Grid.SetColumn)· 会话页排序下拉统一 SlimCombo + 指标块最小宽度(回归修复)

变更 / Changed

  • ⚠️ 行为变化:host 与 close_action 现在真的生效(此前选了没反应 ✗)
  • 超时放宽:写操作(update / install / uninstall / backup / backup-export / backup-delete / restore /
    import / bridge-install)10 分钟封顶,只读命令仍 30 秒 —— 不再中途杀掉半截 npm 安装或备份包 ✓
  • Windows 进程探测去掉 shell-out:tasklist ×2 + CIM CommandLine 换成直连查询
    (status 实测 1275ms → 894ms;去掉的约 950ms 为真实收益,余下为沙箱环境 artifact;
    stop 的身份判定改为保守方向:HTTP 探测失败即判非 dsh → 拒绝停止,不会误杀 ✓)
  • GUI 信息架构重整:概览 ⇄ 看板去重(重复卡片、5 张跳转卡删除,图表只在"图表"子标签出现一次)、
    Shells.cs 拆为 4 个 partial、新增 ConfirmDialog;下拉与按钮同高、看板并页、概览填充等观感收口

产物 / Assets

文件 说明
dsh-minato-3.0.6-win-x64-setup.exe (+.sha256) Windows 安装器(双击即装)
dsh-minato-win-x64.zip (+.sha256) Windows 免安装包
dsh-minato-linux-x64.tar.gz (+.sha256) Linux x64 包(./install.sh)
hashes.txt / hashes.txt.asc 全部产物的 SHA-256,及其 GPG 签名

验证 / Verification

  • 本地就绪度门槛 13 项全绿 · 契约测试 355 · GUI 逻辑 69(+1 overview 聚合回归)·
    插件自测 25 · v2 单元测试 318
  • verify_fixes.ps1 72/72 + 命令面 37/37 一一对应 ✓(含 CI 才跑的那部分,本次由维护者独立复跑)
  • CI 两平台全绿(windows-latest / ubuntu-latest);Windows 包内含 GUI 窗口冒烟
  • 送审与复核链条留档:docs/审查发现-2026-10-06.md → -审核意见.md → 修复记录-… → -复核意见.md;
    优化与 GUI 重整的复核见 docs/复核意见-2026-10-06-GUI重构批次.md

已知边界 / Known limits

  • 布局观感类改动测试覆盖不到 ✗:构建/测试/门槛只能证明"没坏",去重后的界面需人工过 10 页 × 4 风格 ✓
  • MainWindow.axaml.cs 的折行重排已隔离成独立提交,但忽略空白后仍有 24+/80−;该文件行尾为 LF(仓库多数 .cs 为 CRLF)
    —— blob 经 autocrlf 归一,不影响产物 ✓
  • 工作树 32 个文件混行尾(卫生项,不影响发布)· 插件两个时间戳/形状存疑项仍按"不猜"处理 ✓
  • GUI 仍用字符串拼命令行(ArgumentList 迁移未做)· 配置落盘无 DPAPI/0600 加固(后续版本)
  • Linux 真机(虚拟机)验证仍停留在 3.0.0;本版只有 CI 的打包与冒烟,没有重跑真机,如实写明

许可 / License

MIT(代码)。图标不是 MIT —— 见 docs/ASSETS.md。
GitHub:@sakanamaru

dsh-minato 3.0.5(自动刷新取新数据 / auto-refresh reads fresh data)

Choose a tag to compare

@github-actions github-actions released this 05 Oct 12:44
Immutable release. Only release title and notes can be modified.

dsh-minato

dsh-minato 3.0.5 — 2026-10-05(自动刷新取新数据 / auto-refresh reads fresh data)

⚠️ 非官方工具,由社区独立开发,与 DeepSeek 官方无关。本工具不是 dsh 插件:它是独立进程,不注入 dsh,dsh 没装也能用。

一句话:修掉 3.0.4 后用户实测报的自动刷新问题——4 秒 CLI 缓存把刷新数据也缓存了,导致 ≤4 秒的档位"看起来停了";顺带把余额回调的 60 秒整页闪也消掉。

In one line: auto-refresh intervals of 4 s or less were silently serving cached
data, so the fields never changed; fixed, and the 60-second balance callback no
longer rebuilds the page.

需要你做什么 / Action required:是,请升级 —— 自动刷新在 ≤4 秒档位一直读到缓存里的旧数据(每一拍都命中 4 秒 TTL 缓存,刷新等于失效);同时余额回调每 60 秒整页闪一下。

本版改了什么(概述)

  • 修复自动刷新「停了」:概览/看板的四个数据源全走 4 秒 TTL 缓存,选 3 秒档(以及 0.5 / 1 秒)每一拍都命中缓存、拿回上一拍旧数据,字段写回去还是同一个值。现在自动刷新这一拍先清缓存再跑;普通刷新与切页继续吃缓存。
  • 修复余额回调不再整页重建:原来开着自动刷新时每 60 秒整页闪一下 + 滚动回顶 + 160ms 淡入;现在只改数字,未注册字段的页面退化为整页重建(数据不丢)。
  • 顺带一个诚实更正:选择器旁「每一拍都要起一个 CLI 进程、有真实成本」在修复前对 3 秒档是假的(实际吃缓存),现在才真正成立。
  • 变更:选择器旁那句「每一拍都要起一个 CLI 进程、有真实成本」改为如实成立的表述(此前对 3 秒档是假的)。

commit=2d175f26967c64c2086fbf7e317898d15aa47ec9 · tag=v3.0.5

完整发版说明(点开展开)

修复 / Fixed

  • 自动刷新"停了"(用户实测):概览/看板的四个数据源(status --detail / profiles / sessions /
    backup-list)全部走 RunCached —— 那是给"切页瞬间别重复起进程"加的 4 秒 TTL 缓存 ✓。
    选 3 秒档 → 每一拍都命中缓存(3 < 4)→ 拿回的还是上一拍的旧数据 → 字段写回去还是同一个值 →
    看起来"停了" ✗✗(0.5 / 1 / 3 秒全中招;5 秒档没事——所以症状是"好像还有一点问题")。
    现在自动刷新这一拍先清缓存再跑 ✓ 每拍都是新数据 ✓;普通刷新/切页继续吃缓存 ✓。
    顺带一个诚实更正:选择器旁"每一拍都要起一个 CLI 进程 ✓ 有真实成本"——修复前对 3 秒档是假的(实际吃
    缓存),现在才真正成立。
    Auto-refresh ticks now invalidate the cache before fetching; ordinary
    refreshes and page switches keep the cache.
  • 余额回调不再整页重建:原来开着自动刷新时每 60 秒整页闪一下 + 滚动回顶 + 160ms 淡入——恰好是
    字段级刷新要保护的东西(审查点过名)。余额卡本来就是活字段,到账现在只改数字 ✓;
    没注册字段的页面退化为整页重建(数据不丢 ✓)。
    The balance callback updates fields in place instead of rebuilding the page.

已知边界 / Known limits(与 3.0.4 相同,仍未修,如实列)

  • 概览页的状态大徽章(hero)不走字段级刷新——它是建树时的快照,数字卡是活的,两者可能短暂不一致。
  • GUI"字符串拼命令行"的习惯(ArgumentList 迁移)未做;Run 的 30 秒硬超时会杀长任务
    (update / install / 大备份可能中途被杀)。
  • 配置落盘无 DPAPI(Windows)/ 0600(Linux)加固、非原子写入。
  • 自动刷新仍只在概览/看板页生效(设计如此,非缺陷)。

产物 / Assets

文件 说明
dsh-minato-3.0.5-win-x64-setup.exe (+.sha256) Windows 安装器(双击即装)
dsh-minato-win-x64.zip (+.sha256) Windows 免安装包
dsh-minato-linux-x64.tar.gz (+.sha256) Linux x64 包(./install.sh)
hashes.txt / hashes.txt.asc 全部产物的 SHA-256,及其 GPG 签名

验证 / Verification

  • 本地就绪度门槛 13 项全绿;契约测试 355 · GUI 逻辑 68 · 桥接插件自测 25 块 · v2 单元测试 318
  • CI 两平台全绿(windows-latest / ubuntu-latest);Windows 包内含 GUI 窗口冒烟
  • 病因由代码定位 + 常量核实(TTL=4 秒 ✓),修复路径经上述全部测试;Linux 真机验证仍停留在 3.0.0,
    本版只有 CI 的打包与冒烟,没有重跑真机,如实写明。

许可 / License

MIT(代码)。图标不是 MIT —— 见 docs/ASSETS.md。
GitHub:@sakanamaru

dsh-minato 3.0.4(四路审查修复 / fixes from a four-way review)

Choose a tag to compare

@github-actions github-actions released this 05 Oct 10:04
Immutable release. Only release title and notes can be modified.

dsh-minato

dsh-minato 3.0.4 — 2026-10-05(四路审查修复 / fixes from a four-way review)

⚠️ 非官方工具,由社区独立开发,与 DeepSeek 官方无关。本工具不是 dsh 插件:它是独立进程,不注入 dsh,dsh 没装也能用。

一句话:一轮"从零重读"的四路代码审查(正确性 / 安全面 / 跨层契约 / 插件)抓出 4 个高危问题,全部修复——其中包括"0.2.0 的活动检测其实只做了一半"和"体检报告会泄漏余额 key"。

In one line: a fresh four-way review found four high-severity bugs — all fixed, including a plugin
feature that was only half-wired and a health report that leaked the balance key.

需要你做什么 / Action required:是,请升级 —— 含 4 个高危:doctor --report 会把余额 key 明文带出报告(发报告求助即等于外泄),插件「挂着」分支不可达,体检期间的刷新被永久丢弃,看板 KPI 沿用旧快照。

本版改了什么(概述)

  • 高危修复:桥接插件丢弃 active=false —— 「挂着(dsh 内未动)」这个三态分支永远走不到,退回 15 分钟启发式,停止活动后 15 分钟内仍显示「运行中」(JS 只测过 true、false 只有 C# 在测,端到端断链)。
  • 高危修复:doctor --report 泄漏 balance_key —— 消毒器词表没有 balance_key,32 位 hex 也够不到 40+ 位 hex 规则;报告自称「(脱敏)」却把 key 带出去。
  • 高危修复:体检期间排队的刷新被永久丢弃(页面停在旧数据);看板 KPI 继承会话页旧快照(四张卡显示子集之和 + 错误「(父会话)」标签)。
  • 中危修复:balance_key 三处明文露出(config-get 回显 / 设置页无掩码 / toast 弹完整命令)、备份结果弹的是上一个动作的旧文案、auto_start_target 缺 CONFIG 行导致设置页渲染不出该项。
  • 低危修复:balance_key 拒收含 CR/LF 的自由文本(此前可向 launcher.config 注入任意配置行)。

commit=b0a5ffc80ac15dab9180c11db5b31ba2c72ba0ae · tag=v3.0.4

完整发版说明(点开展开)

修复 / Fixed

  • 桥接插件丢弃 active=false(高危):buildSnapshot 只写 true,"挂着(dsh 内未动)"这个三态分支
    永远走不到 → 退回 15 分钟启发式 → 停止活动后 15 分钟内仍显示"运行中"——正是 0.2.0 要消灭的误报,
    核心功能只做了一半。JS 测试只测过 true,false 只有 C# 在测,端到端断链 ✗ 现两侧都钉住 ✓
    The bridge dropped active:false — the "parked (confirmed idle)" tier was unreachable.
  • doctor --report 泄漏 balance_key(高危):消毒器词表没有 balance_key,32 位 hex 的 key 也够不到
    40+ 位的 hex 规则 → 用户把报告发出去求助 = key 外泄,与报告自称"(脱敏)"直接矛盾。消毒词表已补 ✓
    The doctor report leaked the balance key past the sanitizer.
  • 体检期间排队的刷新被永久丢弃(高危):体检那 ~6.5 秒里触发的刷新只会入队,体检结束的完成回调
    不处理队列 → 页面停在旧数据,还会多闪一次加载指示。已对齐统一收尾路径 ✓
  • 看板 KPI 继承会话页的旧快照(高危):用过"非空"筛选再切到看板,四张卡显示子集之和
    且挂着错误的"(父会话)"标签。聚合现在只在会话页才采信列表快照 ✓
  • auto_start_target 缺 CONFIG 行:配置模型、白名单、序列化全有,唯独 config-get 没输出 →
    GUI 设置页永远渲染不出"开机自启启动什么"(CLI 还在提示你去改它 ✗)。已补 ✓
  • balance_key 三处明文露出(中):config-get 回显明文(进终端回滚缓冲)、设置页无掩码、
    保存时 toast 把含 key 的完整命令弹 8 秒。现在:CLI 只报 set/空 ✓;设置页专用编辑器——
    不回显、留空=保持不变、一键清除 ✓;toast 打码 ✓
  • 备份结果弹的是上一个动作的旧文案(中):BACKUP_FAIL 等真实错误用户根本看不到 ✗ 已改为弹本次结果 ✓
  • balance_key 拒绝换行(低):自由文本键含 CR/LF 可向 launcher.config 注入任意配置行 ✗ 已拒收 ✓

审查来源 / how these were found

四个独立上下文的审查(各自从零重读代码,不带主对话记忆):新代码正确性、安全面、跨层契约、JS 插件。
审查同时确认了:balance 命令确实只读(key 只进 Authorization 头)、GUI 全程 ProcessStartInfo 无 shell
(经典命令注入不可行)、动作闸门占用/释放路径本身无问题、插件定时器安全。

已知边界 / Known limits(本轮如实未修)

  • GUI"字符串拼命令行"的系统性习惯(引号拼接而非 ArgumentList)未迁移——当前残余为低危旗标注入。
  • Run 的 30 秒硬超时会杀长任务:update / install / 大目录备份可能中途被杀,留下半截备份包。
  • 概览页的状态大徽章不走字段级刷新;配置落盘无 DPAPI(Windows)/ 0600(Linux)加固、非原子写入。
  • 插件两个"存疑"项(时间戳类型、sessionQuery 形状)取决于 dsh 实际行为,标疑未改。

产物 / Assets

文件 说明
dsh-minato-3.0.4-win-x64-setup.exe (+.sha256) Windows 安装器(双击即装)
dsh-minato-win-x64.zip (+.sha256) Windows 免安装包
dsh-minato-linux-x64.tar.gz (+.sha256) Linux x64 包(./install.sh)
hashes.txt / hashes.txt.asc 全部产物的 SHA-256,及其 GPG 签名

验证 / Verification

  • 本地就绪度门槛 13 项全绿;契约测试 355 · GUI 逻辑 68 · 桥接插件自测 25 块(新增 active=false 端到端断言)· v2 单元测试 318
  • CI 两平台全绿(windows-latest / ubuntu-latest);Windows 包内含 GUI 窗口冒烟
  • 审查复核:每条修复都经主会话按锚点逐字核实后才落盘(一个锚点因缩进差异打歪,被"OK/FAIL 逐条报告"当场抓住重打 ✓)
  • Linux 真机(虚拟机)验证仍停留在 3.0.0 —— 本版只有 CI 的打包与冒烟,没有重跑真机,如实写明

许可 / License

MIT(代码)。图标不是 MIT —— 见 docs/ASSETS.md。
GitHub:@sakanamaru

dsh-minato 3.0.3(连点修复、余额入口与只刷字段 / click-guard, balance entry & field-level refresh)

Choose a tag to compare

@github-actions github-actions released this 04 Oct 09:53
Immutable release. Only release title and notes can be modified.

dsh-minato

dsh-minato 3.0.3 — 2026-10-04(连点修复、余额入口与只刷字段 / click-guard, balance entry & field-level refresh)

⚠️ 非官方工具,由社区独立开发,与 DeepSeek 官方无关。本工具不是 dsh 插件:它是独立进程,不注入 dsh,dsh 没装也能用。

一句话:修掉两个实际使用中踩到的问题(「更新能连点好几次」「余额配置入口找不到」),并把概览/看板的自动刷新从整页重建改成只刷会变的那几个字段。

In one line: two real usability bugs are fixed — repeated clicks launched concurrent updates, and the balance
key had no discoverable entry point.

需要你做什么 / Action required:是(建议升级)—— 连点更新会并发起多个 update --yes(npm 安装互相踩、连做三次备份、回滚点互相覆盖);不是安全问题,但会实际弄坏更新过程。

本版改了什么(概述)

  • 修复更新可以连续点好几次:每次点击都新起一个 CLI 进程,点三次就是三个 update --yes 同时跑。现在同时只允许一个 CLI 动作:忙时的点击如实拒绝并说明在跑什么、跑了多久(不排队),按钮禁用并显示「进行中:X …」。
  • 修复**「立即备份」走自己的 async void 路径、绕开了闸门** → 一并纳入(闸门在其两个阶段之间放开)。
  • 新增余额的入口:未绑定 key 时设置页有独立分组、概览页给一行入口并带一键跳转;余额数字在未绑定时仍然一个都不显示(原设计不变)。
  • 变更:概览/看板自动刷新由整页重建改为只刷注册字段 —— 不再滚动回顶、不再丢焦点与展开的下拉、不再整页淡入。
  • 变更:三语 README 的截图从折叠块恢复到页面顶部常显(3.0.1 折叠在 GitHub 上等于看不见)。

commit=3648d65ad39dcde328577dd998f936cfbbc236ad · tag=v3.0.3

完整发版说明(点开展开)

新增 / Added

  • 余额的入口(未绑定 key 时):设置页新增独立分组「DeepSeek 余额检测」,概览页也给出一行入口并带
    一键跳转 —— 此前未绑定就连"去哪填 key"都无处可寻 ✗。余额数字在未绑定时仍然一个都不显示 ✓(原设计不变)。
    A discoverable entry for the balance key (own Settings group + one-line pointer on the overview page).
    Balance figures stay hidden while unbound, as before.

  • 概览 / 看板改成「只刷字段」(用户要求:"自动刷新回整页刷新,可以只字段刷新吗"):原来每一拍都重建整棵视觉树 ✗
    —— 滚动位置回到顶部、焦点与展开的下拉全丢、整页还淡入 160 毫秒 ✗✗(观感就是"整页闪一下")。
    现在页面把会变的字段注册进来 ✓ 自动刷新那一拍只重算并改文字 ✗ 不重建 ✓✓;
    取值走每次重算的取值函数 ✓(不是建树那一刻的快照 ✗ —— 传快照就永远显示旧值 ✓);未注册任何字段的页面退化为整页重建 ✓
    (免得"刷新了却什么都没动"更难查 ✓)。体检卡保持普通卡 ✓(它只在点按钮后变,而那次本来就整页重建 ✓ 顺带保住红/黄配色信号 ✓)。
    Field-level refresh: auto-refresh now updates only the registered fields instead of rebuilding the whole tree.

修复 / Fixed

  • 更新可以连续点好几次 ✗✗:每次点击都会新起一个 CLI 进程,点三次就是三个 update --yes 同时跑
    (npm 安装互相踩 + 连做三次备份 + 回滚点互相覆盖)。
    现在同时只允许一个 CLI 动作:正在跑时的点击如实拒绝并说明在跑什么、已经跑了多久 ✗ 不排队 ✗
    (排队会把看不见的活堆在长任务后面)。按钮同时禁用并显示「进行中:X …」,更新页也写明为什么灰;
    动作结束时在 finally 里必定放开闸门 ✓(否则按钮会永久卡死,比重复点击更难查)。
    Repeated clicks no longer launch concurrent updates — one CLI action at a time, refused with an explanation.
  • 「立即备份」走的是自己的 async void 路径,绕开了闸门 ✗ → 一并纳入 ✓
    (闸门在它的两个阶段之间放开,否则"第一次备份"的第二步会被自己的闸门拒掉 ✗✗)。
    The backup button had the same hole through its own async path; now gated too.
  • 概览页余额未绑定时连入口都没有 ✗ → 补一行入口 ✓。
  • 三语 README 的截图"消失" ✗:3.0.1 里把画廊写进了折叠块,在 GitHub 上默认收起 = 看不见 →
    恢复为页面顶部常显(6 张主图 + 其余一次点击)。
    The README screenshots are visible again at the top (3.0.1 had them collapsed, which reads as "gone").

变更 / Changed

  • v3.0.0 与 v3.0.1 的发版说明重排为同一骨架(一句话 → 新增 / 修复 / 变更 → 产物 → 验证 → 已知边界 → 许可),
    docs/CHANGELOG.md 也合并为同一结构。
    Release notes now share one skeleton across versions.
  • 开发态版本标记:本次修复在发布前把 main 标为 3.0.2-dev ✗ 不冒充已发布的 3.0.1 ✓。

产物 / Assets

文件 说明
dsh-minato-3.0.3-win-x64-setup.exe (+.sha256) Windows 安装器(双击即装)
dsh-minato-win-x64.zip (+.sha256) Windows 免安装包
dsh-minato-linux-x64.tar.gz (+.sha256) Linux x64 包(./install.sh)
hashes.txt / hashes.txt.asc 全部产物的 SHA-256,及其 GPG 签名

验证 / Verification

  • 本地就绪度门槛 13 项全绿;契约测试 355 · GUI 逻辑 68 · 桥接插件自测 25 · v2 单元测试 318
  • CI 两平台全绿(windows-latest / ubuntu-latest);Windows 包内含 GUI 窗口冒烟(真的启动并创建窗口)
  • 人工复现与复测:问题在第二台机器上被用户实测发现(连点更新、找不到余额入口),修复后同一路径复测通过
  • Linux 真机(虚拟机)安装验证仍停留在 3.0.0 —— 本版只有 CI 的打包与冒烟,没有重跑真机,如实写明

已知边界 / Known limits

  • 闸门是"拒绝"不是"排队":长任务进行中,其它动作会被明确拒绝 ✗ 不会替你排队 ✗(这是刻意的:排队会隐藏
    "其实还没开始"的状态)。
  • Windows 产物没有数字签名 —— 请用公布的 .sha256 与 GPG 签名核对。
  • 桥接插件需要 pnpm;desktop profile 由官方桌面端管理。
  • 图形界面基于 Avalonia,因此不是零依赖 —— 项目其余部分是。

许可 / License

MIT(代码)。图标不是 MIT —— 见 docs/ASSETS.md。
GitHub:@sakanamaru

dsh-minato 3.0.1(响应性与界面整理 / responsiveness & UI tidy-up)

Choose a tag to compare

@github-actions github-actions released this 02 Oct 22:02
Immutable release. Only release title and notes can be modified.

dsh-minato

dsh-minato 3.0.1 — 2026-10-03(响应性与界面整理 / responsiveness & UI tidy-up)

⚠️ 非官方工具,由社区独立开发,与 DeepSeek 官方无关。本工具不是 dsh 插件:它是独立进程,不注入 dsh,dsh 没装也能用。

一句话:把被指出的「卡」与「读数不诚实」集中修掉 —— 切页不再等 CLI、体检改成按钮触发、
「运行中」改成如实三态、设置页分类并改成选择框、新增 DeepSeek 余额检测;GUI 体积同时瘦了三分之一。

In one line: the reported sluggishness and the misleading session status are fixed — instant page
switches, a button-triggered health check, three honest session states, a categorised settings page with
drop-downs, a new DeepSeek balance check, and a GUI a third smaller.

需要你做什么 / Action required:否(建议升级)—— 正文无安全类条目;升级可换来更诚实的会话状态、即时切页,以及体积小三分之一的 GUI。

本版改了什么(概述)

  • 修复读数不诚实:不再把「挂在 dsh 进程里」说成「运行中」,改为 运行中 / 挂着·最后活动 N 前 / 活动未知 三态(老插件用最后活动时间兜底)。
  • 修复点击后零反馈:进页原本要等 CLI 跑完才重画(体检 6.5 秒、更新 7.9 秒屏幕不动)→ 现在点击立刻换页 + 加载指示 + 数据到达淡入。
  • 新增:DeepSeek 余额检测(自填 key,未绑定则整卡隐藏且不发任何请求)、概览自动刷新(0.5/1/3/5 秒 + 暂停 + 自定义)、可选启动页、体检逐行出结果、桥接插件 0.2.0「真在动」信号。
  • 变更:GUI 启用裁剪,Windows 自包含包 约 74 MB → 约 50 MB;设置页分类并改用下拉选择框;体检不再自动运行、改为按钮触发。
  • 变更:v2 整棵树移入 v2/(仓库根条目 24 → 14);三语 README 与本页统一为同一套骨架。

commit=e065a693dd30450ffb2f8a2a4858d8129cd672b1 · tag=v3.0.1

完整发版说明(点开展开)

新增 / Added

  • DeepSeek 余额检测:在设置里填入你自己的 key(balance_key)后,概览页显示充值余额 / 活动赠送余额;
    未绑定则整卡隐藏,且一个网络请求都不发。key 明文存在本机配置里,只发给 DeepSeek 的接口。
    DeepSeek balance: set your own key in Settings to see topped-up and granted balance; hidden and fully
    offline when unset. The key is stored in plain text locally and only ever sent to the DeepSeek API.
  • 概览自动刷新:实时 0.5 秒 / 快 1 秒 / 中 3 秒 / 慢 5 秒 / 暂停 / 自定义(0.5–3600 秒)。只在概览与看板生效;
    刷新在跑时跳过本拍,不会堆积。
    Overview auto-refresh with 0.5 / 1 / 3 / 5 s presets, pause, and a custom interval.
  • 启动页可自选:设置里选好,下次打开就落在那一页。
    Selectable start page.
  • 体检逐行出结果:点「运行体检」后列表先出现,结果一行一行补上(慢的那项最后出,且如实说明它为什么慢)。
    Row-by-row health check: the list appears first and fills in as each check finishes.
  • 桥接插件 0.2.0:新增「真在动」信号(相邻两拍之间事件序号变过即为在动)—— 长生成中途也判得准。
    Bridge plugin 0.2.0 adds a real activity signal (event-sequence delta), accurate even mid-generation.

修复 / Fixed

  • 不再把「挂在 dsh 里」说成「运行中」:live 只表示会话还挂在 dsh 进程内(桌面端开着时它 store 里的会话全是 live,
    哪怕几天没碰)。现在如实分三态:运行中 / 挂着 · 最后活动 N 前 / 活动未知,计数改名「dsh 活跃」。
    插件还是 0.1.0 时用最后活动时间兜底,所以老用户同样吃到这条修复。
    "live" is no longer reported as "running" — three honest states, and it works with the older plugin too.
  • 点击后零反馈:原来进页要等 CLI 跑完才重画(体检 6.5 秒、更新 7.9 秒里屏幕一动不动)。现在点击立刻换页
    (先显示旧数据),附加载指示、说明为什么等,数据到账时淡入。
    Instant page switch with visible loading instead of up to 7.9 s of a frozen screen.
  • 排队的刷新会提前熄灯 → 改为「还有排队就继续亮」。
    The loading indicator no longer goes dark while a queued refresh is still pending.
  • 发布清单里的名字与包内实际条目对不上(清单写 .github/SECURITY.md,而 zip 里是 SECURITY.md)。
  • 两处自检漏检:verify_fixes 的命令面清单、compare_markers 的忽略规则(空值键在行尾 Trim 后匹配不到)。
  • .dsh_launcher_root 曾被取消跟踪,而发布清单与 zip 仍按路径取它 —— 会让 build job 失败、并让发布包丢掉
    卸载器的「防误删」闸门。已恢复跟踪。

变更 / Changed

  • GUI 体积 −33%:启用裁剪(PublishTrimmed + TrimMode=partial)。Windows 自包含包 约 74 MB → 约 50 MB;
    GUI 自身的压缩包 43.7 MB → 19.3 MB。刻意不做单文件(只再多省 3.5 MB,代价是首次运行要解包到临时目录)。
  • 设置页分类 + 选择框:分为「界面与启动(含排障开关)」「dsh · 更新 · 数据 · 余额」「其它」;
    枚举型配置一律下拉选择,不再手敲。
  • 体检不再自动运行:进页只显示上次结果,点按钮才跑。
  • 形态与插件页的安装教程移到底部。
  • v2 整棵树移入 v2/:仓库根条目 24 → 14。已发布的老版本不受影响(v2 的发布包自带 verify.ps1,
    公钥回退按不变的 tag 下载)。
  • 文档统一:三语 README 重写为同一套骨架(动机 / 功能 / 安装 / 快速上手 / 图形界面 / 命令行 /
    安全与隐私 / 已知限制 / 可选插件 / 许可与致谢);本页与后续发版说明也统一为同一骨架。

产物 / Assets

文件 说明
dsh-minato-3.0.1-win-x64-setup.exe (+.sha256) Windows 安装器(双击即装)
dsh-minato-win-x64.zip (+.sha256) Windows 免安装包
dsh-minato-linux-x64.tar.gz (+.sha256) Linux x64 包(./install.sh)
hashes.txt / hashes.txt.asc 全部产物的 SHA-256,及其 GPG 签名

验证 / Verification

  • 本地就绪度门槛 13 项全绿;契约测试 355 · GUI 逻辑 68 · 桥接插件自测 25 · v2 单元测试 318
  • CI 两平台全绿(windows-latest / ubuntu-latest);Windows 包内含 GUI 窗口冒烟(真的启动并创建窗口)
  • 人工验证:Windows 上逐页点过(GUI)。Linux 真机(虚拟机)安装验证停留在 3.0.0 —— 本版只有 CI 的
    打包与冒烟,没有重跑真机,如实写明。

已知边界 / Known limits

  • Windows 产物没有数字签名 —— 请用公布的 .sha256 与 GPG 签名核对,而不是依赖证书。
  • 桥接插件需要 pnpm(npm i -g pnpm);desktop profile 由官方桌面端管理,插件要在桌面端自己的对话框里添加。
  • 图形界面基于 Avalonia,因此不是零依赖 —— 项目其余部分是。
  • Linux 真机验证停留在 3.0.0(见上)。

许可 / License

MIT(代码)。图标不是 MIT —— 见 docs/ASSETS.md。
GitHub:@sakanamaru

dsh-minato 3.0.0(首个正式版 / first stable release)

Choose a tag to compare

@github-actions github-actions released this 01 Oct 21:22
Immutable release. Only release title and notes can be modified.

dsh-minato

dsh-minato 3.0.0 — 2026-10-02(首个正式版 / first stable release)

⚠️ 非官方工具,由社区独立开发,与 DeepSeek 官方无关。本工具不是 dsh 插件:它是独立进程,不注入 dsh,dsh 没装也能用。

一句话:V3 线转正的第一个正式版 —— 跨平台 CLI + 十页图形界面、备份/恢复引擎重写、47 项缺陷修复,
外加一项可选的只读桥接插件(装了才能实时看到「哪些会话还活着」)。

In one line: the first stable release of the V3 line — a cross-platform CLI plus a ten-page GUI, a rewritten
backup/restore engine, 47 defect fixes, and an optional read-only bridge plugin.

需要你做什么 / Action required:否 —— 首个正式版,正文没有需要立即处置的条目;从 v2 或 preview 升级、或直接新装都可以。

本版改了什么(概述)

  • 新增 V3 跨平台 CLI(31 个具名命令 + 无参数数字菜单)与 Avalonia 十页 GUI,并首次支持 Linux x86-64(免 sudo 一键装 Node)。
  • 新增 备份/恢复引擎重写:完成标记 + 逐文件内容哈希 + 恢复前锚点(可回滚)、截断包拒收、不写穿符号链接。
  • 修复 47 项缺陷(三轮子代理复审 + 真机审查),含恢复失败自动回滚、junction / 符号链接不再绕过恢复隔离闸门、Node 运行时下载过官方 SHASUMS256 校验、.. 越界删除一律拒绝。
  • 变更:CLI 拆分(Program.cs 3595 → 1060 行)、备份引擎两端去重(各 −111 行)、本地就绪度门槛 11 → 13 项。
  • 附可选的只读桥接插件:不装只是「运行中」标记退化为 unknown,其余字段照常。

commit=6ea2d2cbb01e3860a6021d45d6e8086f55ae8ea7 · tag=v3.0.0

2026-10-07 复核修订(补充说明,不改动下方原文):本版正文曾把「恢复失败自动回滚」「符号链接/junction 双向验证」「.. 逃逸」写作真机双向验证 ✓ 现收回该措辞 —— 当时它们的实际状态是"已实现;测试未覆盖" ✓ 逐条更正与后续补齐的断言见仓库 docs/release-notes-v3.0.0.md 与 docs/审查报告-2026-10-07-审核意见.md ✓

完整发版说明(点开展开)

新增 / Added

  • V3 跨平台 CLI(dsh-minato):31 个具名命令 + 无参数数字菜单 —— 安装/更新/卸载、起停、状态、体检、会话、
    profile 扫描与处方、备份/恢复/导出/删除、配置读写、引导诊断、自检、快捷方式、about。
    V3 CLI: 31 named commands plus a numeric menu.
  • V3 图形界面(Avalonia,Windows / Linux 通用):概览 · 看板 · 会话与 Token · 形态与插件 · 备份 · 体检 ·
    设置 · 说明 · 更新 · 日志。
    V3 GUI (Avalonia, Windows and Linux): ten pages.
  • Linux 支持(x86-64):CLI 全命令可用;免 sudo 一键装 Node(curl/wget/python3 任一,按 CPU 架构选包);
    一键起停按可观测事实判定;shortcut 写应用菜单项;备份/恢复含工作区。
    Linux support (x86-64), including a no-sudo Node bootstrap.
  • 备份 / 恢复引擎重写:完成标记 + 逐文件内容哈希 + 恢复前自动锚点(可回滚)+ 截断包拒收 + 不写穿符号链接。
    Rewritten backup/restore engine with a completion marker, content hashes and a pre-restore anchor.
  • 可选的只读桥接插件 dsh-minato-bridge:把「哪些会话还活着」从 dsh 进程内投影出来。装不装由你决定,
    不装只是少一个字段(见下方专节)。
    Optional read-only bridge plugin; without it one field falls back to unknown.

修复 / Fixed

  • 47 项缺陷(三轮子代理复审 + 真机审查逐条修),代表性条目:
    47 defect fixes, three rounds of review plus a real-machine audit. Representative ones:
    • 恢复失败会自动回滚(此前失败后数据留在半途,无路可退)
    • 符号链接 / junction 不再绕过恢复隔离闸门(两端都解析真实路径;真机双向验证)
    • Node 运行时下载后必须过官方 SHASUMS256 校验,不匹配就拒绝解压(fail-closed)
    • .. 越界删除:纯词法规范化,逃逸一律拒绝
    • 中断的备份会被识别为不完整(完成标记 + 内容哈希),恢复时拒收并说明原因
    • 不再写穿目标端的符号链接;不再把部分失败报成成功
    • wipe 只打印手动删除路径,不删也不备份(本版有行为断言守住这条承诺)
  • Windows 停桌面端时的真实死锁:异步排空两条输出流 + 超时如实报失败 + 复核进程真的没了。
  • 状态目录探测竞态:探测名唯一(pid + 随机),并发进程不再得出不同结论。
  • 发布产物不再混入 v2 旧产物:v2 的 build job 原来对任何 tag 都触发,v3 tag 上会产出 v2 的 exe 与 zip;
    现在只对 v2* tag 触发。
    The v2 build job no longer runs on v3 tags.
  • 单文件产物开启压缩(体积更小)。

变更 / Changed

  • CLI 拆分:Program.cs 3595 → 1060 行(−70.5%),拆成 7 个 partial 文件;调用点与行为未变。
    CLI split into seven partial files, no call-site or behaviour change.
  • 备份引擎去重:Windows 与 Linux 两端逐字相同的 6 个方法提成共享基类,两端各减 111 行 ——
    此前「一处修 bug 必须记得改两处」,而已经漏过一次。
    Backup engine de-duplicated into a shared base; 111 lines removed on each side.
  • 删除无人调用的 IPaths.BackupsRoot(接口 + 2 份实现 + 2 条断言,−78 行)。
  • 本地就绪度门槛 11 → 13 项:新增「CI 接线不变量」与「wipe 行为诚实性」。

可选的桥接插件

工具箱本体是独立进程:不注入 dsh,dsh 没装也能用。但有一个事实只有 dsh 进程自己知道 —— 当前有几个会话正在运行。
这是进程内的运行态,dsh 不落盘,所以磁盘投影里没有它,工具箱只能显示 unknown。

不装插件 装了插件
会话清单 / token / 命中率 / 速度 ✅(读磁盘投影) ✅
「运行中」标记 ❌ unknown ✅ 实时

它不做什么:❌ 不发模型请求(不消耗 token)· ❌ 不写 dsh 状态 · ❌ 不读会话正文 · ❌ 不联网 · ❌ 不阻塞。

dsh plugin --profile web add "https://github.com/sakanamaru/dsh-minato"
# 或本地目录(最稳,不依赖网络)
dsh plugin --profile web add "<本仓库路径>/plugin/dsh-minato-bridge"

⚠️ desktop profile 由 dsh 桌面端独占管理,命令行装不进去 —— 请在桌面端的「添加插件」对话框里粘贴上面任一条。

产物 / Assets

文件 说明
dsh-minato-3.0.0-win-x64-setup.exe (+.sha256) Windows 安装器
dsh-minato-win-x64.zip (+.sha256) Windows 免安装包
dsh-minato-linux-x64.tar.gz (+.sha256) Linux x64 包(./install.sh)
hashes.txt / hashes.txt.asc 全部产物的 SHA-256,及其 GPG 签名

验证 / Verification

  • 自动化(每次提交都跑):契约测试 403 项 · GUI 逻辑 58 项 · 插件测试 23 项;
    备份/恢复/删除真实往返(隔离根)· 符号链接/junction 双向验证 · 发布物自证(篡改可检出)· 领域层纯净度 ·
    v2.x 发布链完好性。
  • 真机:Windows(GUI 四视图截图 · 安装器静默安装 · 备份/恢复端到端);Linux(VMware 虚拟机:
    下载 → sha256sum -c → ./install.sh → version/about/doctor/backup → --uninstall 全部通过)。
  • 真机这一步抓到了三个自动化门槛全都漏掉的问题:tar 包里没有 hashes.txt(安装器因此「未做任何校验」)、
    5 个 shell 脚本丢了可执行位、桥接插件要求用户手工补 patch 行 —— 三个都已在 3.0.0 里修掉。

已知边界 / Known limits

  • 体积:自包含单文件约 76 MB(含 .NET 运行时)。(3.0.1 起 GUI 启用裁剪,整包降到约 50 MB。)
  • 桥接插件需要 pnpm(npm i -g pnpm);desktop profile 由官方桌面端管理。
  • 图形界面基于 Avalonia,因此不是零依赖 —— 项目其余部分是。

开发阶段记录 / development stages

以下阶段是 3.0.0 在同一天内逐轮收敛的过程记录,内容都已包含在正式版里:
v3.0.0-preview.1(V3 CLI 与 GUI 首版)· preview.2(审计修复)· preview.3(Linux 真机修复)。

许可 / License

MIT(代码)。图标不是 MIT —— 见 docs/ASSETS.md。
GitHub:@sakanamaru

dsh-minato 3.0.0-preview.3(Linux 真机修复版 / fixes from a real Linux install)

Choose a tag to compare

@github-actions github-actions released this 01 Oct 21:12
Immutable release. Only release title and notes can be modified.

dsh-minato

dsh-minato 3.0.0-preview.3(首个 3.0 预览版 / first 3.0 preview)

⚠️ 非官方工具,由社区独立开发,与 DeepSeek 官方无关。本工具不是 dsh 插件:它是独立进程,不注入 dsh,dsh 没装也能用。

v3.0.0-preview.3 — 2026-10-02

Fixed / 修复(preview.2)

  • 发布产物不再混入 v2 旧产物:v2 的 build job 原来对任何 tag 触发,v3 tag 上会产出 v2 的 exe 与 zip;现在只对 v2* tag 触发。
  • 单文件产物开启 EnableCompressionInSingleFile(体积更小)。

v3.0.0-preview.1 — 2026-10-02

Added / 新增

  • V3 跨平台 CLI —— Windows 与 Linux 同一套命令面,标记行与 v2.x 逐字一致(compare_markers.ps1 21/21)。
  • V3 图形界面(Avalonia,Windows / Linux 通用)—— 概览 · 看板 · 会话与 Token · 形态与插件 · 备份 · 体检 · 设置 · 更新 · 日志。
  • 可选的只读桥接插件 dsh-minato-bridge —— 见下方专节。装不装由你决定,不装只是少一个字段。
    Optional read-only bridge plugin; see the section below. Without it, only one field falls back to unknown.
  • 发布物附 hashes.txt(含 GPG 签名 hashes.txt.asc);CLI 自带 verify-install 自校验。

Fixed / 修复

  • 备份/恢复引擎的 47 项缺陷(本轮真机审查 + 三轮子代理复审逐条修):
    • 恢复失败会自动回滚(此前失败后数据留在半途,无路可退)
    • 符号链接 / junction 不再绕过恢复隔离闸门(两端都解析真实路径;真机双向验证)
    • Node 运行时下载后必须过官方 SHASUMS256 校验,不匹配就拒绝解压(fail-closed)
    • .. 越界删除:纯词法规范化,逃逸一律拒绝
    • 中断的备份会被识别为不完整(完成标记 + 内容哈希),恢复时拒收并说明原因
    • 不再写穿目标端的符号链接;不再把部分失败报成成功
    • wipe 只打印手动删除路径,不删也不备份(本版有行为断言守住这条承诺)
  • Windows 停桌面端时的真实死锁:异步排空两条输出流 + 超时如实报失败 + 复核进程真的没了。
  • 状态目录探测竞态:探测名唯一(pid + 随机),并发进程不再得出不同结论。

Changed / 变更

  • CLI 拆分:Program.cs 3595 → 1060 行(-70.5%),拆成 7 个 partial 文件;调用点与行为未变。
  • 备份引擎去重:Windows 与 Linux 两端逐字相同的 6 个方法(约 110 行)提成共享基类,
    两端各减 111 行 —— 此前"一处修 bug 必须记得改两处",而已经漏过一次。
  • 删除无人调用的 IPaths.BackupsRoot(接口 + 2 份实现 + 2 条断言,-78 行)——
    它曾把一次安全修复"骗"进死代码里。
  • 本地就绪门槛从 11 项加到 13 项:新增"CI 接线不变量"与"wipe 行为诚实性",
    并如实打印本地覆盖不到的检查(本地全绿 ≠ CI 全绿)。

🧩 桥接插件(可选)—— 它解决什么问题

工具箱本体是独立进程:不注入 dsh,dsh 没装也能用。但有一个事实只有 dsh 进程自己知道:

当前有几个会话正在运行(以及每个会话的实时 token / 上下文压力)。

这是进程内的运行态,dsh 不落盘 —— 所以磁盘投影里没有它,工具箱只能显示 unknown。

不装插件 装了插件
会话清单 / token / 命中率 / 速度 ✅(读磁盘投影) ✅(读磁盘投影)
「运行中」标记 ❌ unknown ✅ 实时

它不做什么(硬约束):❌ 不发模型请求(不消耗 token)· ❌ 不写 dsh 状态 · ❌ 不读会话正文 ·
❌ 不联网 · ❌ 不阻塞(全 try/catch,插件坏了不能影响 dsh)。

安装

# 直接填仓库地址(仓库根已声明 dsh.bundle)
dsh plugin --profile web add "https://github.com/sakanamaru/dsh-minato"

# 或本地目录(最稳,不依赖网络)
dsh plugin --profile web add "<本仓库路径>/plugin/dsh-minato-bridge"

⚠️ desktop profile 由 dsh 桌面端独占管理,命令行装不进去 —— 请在桌面端的
「添加插件」对话框里粘贴上面任一条。装完确认 desktop profile 的 cordis.patch.yml
里有 shio-bridge 行(缺了插件不会加载而 dsh 不报错)。

校验

  • hashes.txt —— 全部产物的 SHA-256(另有 hashes.txt.asc GPG 签名)
  • CLI 自检:dsh-minato verify-install --url <本页 hashes.txt 地址>

许可与致谢

  • MIT License。代码是 MIT 的,图标不是 —— 图标来源与许可见仓库 docs/ASSETS.md。
  • DeepSeek Harness (dsh)
  • 图标:新 logo 为生成式 AI 产出(工具:Kimi),旧 logo 为 ChatGPT(OpenAI)协助产出;提示词均由本项目维护者编写
  • v1 脚本协助:SOGR-Momono Dango(QwenPaw / DeepseekAPI-V4-Flash-0731)
  • v2 重写与打包:DeepSeek DSH(DSH / DeepseekAPI-V4-Flash-0731)
  • GitHub:@sakanamaru

dsh-minato 3.0.0-preview.2(审计修复版 / audit fixes)

Choose a tag to compare

@github-actions github-actions released this 01 Oct 20:37
Immutable release. Only release title and notes can be modified.

dsh-minato

dsh-minato 3.0.0-preview.2(首个 3.0 预览版 / first 3.0 preview)

⚠️ 非官方工具,由社区独立开发,与 DeepSeek 官方无关。本工具不是 dsh 插件:它是独立进程,不注入 dsh,dsh 没装也能用。

v3.0.0-preview.2 — 2026-10-02

Fixed / 修复(preview.2)

  • 发布产物不再混入 v2 旧产物:v2 的 build job 原来对任何 tag 触发,v3 tag 上会产出 v2 的 exe 与 zip;现在只对 v2* tag 触发。
  • 单文件产物开启 EnableCompressionInSingleFile(体积更小)。

v3.0.0-preview.1 — 2026-10-02

Added / 新增

  • V3 跨平台 CLI —— Windows 与 Linux 同一套命令面,标记行与 v2.x 逐字一致(compare_markers.ps1 21/21)。
  • V3 图形界面(Avalonia,Windows / Linux 通用)—— 概览 · 看板 · 会话与 Token · 形态与插件 · 备份 · 体检 · 设置 · 更新 · 日志。
  • 可选的只读桥接插件 dsh-minato-bridge —— 见下方专节。装不装由你决定,不装只是少一个字段。
    Optional read-only bridge plugin; see the section below. Without it, only one field falls back to unknown.
  • 发布物附 hashes.txt(含 GPG 签名 hashes.txt.asc);CLI 自带 verify-install 自校验。

Fixed / 修复

  • 备份/恢复引擎的 47 项缺陷(本轮真机审查 + 三轮子代理复审逐条修):
    • 恢复失败会自动回滚(此前失败后数据留在半途,无路可退)
    • 符号链接 / junction 不再绕过恢复隔离闸门(两端都解析真实路径;真机双向验证)
    • Node 运行时下载后必须过官方 SHASUMS256 校验,不匹配就拒绝解压(fail-closed)
    • .. 越界删除:纯词法规范化,逃逸一律拒绝
    • 中断的备份会被识别为不完整(完成标记 + 内容哈希),恢复时拒收并说明原因
    • 不再写穿目标端的符号链接;不再把部分失败报成成功
    • wipe 只打印手动删除路径,不删也不备份(本版有行为断言守住这条承诺)
  • Windows 停桌面端时的真实死锁:异步排空两条输出流 + 超时如实报失败 + 复核进程真的没了。
  • 状态目录探测竞态:探测名唯一(pid + 随机),并发进程不再得出不同结论。

Changed / 变更

  • CLI 拆分:Program.cs 3595 → 1060 行(-70.5%),拆成 7 个 partial 文件;调用点与行为未变。
  • 备份引擎去重:Windows 与 Linux 两端逐字相同的 6 个方法(约 110 行)提成共享基类,
    两端各减 111 行 —— 此前"一处修 bug 必须记得改两处",而已经漏过一次。
  • 删除无人调用的 IPaths.BackupsRoot(接口 + 2 份实现 + 2 条断言,-78 行)——
    它曾把一次安全修复"骗"进死代码里。
  • 本地就绪门槛从 11 项加到 13 项:新增"CI 接线不变量"与"wipe 行为诚实性",
    并如实打印本地覆盖不到的检查(本地全绿 ≠ CI 全绿)。

🧩 桥接插件(可选)—— 它解决什么问题

工具箱本体是独立进程:不注入 dsh,dsh 没装也能用。但有一个事实只有 dsh 进程自己知道:

当前有几个会话正在运行(以及每个会话的实时 token / 上下文压力)。

这是进程内的运行态,dsh 不落盘 —— 所以磁盘投影里没有它,工具箱只能显示 unknown。

不装插件 装了插件
会话清单 / token / 命中率 / 速度 ✅(读磁盘投影) ✅(读磁盘投影)
「运行中」标记 ❌ unknown ✅ 实时

它不做什么(硬约束):❌ 不发模型请求(不消耗 token)· ❌ 不写 dsh 状态 · ❌ 不读会话正文 ·
❌ 不联网 · ❌ 不阻塞(全 try/catch,插件坏了不能影响 dsh)。

安装

# 直接填仓库地址(仓库根已声明 dsh.bundle)
dsh plugin --profile web add "https://github.com/sakanamaru/dsh-minato"

# 或本地目录(最稳,不依赖网络)
dsh plugin --profile web add "<本仓库路径>/plugin/dsh-minato-bridge"

⚠️ desktop profile 由 dsh 桌面端独占管理,命令行装不进去 —— 请在桌面端的
「添加插件」对话框里粘贴上面任一条。装完确认 desktop profile 的 cordis.patch.yml
里有 shio-bridge 行(缺了插件不会加载而 dsh 不报错)。

校验

  • hashes.txt —— 全部产物的 SHA-256(另有 hashes.txt.asc GPG 签名)
  • CLI 自检:dsh-minato verify-install --url <本页 hashes.txt 地址>

许可与致谢

  • MIT License。代码是 MIT 的,图标不是 —— 图标来源与许可见仓库 docs/ASSETS.md。
  • DeepSeek Harness (dsh)
  • 图标:新 logo 为生成式 AI 产出(工具:Kimi),旧 logo 为 ChatGPT(OpenAI)协助产出;提示词均由本项目维护者编写
  • v1 脚本协助:SOGR-Momono Dango(QwenPaw / DeepseekAPI-V4-Flash-0731)
  • v2 重写与打包:DeepSeek DSH(DSH / DeepseekAPI-V4-Flash-0731)
  • GitHub:@sakanamaru

dsh-minato 3.0.0-preview.1(首个 3.0 预览版 / first 3.0 preview)

Choose a tag to compare

@github-actions github-actions released this 01 Oct 20:10
Immutable release. Only release title and notes can be modified.

dsh-minato

dsh-minato 3.0.0-preview.1(首个 3.0 预览版 / first 3.0 preview)

⚠️ 非官方工具,由社区独立开发,与 DeepSeek 官方无关。本工具不是 dsh 插件:它是独立进程,不注入 dsh,dsh 没装也能用。

v3.0.0-preview.1 — 2026-10-02

Added / 新增

  • V3 跨平台 CLI —— Windows 与 Linux 同一套命令面,标记行与 v2.x 逐字一致(compare_markers.ps1 21/21)。
  • V3 图形界面(Avalonia,Windows / Linux 通用)—— 概览 · 看板 · 会话与 Token · 形态与插件 · 备份 · 体检 · 设置 · 更新 · 日志。
  • 可选的只读桥接插件 dsh-minato-bridge —— 见下方专节。装不装由你决定,不装只是少一个字段。
    Optional read-only bridge plugin; see the section below. Without it, only one field falls back to unknown.
  • 发布物附 hashes.txt(含 GPG 签名 hashes.txt.asc);CLI 自带 verify-install 自校验。

Fixed / 修复

  • 备份/恢复引擎的 47 项缺陷(本轮真机审查 + 三轮子代理复审逐条修):
    • 恢复失败会自动回滚(此前失败后数据留在半途,无路可退)
    • 符号链接 / junction 不再绕过恢复隔离闸门(两端都解析真实路径;真机双向验证)
    • Node 运行时下载后必须过官方 SHASUMS256 校验,不匹配就拒绝解压(fail-closed)
    • .. 越界删除:纯词法规范化,逃逸一律拒绝
    • 中断的备份会被识别为不完整(完成标记 + 内容哈希),恢复时拒收并说明原因
    • 不再写穿目标端的符号链接;不再把部分失败报成成功
    • wipe 只打印手动删除路径,不删也不备份(本版有行为断言守住这条承诺)
  • Windows 停桌面端时的真实死锁:异步排空两条输出流 + 超时如实报失败 + 复核进程真的没了。
  • 状态目录探测竞态:探测名唯一(pid + 随机),并发进程不再得出不同结论。

Changed / 变更

  • CLI 拆分:Program.cs 3595 → 1060 行(-70.5%),拆成 7 个 partial 文件;调用点与行为未变。
  • 备份引擎去重:Windows 与 Linux 两端逐字相同的 6 个方法(约 110 行)提成共享基类,
    两端各减 111 行 —— 此前"一处修 bug 必须记得改两处",而已经漏过一次。
  • 删除无人调用的 IPaths.BackupsRoot(接口 + 2 份实现 + 2 条断言,-78 行)——
    它曾把一次安全修复"骗"进死代码里。
  • 本地就绪门槛从 11 项加到 13 项:新增"CI 接线不变量"与"wipe 行为诚实性",
    并如实打印本地覆盖不到的检查(本地全绿 ≠ CI 全绿)。

🧩 桥接插件(可选)—— 它解决什么问题

工具箱本体是独立进程:不注入 dsh,dsh 没装也能用。但有一个事实只有 dsh 进程自己知道:

当前有几个会话正在运行(以及每个会话的实时 token / 上下文压力)。

这是进程内的运行态,dsh 不落盘 —— 所以磁盘投影里没有它,工具箱只能显示 unknown。

不装插件 装了插件
会话清单 / token / 命中率 / 速度 ✅(读磁盘投影) ✅(读磁盘投影)
「运行中」标记 ❌ unknown ✅ 实时

它不做什么(硬约束):❌ 不发模型请求(不消耗 token)· ❌ 不写 dsh 状态 · ❌ 不读会话正文 ·
❌ 不联网 · ❌ 不阻塞(全 try/catch,插件坏了不能影响 dsh)。

安装

# 直接填仓库地址(仓库根已声明 dsh.bundle)
dsh plugin --profile web add "https://github.com/sakanamaru/dsh-minato"

# 或本地目录(最稳,不依赖网络)
dsh plugin --profile web add "<本仓库路径>/plugin/dsh-minato-bridge"

⚠️ desktop profile 由 dsh 桌面端独占管理,命令行装不进去 —— 请在桌面端的
「添加插件」对话框里粘贴上面任一条。装完确认 desktop profile 的 cordis.patch.yml
里有 shio-bridge 行(缺了插件不会加载而 dsh 不报错)。

校验

  • hashes.txt —— 全部产物的 SHA-256(另有 hashes.txt.asc GPG 签名)
  • CLI 自检:dsh-minato verify-install --url <本页 hashes.txt 地址>

许可与致谢

  • MIT License。代码是 MIT 的,图标不是 —— 图标来源与许可见仓库 ASSETS.md。
  • DeepSeek Harness (dsh)
  • 图标:新 logo 为生成式 AI 产出(工具:Kimi),旧 logo 为 ChatGPT(OpenAI)协助产出;提示词均由本项目维护者编写
  • v1 脚本协助:SOGR-Momono Dango(QwenPaw / DeepseekAPI-V4-Flash-0731)
  • v2 重写与打包:DeepSeek DSH(DSH / DeepseekAPI-V4-Flash-0731)
  • GitHub:@sakanamaru