前言¶
DSH(DeepSeek Harness)的官方 session-title-first-prompt-llm 仅在会话的第一条消息时自动命名一次。如果后续对话偏离了初始主题,官方逻辑不会更新标题。dsh-session-retitle 插件填补了这个空档:它在会话头部添加了一个「重命名」按钮,允许你手动触发,读取当前会话内容,利用模型生成中文短标题并写回。
核心功能¶
- 会话头部重命名按钮:在会话头部右侧添加操作入口。
- 自动生成标题:读取会话内容,用当前模型生成中文短标题。
- 零运行时依赖:不 import 任何
@deepseek-ai/*包,仅发两条 HTTP 路由。 - 官方服务集成:改名走官方
session-title服务,包含并发保护与来源钉住。 - 灵活的输入方式:留空输入框按内容自动起名;填写名字直接使用(不消耗模型调用)。
- 主题跟随:界面颜色使用 DSH 的
--dsw-alias-*CSS 变量,明暗主题自动生效。 - 路由回退与容错:支持候选路由回退与同会话并发保护。
安装与启用¶
- 确保
pnpm已安装在 PATH 上。 - 执行安装命令:
dsh plugin --profile web add github:BPTumbleweed/dsh-session-retitle
- 重启 DSH 服务。重启后,界面会有 35–45 秒的中断,请耐心等待。加载完成后,请在浏览器中执行 Ctrl+Shift+R 硬刷新,以加载新的客户端按钮。
典型用法¶
- 打开任意一个 DSH 会话。
- 在会话头部右侧找到「重命名」按钮并点击。
- 在弹出的输入框中:
- 留空:点击「自动起名」,插件会读取会话内容调用模型生成标题。
- 填写内容:直接使用你输入的名字,不消耗模型调用。 - 几秒后,会话名会更新为新的标题,侧边栏列表同步更新。
配置项¶
插件通过 profile 的 cordis.patch.yml 覆盖进行配置:
| 键 | 默认 | 说明 |
|---|---|---|
routePrefix |
/dsh-session-retitle |
路由前缀 |
maxTitleBytes |
80 |
标题字节预算 |
maxDigestBytes |
8000 |
送给模型的会话素材上限 |
maxDigestItems |
16 |
最多取多少条消息(人类消息 + 助手回复) |
timeoutMs |
45000 |
标题模型调用超时 |
maxOutputTokens |
512 |
标题模型的最大输出 token |
provider / model |
deepseek-official / deepseek-flash |
兜底路由配置 |
注意事项¶
- 会话状态限制:只有当前在内存里活着(未归档)的会话能改名,历史归档会话无法操作。
- 无数据残留:插件不改文件、不写数据目录,移除后不会留下垃圾。
- 手动覆盖保护:一旦手动改过名字,官方的自动命名不会再覆盖(
source.kind = user会被钉住)。 - 验证接口:可以通过以下命令验证插件状态(需替换
<端口>):
curl -s http://127.0.0.1:<端口>/dsh-session-retitle/status | head -40
结语¶
该插件通过极简的交互(一个按钮)解决了 DSH 会话命名滞后的问题,同时保持了与官方服务的兼容性。所有素材仅取人类消息与助手回复,工具结果被过滤,确保标题生成的准确性。
- 仓库:https://github.com/BPTumbleweed/dsh-session-retitle
- 维护者:BPTumbleweed
- 许可证:MIT