Run Status Monitor 是一个面向机器学习实验运行状态监控的技能,用于回答关于活跃运行的轻量级运维问题,同时将原始日志排除在主对话之外。
用途
该技能用于回答类似以下的问题:
- “现在实验进行到哪里了?”
- “有什么中间结果?”
- “预计还要多久结束?”
- “这个 job 是卡住了还是还在跑?”
其核心契约是:不要在对话中粘贴冗长的调度器输出或训练日志。应当探测、压缩、写入简短的状态产物,然后只汇报摘要。
主要能力
- 保持原始日志位于原始位置或私有的 .agent/ 运行产物中。
- 主智能体只读取生成的简短状态产物,而非原始日志。
- 优先使用项目/私有包装命令执行服务器特定的探测。
- 仅在汇总嘈杂状态输出否则会消耗主上下文时,才使用 sidecar-task-runner。
- 如果运行看起来失败、停滞或在科学上异常,则在创建状态产物后路由到 result-diagnosis。
技能目录结构
<installed-skill-dir>/
├── SKILL.md
├── scripts/
│ └── run_status_probe.py
├── references/
│ └── backends.md
└── templates/
├── runs.yaml
└── status.md
预期项目布局
.agent/run-status/
├── runs.yaml # 项目本地运行监控配置,若包含主机/路径则为私有
└── raw/ # 可选的原始探测捕获,忽略/私有
docs/ops/runs/
└── <run-id>-status.md # 可供主智能体读取的简短状态产物
使用方式
工作流程如下:
- 定位项目根目录。
- 阅读 references/backends.md。
- 按以下顺序定位运行配置:
- 用户提供的 --config
- .agent/run-status/runs.yaml
- docs/ops/runs.yaml
- infra/remote-projects.yaml 加项目特定说明
- 当配置存在时运行探测脚本:
python3 <installed-skill-dir>/scripts/run_status_probe.py \
--config .agent/run-status/runs.yaml \
--run <run-id>
- 如果没有配置,从 templates/runs.yaml 创建一个,包含最低限度的后端字段,并只询问缺失的运行身份字段。
- 在回答用户之前,只读取生成的 status_artifact,不读取原始日志。
- 仅当状态改变了持久项目状态时,才更新 docs/ops/current-status.md 或项目记忆。
输出规则
每个面向用户的回答都应符合以下格式:
Run: <id>
State: running | pending | succeeded | failed | stale | unknown
Progress: <short>
Latest metrics: <short>
Last update: <time or unknown>
ETA: <estimate or unknown>
Risk: <short>
Artifact: <status artifact path>
升级条件
在以下情况需要升级处理:
- 运行处于失败/停滞状态
- 指标异常
- 日志显示重复异常、OOM、NaN 或检查点失败
- 由于缺少进度标记而无法估算 ETA
- 探测命令需要网络/服务器审批
适用场景
适用于需要跟踪机器学习实验运行状态、但不希望将大量日志带入主对话上下文的场景。尤其适合多运行并行、需要快速了解进展和风险的运维式监控。
限制
该技能的原始资料未提供关于具体后端类型、支持平台、收费模式或性能保证的详细信息,这些内容暂未提供。实际使用依赖项目内配置文件的正确设置,且需要具备运行 Python 脚本的环境。