dsh-session-title
允许模型按自定义正则规则设置会话标题 适合需要规范化管理会话标题,并希望由模型自动按规则命名的用户。
安裝
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:ly6170/dsh-session-title說明文件
閱讀完整 README ↗配置规则
配置有两条途径:设置页(推荐,改完即时生效)或 profile 的 config:。两者写的是同一份配置,都无需重启。
| 配置项 | 类型 | 默认 | 说明 |
|---|---|---|---|
enabled | boolean | false | 是否启用;关闭后模型看不到这个工具(运行中切换即时生效) |
pattern | string | ^(\d{4}) | ([^|]+) | ([^|]+)$ | 标题必须匹配的正则(JS 语法,不带动界符) |
patternMode | match / search / none | match | match 全串匹配;search 允许包含;none 关闭正则校验 |
patternHint | string | "" | 正则不匹配时给模型看的提示,留空用默认提示 |
maxTitleBytes | number | 80 | 整标题的 UTF-8 字节上限 |
forbidTrailingPunctuation | boolean | true | 禁止以句末标点结尾 |
forbidControlCharacters | boolean | true | 禁止换行、制表符等控制字符 |
normalizeSeparatorSpacing | boolean | true | 把 | 前后的空白规范化为单空格 |
caseInsensitive | boolean | false | 正则忽略大小写 |
默认规则是 MMDD | 版本或 tag | 描述,只是个开箱即用的示例——改成你自己的约定即可。
未启用时设置页会明确提示「当前未启用:模型看不到 set_session_title 工具」,不会让人误以为插件坏了。正则字段始终会预填当前值,所以你可以先把规则调好、再打开开关。
改动规则后,工具说明会自动重写:模型看到的描述里会带上当前生效的正则和字节上限,因此它不必盲猜格式。
不会写正则?让 LLM 帮你写
设置页说明文字下方有个折叠块「示例提示词:让 LLM 帮你写一条正则」,点开是一段可直接复制的提示词,末尾留了「我的命名需求」让你填。复制后发给任意 LLM,把返回的正则粘进「标题正则」字段即可。
提示词里刻意写死了几条输出约束(不带 / 定界符、不带 flags、不要代码块、不要解释、用 ^/$ 锚定整串、段内不含竖线用 [^|]+),否则模型经常返回没法直接粘贴的东西。它也明确说了「句末标点、字节长度、换行不用你管」——那些是本插件另外的开关,不需要塞进正则。
完整提示词(与插件内一致):
我在用 DeepSeek Harness 的 dsh-session-title 插件管理会话标题,需要你帮我写一条校验标题的正则。
请只输出正则本身:一行、不带 / 定界符、不带 flags、不要代码块、不要解释。并且:
1. 用 ^ 和 $ 锚定整串;
2. 需要单独校验的分段用括号 () 捕获;
3. 某段不允许出现竖线 | 时,用 [^|]+ 表示(| 是分段分隔符);
4. 不要处理句末标点、字节长度、换行 —— 这些插件会另外校验。
我的命名需求:
参考:插件当前的默认正则是 ^(\d{4}) \| ([^|]+) \| ([^|]+)$ ,含义是「四位日期 | 版本或 tag | 描述」。
用配置文件预设
想跳过设置页、直接预设初值,就编辑 profile 的 cordis.patch.yml(这是 schema 默认值的覆盖):
- insert:
- id: session-title-tool
name: dsh-session-title
config:
enabled: true
# 用 [BUG]/[FEAT] 前缀
pattern: '^\[(BUG|FEAT)\] .+$'
maxTitleBytes: 60
config:
enabled: true
# 完全不校验格式,只保留字节上限与标点规则
patternMode: none
maxTitleBytes: 120
关于 maxTitleBytes
宿主 session-title 服务的 maxTitleBytes 是硬上限:rename() 会按它做归一化和截断。本插件的 maxTitleBytes 是前置校验,应设置为小于或等于宿主配值,否则模型会拿到一个通过了本插件校验、却被宿主截断的标题。
base 组合里宿主配值是 80(packages/bundle/base/cordis.patch.yml),所以这里默认也取 80。
用配置文件预设
想跳过设置页、直接预设初值,就编辑 profile 的 cordis.patch.yml(这是 schema 默认值的覆盖):
- insert:
- id: session-title-tool
name: dsh-session-title
config:
enabled: true
# 用 [BUG]/[FEAT] 前缀
pattern: '^\[(BUG|FEAT)\] .+$'
maxTitleBytes: 60
config:
enabled: true
# 完全不校验格式,只保留字节上限与标点规则
patternMode: none
maxTitleBytes: 120