diff --git a/src/daemon/dispatcher.py b/src/daemon/dispatcher.py index 80c1cd6..148f1df 100644 --- a/src/daemon/dispatcher.py +++ b/src/daemon/dispatcher.py @@ -255,7 +255,7 @@ class Dispatcher: """构建重试上下文(前轮产出摘要 + 审查意见) 如果任务是从 failed/pending 重新调度(有历史 attempts), - 注入前轮的产出摘要和审查意见,让 Agent 知道上轮哪里不对。 + 注入前轮的失败原因,让 Agent 知道上轮哪里不对。 """ if not hasattr(task, 'retry_count') or (task.retry_count or 0) == 0: return "" @@ -263,9 +263,24 @@ class Dispatcher: parts = ["## ⚠️ 重试上下文(上次执行失败,请注意以下反馈)"] parts.append(f"这是第 {task.retry_count + 1} 次尝试。上次执行的问题:") - # 尝试从 task 的 metadata 获取上次失败原因 - if hasattr(task, 'notes') and task.notes: - parts.append(f"上轮说明: {task.notes}") + # 从 task_attempts 查上次 attempt 的 summary/outcome + if hasattr(self, '_queries') and self._queries: + try: + rows = self._queries.conn.execute( + "SELECT outcome, summary, agent FROM task_attempts " + "WHERE task_id = ? ORDER BY attempt_number DESC LIMIT 1", + (task.id,) + ).fetchall() + if rows: + outcome, summary, agent = rows[0] + if outcome: + parts.append(f"上轮结果: {outcome}") + if summary: + parts.append(f"上轮说明: {summary}") + if agent: + parts.append(f"上轮执行者: {agent}") + except Exception: + pass parts.append("请仔细检查上次的错误,避免重复犯错。") return "\n".join(parts)