• Cerbur

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

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

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

    - 我的开源项目已链接认可 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:

    图片

    github.com

    clutch-dsh/packages/clutch-dsh-title at main · Cerbur/clutch-dsh

    main/packages/clutch-dsh-title

    Open-source DSH plugins for DeepSeek Harness:Git Worktree session management(会话管理)、Session Title(会话标题)与 Fireworks(庆祝特效),面向 AI coding workflows。 - Cerbur/clutch-dsh

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

    目前版本:```
    @cerbur/[email protected]
    ```后面主要还想继续搞搞:

    - 降低标题生成的 Token 消耗

    - 优化 first prompt 截断

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

    - 继续改善设置页交互

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

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

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

    主楼
  • zhizhu-linuxdo

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

    #1

发表回复

登录后回复