Skip to content

Releases

cc-dsh v1.9.2 — 每轮 token 统计与桌面一致

Choose a tag to compare

@huajikano huajikano released this 08 Nov 06:41

dsh-PEC v1.9.2 — 每轮用量和电脑端对得上了

手机端的「本轮用时 · tok · 缓存命中」之前是错的:只算了未缓存输入和输出,缓存读写整个漏掉,缓存型的长对话会少算约 100 倍;后来又发现断线重连会把同一条消息计两次,9.8M 的回合显示成 14.1M。

修了什么

  • 口径对齐:按 dsh-token-meter 的 usageTokens 计算——未缓存输入 + 缓存读取 + 缓存写入 + 输出;
  • 命中率同源:分母是三者之和(billedInputTokens),并且沿用桌面端「逐位加精度、绝不四舍五入成 100%」的写法;
  • 按 seq 去重:重连时 live 帧和紧随其后的 snapshot 会带同一条消息,现在同一条事件只计一次。

已验证

同一轮对话:逐条累加 14 条 assistant 消息 = 9,791,937,页面显示 9.8M;电脑端显示 9.8M。另外两轮 4.1M 也逐条核对一致。

附件

文件 说明
cc-dsh-plugin-1.9.2.zip 插件:解压得到 plugin-ccdsh/,在 DSH 里「安装本地目录」指向它
cc-dsh.tgz 同一个插件的 npm 包(文件名不带版本,市场用 latest 链接指向它)
cc-dsh-1.0.6.apk 手机端,本轮无改动(网络恢复能力在 1.0.6 里)

校验和:

33fe40ada2b9cc31c2a01b5ec0523b705f0a4d3d8a01a9029a67a6db3d6f5d50  cc-dsh-plugin-1.9.2.zip
7aa35bcf8b2927a118a68f87859906280f3eb10091cd5a411e1126cd8870c900  cc-dsh.tgz

cc-dsh v1.9.1 — 局域网连接修复(APK 1.0.6)

Choose a tag to compare

@huajikano huajikano released this 08 Nov 06:27

dsh-PEC v1.9.1 — 手机连不上局域网的问题修掉了

插件代码与 v1.9.0 相同,这一版重点是 APK 1.0.6:从 Tailscale 切回局域网不再白屏,也不会再"搜不到电脑"。

APK 1.0.6

  • 不再白屏:加载前先打 /api/ping 确认服务器活着;页面 12 秒没加载完也会转成恢复界面,而不是一片空白;
  • 自动找回地址:原地址失效时广播查找同一台电脑(按配对时记下的 serverId 匹配),找到就把地址换成局域网 IP,配对关系不变;
  • 恢复界面:重试 / 在局域网里查找 / 换一台电脑;
  • 发现更稳:除了 255.255.255.255,还会向每个网卡的子网广播地址发 4 轮,减少丢包导致的"搜不到"。

文档

docs/INSTALL-plugin.md 补了局域网排查:公用网络默认拦入站、需要放行 TCP 7317 + UDP 55901,以及 Block 规则优先于 Allow ——一条针对 DSH 本体的 Block 就能让所有端口放行失效。

附件

文件 说明
cc-dsh-plugin-1.9.1.zip 插件:解压得到 plugin-ccdsh/,在 DSH 里「安装本地目录」指向它
cc-dsh.tgz 同一个插件的 npm 包(文件名不带版本,市场用 latest 链接指向它)
cc-dsh-1.0.6.apk 手机端:本版必装,之前的版本没有网络恢复能力

校验和:

1dda47bb0d246c3b86b92ad1fedf694042b1f0a408ee17ce12e42d1c6baf9ff7  cc-dsh-plugin-1.9.1.zip
95b27f4d673d5d2206d9d204decfa3280fcc84f69fe6f413693cb7a6d3ca13b0  cc-dsh.tgz

cc-dsh v1.9.0 — 历史回翻、图片、草稿、每轮用量

Choose a tag to compare

@huajikano huajikano released this 08 Nov 05:51

dsh-PEC v1.9.0 — 历史回翻、图片、草稿、每轮用量

这一批把手机端最影响日常使用的几件事补齐了。

新功能

  • 加载更早:对话顶部出现「加载更早」,往回翻历史;翻页时阅读位置不动,断流重连也不会把已翻出来的旧消息冲掉;
  • 图片气泡:发给 DSH 的图片现在直接显示在消息里,走 GET /api/attachments/:id 从宿主的附件存储读回原图;
  • 每轮脚注:回答左下角显示 本轮用时 1 分 23 秒 · 6.7k tok · 缓存命中 99.9%,用时在生成过程中实时跳、结束定格,token 与缓存命中率取自每条 assistant 消息的 usage 汇总。

