前言¶
在 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。