fix(runtime): 运行稳定性 - 修复技能种子、任务续租与回归检查

保留社区技能作者与时间戳修复、Agent 参数约束、资源删除 worker 生命周期、PostgreSQL/Redis 测试门禁及相关回归。

Original-Commit: 0d05ff88bbe6c875d01964041788023a662ff7e8
This commit is contained in:
ddCat
2026-09-21 09:48:43 +08:00
parent 6a3e454141
commit 7f44332914
21 changed files with 644 additions and 354 deletions

View File

@@ -227,16 +227,11 @@ func (w *taskWorkerCoordinator) processClaimedTask(task *model.Task, globalSlot
if code, _ := ChannelSlotFailureDetails(err); code != "" {
channelSlotFailedBeforeRequest = true
}
// 我方执行时限到点不是"租约丢失":续租请求可能正好被同一个时限打断,
// 此时必须继续走失败收尾,否则任务停在 running、租约过期后被反复重跑。
deadlineExpired := errors.Is(ctx.Err(), context.DeadlineExceeded)
// 续租使用独立 context;即使执行同时超时,真实租约失效仍必须阻止写入。
select {
case leaseErr := <-leaseLost:
if !deadlineExpired {
_ = s.log(task.UserID, task.ID, "warn", "任务租约失效,等待其他 worker 恢复", leaseErr.Error())
return leaseErr
}
_ = s.log(task.UserID, task.ID, "warn", "任务执行时限到点,按失败收尾(不视为租约失效)", leaseErr.Error())
_ = s.log(task.UserID, task.ID, "warn", "任务租约失效,等待其他 worker 恢复", leaseErr.Error())
return leaseErr
default:
}
decryptedInput, decryptErr := s.decryptTaskInputJSON(task.InputJSON)