dsh-wide-focus: Widescreen, Task Panel, and Context Manager for DSH Desktop

前言

在 DSH 桌面客户端里做长对话开发时,常见有三处摩擦:对话列默认阅读宽度偏窄,长回答和表格需要反复横向扫视;待办散落在笔记或外部工具里,和当前会话脱节;上下文接近上限时,缺少一眼能看懂的占用与「继续还是新开」判断。社区插件 dsh-wide-focus(维护者 quanwenbo,分类为客户端)把宽屏阅读、悬浮任务看板和上下文管家收进一个包,全部在本机运行,README 写明零运行时依赖。从 v0.12.0 起,原 dsh-context-guard 已合并进本插件,一般不必再单独安装上下文相关插件。

这是什么

dsh-wide-focus 面向 DSH 桌面客户端(--profile desktop),在对话界面侧做三件事:把对话列拉到接近全宽、在界面上方提供可拖动的任务面板、在面板工具条展示上下文占用并在必要时引导交接与新会话。宿主侧注册任务持久化与上下文状态等 HTTP 路由;客户端通过 Cordis patch 注入会话 UI,不依赖额外构建步骤(client.js 为预构建 ESM)。

核心功能

宽屏阅读模式

开启后给 <html> 加上 data-dsh-wide-focus,将 --dsh-chat-user-width 覆盖为 calc(100% - 40px) !important。因宿主会在 resize 时重写列宽内联样式,插件在宽屏开启期间约每 400ms 同步相关节点;列宽拖拽把手 [data-width-handle] 会隐藏,改由标题栏 宽屏 / 标准 按钮切换(挂载点 conversation.session.header.utilities,id wide-focus-toggle)。默认开启,偏好记在 dsh.wide-focus.enabled。

悬浮任务面板

面板挂在 shell.overlay,id wide-focus-task-panel。标题栏约 78px 高,可拖动定位;折叠成胶囊后按 R 或再点胶囊可展开;双击标题栏恢复默认尺寸与位置;从底部两角缩放,最小宽度 300px。字号用 Ctrl + 滚轮或 Ctrl + = / - 调整。

四个固定标签:待验收 / 进行中 / 暂时搁置 / 已验收。对话里选中文字后右键 加入待办 可生成任务;列表首行 + 添加待办 支持多行输入(Enter 添加,Shift + Enter 换行)。任务数据仅存一份,由宿主读写 $DSH_PROFILE_DIR/wide-focus/tasks.json(另有回退路径),客户端通过 GET / PUT /wide-focus/tasks 同步,改动约 400ms 防抖保存。

面板自带深/浅主题(八卦按钮切换,记在 dsh.wide-focus.panelTheme),不跟随宿主主题。其它桌面插件可通过 window.__dshWideFocus.registerTool 把小组件挂到面板工具条。

上下文管家

工具条上的 NN% 占用徽章(id context-guard)按水位变色(60 / 70 / 80 / 85% 等阈值);点开卡片可看占用、缓存命中、轮次与工具调用、任务连贯性,以及 继续本会话 / 新开会话 建议。唯一动作按钮为 生成交接文档并新开会话;交接文件写到当前工作目录下 docs/handoff/YYYYMMDD-HHmm-<id>.md。宿主路由包括 GET /context-guard/state?sessionId=、POST /context-guard/handoff。

推理档位(自动)

工具条胶囊可切换 自动 / 建议 / 手动 三种模式:自动模式下发请求前仅会在 Low 与 High 之间切换(Max 留给手动);模式持久化在 $DSH_PROFILE_DIR/wide-focus/effort.json,对应 GET / POST /wide-focus/effort。

安装与启用

从 GitHub 固定 tag 安装(命令以 README 为准):

dsh plugin --profile desktop add git+https://github.com/quanwenbo/dsh-wide-focus.git#v0.12.3

若曾安装 dsh-context-guard,应先卸载,避免两个徽章并存:

dsh plugin --profile desktop remove dsh-context-guard

本地开发时可从目录安装,例如:

dsh plugin --profile desktop add C:\Users\BOB\dsh-plugins\wide-focus

说明:client.js 侧刷新页面即可生效;index.js 注册了 /wide-focus/tasks、/context-guard/state、/context-guard/handoff 等路由,首次安装或修改宿主入口后需重启一次桌面端。package.json 中声明的 DSH 引擎范围为 >=0.2.0-rc.1 <0.3.0-0。

典型用法

  1. 安装并重启桌面端后,在会话标题栏用 宽屏 / 标准 切换阅读宽度。
  2. 拖动任务面板标题栏摆到不挡对话的位置;需要时用 R 召回被挤掉的面板。
  3. 在回复里选中关键句 → 右键 加入待办,在 进行中 等标签里拖拽改状态或排序。
  4. 上下文徽章变琥珀/橙/红时点开卡片;占用过高或需要换会话时,使用 生成交接文档并新开会话。

扩展其它插件控件时,可在客户端脚本中检查桥接对象:

const bridge = window.__dshWideFocus
if (bridge) {
  const dispose = bridge.registerTool('my-plugin', MyChip)
  bridge.getSessionId()
  bridge.onSessionChange((id) => {})
}

适用场景与注意

适合长期在 DSH 桌面端做实现、排查、多轮工具调用的开发者:宽屏减少横向滚动,任务面板把「待验收 / 进行中」和对话绑在一起,上下文管家把占用与交接路径写进同一套 UI。

安装前请自行查看 GitHub 源码与 MIT 许可证;插件以当前 DSH 进程权限读写 profile 目录与交接文档路径,安装命令会从远程拉取指定 tag 的代码。README 列出的已知限制包括:宽屏依赖定时同步列宽、任务删除为两步确认且无撤销、拖拽基于 Pointer Events 等。社区目录页与 GitHub 仓库由维护者发布,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-wide-focus 把宽屏、任务看板和上下文占用提醒合成一个桌面客户端插件,并承接原 context-guard 能力。目录与详情见 SkillHub 插件页,源码与完整说明见 GitHub:quanwenbo/dsh-wide-focus。

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

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

Xiaoye