任务管理
Job 状态说明
| status | 含义 |
|---|---|
queued | 已入队,等待调度器分配算力 |
starting | 启动中 |
running | 正在运行 |
ready | grow 完成,wiki 可预览/发布 |
completed | 全部阶段完成 |
failed | 运行失败 |
paused | 已暂停 |
timeout | 超时 |
interrupted | 被中断 |
phase 取值:egg → boot → grow → butler
GET /api/v1/jobs
列出任务列表,可按状态过滤。非 admin 用户仅返回自己的任务。
curl "$HOST/api/v1/jobs?status=running" \
-H "Authorization: Bearer $TOKEN"
响应:{ "ok": true, "jobs": [...], "total": 5 }
GET /api/v1/jobs/{id}
获取单个任务详情。
curl $HOST/api/v1/jobs/42 \
-H "Authorization: Bearer $TOKEN"
关键响应字段:
{
"id": 42,
"wiki_slug": "deep-learning",
"status": "running",
"phase": "grow",
"elapsed_ms": 5403000,
"last_event_age_ms": 17000,
"runner_active": true,
"stale": false,
"token_summary": {
"total_tokens": 1200000,
"total_cost_usd": 12.3
}
}
提示
判断任务是否卡住:runner_active=false 且 stale=true(last_event_age_ms 异常大)通常意味着进程已不活跃,可考虑重置任务。
GET /api/v1/jobs/{id}/stream(SSE)
订阅任务实时进度流。
curl -N "$HOST/api/v1/jobs/42/stream?access_token=$TOKEN"
事件类型
| event | 数据格式 | 说明 |
|---|---|---|
phase | {phase, status, duration_s?} | 阶段开始/结束/失败 |
token | {phase, input, output, cost} | 阶段 token 用量 |
review | {scope, status} | 阶段质量复核 |
log | {level, msg} | 文本日志 |
done | {status} | 终态,流关闭 |
浏览器示例:
const es = new EventSource(`/api/v1/jobs/42/stream?access_token=${token}`);
es.addEventListener("phase", e => console.log(JSON.parse(e.data)));
es.addEventListener("done", e => { console.log(JSON.parse(e.data)); es.close(); });
GET /api/v1/jobs/{id}/log
拉取日志尾部(1–5000 行)。
curl "$HOST/api/v1/jobs/42/log?tail=200" \
-H "Authorization: Bearer $TOKEN"
其他控制端点
| 方法 | 路径 | 说明 |
|---|---|---|
POST | /jobs/{id}/start | 手动启动(auto_start=false 时使用) |
POST | /jobs/{id}/reset | 重置卡住的任务,重新入队 |
DELETE | /jobs/{id} | 删除任务记录 |
GET | /queue | 查看当前调度队列状态 |