前言¶
在 DeepSeek Harness(DSH)里长期开多个工作区时,侧边栏会堆满会话:标题往往是首条消息的前几个字,或是随对话漂移的自动摘要,跨项目扫一眼很难对齐「哪天、什么类型、在干什么」。社区插件 dsh-session-title-stamp(维护者 xuedipiaofei)把会话标题收成可配置的 DATE | CATEGORY | NAME 模板,日期由插件按会话创建时间在本地时区计算,分类与名称由模型提议、在本地校验后渲染;并在 0.7.x 起提供设置页、会话头刷新按钮,以及悬停时的时长 / 预估费用 / Token 统计。下面介绍它的定位、能力与安装方式。
这是什么¶
dsh-session-title-stamp 是 DSH 的 session title provider:通过 cordis.patch.yml 关闭内置的 session-title-llm 行,插入本包的 session-title-stamp provider,在 Host 侧注册 ctx.sessionTitle.register(),并复用 @deepseek-ai/dsh-session-title-llm 做路由、超时、取消、Token 上限与辅助请求日志。格式渲染在依赖为零的 lib/format.js 中完成。
默认标题形态:
DATE | CATEGORY | NAME
英文分类预设示例(categoryPreset: en):
1028 | Analysis | Short-drama platform verification
1027 | Fix | Four-device acceptance rework
1026 | Release | Ubuntu environment setup
中文为默认分类词表;也可自定义 categories。可选 categoryEmoji: true 得到类似 1027 | ⚡ 优化 | ... 的展示。
当前 npm 版本为 0.7.1(MIT)。要求 DSH >=0.2.1-rc.3 <0.3.0,且会话需有可用的模型路由(标题请求默认用会话当前 provider/model,除非在配置里指定 provider / model)。
核心功能¶
标题生成与格式¶
- 模型只返回
{"category":"...","name":"..."};provider 负责日期、模板、分类校验与名称清理,空段会去掉相邻分隔符,避免出现||。 - 首次命名:provider 以
first-prompt注册,标题服务会在合适时机命名一次。 - 手动重命名:会话头 ↻ 按钮、会话行
···菜单顶部的 Generate title,或命令/retitle,与自动刷新共用同一逻辑。 - 复制标题:会话
···菜单中增加 Copy title,复制完整标题字符串。 - 失败安全:重命名失败时 保留现有标题,不会把侧边栏清空。
回合结束后的自动刷新¶
在 turn/end 完成一轮后,插件可在冷却与冻结约束下自动刷新标题:
- cooldown:默认
refreshMinIntervalMs为 2 分钟,避免首轮回答过快触发两次。 - freeze:默认在用户消息达到
refreshMaxTurns(100 条)后停止自动刷新;长会话主题通常已稳定,仍可用/retitle。 - 跳过:fork、子 agent 会话,以及用户手动钉住的标题不会自动改。
- 将
refreshOnTurnEnd: false可回到按消息数的旧模式(retitleEvery)。
设置页(0.7.0+)¶
路径:Settings → Plugins → Session titles。可预览当前模板下的标题、切换分类语言(中/英)、分类 emoji、日期格式、标题模板,以及自动刷新开关、最小间隔、消息冻结、可选的启动回填等;保存写入当前 profile 的插件配置,只影响之后生成的标题,不会改写已有标题。超时、预算、模型路由仍在 profile 配置里。
悬停统计(0.7.0+)¶
在原生相对时间下方增加一行,例如 Duration 1h 51m · est. ≈¥4.11 · 131.7M tokens:
| 字段 | 含义 |
|---|---|
| Duration | 自 sessionStats 累计的模型与工具执行时间,非挂钟时长 |
| est. ≈¥… | 按当前 DeepSeek CNY 价表对 tokenUsage 的粗估,非账单 |
| tokens | 输入、输出、cache-read、cache-write 合计 |
数据在打开悬停卡片时向 Host 拉取;未加载过的会话不会仅为数字而 resume。混用多模型时用最后使用的模型估算,可能与实际账单有偏差;Host 无统计时该行省略,不影响刷新按钮与自动标题。
与官方实验包互斥¶
bundle 会禁用自带的 session-title-llm 并插入本 provider。不要与 @deepseek-ai/dsh-experimental-session-titles-bundle 同时启用:二者占同一 provider 槽位,标题服务只接受一个 provider;若注册竞争失败,插件会打 warning 并保持 inactive,而不是拖垮启动。
安装与启用¶
插件以当前 DSH 进程权限运行;安装前建议浏览 GitHub 仓库 源码与 MIT 许可证。Electron Desktop 的 profile 由应用管理,应使用应用内 Plugins 页,而不是 dsh plugin --profile desktop。
Discover 市场索引¶
在 Plugins → Discover → Index sources 增加:
https://cdn.jsdelivr.net/gh/xuedipiaofei/dsh-session-title-stamp@v0.7.1/market/index.json
从列表安装 Session title stamp;以 profile bundle 形式出现,可在 Plugins 页启用或禁用。
CLI¶
从 GitHub 安装:
dsh plugin --profile <profile> add github:xuedipiaofei/dsh-session-title-stamp
从 npm 安装:
dsh plugin --profile <profile> add dsh-session-title-stamp
本地目录(资料中的第三种方式,需你已有检出路径):
dsh plugin --profile <profile> add ./dsh-session-title-stamp
典型用法¶
- 安装并启用 bundle 后,新开或已有会话在首次 prompt 或回合结束策略满足时会得到
日期 | 分类 | 名称标题。 - 需要立刻对齐当前话题时,在会话头点 ↻,或在
···选 Generate title,或输入/retitle。 - 要在侧边栏分享完整标题字符串时,用 Copy title。
- 想统一英文分类或打开分类 emoji、调整自动刷新间隔时,打开 Settings → Plugins → Session titles 改配置并保存。
- 悬停会话行查看累计执行时长、预估人民币成本与 Token 总量,无需单独打开 dashboard。
配置项(如 categoryPreset: zh | en、categoryEmoji、refreshMinIntervalMs、refreshMaxTurns 等)以 profile 中该插件的配置为准;图形设置页与 YAML 修改的是同一套字段,具体键名见仓库 README。
适用场景与注意¶
适合:希望侧边栏标题可扫描、跨项目对齐「日期 + 类型 + 短名」的 DSH 用户;需要在列表悬停处快速看会话成本与 Token 量级、又不想开额外看板时。
注意:
- 依赖会话可用的模型路由;无路由时无法完成 LLM 侧的 category/name 提议。
- 与官方 experimental session titles bundle 二选一。
- 悬停费用为价表估算,混合模型会话可能有偏差。
- 社区目录 SkillHub 插件页 与 GitHub 为独立信息源,与 DeepSeek / 幻方无官方从属关系;星标等元数据以各站点当时展示为准(GitHub 上可见 1 star)。
结尾¶
dsh-session-title-stamp 把「会话在讲什么」写进固定模板,把「这一会话大概花了多少」放到悬停一行;安装命令与索引 URL 均来自项目 README。进一步细节与截断未写入的配置说明,见 GitHub 仓库 与 SkillHub 目录页。