Repository navigation
Releases
Releases · BPTumbleweed/dsh-session-retitle
v0.1.1 — 界面跟随 DSH 明暗主题
修复
按钮和气泡之前用的是 不存在的 --dsh-* 变量族(DSH 实际用的是 --dsw-alias-*,定义在 dsh-client-ui-theme 的 :root{} 与 [data-ds-dark-theme]{} 两组里),于是 #fff 兜底生效 —— 暗色主题下面板白底白字。
现在颜色全部走 DSH 真实变量,明暗切换自动生效(值随主题变,浏览器自动重绘,零 JS)。
三层保险
- 主:
--dsw-alias-label-primary/secondary/tertiary、--dsw-alias-border-l1/l2、--dsw-alias-bg-layer-2、--dsw-specific-menu、--dsw-alias-interactive-bg-hover、--dsw-elevation-*; - 备:运行时探测这些变量是否存在,不存在就用
detectTheme()(读data-ds-dark-theme/ class / 背景亮度 / 系统偏好)落自带明暗色板; - 兜底:CSS 系统色
Canvas/CanvasText,至少不会白底白字。
其他
- 悬停/聚焦态从内联样式搬进注入的
<style>(内联写不了:hover);气泡设color-scheme,让输入框的原生控件(光标、选区)也跟着主题; - 样式表按 id 幂等注入,重复 apply 不会插多份;
- 自测 30 → 35 项(新增主题标记识别、变量可用性探测、明暗色板分明、样式注入幂等)。
安装/升级:dsh plugin --profile web update dsh-session-retitle 后重启 dsh-web(客户端插件需重启才生效)。
v0.1.0 — 会话头部「重命名」按钮
这个版本做什么
在 DSH 会话头部加一个「重命名」按钮:手动点它,插件读本会话内容(人类消息 + 助手回复),用会话当前的模型起一个中文短标题,写回会话名。
补的是官方自动命名的空档 —— 官方 session-title-first-prompt-llm 只在第一条消息时命名一次;本插件任何时刻都能按内容重起,且手动改过之后官方自动命名不会再覆盖。
- 留空输入框 = 按会话内容自动起名;填名字 = 直接用(不花模型调用)
- 零运行时依赖:不 import 任何
@deepseek-ai/*包,只发两条自己的 HTTP 路由 - 改名交给官方
SessionTitleService.rename(),归一化/长度上限/user来源钉住都由官方负责 - 候选路由依次回退(会话
request/header→agent-default-model→ 插件配置兜底) - 同会话并发保护(连点第二次返回 429
already-running);/status带错误台账(byCode+ 最近 5 条原文) - 信任栅栏 fail-closed:路由先过
connection.requestRejection
开发中踩到的两个坑(都已修 + 回归用例)
- 输出被 maxTokens 截断:请求的
purpose用了自定义值,而dsh-llm-deepseek只在purpose === "session-title"时关闭思考 → 64 个输出 token 全被 reasoning 吃掉,正文一字未出就被判max-tokens。改用官方槽位后正常。 - 会话路由没有 adapter:某些会话日志里记着当前部署已不存在的 provider,原写法必失败。改为候选路由依次尝试。
安装
dsh plugin --profile web add github:BPTumbleweed/dsh-session-retitle详见 README。
验证
node test/selftest.mjs → 30 项全过;node test/contract-check.mjs → 4 项对真实 DSH 包的契约检查全过。