dsh-handy:给 DSH Web 客户端补上会话笔记本与关键信息面板

前言

在 DSH Web 客户端里做多轮智能体调试时,往往会遇到几类反复出现的麻烦:长会话里随手记的决策和临时凭据散落在对话框里,一旦分叉就取不回来;会话列表很长时,重要的那几条要反复滚动才能找到;右侧边栏开了一堆文件、预览标签,逐个点关闭很费时间。官方客户端目前的 UI 侧重会话与工作区管理,这些问题更多靠使用者自己用外部笔记应付,缺乏一个就地存放、随会话流转的机制。

dsh-handy 是 dayutech 维护的一个 DSH Web 客户端增强插件,围绕「会话级笔记本 + 关键信息面板」补齐了这些缺口。它把笔记本、关键信息、会话组和星标都放在本机浏览器 localStorage,只有显式点击「再次注入」时,关键信息才会进入当前会话上下文。

本文基于插件 README 整理,先讲清楚它提供哪些能力,再给安装命令和典型用法。

这是什么

dsh-handy 是一个 DeepSeek Harness Web 插件,定位是客户端增强,而不是替换宿主功能。它属于社区目录 skillhub 收录的「客户端」分类插件,维护者为 dayutech,仓库地址 https://github.com/dayutech/dsh-handy。

它解决的核心问题是:DSH 会话本身是对话流,缺少适合存放「分析记录」和「暂时用不上的凭据」的独立空间,分叉时这些信息也不会自动带上。dsh-handy 用浏览器本地存储把这些信息按会话隔离保存,并在分叉时自动继承,同时顺手处理了侧边栏标签批量关闭、工作区排序等界面层面的琐碎操作。

插件只修改当前 Web 界面状态,不写入 Host 会话日志或工作区文件。

核心功能

下面这些能力全部来自 README 的功能表和功能详解。

会话笔记本

入口在会话顶部「对话 / 轨迹 / 笔记本」中的「笔记本」标签。每个会话有独立的文本区,不与其他会话串内容。

  • 输入后约 250ms 自动保存,失焦、切换标签或离开页面时也会刷新保存。
  • 刷新页面、重新打开会话后恢复;同一浏览器不同标签页会同步。
  • 提供字数统计、复制全文和清空当前会话笔记。
  • 数据只保存在本机,不跨设备同步,也不会自动发送给模型。

关键信息悬浮栏

入口在会话页右上角的钥匙徽标,默认收起,有内容时徽标显示条目数。用于集中记录目标地址、SSH 账密、Web 登录信息、数据库连接信息以及任意自定义键值对。

要点如下:

  • 每个条目包含「名称 / 值 / 说明(可选)」,支持复制值和删除条目。
  • 快速添加预设:目标地址、SSH 账密、Web 账密、数据库账密,也可添加自定义条目。
  • 每个条目可单独折叠,折叠后只显示名称,但仍保留单条注入、复制和删除按钮。
  • 每个条目有独立的「注入此条」按钮,只发送当前条目;底部「再次注入」发送全部有值条目。
  • 面板顶部提供「全部折叠 / 全部展开」。
  • 展开面板可拖动标题移动;收起为徽标后,可按住鼠标右键拖动徽标。
  • 悬浮栏位置按会话保存,并限制在当前会话工作区内;右侧边栏打开时会随工作区右边界向左移动,双击标题可恢复默认位置。
  • 如果当前会话被另一个 DSH 进程占用,注入会提示「会话正被占用」,这是宿主写入句柄限制,不是静默失败。

指定轮次分叉与分叉继承

在对话框输入 /fork 会列出当前会话已加载历史中的用户轮次,选择其中一轮后从该轮之后建立分支,并自动打开新会话。也可以走 DSH 原生分叉入口。

  • 完整轮次从该轮回复之后分叉;仍在进行中的轮次从当前进度分叉,由宿主补齐未闭合的工具调用。
  • 原生分叉和 /fork 都会把源会话的笔记本与关键信息复制到新会话。
  • 复制内容包括关键信息条目、值、说明、条目折叠状态和悬浮栏位置;不复制工作区归属、会话组、高亮星标或模型设置。
  • 分叉继承的是本机保存的 dsh.handy.v1 状态。如果源会话尚未自动保存刚输入的笔记本内容,可能只复制最近一次已保存内容。

工作区会话组

会话组是工作区下的逻辑子文件夹,不是真实文件系统目录。

  • 入口:工作区行 … →「新增会话组」;会话组行 … 管理组;会话行菜单「加入会话组…」移动会话。
  • 支持最多 3 级嵌套;组与会话必须属于同一工作区。
  • 可以在组内添加会话、新建会话,也可以把会话卡片拖到会话组行上移动。
  • 组和归属关系保存在本机,不写入 Host 会话日志;跨工作区拖拽会被拒绝并给出提示。

会话高亮

