auto-sync: 2026-05-28 19:53:31
This commit is contained in:
@@ -189,13 +189,16 @@ class Dispatcher:
|
|||||||
|
|
||||||
# on_checks_passed: 所有检查通过后才标 working,检查失败不标
|
# on_checks_passed: 所有检查通过后才标 working,检查失败不标
|
||||||
on_checks_passed = None
|
on_checks_passed = None
|
||||||
|
_mail_marked_working = False
|
||||||
if is_mail and db_path:
|
if is_mail and db_path:
|
||||||
_task_id = task.id
|
_task_id = task.id
|
||||||
_mail_db = db_path
|
_mail_db = db_path
|
||||||
_disp = self
|
_disp = self
|
||||||
def _mail_on_checks_passed():
|
def _mail_on_checks_passed():
|
||||||
|
nonlocal _mail_marked_working
|
||||||
if not _disp._mail_auto_working(_task_id, _mail_db):
|
if not _disp._mail_auto_working(_task_id, _mail_db):
|
||||||
raise RuntimeError("mail_auto_working_failed")
|
raise RuntimeError("mail_auto_working_failed")
|
||||||
|
_mail_marked_working = True
|
||||||
on_checks_passed = _mail_on_checks_passed
|
on_checks_passed = _mail_on_checks_passed
|
||||||
|
|
||||||
# 构建 spawn message
|
# 构建 spawn message
|
||||||
@@ -242,9 +245,7 @@ class Dispatcher:
|
|||||||
"reason": decision["reason"],
|
"reason": decision["reason"],
|
||||||
}
|
}
|
||||||
except AgentBusyError:
|
except AgentBusyError:
|
||||||
# v2.7.2: agent 被 counter 占用或冷却中
|
# on_checks_passed 未执行(check 失败在它之前),working 未标,无需回退
|
||||||
# v2.7.3: on_checks_passed 在 check 通过后才标 working,
|
|
||||||
# 所以 AgentBusyError 时 working 未被标记,无需回退
|
|
||||||
self._record_routing(task, decision, "skipped", "Agent busy", _routing_db)
|
self._record_routing(task, decision, "skipped", "Agent busy", _routing_db)
|
||||||
return {
|
return {
|
||||||
"level": level.value,
|
"level": level.value,
|
||||||
@@ -254,6 +255,9 @@ class Dispatcher:
|
|||||||
"reason": "Agent busy (concurrent limit or cooling down)",
|
"reason": "Agent busy (concurrent limit or cooling down)",
|
||||||
}
|
}
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
# on_checks_passed 已执行但 subprocess 失败 → 回退 working → pending
|
||||||
|
if _mail_marked_working:
|
||||||
|
self._mail_revert_to_pending(task.id, db_path)
|
||||||
self._record_routing(task, decision, "error", str(e), _routing_db)
|
self._record_routing(task, decision, "error", str(e), _routing_db)
|
||||||
return {
|
return {
|
||||||
"level": level.value,
|
"level": level.value,
|
||||||
|
|||||||
Reference in New Issue
Block a user