cg-panel:DSH 启动时的命令中心面板

前言

在 DeepSeek Harness(DSH)里同时挂着多个工作区时,「下一步该打开哪个项目」往往要靠翻目录、看 git 状态或回忆最近会话。机器负载、内存备份是否在跑、远程主机是否正常,又分散在 PowerShell、日志和 SSH 里。cg-panel 是维护者 DonGeeo87 发布的客户端类插件:把上述信息收成一块,占住 GUI 的 main 槽位,并在 Harness 启动时自动打开(也可关闭自动打开)。测量在宿主机完成,浏览器只请求同源下的 /api/cg-panel/...,不额外开端口,也不涉及 CORS。

这是什么

cg-panel(npm 包名 cg-panel,当前版本 1.0.0)面向 Windows(package.json 中 os 为 win32),要求 Node.js ≥18,DSH 版本 >=0.2.1-rc.2 <0.3.0-0。它在主界面提供命令中心:建议优先接续的项目、本机健康、内存备份状态,以及在配置后通过 SSH 只读采集的舰队(fleet)快照。社区目录页:skillhub.cn 上的 cg-panel;源码与说明:GitHub DonGeeo87/cg-panel。

面板展示什么

README 用表格归纳了各区块的数据来源与大致耗时,要点如下。

区块 来源概要
Start with DSH 工作区注册表 + git(最近提交、未提交文件)+ 按路径的会话活动;首次约 3 s
Laptop PowerShell Get-CimInstance 快照:CPU、内存、磁盘、电池、运行时间;约 1.5 s,缓存 60 s
Backups 内存同步日志最近一次运行 + 舰队主机报告的 restic 状态;与数据载荷一并缓存(45 s)
Alerts 派生告警:磁盘满、备份停跑或未提交工作、项目不在 git、AGENTS.md 中残留的 (completar: 标记等
Fleet 每个已配置主机一次 SSH,执行对端只读快照脚本;约 5 s,缓存 240 s

项目排序不是黑箱:每一行会说明原因(近两周会话、最近变动、未提交文件、未完成标记等)。

工作原理

主机侧(lib/index.js)在 Harness webServer 上注册两条精确路由:

  • GET /api/cg-panel/datos — 优先级、本机、内存备份、告警列表。
  • GET /api/cg-panel/flota — 经 SSH 的已配置主机;支持 ?forzar=1 绕过缓存。

客户端(lib/client.js)在键名 cg-panel 下填充 main 槽位,在 sidebar.panellist 注册图标;每个页面加载只自动打开一次,不会覆盖已恢复的对话或其他面板。

仅回环访问

两条路由虽挂在 /api 下,但插件要求 req.socket.remoteAddress 为回环地址(127.0.0.1、::1、::ffff:127.0.0.1),否则返回 403。面板面向本机浏览器,测量数据也本来就在本机。

有界等待

各阶段有超时上限,避免慢盘、卡住的 PowerShell 或不可达的 SSH 拖死界面;例如项目排序 12 s、整机 datos 22 s 后 504、flota 30 s 后 504,客户端 fetch 分别为 25 s / 35 s。具体上限见 README 中的表格。

配置

可选配置文件:~/.dsh/cg-panel.json(或 $DSH_HOME/cg-panel.json)。缺失、为空或损坏时面板仍可用,只是无法测量的区块会隐藏。

{
  "flota": { "hosts": ["vps", "aio", "laptop"] },
  "respaldo": { "log": "C:/path/to/.dsh-sync/sync.log", "repo": "C:/path/to/.dsh-sync" },
  "urls": ["https://ntfy.example"],
  "tema": "my-topic",
  "discoWarn": 85,
  "discoBad": 93,
  "memoriaWarnHoras": 30,
  "memoriaBadHoras": 72,
  "cambiosInfo": 15,
  "dormidosInfo": 6,
  "ventanas": { "info": 168, "warn": 12, "bad": 3 }
}
  • flota:不配则舰队整块省略,不发起 SSH,浏览器也不会请求 flota 接口。
  • respaldo.log / respaldo.repo:备份日志与仓库路径;未配时在存在 ~/.dsh-sync/sync.log 时会尝试默认路径,否则省略 Backups 区块。
  • urls / tema:供可选 watchdog 向 ntfy 发布;未配时 watchdog 会正常退出并提示频道未配置。
  • 其余键为磁盘、备份龄、未提交文件数、空闲项目等阈值,README 给出了默认值。

舰队主机通过 lib/collect/ 中的采集器测量:aio、vps 依赖同名 SSH 别名及对端已部署的只读快照脚本;laptop 指本 Windows 机。主机 id 可选,不可重命名。

安装与启用

安装与卸载使用 DSH 的 plugin_manager,命令来自仓库 README:

# 从 npm  registry
plugin_manager install_bundle target=cg-panel
# 或从本地目录
plugin_manager install_bundle target=<path-to-cg-panel>
# 移除
plugin_manager remove_bundle cg-panel

若只想重载主机侧而不重启整个 DSH,可先 plugin_manager set_bundle cg-panel false 再设回 true;apply 会在 live 进程里再跑一遍(ESM 缓存可能导致代码变更仍需完整重启)。

插件在 DSH 进程权限下运行;安装前请自行查阅源码与 MIT 许可证,确认符合你的环境策略。

典型用法

关闭或恢复启动时自动打开

在 GUI 控制台执行:

localStorage.setItem('cg-panel:auto', '0')

设为 '1' 或未设置时会再次自动打开。同一页面加载内只打开一次;F5 刷新会按「新一次页面加载」再次打开。

可选:vigia 与 ntfy

scripts/vigia.mjs 在 DSH 外以 Windows 计划任务运行(默认约每 15 分钟),在本机关闭时仍可推送越界项到 ntfy。频道来自配置中的 urls 与 tema;可选读 ~/.dsh/.ntfy-token。状态写入 ~/.dsh/cg-panel-vigia.json,日志 ~/.dsh/cg-panel-vigia.log。

# 任务状态与最近运行
pwsh scripts/vigia-tarea.ps1 -Estado
# 安装 / 移除(每 15 分钟)
pwsh scripts/vigia-tarea.ps1 -Instalar
pwsh scripts/vigia-tarea.ps1 -Quitar
# 立即跑一次
pwsh scripts/vigia-tarea.ps1 -Correr
# 模拟发送、不实际发布
node scripts/vigia.mjs --simular

冒烟测试

仓库提供针对数据路由的断言测试:

node test/datos-smoke.mjs

适用场景与注意

适合谁:在 Windows 上长期跑 DSH、维护多个 git 工作区,并希望一启动就看到「该接哪个项目、本机是否健康、备份与远程主机是否异常」的开发者。

环境限制:官方 package.json 标明仅 win32;Laptop 快照依赖 PowerShell;舰队功能依赖 SSH 别名与对端脚本。未配置 flota 时不会发起任何 SSH。

集成注意:README 强调 webServer 应通过 Cordis 的 inject 注入;若 inject = [] 导致 apply 早于 HTTP 服务就绪,面板各块可能显示 not found。这与插件在 Harness 生命周期中的挂载方式有关,排错时可对照 cordis.patch.yml 与 README 的 Design notes。

DSH 生态主张「一切皆插件」;SkillHub 等目录由社区维护,与 DeepSeek / 幻方无官方从属关系。

结尾

cg-panel 把项目优先级、本机指标、备份与可选舰队状态收到 Harness 主界面,数据经同源 JSON API 供浏览器展示,并对回环访问与阶段超时做了明确约束。需要安装命令、配置字段与 watchdog 用法时,以 GitHub README 为准;插件条目见 SkillHub 目录页。

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

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

Xiaoye