SuperAPI AI 工具集

ssh-dev-suite/long-task

部署与运维

查看项目

更新于 10-24 04:38

技能介绍

概述

ssh-long-task 用于管理预计耗时超过 2 分钟的远程任务,通过 checkpoint 机制支持 agent 休息和跨会话恢复。

适用场景

  • 模型训练(超过 10 分钟)
  • 大规模数据处理
  • 编译构建任务
  • 数据库迁移

使用流程

1. 启动任务并写入 checkpoint

使用 connect/scripts/ssh-job.sh start 启动任务,获取 job_id 后立即写入 checkpoint:

connect/scripts/ssh-job.sh start <profile> "<command>"
# 输出: 任务已启动: job-20260306-143022-1234

long-task/scripts/checkpoint.sh write <profile> <job_id> \
  --task "模型训练 epoch 50" \
  --duration "~2h" \
  --next "检查训练完成,下载模型权重,运行验证" \
  --context "lr=0.001,batch=32"

产出为 checkpoint 文件:~/.ssh-jobs/<job_id>/checkpoint.md

2. 告知用户并休息

Agent 输出示例:任务已启动、checkpoint 已保存及预计耗时,并说明用户可以稍后输入“检查任务 <job_id>”查看状态、关闭会话后任务继续运行、新会话中会自动读取 checkpoint 恢复上下文。

3. 恢复时读取 checkpoint

新会话或用户请求检查时执行:

long-task/scripts/checkpoint.sh read <profile> <job_id>

产出为解析后的 checkpoint 内容(task、started、duration、next_steps、context)。

4. 智能状态检查

根据预计耗时决定检查策略:

connect/scripts/ssh-job.sh status <profile> <job_id>
  • 少于 5 分钟:每 30 秒检查一次
  • 5 至 30 分钟:每 2 分钟检查一次
  • 超过 30 分钟:每 10 分钟检查一次,或由用户手动触发

5. 输出检查(Token 优化)

先查询输出大小:

connect/scripts/ssh-job.sh status <profile> <job_id>
# 输出: stdout: 245KB, stderr: 1.2KB

按大小决策读取方式:

  • 小于 10KB:读取全部
connect/scripts/ssh-job.sh output <profile> <job_id>
  • 10KB 至 100KB:只读尾部
connect/scripts/ssh-job.sh output <profile> <job_id> --tail 50
  • 大于 100KB:先搜索错误
connect/scripts/ssh-job.sh output <profile> <job_id> --grep 'error|fail|exception'

6. 执行 next_steps

任务完成后,按 checkpoint 中的 next_steps 继续,逐步执行,每步完成后更新 checkpoint 或删除。

Checkpoint 格式

存储在 ~/.ssh-jobs/<job_id>/checkpoint.md:

job_id: job-20260306-143022-1234
profile: dev-server
task: "模型训练 epoch 50"
started: 2026-03-06T14:30:22
expected_duration: ~2h
next_steps:
  - 检查训练完成状态
  - 下载模型权重到本地
  - 运行验证脚本
context: "learning_rate=0.001, batch_size=32"

Token 约束

  • 输出检查:先查大小,按大小分级读取(全部、尾部或 grep)
  • 状态轮询:根据预计耗时调整频率,避免频繁检查
  • Checkpoint 内容:精简关键信息,不存储完整日志