dsh-pad:在 DSH 对话旁用 AI 生成可平铺的悬浮面板

前言

用 DeepSeek Harness(DSH)做智能体开发时,常见需求是「边对话边盯一组指标」:本机 CPU、API 余额、某个仓库的最新 Release。自己写独立前端或反复让模型在对话里贴表格,要么维护成本高,要么占上下文、耗 token。

dsh-pad 是 DSH 的客户端插件:在 Web 界面或鲸屿桌面端右侧挂一个可拖动的面板坞,面板由模型在对话里通过 pad_* 工具生成与修改;数据可走本机命令、HTTP 轮询,也可以按间隔跑后台 agent 刷新,面板脚本里还能调用 dsh.run 做一次纯文本模型推理。下面介绍它是什么、怎么装、怎么用,以及安装时要注意的权限与配置。

这是什么

  • 名称:dsh-pad(npm 包名 dsh-pad)
  • 维护者:ChisaAlter
  • 分类:客户端(注入 Web 端 UI)
  • 许可证:MIT
  • 当前版本(package.json):0.2.2
  • 目录页:SkillHub - dsh-pad
  • 源码:GitHub - ChisaAlter/dsh-pad

一句话定位:DSH 右侧悬浮面板坞;AI 在对话里生成沙箱 HTML 面板,支持并排平铺、本机/HTTP 数据源、AI 定时刷新、面板内 dsh.run 模型调用。面板设计思路参考了维护者 ChisaBot 中的自定义面板与定时刷新面板。

核心功能

悬浮坞与布局

右侧有一个可拖动的胶囊,点开是面板列表。宽屏展开时会给对话区让出位置,尽量不挡输入框;可拖左边缘调宽度,拖标题栏上下移动,拖上下边缘调整体高度,位置与尺寸记在浏览器 localStorage。

卡片支持平铺:把一张拖到另一张上会并排、默认各占一半,一行最多 3 张;中间分隔条可调比例。拖到空白处可拆回单独一行。卡片可折叠,折叠后不再轮询数据源。

AI 生成与修改

模型通过 pad_create、pad_update 等工具维护面板定义。面板在 sandbox="allow-scripts" 的 iframe 中渲染 HTML/CSS/JS,配色跟随 dsh 亮/暗主题。对话里直接描述需求即可,例如观察服务器性能或显示 DeepSeek API 余额。

坞顶 + 会向输入框插入「用 pad_create 创建自定义面板」的提示词(不自动发送),补全需求后发送;新面板出现时坞会自动展开并高亮。

两种取数方式

  1. 直接数据源:在宿主侧执行 shell 命令,或请求 HTTP 接口,按秒级间隔刷新,不消耗对话 token。适合性能指标、余额接口等结构化数据。仅在面板坞展开且卡片未折叠时轮询;命令输出上限 512KB,默认超时 10 秒。
  2. AI 刷新:按 agent.everyMinutes 在后台跑一轮 agent,用 pad_submit_data / pad_report_failure 提交结果。适合需要搜索、读网页、多步推理的数据。后台 agent 无人审批,需审批的工具调用会被拒绝;本机命令应优先用直接数据源。

密钥在数据源配置里用 {{env:NAME}} 引用,只在宿主侧解析,不会发到浏览器 iframe。

面板内模型

面板可配置顶层 model(provider / model / 可选 reasoningEffort)。面板脚本里 dsh.run(prompt) 用该模型做一次纯文本生成(无工具、无网络,默认 120 秒超时、2048 输出 token)。AI 刷新与 dsh.run 共用这张面板的模型配置,也可在卡片 ⋯ 菜单里切换「面板模型」。

安全与审批

新建或修改数据源时,默认弹出 dsh 自带审批(允许一次 / 拒绝)。拒绝后卡片上保留「允许运行」按钮。配置项 autoApprove: true 可关闭询问(需自行承担风险)。

自动检查更新

启动后约 7 秒首次检查 GitHub Release,默认每 6 小时再查;仅有新版本时坞顶才显示下载图标,点更新会从 Release 拉取构建好的 lib/,备份到 .dsh-pad-update-backup/ 后需重启 dsh 生效。开发目录链接安装(含 .git/)只提示新版本,不覆盖源码。

安装与启用

环境要求:dsh ≥ 0.2.1-rc.2,使用 dsh web 或鲸屿桌面端。

