dsh-runtime-env-watch:为 DSH 做定时运行环境、硬件与远程设备巡检

前言

在 DeepSeek Harness(DSH)里让模型改代码、跑命令时,常见两类误判:会话开头执行一次 pwd、git status 或 node -v,之后默认工作目录、分支和工具链没变;把第一次检查结果当成永久事实,直到命令失败才回头怀疑。若你还接机器人或远程服务,温度、占用、电量、网络与模式同样会随时间变化,单次快照不够用。

下面介绍社区插件 dsh-runtime-env-watch(维护者 ZachT11,分类:联网工具)。它在 Host 内按秒调度定时检查,把带时间戳、阈值与异常标记的状态在合适时机推给模型,并提供按需刷新的工具。DSH 生态主张「一切皆插件」;SkillHub 目录页 为独立社区站点,与 DeepSeek / 幻方无官方从属关系。

这是什么

dsh-runtime-env-watch 是给 DSH 的定时状态巡检插件:不只检查模型工作环境(cwd、Git、关键文件、工具链),还可定时检查本机硬件(CPU、内存、磁盘、电池、GPU、进程、端口、温度等)以及远程设备/机器人(HTTP JSON、SSH/命令、TCP、文件心跳)。

每条状态带采集时间、数据年龄、阈值与异常标记;定时器在 Host 里调度,与模型是否正在动作无关。插件当前版本为 0.2.0(见仓库 package.json),许可证 MIT。

核心功能

静态规则与定时调度

系统提示里只放固定规则(interpolate: false),说明环境/硬件/远程状态均为带时间戳的快照,应以最新巡检或工具结果为准,过期先刷新。CheckScheduler 每秒 tick,按各 check 的 intervalSeconds 到期执行,结果保存在内存;runtime-checks.json 的 mtime 变化会在约 5 秒内热加载。

模型输入推送

在 agent/pre-step 时,把最新运行时/硬件/远程状态拼成带时间戳的消息放到模型输入尾部。首次、环境重大变化、状态变化、阈值告警或心跳(默认 10 分钟)时推送。

工具

  • runtime_env:只看模型工作环境(cwd、Git、关键文件、工具链)。
  • status_check:立即运行全部或指定的状态检查,返回运行时 + 硬件 + 远程设备的合并报告;可传 { "id": "robot" } 或 { "refresh": true }。

总开关 enabled 默认为开启;关闭后静态规则、定时检查与上述两个工具一并停用。

检查项类型

检查项定义在 runtime-checks.json(路径由 checksFile 控制,默认相对当前 workspace)。支持 kind:hardware、http、command、tcp、file。无配置文件时,仅跑内置硬件检查:CPU、内存、系统盘、开机时长(走 Node os / fs.statfs,无需 PowerShell)。

安装与启用

从 GitHub 安装

官方 README 给出的命令如下(含新仓库 pnpm 构建相关参数):

dsh plugin --profile desktop add --allow-build=dsh-runtime-env-watch github:ZachT11/dsh-runtime-env-watch --trust-lockfile

若 pnpm 因 minimumReleaseAge 拒绝构建,可在 profile 的 pnpm-workspace.yaml 增加:

allowBuilds:
  dsh-runtime-env-watch: true

本地路径安装与卸载

dsh plugin --profile desktop add .\dsh-runtime-env-watch
dsh --profile desktop --dump-config   # 可选

重启 DSH 后生效。卸载:

dsh plugin --profile desktop remove dsh-runtime-env-watch

安装前请自行查看 GitHub 仓库 源码与 MIT 许可证;插件以当前 DSH Host 进程权限执行 command、http 等检查,只应配置可信地址与命令。

典型用法

最小硬件配置

在 workspace 放置 runtime-checks.json(勿提交含密钥的实际配置,仓库已将该文件名加入 .gitignore)。最小示例:

{
  "checks": [
    {
      "id": "hardware",
      "kind": "hardware",
      "intervalSeconds": 15,
      "metrics": ["cpu", "memory", "disk", "uptime"]
    }
  ]
}

HTTP 远程状态(机器人/服务)

{
  "id": "robot",
  "kind": "http",
  "intervalSeconds": 10,
  "url": "http://192.168.1.50:8080/api/status",
  "headers": { "Authorization": "Bearer REPLACE_ME" },
  "fields": {
    "battery": "battery.level",
    "mode": "mode",
    "x": "pose.x",
    "y": "pose.y",
    "error": "error"
  },
  "expect": {
    "battery": { "min": 20 },
    "error": { "equals": null }
  }
}

插件级配置(节选)

字段 默认 说明
enabled true 总开关
probeSeconds 30 运行时环境最小探测间隔
statusIntervalSeconds 30 未写 intervalSeconds 时的默认周期
reminderMinutes 10 无变化时心跳间隔
staleMinutes 10 超过该年龄标「数据已过期」
checksFile runtime-checks.json 检查项配置文件

probeSeconds、checksFile 等需在 profile 的 cordis.patch.yml 修改后重启;设置 → 插件里 runtime-env-watch 自动表单目前仅有 enabled 开关。

正常对话即可;第一次 agent/pre-step 后会在输入尾部看到「AI 运行环境巡检」与「硬件与远程状态」段落。需要即时刷新时,让模型调用 runtime_env 或 status_check。

适用场景与注意

适合:长会话开发、多 workspace 切换、本机资源紧张或接远程机器人/PLC/ROS 桥接时,希望模型默认看到「会过期」的状态快照而非一次性 shell 输出。

注意:

  • 定时器仅在 DSH 运行时工作;检查结果在下一次模型 step 才注入,空闲时不会主动弹聊天通知;无人值守告警需另接通知渠道或 DSH automation。
  • 硬件项依赖平台:battery、processes、ports、temperature 等需 PowerShell/WMI;GPU 需 nvidia-smi;失败会在报告中写明,不会假装正常。
  • 定位为「状态巡检」,不是项目依赖 doctor:不做 engines/requirements 的 semver 比对,也不检查目标部署机。
  • 不原生支持 MQTT/ROS;可通过 command 调用 ros2、mosquitto_sub 或本地脚本。

结尾

dsh-runtime-env-watch 用定时采集 + 阈值断言 + pre-step 推送,缓解模型把「第一次环境检查」当成永久真相的问题,并把硬件与远程设备纳入同一套报告。完整字段与样例见仓库 runtime-checks.example.json。

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

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

Xiaoye