本帖使用社区开源推广,符合推广要求。我申明并遵循社区要求的以下内容:
- 我的帖子已经打上 开源推广 标签: 是
- 我的开源项目完整开源,无未开源部分: 是
- 我的开源项目已链接认可 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 ^-^