DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

ruozhi5067 /

ruozhi5067/dsh-plugin-performance

Verified

DSH 侧边栏实时性能表:整机与 DSH 自身进程树的 CPU / GPU / 内存 / 网络 / 磁盘监控;面板关闭 15 秒后采样器自动退出。DeepSeek Harness client plugin (Windows).

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@780c2ef0

dsh-plugin-performance

topic: dsh-plugin topic: deepseek-harness License: MIT Platform: Windows

DSH(DeepSeek Harness)侧边栏的实时性能表:一个全局面板,同时展示整机与 DSH 自身进程树的 CPU / GPU / 内存 / 网络 / 磁盘占用。

面板打开才采样,关闭 15 秒后采样器自动退出——闲置时 CPU 与内存占用归零。

DSH 侧边栏性能表面板


功能

资源 系统(整机) DSH(本应用进程树)
CPU 总占用 % / 逻辑核数 进程树合计 CPU % / 进程数
GPU GPU 引擎占用 % / 显存 进程树 GPU % / 显存
内存 已用 / 总量(%) 进程树内存合计 / 占系统比例
网络 全机 ↓ / ↑ 速率 Host 进程外网 ↓ / ↑ 速率
磁盘 各分区占用 % + 磁盘活动 % + 读/写速率 进程树磁盘 I/O 读/写速率
  • 左侧边栏独立入口:侧栏出现「性能表」按钮,点开即是一个整页面板(与「插件」「计划任务」等页面同级),不占用会话区。
  • DSH 进程明细:面板底部可展开进程列表(PID / 角色 / CPU / 内存 / GPU / 磁盘 I/O),排序后展示。
  • 状态与新鲜度:顶部显示采样器状态(运行中 / 启动中 / 错误)、最近采样时间;支持「立即刷新」。
  • 中英双语:跟随 DSH 语言设置。

低占用设计(重点)

  • 惰性启动:插件加载时不会创建任何采样进程;只有用户打开「性能表」面板、浏览器开始轮询 GET /dsh-perf-table/snapshot 时才启动采样器。
  • 自动退出:面板关闭(最后一次轮询)15 秒后,Host 停止采样器进程并清空缓存;再次打开面板会重新启动(冷启动约 1.5~3.5 秒,期间界面显示「正在启动采样器…」)。
  • 采样器实现:Windows PowerShell 5.1 + 内联 C# P/Invoke 直接调用 PDH(PdhAddEnglishCounterW,规避中文系统计数器本地化),单次 collect 仅数毫秒,自身 CPU 目标 < 1% 单核;不使用昂贵的 WMI / CIM Win32_Perf* 查询。
  • 客户端:面板不可见 / 页面隐藏时停止轮询;仅保留一个 1500ms 定时器,数据更新只改数值不重建 DOM;数据未变化不触发重渲染。
  • 进程树枚举:以 Electron 主进程为根,一次性枚举并缓存,间隔若干采样才刷新一次;进程指标直接用 Win32 API 打开子树句柄,避免 PDH \Process(*) 通配查询的重名歧义与开销。
  • 零残留:关闭插件(在插件页关闭本行)会立即销毁路由、停止采样器并还原所有全局补丁。

环境要求

  • Windows 10 / 11(采样器基于 Windows PDH 与 PowerShell 5.1;macOS / Linux 不支持);
  • DSH Desktop 或带 Host 半边的 DSH Web(本插件需要 dsh-host-webserver 服务;开发验证于 DSH 0.2.2-rc.1);
  • 不要求管理员权限;不修改系统配置(PowerShell 仅以 -NoProfile -NonInteractive -ExecutionPolicy Bypass 运行临时脚本,进程退出即结束)。

安装

本仓库的包名是 dsh-perf-table(package.json 中已带 dsh.bundle.patch,可独立作为组合包安装)。

方式 A:作为 profile bundle(推荐)

  1. 把本仓库目录放到任意位置(下称 <REPO>);

  2. 在 DSH profile(如 ~/.dsh/profiles/<profile>)的 package.json 的 dependencies 中追加:

    {
      "dependencies": {
        "dsh-perf-table": "link:<REPO>"
      }
    }
    
  3. 在 dsh.profile.bundles 中追加 "dsh-perf-table":

    {
      "dsh": {
        "profile": {
          "bundles": ["@deepseek-ai/dsh-base", "...", "dsh-perf-table"]
        }
      }
    }
    
  4. 在 profile 目录执行 pnpm install(或 npm install)建立链接;

  5. 重启 DSH(菜单「重启应用和 Host」)。新插件需要重启后才会加载。

DSH Desktop 的 desktop profile 由应用独占管理,dsh plugin --profile desktop add ... 可能被拒绝;此时按上面的方式手工登记依赖与 bundle 即可。

方式 B:用户补丁层(不加入 bundles)

  1. 完成方式 A 的第 1、2、4 步(登记依赖并建立链接);

  2. 编辑 profile 的 cordis.patch.yml(用户补丁层),追加:

    - insert:
        - id: perf-table
          name: dsh-perf-table
    
  3. 重启 DSH。

