diff --git a/src/daemon/dispatcher.py b/src/daemon/dispatcher.py index 01401a4..4353ade 100644 --- a/src/daemon/dispatcher.py +++ b/src/daemon/dispatcher.py @@ -232,12 +232,14 @@ class Dispatcher: def _task_on_complete(aid, outcome): try: if _is_review: - # 审查 Agent(司马懿)完成 → 直接标 done - # 不走 _task_auto_complete(否则又标 review → 死循环) - # 详见 #01 §4.6 任务状态机完整流转 + # 审查 Agent 完成 > 检查 outcome + # 只有正常完成才标 done,crash/error 保持 review if _task_db: - _dispatcher._mark_task_status(_task_db, _task_id, "done") - logger.info("Task %s: review complete, marking done", _task_id) + if outcome in ("completed", "session_revived"): + _dispatcher._mark_task_status(_task_db, _task_id, "done") + logger.info("Task %s: review complete (%s), marking done", _task_id, outcome) + else: + logger.warning("Task %s: review agent %s, NOT marking done", _task_id, outcome) else: _dispatcher._task_auto_complete(_task_id, _task_db) except Exception as e: