fengs2021/dsh-session-title-cold

fengs2021★ 0JavaScriptLast synced: 2026-08-16

Open on GitHub

DSH 插件:冷会话标题回填——把持久化日志的 session/title 事件折叠进 projection 缓存,会话列表显示真实标题而不是工作区目录名

README excerpt

冷会话标题回填(dsh-session-title-cold) session.list 的行若来自持久化冷会话(从未打开过、尤其 subagent 子会话), projection 缓存里没有它们的行,列表拿不到标题,侧边栏只能 fallback 显示 工作区目录名(如 dsh ),一屏全是 "dsh" 分不清谁是谁。 本插件启动后后台扫描全部持久化会话,把每个已注册 projection unit (title / sessionStats / sessionListMetadata 等)折叠到最新事件并写回 projection 缓存;之后 session.list 每行都带 projections.values.title , 前端列表直接显示真实标题(fallback 自首条消息,或 LLM/用户重命名)。 特性 - 零侵入 :不改 dsh 源码,纯服务端插件,利用官方 projection 注册/缓存扩展点; - 增量 :已有缓存行的会话只读事件尾部(restoreFloor → readFrom), 每 10 分钟刷新一次,rename 等新标题变化自动吸收; - fail-soft :单个会话失败只记 debug 日志,不阻断批次;live 会话自动跳过 (它们的缓存由运行时落盘路径维护,避免覆盖新状态)。 安装 - 插件目录: /.dsh/plugins/dsh-session-title-cold/ - profile 注册(cordis.patch.yml): 重启 dsh-web 后,启动 5 秒后台回填(日志 [title-cold] 回填完成:N 个会话 ), 刷新网页侧边栏即可看到全部真实标题。 配置(可选) 工作原理 1. sessionProjections.restoreFloor(checkpoint) 得出增量读起点; 2. sessionPersistence.readFrom(id, floor) 读尾部事件(带 seq); 3. sessionProjections.restore(checkpoint, events, floor) 折叠出全部 unit 快照 (含 title ,来自 session/title 事件,如 fallback/用户重命名); 4. 只把 title 行合并进缓存并 sessionProjectionCache.putSoft 写回 (cold 会话其余 unit 的 state 可能含非纯 JSON 值,跳过不写,避免 not losslessly JSON-serializable 拒绝整行); 5. 前端下一次 session.list 即带 projections.values.title , displayTitleOf 不再 fallback 到目录名。

View full README on GitHub →
Tools / Devdsh-pluginagent

Category