前言¶
DeepSeek Harness(DSH)在 Host 侧已经提供了会话重命名能力(ctx.sessionTitle 服务、session/rename Remote),但模型工具目录里原先没有对应的改名工具,会话标题往往只能由人在侧栏手动改。若你希望智能体在任务推进过程中主动把标题改成团队约定的格式,并钉住以免被自动生成标题覆盖,就需要额外补一层工具。下面介绍社区插件 dsh-session-title(维护者 ly6170),它向模型暴露 set_session_title,规则由你在 Web 设置或 profile 配置里自行定义。
这是什么¶
dsh-session-title 是 DeepSeek Harness 插件:给模型一个按你自己定义的规则设置会话标题的工具。命名规则不写死在代码里,可在 设置 → 会话标题 中配置正则、字节上限等校验项;校验通过后调用宿主 rename 并钉住标题,之后该会话不再被自动标题覆盖。插件不读写会话文件、不碰工作区、不做归档或删除。
分类上在 SkillHub 目录 中归为「模型推理」;源码与说明见 GitHub:ly6170/dsh-session-title(当前 package 版本 0.1.0,许可证 MIT)。SkillHub 与 DeepSeek / 幻方无官方从属关系,属于社区插件生态。
核心功能¶
| 项 | 说明 |
|---|---|
| 工具名 | set_session_title,参数 title(完整标题字符串) |
| 生效方式 | 调用 ctx.sessionTitle.rename(agent.session, title);通过校验即写入并钉住 |
| 规则来源 | 设置页或 profile config:,二者同一份配置,改完无需重启 |
| 默认状态 | 关闭(enabled 默认为 false);未启用时模型看不到该工具 |
不合规标题会以工具错误返回明确原因,模型可据此改写后重试。规则变更后,工具说明会自动带上当前生效的正则与字节上限,减少模型盲猜格式。
开箱默认正则示例为 MMDD | 版本或 tag | 描述(对应 pattern ^(\d{4}) \| ([^\|]+) \| ([^\|]+)$),可按仓库或团队约定替换。
安装与启用¶
官方安装命令如下(web profile):
dsh plugin --profile web add dsh-session-title
bundle 集合变化不会热加载,装完需重启 dsh 进程。然后:
- 打开 Web 界面 设置 → 会话标题;
- 按需修改「标题正则」(不会写可参考 README 中的 LLM 提示词模板);
- 勾选「启用」并保存。
若希望跳过第 3 步、装上即用,可在 profile 的 cordis.patch.yml 里预设 enabled: true(见下文配置示例)。
dsh 不在 PATH 或使用 DSH Desktop / 源码检出时,可手动编辑 ~/.dsh/profiles/web/package.json,在 bundles 中加入 dsh-session-title,在 dependencies 中声明 "dsh-session-title": "^0.1.0",在 profile 目录执行 pnpm install 或 npm install 后重启。client 侧产物 lib/client.js 已随包提供,无需本地构建。
卸载:
dsh plugin --profile web remove dsh-session-title
或从 profile 的 dependencies 与 dsh.profile.bundles 中移除并重装依赖;已钉住的标题不受影响。
配置规则¶
主要配置项(设置页与 config: 一致,运行中切换 enabled 即时生效):
| 配置项 | 类型 | 默认 | 说明 |
|---|---|---|---|
enabled |
boolean | false |
启用后模型才可见工具 |
pattern |
string | 见 README 默认三段式 | JS 正则,不带动界符 |
patternMode |
match / search / none |
match |
全串匹配 / 包含 / 关闭正则校验 |
patternHint |
string | "" |
正则不匹配时给模型的提示 |
maxTitleBytes |
number | 80 |
整标题 UTF-8 字节上限(前置校验) |
forbidTrailingPunctuation |
boolean | true |
禁止句末标点 |
forbidControlCharacters |
boolean | true |
禁止控制字符 |
normalizeSeparatorSpacing |
boolean | true |
\| 前后空白规范为单空格 |
caseInsensitive |
boolean | false |
正则是否忽略大小写 |
用配置文件预设示例(编辑 profile 的 cordis.patch.yml):
- insert:
- id: session-title-tool
name: dsh-session-title
config:
enabled: true
pattern: '^\[(BUG|FEAT)\] .+$'
maxTitleBytes: 60
若只保留字节与标点规则、不校验格式:
config:
enabled: true
patternMode: none
maxTitleBytes: 120
注意 maxTitleBytes:宿主 session-title 服务有硬上限,rename() 会按该值截断。本插件的 maxTitleBytes 是前置校验,应小于或等于宿主配值;base 组合里宿主默认为 80,插件默认也为 80。
典型用法¶
- 安装并重启
dsh,在 设置 → 会话标题 启用并保存规则。 - 在对话中让模型在合适时机调用
set_session_title,传入完整标题,例如符合默认三段式的:0924 | v0.1.0 | 修复登录跳转。 - 若标题不符合规则,工具返回错误原因;模型调整标题后重试直至通过。
设置页提供「示例提示词:让 LLM 帮你写一条正则」折叠块,复制后填入你的命名需求,将 LLM 返回的一行正则(无 / 定界符、无 flags、无代码块)粘贴到「标题正则」即可。
适用场景与注意¶
适合:需要会话标题与 issue 编号、版本 tag、日期分段等规范对齐的团队;希望模型在总结或里程碑节点自动改名并钉住,避免侧栏手工维护。
运行与权限:插件以当前 dsh 进程权限运行,安装前应阅读 源码仓库 与 MIT 许可证,自行评估是否纳入 profile。
依赖:Node.js >= 20;host 侧依赖 @deepseek-ai/schemastery;Web 设置面板依赖平台注入的 @deepseek-ai/dsh-client-ui-settings 等 client 模块。
小结¶
dsh-session-title 补上模型侧缺失的会话改名工具,规则可配置、默认关闭、启用后即时生效。目录页:SkillHub — ly6170/dsh-session-title;源码与完整说明:GitHub — ly6170/dsh-session-title。