修复

  • 草稿不丢:输入到一半切走 / 返回列表 / 刷新页面,未发送的文字都还在(每会话独立);
  • 工具卡状态:完成后的调用不再显示「运行中」;结果被裁剪的调用显示「已结束」;
  • 打开会话:直接落在最新消息,不再从上往下滑一遍。

附件

文件 说明
cc-dsh-plugin-1.9.0.zip 插件:解压得到 plugin-ccdsh/,在 DSH 里「安装本地目录」指向它
cc-dsh.tgz 同一个插件的 npm 包(文件名不带版本,市场用 latest 链接指向它)
cc-dsh-1.0.4.apk 手机端,本轮无改动

校验和:

f3b5602116bc89c01a2af9e0d0f28b2614b5b1464d9852a609c7efe7da432473  cc-dsh-plugin-1.9.0.zip
921a2dd28bdf0220f09b03c290c15f196d0d08924ade255a381d30f2dbdef3de  cc-dsh.tgz

cc-dsh v1.8.2 — 打开会话就是最新消息

Choose a tag to compare

@huajikano huajikano released this 07 Nov 18:45

dsh-PEC v1.8.2 — 打开会话就是最新消息

修一个手感问题:从会话列表点进某个会话,对话会从上往下快速滑一遍才停在底部。

改了什么

  • 对话区不再用 scroll-behavior: smooth,贴底是瞬时的,不再有滚动动画;
  • 贴底在渲染的同一帧完成,第一帧看到的就是最新消息;
  • 快照还没回来时显示「正在读取会话…」,不再先渲染空列表再补内容(4 秒没等到快照会退回普通空态,不会一直转圈)。

附件

文件 说明
cc-dsh-plugin-1.8.2.zip 插件:解压得到 plugin-ccdsh/,在 DSH 里「安装本地目录」指向它
cc-dsh.tgz 同一个插件的 npm 包(文件名不带版本,市场用 latest 链接指向它)
cc-dsh-1.0.4.apk 手机端,本轮无改动

校验和:

0e10723d4f52ac3d8b4110aad4fa18a4f915b07b7f8c8b08a0a7dd2cf2f74441  cc-dsh-plugin-1.8.2.zip
4fca70e74f750f39b808a879bc1e638b1cdd9abb2e503810b9610c824820db9c  cc-dsh.tgz

cc-dsh v1.8.1 — 补上 v1.8.0 漏掉的修复

Choose a tag to compare

@huajikano huajikano released this 07 Nov 17:52

dsh-PEC v1.8.1 — 把 main 重新打包

v1.8.0 的插件包是在 7101f48 打的,之后 main 上还有两个提交没进包(模型选择修复、停止键修复)。这个版本按 main 重新打包,功能和仓库完全一致。

这一版包含

  • 当前模型:从宿主的 modelSelection 投影读取,冷会话不再退回全局默认;点模型时默认选最高推理档;
  • 两个新接口:GET /api/sessions(归档集)、GET /api/sessions/:id/model;
  • 停止键:桌面端发起的回合里,停止按钮不再变灰;
  • 空会话:与桌面端一致的隐藏规则,附「清理空会话」入口。

附件

文件 说明
cc-dsh-plugin-1.8.1.zip 插件:解压得到 plugin-ccdsh/,在 DSH 里「安装本地目录」指向它
cc-dsh.tgz 同一个插件的 npm 包(文件名不带版本,市场用 latest 链接指向它)
cc-dsh-1.0.4.apk 手机端,本轮无改动

校验和:

aaa201909183d60fe5925ecc66800b48fb6bd78484f64aaecf4c2bfd5f5be5b8  cc-dsh-plugin-1.8.1.zip
42490b53b26cd6983a0e039eb7ea4b6fe842b296e942b2d99f299fb95de2e779  cc-dsh.tgz

cc-dsh v1.8.0 — 全新界面 + 手机列表修复

Choose a tag to compare

@Zeraphyms Zeraphyms released this 07 Nov 16:17

按 VERSIONING 攒批发出的第一个 minor:包含自 v1.7.1 以来 main 上的全部改动。

界面(@huajikano)

  • 手机端采用 Harness 桌面同一套设计语言(设计令牌、深浅色、字号跟随 DSH 设置)
  • 配色借入 DeepSeek 官方 App 的主蓝与胶囊按钮
  • 聊天转写细节对齐官方客户端(代码块、工具卡片、思考折叠)