插件以 bundle 方式登记(写入 profile 的 dsh.profile.bundles)。不要手抄本仓库 cordis.patch.yml 进 profile 的 cordis.patch.yml,否则模块无法解析、应用可能起不来。

安装前建议在插件目录自检:

node scripts/doctor.mjs

从 GitHub 安装(仓库已提交构建好的 lib/,无需本地 build):

dsh plugin --profile web add github:ChisaAlter/dsh-pad#7fc110b02fe34ea4dd518f79229f6477165d54da

本地开发目录安装:

dsh plugin --profile web add /path/to/dsh-pad

改源码后需在插件目录执行 npm install && npm run build 再安装。装好后重启 dsh web 或鲸屿。卸载:

dsh plugin --profile web remove dsh-pad

若安装后无法启动,可从 $DSH_HOME/profiles/web/package.json 的 dsh.profile.bundles 与 dependencies 中移除 dsh-pad,清理错误的 cordis.patch.yml 条目与 node_modules/dsh-pad 链接后重启;再装前再次运行 doctor.mjs。

典型用法

在对话里用自然语言描述面板,例如:

做一个观察这台服务器性能的面板:CPU、内存、磁盘、负载,每 3 秒刷新

做一个面板显示我的 DeepSeek API 余额,key 在环境变量 DEEPSEEK_API_KEY 里

做一个面板盯着 deepseek-ai/deepseek-harness 的最新 release,每 6 小时让 AI 更新一次

面板定义是 JSON 结构,包含 title、html / css / script、sources(command 或 http)、可选 model 与 agent。仓库 examples/ 下有服务器性能、DeepSeek 余额、GitHub release 三份完整示例,可作模型输出参考。

iframe 内通过 window.dsh 接数据:dsh.onData 订阅更新,dsh.history 看趋势,dsh.refresh / dsh.ask / dsh.openUrl 交互,dsh.fmt.* 与 dsh.chart.* 做展示。需要即时推理时再用 dsh.run,联网取数仍应靠直接数据源或 AI 刷新。

模型侧可用工具包括:pad_list / pad_get、pad_test_source(试跑数据源,需审批)、pad_create / pad_update、pad_models、pad_refresh、pad_delete。

配置(可选)

在 $DSH_HOME/profiles/web/cordis.patch.yml 中 patch dsh-pad 的 config(注意 patch 会替换整个 config,需写全需要的键)。常用项示例:

- id: dsh-pad
  name: dsh-pad
  config:
    autoApprove: false
    minIntervalSec: 2

其他键包括:dataFile(默认 $DSH_HOME/dsh-pad/panels.json)、agentRefresh、minAgentMinutes、agentTimeoutSec、interactiveModel、runTimeoutSec、updateCheck / updateCheckHours 等,详见仓库 README 配置表。

适用场景与注意

适合:已在用 DSH Web/鲸屿、希望把监控/看板贴在对话旁边、又愿意让模型生成和维护面板 HTML 的开发者。

权限:直接数据源在 dsh 宿主进程权限 下执行命令与 HTTP 请求;安装前应阅读源码与 MIT 许可证,确认命令与 URL 范围可接受。插件以当前 profile 运行,不是独立降权服务。

限制:AI 刷新会在 $DSH_HOME/dsh-pad/refresh 下产生独立会话日志(约每轮十几 KB),需自行清理 $DSH_HOME/sessions/ 中对应目录。面板布局与坞尺寸在浏览器 localStorage,换浏览器需重新调整。dsh 插件 API 仍在快速变化,悬浮坞依赖 shell.overlay 等宿主细节,宿主大改时可能退化为纯悬浮布局。

社区插件目录 SkillHub 与 DeepSeek / 幻方无官方从属关系;DSH 生态强调「一切皆插件」,dsh-pad 是其中面向客户端看板的一类实现。

结尾

dsh-pad 把「对话里说一句要什么面板」和「本机/HTTP 轮询 + 可选 AI 刷新 + 面板内 dsh.run」串在同一条工作流里,并用平铺布局避免自由定位带来的重叠与空隙。若你需要在 DSH 里长期盯一组指标,可从目录页或 GitHub 按官方命令安装,用 doctor.mjs 与数据源审批把风险压在可接受范围内。

  • 目录页:https://www.skillhub.cn/plugins/ChisaAlter/dsh-pad
  • GitHub:https://github.com/ChisaAlter/dsh-pad
羽毛球分组比赛记分
小程序二维码

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

小夜