入口是会话行右侧星标,或会话行菜单「标记为重要」。重要会话在左侧列表中带彩色渐变底和左侧色条,便于在长列表中扫视。高亮状态按会话保存在本机并支持跨窗口同步,不改变会话内容或归档状态。

运行工作区排序

有会话正在运行,或该会话有子 agent 正在运行的工作区,会自动提升到侧边栏最上方;多个运行工作区按 Host 原始顺序稳定排列,任务结束后按 Host 顺序恢复,不会永久打乱工作区。运行中的会话转圈改为更醒目的蓝色并带轻微蓝色光晕。这部分只调整 Web 侧边栏的显示顺序和状态颜色,不修改会话状态或工作区数据。

右侧边栏标签批量关闭

右键任意右侧边栏标签,可以选择「关闭当前标签页」「关闭左侧所有标签页」「关闭右侧所有标签页」或「关闭所有标签页」。该能力对文件、预览、终端以及后续新增的 dock 标签类型统一生效,不依赖标签内容类型。

  • 系统自带的菜单项「关闭」已隐藏,避免与插件的「关闭当前标签页」重复,标签上的单独 X 按钮仍保留。
  • 关闭操作通过右侧边栏控制器执行,仍遵循宿主对当前可关闭标签的判断。

安装与启用

从 npm 安装(推荐,预构建包,安装时不需要构建):

dsh plugin --profile desktop add dsh-handy

从 GitHub 源码安装:

dsh plugin --profile desktop add https://github.com/dayutech/dsh-handy

从本地目录安装:

dsh plugin --profile desktop add D:\path\to\dsh-handy

如果使用 CLI profile,把 desktop 换成实际 profile 名。安装后重启对应的 Harness 进程并刷新页面。卸载用:

dsh plugin --profile desktop remove dsh-handy

也可以在 ~/.dsh/profiles/<profile>/package.json 中把本包加入依赖,并确保 dsh.profile.bundles 包含 dsh-handy。

版本与兼容性:当前最新版本 0.8.1,插件声明的 engines.dsh 为 >=0.2.1-rc.3 <0.2.3-0,在 DSH 0.2.2-rc.1 上构建和验证;许可证为 MIT。注意 0.2.2 起 DSH 以 engines.dsh 判断第三方插件兼容性,声明范围不覆盖当前版本时,整个 bundle 层会被跳过,插件表现为「装了但完全没反应」。

典型用法

以下按「配置会话 → 分叉 → 维护界面」的顺序给出一个可直接复现的流程。

1、打开任意工作区下的会话,点击右上角钥匙徽标,用预设添加「目标地址」和「SSH 账密」两条关键信息,填好值和说明。

名称:目标地址
值:https://example.internal
说明:预发环境入口

2、展开悬浮栏,把标题拖到顺手的位置(例如会话区右侧靠上),双击标题可恢复默认位置。

3、在会话顶部切到「笔记本」标签,用简短条目记录这次要排查的问题和中间结论。输入后约 250ms 会自动保存,切走标签页或刷新页面都不会丢。

4、对当前会话输入 /fork,选择某个用户轮次,插件会从该轮之后建立分支并自动打开新会话。新会话会带上源会话的笔记本和关键信息内容,条目折叠状态与悬浮栏位置也都一致。

5、把当前会话卡片拖到某个会话组行上,即可把它移入该组。跨工作区拖拽会被拒绝并提示。

6、右键右侧边栏的某个文件或预览标签,选「关闭左侧所有标签页」,可一次性清理多余标签。

适用场景与注意

适合的使用场景:经常做会话分叉、需要在同一会话里保留排查笔记和临时凭据、侧边栏标签容易堆积、希望按工作区用会话组组织长列表的 DSH Web 使用者。

使用前需要注意几点:

  • 插件代码以当前 dsh 进程的权限运行。安装前应先检查源码与许可证,确认 cordis.patch.yml 的 Host 侧补丁和 dsh.client.inject 的注入列表符合自己的安全要求。本插件不对第三方插件、模型或宿主本身的安全性作保证。
  • 笔记本和关键信息保存在本机 localStorage 的 dsh.handy.v1 键中,不走插件自己的网络请求;关键信息是明文本数据,可能包含 SSH、Web、数据库凭据,不要在共享设备或不受信任的浏览器配置中使用。
  • 点击「再次注入」会把这些内容作为用户消息发送到当前会话队列,应确认当前会话和模型环境允许处理这些凭据。
  • 0.2.x 的旧版「全局编组」数据不再兼容,升级后需要按工作区重新创建会话组。

结尾

dsh-handy 的价值在于把「会话笔记本」和「关键信息面板」这两样原本散落在别处的东西收回到会话内部,并让分叉继承、会话组、高亮和批量关闭这些操作各归其位。它没有替换宿主能力,只是补上了 Web 客户端界面层面的几块短板。

目录页:https://www.skillhub.cn/plugins/dayutech/dsh-handy

GitHub:https://github.com/dayutech/dsh-handy

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