kira905/dsh-session-title-live ↗★ 0

dsh-session-title-live

在每条消息后自动重新生成会话标题 适合需要实时、精准且符合字节预算的会话标题更新的用户。

套件
dsh-session-title-live
相容性
待驗證
版本
0.2.0
授權
AGPL-3.0
最近更新
2026年9月21日

安裝

此插件尚未提供可驗證的 bundle,或相容性檢查未通過。請先閱讀倉庫說明。 閱讀完整 README ↗

四、配置

三层合并,后者覆盖前者:

  1. lib/config.js 里的默认值(即示例文件里的值);
  2. SESSION_TITLE_LIVE_CONFIG 指向的 JSON 文件(不设这个环境变量就不会读任何文件);
  3. 宿主 cordis.patch.yml 里该插件 config: 段。

对象段(marks / killSwitch)深合并(只覆盖你写的那几个键);非法值会被清洗成默认值 并打一条 warn 日志(不会让插件起不来)。

目录解析(home)走 SESSION_TITLE_LIVE_HOME > DSH_HOME > ~/.dsh,跨平台,没有机器路径硬编码。

键默认值说明
targetWords5非 CJK 语言的标题目标词数(只写进提示词)
targetCjkCharacters10CJK 目标字数(只写进提示词)
maxInputBytes32768送进模型的输入字节预算(超了从最新消息往前收拢)
maxOutputTokens128标题输出 token 上限
maxTitleBytes80标题落盘的 UTF-8 字节上限(与主包标题上限一致)
timeoutMs30000单次生成超时
provider / model不设成对配置则用独立路由生成标题;都不写 = 跟随会话主请求的路由
promptIntro见示例送进模型的 JSON 数组前的引导句
systemPrompt不设自定义系统提示词(字符串或字符串数组),省略 = 内置
selfScheduletrue自建调度总开关(false = 退回主包调度原状,多数情况下标题就不会刷新了)
selfScheduleMaxHumans32每会话内存里保留的人类消息条数上限
minIncrementChars20最小值门槛:新增字数低于它就不重生成(0 = 关)
themeAnchorMax6主题锚(上一版标题依据)保留条数上限(0 = 关锚)
turnMarkstrue回合边界自动打前缀总开关
markBaseBudgetBytes64加前缀前的基名字节预算
markProviderdsh-session-title-live#turn-mark打标写回时 source.provider 的名字(用于识别"这条是我们写的")
marks.prefix{running:'【运行】', done:'【完成】'}状态 → 前缀文本
marks.textToState{运行:running, 完成:done, 待命:idle, 已中断:interrupted}前缀文本 → 状态(键不要带括号)
marks.baseFallback会话标题只剩前缀时的兜底基名
killSwitch.filedsh-session-title-live.json活开关文件名(相对 home)或绝对路径
killSwitch.moduleIdsession-title-live开关文件里 modules..enabled 的 id
killSwitch.cacheMs3000读盘缓存(手改文件 ≤ 该毫秒数生效)
killSwitch.enabledtrue直接停用(等价于开关文件里写 enabled:false)
killSwitch.resumeHint见源码关闭后打进日志 / 错误信息的恢复提示

⚠️ 改了 marks.prefix 记得让 marks.textToState 能认出你写出去的前缀形状。 本插件把两个来源合并成识别表(prefix 的字面值 + textToState 的键),所以像 [RUN] 这种自定义前缀也能被认出来、不会在下一轮叠一层;但如果你把前缀改成"无包裹"的裸词(例如 运行 ), 建议同时把它加进 textToState 以免误伤正文。

活开关(kill switch)

// /dsh-session-title-live.json
{ "modules": { "session-title-live": { "enabled": false, "why": "在查别的问题,先别刷标题" } } }

也支持顶层简写 { "enabled": false }。enabled:true = 开。

  • fail-safe:文件读不到 / 坏 JSON / 没有该模块键 → 继续工作(缺文件 ≠ 要求关闭)。
  • 环境变量:SESSION_TITLE_LIVE_DISABLED=1 立即停(优先于文件;容器 / CI 用)。
  • 关闭后:不打标、不生成、零写入零 token(每次回合 / 每次生成前现读,≤3s 生效,不必重启)。

1) 静态验证(语法 + 配置层行为 + 脱敏扫描;要在本机覆盖实名规则时注入 BUILD_* 见脚本头部)

2) 干净路径端到端(自建临时 home + 非默认配置,跑完自动清理;--keep 保留以便排障)

node scripts/test-e2e.mjs