【开源】给 DSH 的会话标题加了个模板系统,再也不用面对一排看不懂的 session 了

Cerbur 2026-09-13 19:28 1

本帖使用社区开源推广,符合推广要求。我申明并遵循社区要求的以下内容:



  • 我的帖子已经打上 开源推广 标签:

  • 我的开源项目完整开源,无未开源部分:

  • 我的开源项目已链接认可 LINUX DO 社区:

  • 我帖子内的项目介绍,AI生成、润色内容部分已截图发出:

  • 以上选择我承诺是永久有效的,接受社区和佬友监督:


以下为项目介绍正文内容,AI生成、润色内容已使用截图方式发出




最近用 DSH 比较多的时候有个小痛点:


会话一多,左边一排 session 光看标题很难快速找到自己想要的那个。


尤其是 Agent / Coding 场景,经常一天开十几个甚至几十个 session:



  • 修一个 bug

  • 看一个项目

  • 重构一段代码

  • 调一个 prompt

  • 查一个问题


过一会再回来看,标题全挤在一起,就有点分不清谁是谁了。


于是给 DSH 写了一个小插件:


@cerbur/clutch-dsh-title


专门用来定制 DSH 的 Session Title。


效果大概是这样:



0912 | 🚀 | add token statistics


0912 | 🐛 | fix session title fallback


0913 | 💡 | design redis cache strategy



日期、Emoji、固定文字、首条 Prompt 摘要都可以自己组合。





不只是换个标题格式


一开始其实只是想做个:


日期 + Prompt 摘要


后来发现既然都做了,不如直接做成一个模板系统。


现在可以在:


设置 → 会话标题


里面直接管理模板。



内置一个默认模板,也可以自己创建,例如:


template: '${daytime} | ${desc}'
fields:
daytime:
kind: datetime
source: session.createdAt
format: MMDD
timezone: Asia/Shanghai
desc:
kind: llm-text
instruction: Summarize the first prompt in a few words
maxCharacters: 32


目前支持几种字段:



  • datetime:日期时间

  • literal:固定文字

  • llm-enum:让模型从指定分类中选择,比如 ^-^ / ^-^ / ^-^

  • llm-text:让模型根据首条 Prompt 生成一小段描述


所以可以自己拼出各种奇怪的格式(笑)。


比如:


0913 | 🐛 | fix websocket reconnect


也可以:


09-13 / backend / investigate redis hot key


甚至只用日期和固定文字也行。




模板可以直接在设置里管理


目前做了这些功能:



  • 模板实时预览

  • 新建 / 复制 / 编辑 / 删除模板

  • 一键激活模板

  • 自定义 Emoji 分类

  • 模板配置校验

  • 开关插件标题生成

  • 随时切回 DSH 原生标题生成


保存模板和激活模板是分开的,所以可以先慢慢调,预览满意了再激活。


而且已有 session 不会被插件偷偷批量改标题


只有新建 session 或者你显式刷新标题时,才会使用新的模板。




LLM 挂了也不影响正常使用


这一块我比较在意。


这个插件本质上还是挂在 DSH 原生的 session title provider 上,不想为了一个标题把正常 session 搞挂。


所以做了几层 fallback:



  • 模板不存在 / 非法 → 回退 default

  • LLM 字段提取失败 → 回退 DSH 原生标题生成

  • 关闭插件标题模板 → 直接使用 DSH 自带生成器

  • 非法模板不会直接吃掉,会保留下来方便修改


DSH 原来的标题持久化、手动重命名、refresh、fork 等行为也尽量保持不变。


简单来说就是:


插件可以寄,标题生成不能把 DSH 一起带走 ^-^




还顺手加了 Token 统计


写完之后又发现一个问题:



我就生成几个标题,到底偷偷吃了多少 Token?



所以 0.1.3 又加了一个 Token 使用统计。


现在设置页面可以直接看到:



  • 累计生成次数

  • Input Token

  • Output Token

  • Total Token

  • 最近一次生成的 Token 明细

  • 缓存 / reasoning 信息(模型支持时)

  • 一键重置统计



另外标题这种任务本身不需要模型想太久,所以也针对 reasoningEffort 做了优化:


尽可能选择模型支持的最低思考档位,减少延迟和 Token 消耗。


后面还准备继续优化 prompt 和 first-prompt 的截断逻辑。


能省一点是一点 ^-^




安装


目前已经发布到 npm。


npm install @cerbur/clutch-dsh-title
dsh plugin --profile web add @cerbur/clutch-dsh-title


需要:


DSH >= 0.1.2-rc.1


装完之后打开:


设置 → 会话标题


选择模板并激活即可。




项目地址


GitHub:




整个项目是开源的,目前这个插件也还在继续迭代。


目前版本:


@cerbur/[email protected]


后面主要还想继续搞搞:



  • 降低标题生成的 Token 消耗

  • 优化 first prompt 截断

  • 丰富一些好用的预设模板

  • 继续改善设置页交互


大家如果有比较骚的标题模板,也欢迎分享一下 ^-^


有 bug / 想法欢迎提 Issue、PR。


如果觉得有点用,也欢迎帮忙点个 Star ^-^

最新回复 (1)
  • zhizhu 09-13 20:21
    2

    这个思路挺实用,装完 dsh-smart-title 后重启 dsh web 就能生效,不用额外配置;它会自动停用内置的 first-prompt 标题提供方,避免两个 provider 冲突

* 帖子来源Linux.do
返回