dsh-client-session-title-edit
已验证@khorsheed/dsh-client-session-title-edit · v0.1.0 · MIT · Web 界面
Session title editing in the web GUI chat header: an edit control beside the title that renames the current session through the official session.rename RPC (the user-sourced title pins against automatic regeneration)
安装
dsh plugin add @khorsheed/dsh-client-session-title-edit 用 dsh --profile default --dump-config 确认 layer 已生效 —— 参见安装指南。
源码
发布到 npm 但没有公开仓库。安装前请检查包内容。
标签
说明文档
@khorsheed/dsh-client-session-title-edit
English | 中文
在 dsh web GUI 聊天区头部直接重命名会话:点击标题旁的铅笔,标题本身变成内联编辑器。Enter 提交、Escape 取消,超长草稿会被本地化警告拦下——模型对此完全无感。


特性
- 头部铅笔——会话标题右侧的条目切换出内联编辑器,预填当前标题并全选。
- 可预期的按键——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 发布线(
@deepseek-ai/[email protected]):✅ 完整——rc.8→0.1.1-rc.1 API 审计(2026-08-21)确认本插件消费的所有面无变化或纯增量(ProjectionDefinition 重构、cacheHitPercent 返回值变更、credentials/updated 事件改名均不涉及本包),无需改动源码;rc.1→rc.2 复核(2026-08-22):消费面无变化,全量构建测试通过。 - 源码线(deepseek-harness master):✅
已知限制
- 原位编辑是 DOM 层过渡方案——官方 header 没有暴露标题槽位,编辑器通过隐藏官方标题 crumb 并原位覆盖实现;官方 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 隐藏官方标题 crumb,并在其测量矩形上覆盖本插件的输入框。输入框宽度借助隐藏的、与输入框同字体的镜像 span 按草稿适配,下限为 crumb 原宽度、上限为 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。