修复(@Zeraphyms)

  • 幽灵会话:手机列表与桌面可见性规则对齐——空会话(从未发过消息、桌面端从不显示)不再出现在手机列表;列表底部提供「清理空会话」入口(归档制,桌面端可恢复)
  • 运行状态卡死:长回答时 SSE 断线重连后手机可能永久显示「运行中」、停止按钮失效——现在快照以 Host 为准自愈(最迟 15 秒),停止按钮会轮询确认取消结果

兼容性

  • 基于 DSH desktop 0.2.1-rc.5 验证;安装后可跑 curl http://127.0.0.1:7317/api/health 自检

说明

  • 手机端网页(本 zip)已覆盖上述全部内容;APK 1.0.4 未随本版发布(原生层改动会在下一批 APK 发布时带上),旧 APK 与新插件完全兼容

安装:解压后用 DSH「插件管理 → 安装本地目录」指向 plugin-ccdsh;升级用户直接覆盖原目录后重启 DSH。详见 docs/INSTALL-plugin.md。

cc-dsh v1.7.1 — 获取模型并勾选

Choose a tag to compare

@huajikano huajikano released this 06 Nov 16:12

cc-dsh v1.7.1 — 手机上「获取模型」再勾选

和电脑端一致了:添加供应商不再需要手动输入模型 id。

流程(手机端「DSH 设置 → 添加供应商」)

  1. 填接口地址 baseURL、协议、API Key;
  2. 点获取模型 → 插件调用 DSH 的 llm.discoverModels(与桌面「获取模型」按钮同一条 Host 链路,GET {baseURL}/models);
  3. 返回的模型列表以勾选卡出现(默认全选,点一下取消不要的);
  4. 点创建 → 只写入勾选的模型。

不点获取也可以:留空时仍支持手动输模型(每行一个 id),两种方式并存。

细节

  • 已有供应商的编辑页不变(v1.7.0 的编辑/换密钥/删除都在);
  • 获取模型时填了 key 用填的;如果添加时没填 key,也可以走"从已存供应商发现":请求带 provider 路由名时,由 pi-ai 用存储的凭据自己去解析(POST /api/providers/discover 的 {provider, baseURL, api} 形态);
  • 端点拒绝(401/403)会原样提示「answered 401; check the API key」。

已验证

  • 真实端点发现:deepseek015 路由(存储密钥)→ 返回 4 个模型(deepseek-v4-flash-0731 / v4-pro / v4-pro-0813 / v4.1-flash);
  • 勾选 → 创建闭环: picked 2 个 → 创建 → 回读一致 → 删除还原;
  • 手机端新表单实测显示正常(含「获取模型」按钮);
  • 你的 4 个真实供应商未被改动,/api/health 依旧 ok: true。

附件

文件 说明
cc-dsh-plugin-1.7.1.zip 插件:解压覆盖后禁用再启用 cc-dsh
cc-dsh-1.0.3.apk 手机端(无改动)

校验和:

fdf6d1731715837604dfef088c1fda5091109d055c612b8b174db0943236f7a0  cc-dsh-plugin-1.7.1.zip

cc-dsh v1.7.0 — 手机上完整编辑供应商

Choose a tag to compare

@huajikano huajikano released this 06 Nov 16:12

cc-dsh v1.7.0 — 手机上完整编辑供应商

接着 v1.6.2 往前一步:供应商不再只是"可看 + 换密钥",手机上现在可以直接编辑。

新增

点任意供应商,弹出的编辑页包含:

  • 显示名称、接口地址 baseURL、协议(openai-completions / openai-responses / anthropic-messages)——均可改;
  • 模型列表:每行 id 或 id 显示名,增删改都行;
  • 保存配置一键写回;保存密钥(输入框留空 = 不动现有密钥);删除供应商(红色)。

后端是 POST /api/providers/update:只改提交的字段,其余保持原样(路由名不可改——它是配置键和密钥引用的锚点,改名等于新建)。

已验证

用临时路由做了全流程:创建(2 个模型)→ 改显示名 / baseURL / 协议 / 模型列表(3 个,含别名)→ 回读确认 → 空模型列表被拒(503)→ 不存在的路由被拒(503)→ 删除还原。手机端编辑页实测正常显示并预填现有配置。

你的三个真实供应商全程未被改动。

附件

文件 说明
cc-dsh-plugin-1.7.0.zip 插件:解压覆盖后禁用再启用 cc-dsh
cc-dsh-1.0.3.apk 手机端(无改动)

校验和:

b9860002f8051fe36fbf3cf63b2e2dc6b3ebe483a275ccf56c011b0991dbd232  cc-dsh-plugin-1.7.0.zip

