Repository navigation
Releases: sakanamaru/dsh-minato
Release list
dsh-minato 3.0.7(外部审查修复 + 审查回应 / external-review fixes and our response)
产物来源 / Provenance:
commit=46b4b47bf6ec4813336efee33de5c524163196d2·tag=v3.0.7· tag CI run37595591991(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(新 jobv3-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_fixes72/72(命令面一一对应 ✓)·verify_restore_apply41/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 releasev3.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)
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-onlyoverviewcommand 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 + 插件
- C1 备份日志与事实相反:完整备份不写日志、不完整反而写
- 页眉自动刷新条遮挡标题(
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 + CIMCommandLine换成直连查询
(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.ps172/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)
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)
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 droppedactive: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)
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;
desktopprofile 由官方桌面端管理。 - 图形界面基于 Avalonia,因此不是零依赖 —— 项目其余部分是。
许可 / License
MIT(代码)。图标不是 MIT —— 见 docs/ASSETS.md。
GitHub:@sakanamaru
dsh-minato 3.0.1(响应性与界面整理 / responsiveness & UI tidy-up)
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 仍按路径取它 —— 会让buildjob 失败、并让发布包丢掉
卸载器的「防误删」闸门。已恢复跟踪。
变更 / 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);desktopprofile 由官方桌面端管理,插件要在桌面端自己的对话框里添加。 - 图形界面基于 Avalonia,因此不是零依赖 —— 项目其余部分是。
- Linux 真机验证停留在 3.0.0(见上)。
许可 / License
MIT(代码)。图标不是 MIT —— 见 docs/ASSETS.md。
GitHub:@sakanamaru
dsh-minato 3.0.0(首个正式版 / first stable release)
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.cs3595 → 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 tounknown.
修复 / 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.cs3595 → 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"
⚠️ desktopprofile 由 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);desktopprofile 由官方桌面端管理。 - 图形界面基于 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)
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.ps121/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 tounknown. - 发布物附
hashes.txt(含 GPG 签名hashes.txt.asc);CLI 自带verify-install自校验。
Fixed / 修复
- 备份/恢复引擎的 47 项缺陷(本轮真机审查 + 三轮子代理复审逐条修):
- 恢复失败会自动回滚(此前失败后数据留在半途,无路可退)
- 符号链接 / junction 不再绕过恢复隔离闸门(两端都解析真实路径;真机双向验证)
- Node 运行时下载后必须过官方
SHASUMS256校验,不匹配就拒绝解压(fail-closed) ..越界删除:纯词法规范化,逃逸一律拒绝- 中断的备份会被识别为不完整(完成标记 + 内容哈希),恢复时拒收并说明原因
- 不再写穿目标端的符号链接;不再把部分失败报成成功
wipe只打印手动删除路径,不删也不备份(本版有行为断言守住这条承诺)
- Windows 停桌面端时的真实死锁:异步排空两条输出流 + 超时如实报失败 + 复核进程真的没了。
- 状态目录探测竞态:探测名唯一(pid + 随机),并发进程不再得出不同结论。
Changed / 变更
- CLI 拆分:
Program.cs3595 → 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"
⚠️ desktopprofile 由 dsh 桌面端独占管理,命令行装不进去 —— 请在桌面端的
「添加插件」对话框里粘贴上面任一条。装完确认 desktop profile 的cordis.patch.yml
里有shio-bridge行(缺了插件不会加载而 dsh 不报错)。
校验
hashes.txt—— 全部产物的 SHA-256(另有hashes.txt.ascGPG 签名)- 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)
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.ps121/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 tounknown. - 发布物附
hashes.txt(含 GPG 签名hashes.txt.asc);CLI 自带verify-install自校验。
Fixed / 修复
- 备份/恢复引擎的 47 项缺陷(本轮真机审查 + 三轮子代理复审逐条修):
- 恢复失败会自动回滚(此前失败后数据留在半途,无路可退)
- 符号链接 / junction 不再绕过恢复隔离闸门(两端都解析真实路径;真机双向验证)
- Node 运行时下载后必须过官方
SHASUMS256校验,不匹配就拒绝解压(fail-closed) ..越界删除:纯词法规范化,逃逸一律拒绝- 中断的备份会被识别为不完整(完成标记 + 内容哈希),恢复时拒收并说明原因
- 不再写穿目标端的符号链接;不再把部分失败报成成功
wipe只打印手动删除路径,不删也不备份(本版有行为断言守住这条承诺)
- Windows 停桌面端时的真实死锁:异步排空两条输出流 + 超时如实报失败 + 复核进程真的没了。
- 状态目录探测竞态:探测名唯一(pid + 随机),并发进程不再得出不同结论。
Changed / 变更
- CLI 拆分:
Program.cs3595 → 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"
⚠️ desktopprofile 由 dsh 桌面端独占管理,命令行装不进去 —— 请在桌面端的
「添加插件」对话框里粘贴上面任一条。装完确认 desktop profile 的cordis.patch.yml
里有shio-bridge行(缺了插件不会加载而 dsh 不报错)。
校验
hashes.txt—— 全部产物的 SHA-256(另有hashes.txt.ascGPG 签名)- 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)
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.ps121/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 tounknown. - 发布物附
hashes.txt(含 GPG 签名hashes.txt.asc);CLI 自带verify-install自校验。
Fixed / 修复
- 备份/恢复引擎的 47 项缺陷(本轮真机审查 + 三轮子代理复审逐条修):
- 恢复失败会自动回滚(此前失败后数据留在半途,无路可退)
- 符号链接 / junction 不再绕过恢复隔离闸门(两端都解析真实路径;真机双向验证)
- Node 运行时下载后必须过官方
SHASUMS256校验,不匹配就拒绝解压(fail-closed) ..越界删除:纯词法规范化,逃逸一律拒绝- 中断的备份会被识别为不完整(完成标记 + 内容哈希),恢复时拒收并说明原因
- 不再写穿目标端的符号链接;不再把部分失败报成成功
wipe只打印手动删除路径,不删也不备份(本版有行为断言守住这条承诺)
- Windows 停桌面端时的真实死锁:异步排空两条输出流 + 超时如实报失败 + 复核进程真的没了。
- 状态目录探测竞态:探测名唯一(pid + 随机),并发进程不再得出不同结论。
Changed / 变更
- CLI 拆分:
Program.cs3595 → 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"
⚠️ desktopprofile 由 dsh 桌面端独占管理,命令行装不进去 —— 请在桌面端的
「添加插件」对话框里粘贴上面任一条。装完确认 desktop profile 的cordis.patch.yml
里有shio-bridge行(缺了插件不会加载而 dsh 不报错)。
校验
hashes.txt—— 全部产物的 SHA-256(另有hashes.txt.ascGPG 签名)- 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
