dsh-session-smart-rename:用「分类 · 主题」给 DSH 会话智能起名

前言

在 DeepSeek Harness(DSH)里,会话一多,侧边栏标题很容易变成笼统的「新对话」或只反映第一轮提问的半截句子。手工重命名可行,但要在长对话里自己概括主题,又要在多会话之间保持可读,成本偏高。

dsh-session-smart-rename 面向 Web GUI 的会话侧栏:读取当前会话内容,用该会话自身的模型路由推断分类和短主题,写成 分类 · 主题 形式的标题;人可以在弹框里改,agent 也可以通过工具在对话里直接钉住新标题。它与注册名为 rename_session 的 9Ashwin/dsh-session-rename 工具名不冲突,可同时安装。

这是什么

维护者为 SonettoGu14,在 npm 上发布为 dsh-session-smart-rename(v0.2.0),属于 DSH 客户端侧插件(dsh.bundle manifest,client.platform: web)。一句话定位:会话智能重命名——侧边栏「Smart rename / 智能重命名」与模型工具 smart_rename_session 共用同一套分析逻辑,最终都通过宿主 sessionTitle.rename 钉住标题,行为与内置重命名一致。

核心功能

人侧:侧边栏菜单

  1. 在侧边栏某条会话行打开 … 菜单,选择 Smart rename(中文界面为 智能重命名)。
  2. 插件读取对话,请求会话所用模型返回严格 JSON:{ category, title, reason },弹框预填 分类 · 主题;上方展示当前标题与分类依据。
  3. 可点分类 chip 切换,或用 + New tag / + 新建 tag 增加自定义分类(保存在浏览器 localStorage)。
  4. 确认后保存,标题被钉住。

弹框内建议结果按会话缓存 5 分钟。若模型或日志不可用,会回退到本地关键词规则,来源标记为「本地规则」。

模型侧:smart_rename_session

参数 必填 说明
title 否 要钉住的标题;省略时由插件读对话并生成 分类 · 主题。
session_id 否 目标会话;省略表示当前已加载会话。

返回 { session_id, title, seq, source },其中 source 为 model(模型提供了 title)或 analyzed(插件分析得出)。

典型调用:

  • smart_rename_session({}):全自动按内容命名。
  • smart_rename_session({ title: "PRD-042 推荐信导出" }):模型自定标题,插件只负责钉住,不再额外调模型。

若希望 agent 在主题切换时更新标题,可在 AGENTS.md 中写明:当工作明显转到新主题、旧标题不准时,调用 smart_rename_session(不传 title)。不满意时仍可用侧边栏 智能重命名 覆盖;两条路径写入的标题均为 source.kind: "user",后写覆盖先写。

实现要点(便于排错)

  • 浏览器端注册 sidebar.workspaces.session.menu.item 与 shell.overlay(对话框)。
  • 宿主侧共用分析器:读会话用户消息与助手回复,从会话 request/header 取模型路由;POST /api/dsh-session-smart-rename/suggest 供弹框,smart_rename_session 供 agent。
  • 未加载的会话从磁盘读 ~/.dsh/sessions/**/<id>/session.v4.jsonl.zstd(zstd -dc 解压)。
  • 对话框走 POST /api/session/rename 与工具路径最终都调用 sessionTitle.rename(session, title)。

安装与启用

插件以当前 DSH 进程权限运行;安装前建议在 GitHub 查看源码与 MIT 许可证。

# from npm — prebuilt, skips the build-approval step
dsh plugin --profile <your-profile> add dsh-session-smart-rename

# or straight from this repo
dsh plugin --profile <your-profile> add github:SonettoGu14/dsh-session-smart-rename

也可在 DSH 设置的插件管理中安装。安装后重启一次应用(客户端 bundle 在启动时加载)。

依赖:支持 dsh.bundle manifest 的 DSH;带会话侧栏的 desktop/web profile。宿主侧仅用 Node 内置模块(engines.node >= 22.19.0),浏览器侧使用 react 与 harness 提供的基础组件,无额外 npm 依赖。

典型用法小结

手动整理侧边栏: 打开目标会话 → … → 智能重命名 → 按需改分类或主题 → 保存。

交给 agent: 主题漂移时调用 smart_rename_session({});若模型已想好完整标题,传 title 即可免分析调用。

适用场景与注意

适合:长期多会话并行、希望侧边栏一眼能看出「在做哪类事」的 DSH Web GUI 用户;也希望 agent 在长跑任务中自动刷新会话标题的团队。

已知限制(来自 README):

  • session_id 指向未加载会话会报错;当前会话始终可用。
  • 每次侧边栏点击约一次小模型调用(约 1–3 s);smart_rename_session 不传 title 时同理;传 title 则不另调模型。
  • 自定义 tag 仅在浏览器 localStorage,工具路径使用插件默认分类列表。
  • 子 agent 会话(origin: subagent)仍会被宿主拒绝。
  • 压缩或无日志的会话在分析失败时走本地规则。

DSH 社区插件目录托管在独立站点,与 DeepSeek / 幻方无官方从属关系;本文事实以仓库 README 与 package.json 为准。

结尾

dsh-session-smart-rename 把「读对话 → 推断分类与主题 → 可编辑确认 → 钉住标题」接到侧栏,并把同一能力暴露给 smart_rename_session,减少手工起名和标题滞后于内容的问题。

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

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

小夜