前言¶
在 DSH 里开了很多会话之后,侧边栏往往只剩下一串按首句截断的裸标题。关掉标签页再回来,很难一眼区分「这次是在查代码」还是「这次在修报错」。有人靠手动改名,有人在笔记里记 session id,都是额外负担。
dsh-session-namer 是社区维护的 DSH 插件:在会话收到第一条用户消息时,根据内容判断任务类型,把标题改写成固定格式 {emoji}{分类} | {标题}。分类和 emoji 一一对应,前缀长度与分隔符固定,便于在列表里扫视归类。
这是什么¶
插件读取首条用户消息,在九类任务(探索、研究、修复、研发等)中选一类,生成带 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 为准。
- 接管内置命名:
sessionTitle服务只接受一个 provider;插件通过 bundle patch 禁用内置的session-title-llm,自行完成命名。 - 触发时机:
first-prompt——仅主会话的第一条用户消息会触发;带parentSession的 fork 与子代理会话不触发,避免污染子代理日志。 - 混合分类:
generate()先用本地关键词规则打分,再调用会话当前模型,要求返回{"category":"<id>","title":"<标题>"}。 - 降级策略:模型失败、超时、无路由、输出不可解析或分类非法时,退回「规则分类 + 首句截断」;除 abort 外不抛错,标题始终有值。
- 长度预算:标题总长 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 下不产生模型调用;没有路由信息(例如尚未选择模型)时也不会调用模型,直接使用规则标题。
典型用法¶
- 安装插件(见上文命令)。
- 在 DSH 中新建一个会话。
- 发送第一条用户消息,例如「帮我看一下这个服务的健康检查实现在哪」。
- 观察侧边栏标题是否变为
🔍探索 | …这类格式。
若希望完全离线、零 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 与九类中文标签标注任务性质,并在模型不可用时回退到规则命名。若你受困于侧边栏「全是第一句摘要」、难以复盘会话意图,可以按官方命令安装后开新会话试用。