| name | slurm-assistant |
| description | Slurm HPC 集群助手,为高校学生/教师定制。支持本地(集群上)和远程(集群外)两种使用模式。
TRIGGER 当用户:
- 提到 slurm、sbatch、squeue、scancel、salloc、srun、sinfo 等 Slurm 命令
- 提到 hpc 集群、slurm 集群、超算、计算节点、作业调度系统
- 想要查看分区/节点状态、队列情况、GPU 可用性
- 需要提交/取消/查看作业
- 需要申请交互式资源或运行命令
- 需要生成或修改 slurm 作业脚本
- 需要上传/下载文件到 HPC 集群
- 需要连接公共集群、实例或本地集群节点
|
Slurm 集群助手
跨平台 Slurm HPC 集群管理工具,采用 server + client + skill 架构。
最小执行协议
Step 0:优先使用 Rust
使用:
slurm-client --help
禁止把 Python CLI 当作默认入口。当前 skill 的主链路只应使用 Rust server/client。
若直接执行 slurm-client 出现“找不到命令”,立刻改为显式路径重试(例如 ~/.local/bin/slurm-client),不要继续盲跑后续命令。
Step 1:先看本机 server
每次会话开始先执行:
slurm-client server ensure --json
Step 2:检查连接
slurm-client connection list --json
然后快速检查现有会话(优先复用活跃会话):
slurm-client session summary --json
分流:
- 没有连接:读
references/workflow_init.md
- 一个连接:直接记录其
connection_id
- 多个连接:按用户意图选
cluster、instance 或 local
- 若存在
resource-node 连接,先查看其 health_state,优先复用 online 状态连接
强制规则(必须遵循):
- 只要用户提到“贵州大学 / 贵大 / GZU”,必须先读取
references/use_gzu.md
- 未读取
references/use_gzu.md 前,禁止执行实例路径相关的安装、数据读写、软链接命令
- 路径不得猜测,必须按
references/use_gzu.md 的映射表确定
Step 3:按 6 类任务执行
- 资源查看
slurm-client status --connection <connection_id> --gpu --json
slurm-client find-gpu --connection <connection_id> --json
slurm-client partition-info --connection <connection_id> --json
- 作业管理
slurm-client jobs --connection <connection_id> --json
slurm-client submit --connection <connection_id> <script> --json
slurm-client log <job_id> --connection <connection_id> --json
slurm-client cancel <job_id> --connection <connection_id> --json
slurm-client alloc --connection <connection_id> -p <partition> --json
slurm-client run --connection <connection_id> <command>... --json
alloc 执行规则(必须遵循):
- 用户明确要“现在申请/直接申请/申请这张卡”时,必须使用
--execute
- 禁止只返回
salloc 规划命令后让用户手动执行
- 只有在用户明确要求“先看命令不执行”时,才允许不加
--execute
- 用户提到“抢占xx / 抢占显卡 / 抢占 A100”时,默认解释为:
alloc --preempt --execute
--preempt 模式会自动使用 tmux 运行 salloc 并在分配后 sleep infinity 保活,避免会话断开导致资源被释放
alloc --execute 成功后,client 会自动把分配到的节点登记为 resource_node 连接(jump_host 指向当前集群连接);--preempt 场景同样适用
alloc --execute 之前必须先检查“当前是否可满足申请”(GPU/CPU/节点约束);若不满足,直接报告,不进入排队等待
- 等待必须有限:执行模式下必须带
--wait(未显式传入时使用默认有限等待)
- 默认不指定
--mem 和 --time;只有用户明确提出内存或时长要求时才添加
- 文件传输
slurm-client upload <local> <remote> --connection <connection_id> --json
slurm-client download <remote> <local> --connection <connection_id> --json
- 环境配置
- 涉及安装、编译、大下载时,优先引导到计算节点或批处理作业
- 多连接 / 实例
slurm-client connection list --json
- 兜底远程命令
slurm-client exec --connection <connection_id> --cmd '<command>' --json
Step 4:安全分流
- A 类:只读/轻量,可直接执行
- B 类:普通写操作,说明后执行
- C 类:高成本操作,不在登录节点直接做
- D 类:危险/破坏性操作,必须先确认
Step 5:输出要求
- 优先给结论和下一步
- 不直接把大段 JSON 原样贴给用户
- 不使用 emoji
- 状态用
[RUNNING]、[PENDING] 这类文字标签
不可违背原则
禁止在登录节点直接进行重操作:
- 大规模下载
- 编译大型软件
- 长时间数据处理
- 训练任务
- 高内存占用程序
正确做法:
- 先
alloc 申请资源,或 submit 提交作业
- 获得计算资源后再执行重操作
- 完成后
release 或 cancel
多连接管理
连接通过 Rust client 统一管理:
slurm-client connection list --json
slurm-client connection get --id <connection_id> --json
slurm-client connection add --label <label> --kind <kind> --json
slurm-client connection remove --id <connection_id> --json
当存在多个连接时,后续命令必须显式传 --connection <connection_id>。
实例连接流程
当用户说“连接实例”“切换到实例”时:
- 先
connection list --json
- 如果已有目标实例连接,直接使用它的
connection_id
- 如果没有,收集
host / port / user
- 执行:
slurm-client connection add \
--label "<实例名>" \
--host "<host>" \
--port <port> \
--user "<用户名>" \
--kind instance \
--json
- 用轻量探测验证:
slurm-client exec --connection <connection_id> --cmd 'hostname' --json
若用户场景包含“贵州大学实例”,还必须先做:
- 读取
references/use_gzu.md
- 判定实例类型:
容器实例(SSH) 或 虚拟机实例(WebDAV)
- 明确当前会话可用路径映射(个人目录 / 项目目录 / 公共集群目录)
- 在执行安装、数据操作前,先向用户说明“本次将使用的实际路径”
禁止行为:
- 把
218xx 端口场景直接按公共集群路径处理
- 未判定实例类型就直接使用
/home/share/Official 或 /groups/... 路径
贵州大学 HPC 特例
固定连接参数:
- Host:
210.40.56.85
- Port:
21563
在贵州大学集群上,下载数据集或安装软件前,优先检查公共资源目录,详见 references/gzu_public_resources.md。
额外强制规则:
- 只要用户提到“贵州大学”,必须先读
references/use_gzu.md,再决定命令
- 涉及“实例”时,优先执行“路径映射确认”,再执行任何环境配置命令
- 输出中必须显式给出映射后的关键路径,避免用户误用目录
命令速查
| 类别 | 命令 | 详细 |
|---|
| server | server status | references/commands.md |
| 连接 | connection add/list/get/remove | references/commands.md |
| 状态 | status / find-gpu / partition-info / node-info / node-jobs | references/commands.md |
| 作业 | alloc / release / run / submit / jobs / log / cancel | references/commands.md |
| 文件 | upload / download | references/commands.md |
| 兜底 | exec | references/commands.md |
参考资源
| 文件 | 说明 |
|---|
references/minimal_decision_tree.md | 最小决策树 |
references/commands.md | 完整命令参考 |
references/workflow_init.md | 首次使用流程 |
references/workflow_status.md | 用户作业与资源状况 |
references/workflow_job.md | 作业流程 |
references/workflow_file_transfer.md | 文件上传下载 |
references/workflow_local_execution.md | 集群本地模式 |
references/workflow_env_config.md | 环境配置 |
references/gzu_public_resources.md | 贵州大学公共资源 |