cc-dsh v1.6.2 — 修复供应商面板点不开

Choose a tag to compare

@huajikano huajikano released this 06 Nov 16:12

cc-dsh v1.6.2 — 修复「模型供应商」点不开

问题原因

底部弹层(.sheet-mask)的层级是 z-index: 40,而面板(.panel)是 50。所以在「DSH 设置」里点「添加供应商」,弹层其实已经弹出、但被设置面板整个盖住,看起来就是点了没反应。

修复

  1. 弹层提到面板之上(z-index: 70),从任何面板里弹出的菜单都能正常显示;
  2. 设置页的表单控件(输入框、下拉、主按钮、键值行)补上了样式,之前只有默认外观;
  3. 供应商行改成可点开:显示路由名、接口地址、协议、密钥状态、模型列表,可直接更换密钥或删除供应商;
  4. 顺手修了返回顺序:弹层在面板之上,所以返回键/侧滑先关弹层、再关面板(之前会连设置页一起关掉)。

已验证

  • 点「添加供应商」→ 表单完整显示(路由名 / 显示名称 / 接口地址 / 协议 / API Key / 模型列表);
  • 点任意供应商 → 配置页正常显示并列出模型(如 deepseek-v4.1-flash);
  • 密钥接口闭环:新增(已配置)→ 更换 → 清空(未配置)→ 删除,全程 200,测试用的是临时路由,未触碰真实供应商;
  • 返回:弹层关、设置页仍在。

附件

文件 说明
cc-dsh-plugin-1.6.2.zip 插件:解压覆盖后禁用再启用 cc-dsh
cc-dsh-1.0.3.apk 手机端(本轮无改动,界面由插件提供)

校验和:

ffbe213c1035ef863501a374519283f05665ac8f207fcb063d95a02adeba3f74  cc-dsh-plugin-1.6.2.zip

cc-dsh v1.6.1 — 适配 DSH 0.2.2 + 能力自检

Choose a tag to compare

@huajikano huajikano released this 06 Nov 16:12

cc-dsh v1.6.1 — 适配 DSH 0.2.2,并且以后升级不再被带崩

这次到底怎么了

我在你现在这台机器上(DSH 0.2.2-rc.1)做完了完整核对:

  • 网关、会话列表、流式输出、模型/推理等级、文件、真 PTY、设置、供应商、计划任务、审批、归档 —— 全部返回正常;
  • 手机端在模拟器里跑通:列表、聊天、实时帧(工具卡片、助手文本)都正常渲染;
  • assistant-stream 帧在 0.2.2 变成了嵌套结构 frame.chunk.text,插件的手机端本来就是这个解析方式,所以这块不用改。

也就是说,插件代码对 0.2.2 是兼容的。DSH 那次"会话不可用 / 会话消失"更像是组合层的问题:profile 里同时存在 @deepseek-ai/dsh-experimental-terminal-bundle(它会插入 dsh-terminal + dsh-terminal-bash 一组行)和 0.2.2 内置的可选终端行,终端注册表重复会让整个组合加载失败。插件本身不依赖这个 bundle(终端用基础服务 subprocess),从 dsh.profile.bundles 里删掉它是安全的。

为了下次升级不再出事

  1. 激活全程 fail-soft:apply 里任何异常都只让插件自己不可用,不会影响 profile 其它插件和会话;
  2. 能力自检 GET /api/health:返回 ok、missing、optional、runtime,启动时也会打印一行;
  3. 按需降级:没有 PTY → 持久 shell;没有 credentials → 供应商只读;没有 archiveSession → 隐藏归档;
  4. 接口出错返回 503 并附带缺失项,不再是一个空洞的 500;
  5. 设置面板 + 手机端都有渲染兜底,单块面板挂掉不会拖垮整页;
  6. 手机端列表页在不匹配时会显示黄色提示条,写明缺什么。

升级后 30 秒自检

curl.exe -sS http://127.0.0.1:7317/api/health

ok: true + missing: [] 就没问题。

附件

文件 说明
cc-dsh-plugin-1.6.1.zip 插件:解压覆盖后禁用再启用 cc-dsh
cc-dsh-1.0.3.apk 手机端(本轮无改动)

校验和:

4f1151c91158ad73ea934f8ba0a0b098f9afe0c309b47d311afeb6941076282c  cc-dsh-plugin-1.6.1.zip

如果你手机上仍然是"用不了",请把这两样发我:/api/health 的返回,以及手机上的具体现象(打不开 / 列表空 / 发消息没反应 / 某个面板报错)—— 有这两样我能直接定位是网关、Host 能力还是手机端缓存。