dsh-session-title:让模型按你的规则改会话标题

前言

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 进程。然后:

  1. 打开 Web 界面 设置 → 会话标题;
  2. 按需修改「标题正则」(不会写可参考 README 中的 LLM 提示词模板);
  3. 勾选「启用」并保存。

若希望跳过第 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。

典型用法

  1. 安装并重启 dsh,在 设置 → 会话标题 启用并保存规则。
  2. 在对话中让模型在合适时机调用 set_session_title,传入完整标题,例如符合默认三段式的:0924 | v0.1.0 | 修复登录跳转。
  3. 若标题不符合规则,工具返回错误原因;模型调整标题后重试直至通过。

设置页提供「示例提示词:让 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。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye