cq-guojia/dsh-session-title-pattern ↗★ 1

@cq-guojia/dsh-session-title-pattern

自动管理 dsh 会话标题,统一成「日期|类型|主题」的格式:类型与主题由模型对整段对话总结。 适合偏好统一可读标题的长期会话;需已配置可用模型并在设置中保存规则。

パッケージ
@cq-guojia/dsh-session-title-pattern
互換性
未検証
Harness ピア範囲
>=0.1.0-rc.0 <0.2.0-0
Cordis ピア範囲
^4.0.2
バージョン
0.6.5
最終更新
2026/09/13

インストール

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:cq-guojia/dsh-session-title-pattern

ドキュメント

README 全文を読む ↗

配置

两种方式,效果一样,可混用。

1. 设置界面(推荐)

设置面板:模型开关、重算间隔、模型选择、超时、标题格式、长度上限

打开 dsh 的「设置 → 插件」,找到本插件的卡片(默认收起,点标题行展开;有未保存的 改动时标题行会显示「未保存」):

项说明
用模型总结标题开关。关掉即回到关键词规则,此时下面只保留标题格式相关的两项,其余全部隐藏
每隔几条对话重算一次默认 10。仅模型模式。填 0 = 只在新建会话时算一次,之后不自动更新,随时可点标题旁的按钮手动重算
标题总结大模型一行两个下拉:左边挑厂家(第一个选项是「跟随对话模型」),右边挑该厂家下的具体模型,必须选一个、不给留空;换厂家时右边自动落到新厂家的第一个模型。只列出你已配置且可用的供应商;跟随对话模型时右边置灰
超时仅模型模式。模型慢的时候(比如免费档在排队)就往大调
标题格式 / 标题长度上限两种模式都生效

改动是暂存的:改完点「保存」才写入。每个字段会标出是否自定义过,可以单字段「恢复默认」 (把该项清回默认值,同时也清掉它在用户层的覆盖)。底部还有「放弃修改」, 把这次没保存的改动全部丢掉、回到已保存的状态;没有改动可放弃时它是灰的。

卡片标题行那个「未保存」的判据是值有没有变,不是「有没有动过输入框」—— 把 80 改成 90 再改回 80,标记会自动消失,保存按钮也跟着变灰。 鼠标停在标记上会列出到底哪几项和已保存的值不同。

「自定义」的判定是「与你写的值不等于默认值」:填了一个恰好等于默认值的数, 保存时不会往用户层记一笔,等于没改。

provider 与 model 必须成对填写。只填一个时保存会被拒绝并提示(这是 schema 表达不了的 跨字段约束,由 host 侧校验)。

2. profile 的 cordis.patch.yml

适合脚本化或批量部署:

- id: session-title-pattern
  config:
    mode: llm
    retitleEvery: 10
    template: '{MMDD}|{type}|{topic}'
    maxBytes: 80
键类型默认值说明
modellm | rulesllmllm 由模型总结类型与主题;rules 走零 token 的关键词规则
retitleEverynumber10每多少条人类消息重算一次标题(仅 LLM 模式),最小 0。0 = 只在新建会话时算一次,之后不自动更新
providerstring空指定模型 provider,必须与 model 成对;留空则跟随会话主模型
modelstring空指定模型 id,必须与 provider 成对
timeoutMsnumber30000单次模型调用超时(毫秒)。手动重算会基于整段对话重来,叠加免费档排队时 15 秒实测不够,故默认 30 秒
maxOutputTokensnumber512输出 token 上限的保险丝(服务端硬切断,到点就停)。界面上不出现,需要时走 cordis.patch.yml —— 它不是「软限制」,调大也不额外花钱(模型真写了才计费)
maxInputBytesnumber4096单次调用输入字节上限(滚动摘要的硬预算)
templatestring{MMDD}|{type}|{topic}标题格式模板,写法见下
maxBytesnumber80标题总长度上限(UTF-8 字节),最小 20

template 怎么写:{...} 里可以写 YYYY MM DD HH mm ss(日期时间部件,本地时区,可任意拼接, 如 {MMDD} / {YYYYMMDD} / {HHmmss};注意 MM 是月、mm 是分)、 type(分类)、topic(主题)。 不写 {type} 标题里就没有分类,不写 {topic} 就没有主题。 例如 {YYYYMMDD} {topic} → 20260913 登录失败。 认不出的占位符会原样留在标题里(如 {date}),方便一眼看出是模板写错了。

默认模板里的 | 是全角竖线(U+FF5C),占 3 个 UTF-8 字节。

⚠️ maxBytes 必须 ≤ session-title 行的 maxTitleBytes(dsh-base 默认为 80)。 服务在写入前会按该值二次截断,超出部分被静默丢弃,不会有任何报错。 如果你调整了 session-title.maxTitleBytes,这里要同步调整。

两层优先级:解析顺序是 schema 默认值 → 组合层(本节) → 用户层(设置界面)。 也就是说界面里改过的字段,改 cordis.patch.yml 不会生效,除非先在界面上「恢复默认」。

兼容性:设置卡片依赖 dsh 自带的设置界面(@deepseek-ai/dsh-client-ui-settings*), 本插件的 dsh.client.inject 声明了它们。如果你的 dsh 版本没有这些包,客户端部分会一直 pending 并导致启动失败 —— 这种情况请用 v0.3.2。