dsh-session-namer:用首条消息给 DSH 会话标题加上 Emoji 分类前缀

前言

在 DSH 里开了很多会话之后,侧边栏往往只剩下一串按首句截断的裸标题。关掉标签页再回来,很难一眼区分「这次是在查代码」还是「这次在修报错」。有人靠手动改名,有人在笔记里记 session id,都是额外负担。

dsh-session-namer 是社区维护的 DSH 插件:在会话收到第一条用户消息时,根据内容判断任务类型,把标题改写成固定格式 {emoji}{分类} | {标题}。分类和 emoji 一一对应,前缀长度与分隔符固定,便于在列表里扫视归类。

这是什么

  • 名称:dsh-session-namer(npm 包名同仓库名)
  • 维护者:CresBigB
  • 许可证:MIT
  • 目录分类(SkillHub):趣味换装
  • 当前版本(package.json):1.0.0

插件读取首条用户消息,在九类任务(探索、研究、修复、研发等)中选一类,生成带 emoji 前缀的会话标题;无该插件时,标题通常只是首句摘要,没有统一分类语义。

标题格式与分类表

生成格式为:

{emoji}{分类} | {标题}

README 给出的对应关系如下(emoji 为单码点,前缀固定 13 字节,分隔符固定为 |):

emoji 分类 id 判定信号(摘要)
🔍 探索 explore 查看代码/结构/位置,了解现状,不改代码
🔬 研究 research 选型、对比、调研、评估可行性
🔧 修复 fix 报错、异常、测试失败、崩溃、性能回归
🚧 研发 build 新功能、实现、重构、加接口
🎨 设计 design 界面、布局、配色、交互
📝 文档 docs README、注释、说明、文章
🧰 配置 config 依赖、环境变量、部署、CI、权限
💬 问答 qa 概念解释、原理,无执行意图
📦 整理 tidy 批量改名、归档、清理、迁移

示例(来自仓库 README):

首条消息 生成的标题
帮我修一下登录接口报 500 🔧修复 \| 修登录接口报500
对比一下 pgvector 和 qdrant 🔬研究 \| pgvector与qdrant对比
这个仓库的鉴权在哪实现的 🔍探索 \| 仓库鉴权实现位置
给设置页加个深色模式开关 🚧研发 \| 设置页深色模式开关

核心功能与工作方式

下面行为均以仓库 README 为准。

  1. 接管内置命名:sessionTitle 服务只接受一个 provider;插件通过 bundle patch 禁用内置的 session-title-llm,自行完成命名。
  2. 触发时机:first-prompt——仅主会话的第一条用户消息会触发;带 parentSession 的 fork 与子代理会话不触发,避免污染子代理日志。
  3. 混合分类:generate() 先用本地关键词规则打分,再调用会话当前模型,要求返回 {"category":"<id>","title":"<标题>"}。
  4. 降级策略:模型失败、超时、无路由、输出不可解析或分类非法时,退回「规则分类 + 首句截断」;除 abort 外不抛错,标题始终有值。
  5. 长度预算:标题总长 256 字节(含 13 字节前缀),超长按 UTF-8 码点截断,不加省略号。

安装与启用

通过 DSH 插件管理器从 GitHub 安装:

dsh plugin add github:CresBigB/dsh-session-namer

或在 DSH 内将本地克隆目录作为 bundle 安装:

plugin_manager: { action: "install_bundle", target: "<本仓库路径>" }

安装后需要新建会话才会看到效果:标题只在首条消息时生成一次,已有会话不会被追溯改名。

配置项

可在插件配置中调整下列键(默认值见 README):

键 默认 说明
mode hybrid hybrid:规则 + 模型;rules:仅本地规则,不消耗 token
targetCjkCharacters 14 标题中文目标字数
maxTitleBytes 256 标题总字节预算(含前缀)
maxInputBytes 8192 送给模型的输入上限;首条消息会先裁到约 6000 字节
maxOutputTokens 512 模型输出上限
timeoutMs 5000 单次命名超时(毫秒)
provider / model 未配置 留空则跟随会话当前模型;两者须同时配置

纯规则模式 mode: rules 下不产生模型调用;没有路由信息(例如尚未选择模型)时也不会调用模型,直接使用规则标题。

典型用法

  1. 安装插件(见上文命令)。
  2. 在 DSH 中新建一个会话。
  3. 发送第一条用户消息,例如「帮我看一下这个服务的健康检查实现在哪」。
  4. 观察侧边栏标题是否变为 🔍探索 | … 这类格式。

若希望完全离线、零 token,可将 mode 设为 rules,仅依赖本地关键词分类与截断标题。

适用场景与注意

适合:长期在 DSH 里并行多个任务、希望用统一前缀区分探索/修复/研发等类型的开发者。

依赖:@deepseek-ai/dsh-session-title 与 @deepseek-ai/dsh-session-title-llm 由 DSH 本体提供(peerDependencies);另依赖 @deepseek-ai/cordis、@deepseek-ai/schemastery、@deepseek-ai/dsh-session 等生态包。

安全与权限:插件随当前 DSH 进程加载,安装前建议阅读 仓库源码 与 MIT 许可证;不宜在未审阅的情况下在生产敏感环境盲目安装第三方 bundle。

DSH 生态主张「一切皆插件」;SkillHub 等社区目录独立于 DeepSeek / 幻方,并非官方应用商店。

结尾

dsh-session-namer 在首条消息处一次性改写会话标题,用固定 emoji 与九类中文标签标注任务性质,并在模型不可用时回退到规则命名。若你受困于侧边栏「全是第一句摘要」、难以复盘会话意图,可以按官方命令安装后开新会话试用。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye