Khorsheed/dsh-plugins--packages-session-title-edit ↗★ 0
@khorsheed/dsh-client-session-title-edit
网页端会话标题就地编辑 适合需要直接在聊天头部重命名会话以方便整理的用户。
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:Khorsheed/dsh-plugins#548eeabe331c121621b2d08deab4278ad81d6312&path:packages/session-title-edit说明文档
阅读完整 README ↗@khorsheed/dsh-client-session-title-edit
English | 中文
会话标题想改就改:点标题旁的小铅笔,回车就存。
自动起的会话标题常常词不达意,过两天想找回某个会话全靠运气。这个插件在聊天区顶部的标题旁放了一支铅笔:点一下,标题就地变成输入框,预填好当前名字并全选;Enter 保存、Escape 取消,名字起得太长会先被警告拦下,绝不悄悄截断。改名走的是官方 session.rename 接口,标题永远不会进入模型上下文,模型对此一无所知。

特性
- 头部铅笔——会话标题右侧的条目切换出内联编辑器,预填当前标题并全选。
- 可预期的按键——Enter 提交、Escape 取消、空草稿禁用保存、宿主拒绝时内联提示。
- 宽度自适应——输入框随草稿变宽,上限为官方 220px。
- 预算把关——超过宿主 80 UTF-8 字节标题预算的草稿被警告拦下,绝不静默截断。
- 零足迹——走官方
session.renameRPC;标题永远不会进入模型上下文(无 token 或 KV 缓存影响)。

安装
dsh plugin --profile web add @khorsheed/dsh-client-session-title-edit
安装后重启 web 实例;卸载即移除本插件添加的全部界面。
dsh plugin --profile web remove @khorsheed/dsh-client-session-title-edit
Compatibility
- npm 发布线(宿主
0.1.7-rc.2,下一版0.2.4):✅ 完整——改名走官方session.rename;就地覆盖在 0.1.5 与 0.1.7 两条宿主线上都可用(同一套文本定位同时覆盖 0.1.5/0.1.6 的 disabled crumb 按钮与 0.1.7-alpha.1 起的纯文本 crumb),双线单测 + 两条宿主线实机验收通过;minHost 地板保持0.1.2-rc.1不动。 - 已发布版本
0.2.3及更早:在 0.1.7-alpha.1 起的宿主上,标题 crumb 不再是 disabled 按钮,就地覆盖会退回 actions 行内编辑器(改名本身仍可用,只是不再盖在标题上);升到0.2.4即恢复。 - 源码线(deepseek-harness master,
0.1.7-rc.2):✅(verifiedHost:0.1.7-rc.2)
版本线对照:0.2.0 起支持宿主 0.1.2-rc.1 及以后;宿主 0.1.0-rc.6 ~ 0.1.1-rc.2 的用户请停留在 0.1.x 发布线(末版 0.1.0)。
已知限制
- 原位编辑是 DOM 层过渡方案——官方 header 仍无标题槽位,编辑器通过
data-ste-inplace隐藏官方标题节点、并在其测量矩形上覆盖输入框。定位按「crumbs nav 最后一段里文本等于当前标题的节点」完成,因此两条宿主线共用一套代码:0.1.5/0.1.6 的当前 crumb 是 disabled 按钮,0.1.7-alpha.1 起(上游92101e1a5b,为让标题进入窗口拖拽条)改成了纯文本span.crumbCurrent。标题尚未投影、或官方 DOM 再次变化时,退回 actions 行内编辑器(改名不受影响)。 - 无乐观更新——header 标题只在宿主投影结算重命名后刷新。
- 字节预算归宿主所有,由客户端把关——客户端镜像宿主的 80 字节上限;宿主提高上限后,需常量同步跟进编辑器才会放宽。
实现原理
内部结构(点击展开)
src/index.ts 导出(apply/inject + TitleEditActionProps)
src/client/index.ts 插件主体;贡献 header-actions 条目
src/client/TitleEditAction.tsx 铅笔条目、内联编辑器、覆盖与宽度适配
src/client/title-length.ts MAX_TITLE_BYTES 镜像 + 宿主归一化
src/client/locales.ts 本地化警告与错误
src/client/slots.ts 槽位声明
纯浏览器侧插件:重命名走官方 session.rename RPC(session.rename → sessions.rename → ctx.sessionTitle.rename),因此无需宿主半边、无需新增 RPC、无需改动任何官方包。
编辑是原位的:点击铅笔后,通过 data-ste-inplace 隐藏官方标题节点,并在其测量矩形上覆盖本插件的输入框。标题节点由「当前标题文本」定位(crumbs nav 最后一段里文本等于 displayTitle 的叶子节点),因此 0.1.5/0.1.6 的 disabled crumb 按钮与 0.1.7-alpha.1 起的 span.crumbCurrent 共用同一条路径;祖先 crumb 与官方 lineage 槽的内容都不会被误隐藏。输入框宽度借助隐藏的、与输入框同字体的镜像 span 按草稿适配,下限为标题节点原宽度、上限为官方 crumb 的 220px 上限。
对模型没有任何变化:标题是仅投影的会话属性,永不进入模型上下文;重命名只是追加一条带用户来源的 session/title 事件——无 token 或 KV 缓存影响,投影落地后 header 标题随之刷新。另外,@deepseek-ai/dsh-session-title 限制接受的标题长度(maxTitleBytes,生产默认 80 UTF-8 字节);编辑器镜像该上限以及宿主截断前的归一化(剥离转义/控制/方向序列、折叠空白、去首尾空白),把关恰好在宿主会截断时触发。
开发
隶属 dsh-plugins monorepo(packages/session-title-edit)。问题与贡献请移步该仓库。
变更记录
见 CHANGELOG.md。