diff --git a/pipeline_service/agent_loop.py b/pipeline_service/agent_loop.py index aef088d..86f5bfb 100644 --- a/pipeline_service/agent_loop.py +++ b/pipeline_service/agent_loop.py @@ -840,6 +840,13 @@ async def pm_review_run(project_id, agent_id=None, model_name=None): "UPDATE pipeline_tasks SET updated_at=NOW() WHERE id=${tid}$ AND state='review'", {"tid": task_id}) await sor.sqlExe("COMMIT", {}) + # auto-inject 兜底:最后两轮强制要求给出 review_* 决策,禁止再 tool_call, + # 否则 deepseek 会一直读文件/git_status 耗尽 5 轮 → 审核超时 → 打回重跑 → 死循环 + if turn >= 3: + msgs.append({"role": "user", "content": + "已检查足够信息。现在必须立即输出最终决策 JSON," + "只能是 review_approve / review_reject / review_complete 三者之一," + "禁止再调用任何工具。"}) try: raw = await llm_call_msgs(msgs, model=model_name, temperature=0.3) except Exception as e: