在 DeepSeek Harness (DSH) 中,会话标题是快速定位上下文的重要索引。DSH 自带的 session-title-llm 提供商在处理超长提示词或弱提示词(如仅包含 “继续写”)时,往往存在直接拒绝生成或无法反映真实任务的问题。smart-session-title 插件旨在解决这些痛点,通过压缩提示词、等待有意义任务以及提供更灵活的控制,为 DSH 提供更智能的自动标题能力。
该插件由开发者 y2zyyr 维护,版本为 0.5.0-rc.18(发布候选,对应 npm 的 next 标签)。它替换了内置的 session-title-llm 提供商,直接使用对话中实际使用的 Provider 和 Model 来生成标题。
核心功能¶
- 任务摘要与压缩:自动总结第一条有意义任务为短标题。对于超长或代码密集的提示词,插件会进行压缩处理而非拒绝。
- 智能等待:当对话以问候语开始时,插件会等待直到出现有意义任务,避免过早生成标题。
- 手动保护与防漂移:保护手动设置的标题,防止自动生成导致的标题漂移。
- 显式重新生成:支持通过
/retitle命令或界面头部按钮进行显式标题重新生成。显式请求会覆盖弱提示词过滤器,即使消息仅为短命令也能重新生成。 - 高度可配置:
- 标题形状与内容:设置字符上限(含日期)、日期前缀/后缀、标题风格(如 action-object 或 short-name)、语言(中文/英文)。
- 排除词与锁定:支持设置
titleExclusions(排除客户名或内部代码)和lockedSessionIds(锁定特定会话 ID,禁止自动重写)。
- 批量优化:提供批量优化已存储会话标题的功能,支持进度跟踪、搜索和对比。
- 隐私与诊断:提供原生设置界面,并在页面底部显示插件版本号。插件使用本地诊断,无遥测服务。
安装与启用¶
环境要求¶
- DSH Core:0.1.5-rc.1 或 0.2.0-rc.1
- Node.js:>= 22.15.0
安装步骤¶
在 DSH 的 profile 目录下执行:
npm install smart-session-title@next --legacy-peer-deps
配置 Bundle¶
安装完成后,需在 dsh.profile.bundles 中添加该 Bundle。Bundle 的顺序必须位于 @deepseek-ai/dsh-base 和 @deepseek-ai/dsh-web-app 之后,否则可能无法正常工作。
{
"dsh": {
"profile": {
"bundles": [
"@deepseek-ai/dsh-base",
"@deepseek-ai/dsh-web-app",
"smart-session-title"
]
}
}
}
重启 DSH 后,日志应显示 smart-session-title provider registered ... automatic=all-prompts。
设置说明¶
插件提供详细的设置项,配置后点击页面底部的 “Save settings” 即可生效。
| 字段 | 默认值 | 说明 |
|---|---|---|
enabled |
true |
总开关,控制是否启用智能标题。 |
mode |
Follow the session¹ | 模式:current-session(当前会话)、configured(使用配置的 Provider/Model)或 disabled(禁用)。 |
provider |
Unset | 使用的 Provider ID。 |
model |
Unset | 使用的 Model ID。 |
timeoutMs |
15000 | 单次尝试超时时间,UI 范围 1000–120000 ms。 |
maxAttempts |
2 | 最大尝试次数,范围 1–3。 |
maxTitleCharacters |
Unset (80 bytes) | 整个标题(含日期)的字数上限,Unicode 码点,范围 8–120。 |
titleDatePosition |
Unset | 日期位置:prefix(前缀)或 suffix(后缀)。 |
titleDateFormat |
ymd |
日期格式:ymd (2026-09-13) 或 md (09-13)。 |
titleStyle |
Unset | 标题风格:action-object 或 short-name。 |
titleLanguage |
Unset | 语言强制:zh 或 en。 |
titleExclusions |
Unset | 排除词列表(最多 50 个,每个最多 64 字符),生成的标题中不能包含这些词。 |
lockedSessionIds |
Unset | 锁定会话 ID 列表(最多 500 个),锁定后自动生成、重新生成和批量列表均会跳过。 |
¹ 对于旧版本部署,bundle 行中的显式 Provider/Model Pin 仍有效,直到用户选择模式。
典型用法¶
- 强制重新生成:如果自动标题不理想,使用
/retitle命令或界面顶部的按钮进行显式重新生成。 - 批量优化历史记录:在设置界面切换到 “Batch optimize” 页签,选择要优化的会话,查看并应用新的标题。
- 排除敏感词:在
titleExclusions中添加客户名称或内部代码,防止它们出现在标题中。 - 保护重要会话:在会话标题旁点击锁定按钮,防止批量优化或自动生成覆盖该标题。
注意事项¶
- 数据持久化差异:Core 0.1 将设置持久化在
$DSH_HOME/settings.yaml的smart-session-title命名空间下;Core 0.2 使用插件自身的 volatile Config。DSH 保留 Fallback 标题、持久化、投影、取消和陈旧结果保护,此插件仅替换标题生成逻辑。 - 卸载与恢复:卸载插件时,需同时移除 Bundle 配置并重启,然后删除 npm 包。仅禁用插件行而保留 Patch 不会恢复内置的
session-title-llm提供商。 - 版本状态:当前安装的是 0.5.0-rc.18 发布候选版本,建议在测试环境验证后再升级。