跳到主要内容

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.rename RPC;标题永远不会进入模型上下文(无 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.renamesessions.renamectx.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