前言¶
在 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 钉住标题,行为与内置重命名一致。
核心功能¶
人侧:侧边栏菜单¶
- 在侧边栏某条会话行打开
…菜单,选择 Smart rename(中文界面为 智能重命名)。 - 插件读取对话,请求会话所用模型返回严格 JSON:
{ category, title, reason },弹框预填分类 · 主题;上方展示当前标题与分类依据。 - 可点分类 chip 切换,或用 + New tag / + 新建 tag 增加自定义分类(保存在浏览器 localStorage)。
- 确认后保存,标题被钉住。
弹框内建议结果按会话缓存 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,减少手工起名和标题滞后于内容的问题。