方式 A 与方式 B 二选一,不要同时使用(否则同一个 Loader 行会被插入两次)。


使用

  1. 重启后,左侧边栏出现 性能表 按钮(图标为仪表/表格);
  2. 点击打开整页面板,采样器会自动启动(首次约 1.5~3.5 秒);
  3. 面板显示「系统 / 整机」与「DSH / 本应用」两行数据,底部可展开 DSH 进程明细;
  4. 右上角「立即刷新」可手动刷新;「运行中 · 最近采样」显示数据新鲜度;
  5. 关闭面板离开后,15 秒内采样器退出,资源占用归零;下次打开重新启动。

工作原理

浏览器(client.js)                  DSH Host(index.js)               系统
┌─────────────────────┐   GET     ┌────────────────────────┐   spawn   ┌──────────────────────┐
│ 侧栏图标 + 性能表面板 │ ────────► │ /dsh-perf-table/snapshot│ ────────► │ sampler.ps1           │
│ 每 1500ms 轮询一次    │ ◄──────── │ 内存缓存最近一次采样     │ ◄──────── │ PowerShell 5.1 + PDH │
└─────────────────────┘   JSON    └────────────────────────┘  逐行 JSON └──────────────────────┘
  • index.js(Host 半边):采样器守护(启动 / 看门狗 / 崩溃重启 / 空闲退出)、Host 出向网络打点、只读快照路由;
  • sampler.ps1(长驻采样器):PowerShell 5.1 + 内联 C#,通过 PDH 英文计数器采集系统 CPU / GPU / 磁盘 / 网络,通过 Win32 API 采集进程树指标,每 1500ms 向 stdout 输出一行紧凑 JSON;
  • client.js(浏览器半边):侧栏入口 + 全局面板;轮询快照、渲染「系统 / DSH」两行与进程明细;面板不可见或页面隐藏时停止轮询。

数据来源与口径

  • 系统 CPU / 磁盘 / 网络 / GPU:Windows PDH 英文计数器;
  • 系统内存:GlobalMemoryStatusEx;分区空间:System.IO.DriveInfo;
  • DSH 进程树:以 Electron 主进程(Host 的父进程)为根的子树,PDH Process 计数器按 PID 对齐;
  • DSH 网络:Host 进程内 net.Socket 打点(已过滤 127.0.0.1 / ::1 回环流量),只统计 DSH 后端真正对外发起的连接;
  • DSH 磁盘 I/O:Windows 进程 I/O 计数器(含少量网络 / 设备 I/O,属系统计数口径限制);
  • GPU 占用口径:按 adapter(luid)聚合各引擎利用率并 cap 100,取最忙的 adapter。

隐私与安全

  • 完全本机:面板数据只在 Host 内存中计算,快照路由只读、不写文件、不联网;
  • 采样器无副作用:临时 PowerShell 进程只向 stdout 输出 JSON 行,不写磁盘、不创建子进程、不修改系统设置;
  • 网络流量:仅统计本机 DSH 进程 socket 的字节数,不读取包内容、不上传任何数据;
  • 零遥测:本插件不收集、不发送任何个人信息。

已知限制

  • 仅 Windows:采样器依赖 PDH / PowerShell 5.1,macOS 与 Linux 不可用。
  • GPU 指标依赖系统的「GPU Engine」性能计数器;部分虚拟机、核显或旧驱动上可能不可用,此时对应数值显示为空(不影响其它指标)。
  • 磁盘 I/O 为进程级系统计数器口径,会包含少量非磁盘设备 I/O;分区占用为只读快照。
  • 冷启动采样器需 1.5~3.5 秒,期间面板显示「正在启动采样器…」,属正常现象。
  • 快照路由是只读 GET;面板关闭 15 秒后不再有数据,此时访问路由只会得到空快照。

卸载

  1. 从 profile 的 dsh.profile.bundles 中移除 dsh-perf-table(或删除用户补丁层的 perf-table 行);
  2. (可选)从 profile 的 package.json 中删除依赖,并移除 node_modules 链接;
  3. 重启 DSH。

卸载后不会残留进程、路由或全局样式。


结构

dsh-plugin-performance/
├─ index.js          # Host 半边:采样器守护、网络打点、快照路由
├─ sampler.ps1       # Windows PDH 长驻采样器(逐行 JSON)
├─ client.js         # 浏览器半边:侧栏图标 + 性能表全局面板
├─ cordis.patch.yml  # 组合包补丁:插入 perf-table 行
├─ locale/*.json     # 插件页标题 / 描述(中英)
├─ icon.svg          # 插件图标
└─ preview/          # README 截图

开发

node --check index.js
node --check client.js
# 直接运行采样器(需 Windows PowerShell 5.1;RootPid 可填任意进程 PID 做冒烟测试)
powershell.exe -NoProfile -NonInteractive -ExecutionPolicy Bypass -File sampler.ps1 -RootPid 1 -IntervalMs 1500

采样器的详细设计(PDH 选择、进程树枚举、错误降级)写在 sampler.ps1 文件头注释中。

License

MIT © 2026 ruozhi5067

—/ 5

No ratings yet

Verified DSH bundle

Commit 780c2ef0456c

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout