From d8f810bf8d033e5d96af26371bad77d7e4759468 Mon Sep 17 00:00:00 2001 From: ymq Date: Tue, 11 Aug 2026 13:57:25 +0800 Subject: [PATCH] fix: aliases, questions SQL, limit auto-inject to 3 --- pipeline_service/agent_loop_v2.py | 32 ++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/pipeline_service/agent_loop_v2.py b/pipeline_service/agent_loop_v2.py index f197ff1..d598150 100644 --- a/pipeline_service/agent_loop_v2.py +++ b/pipeline_service/agent_loop_v2.py @@ -69,6 +69,7 @@ class AgentExecutor: self._msgs: List[dict] = [] # LLM 消息数组 self._turn_count: int = 0 self._tool_call_count: int = 0 + self._auto_push_count: int = 0 # 限制 auto-inject 次数 self._session_id: str = "" self._started_at: float = 0.0 @@ -150,11 +151,12 @@ class AgentExecutor: self._msgs.append({"role": "user", "content": f"请调用 {hint_tool} 工具,只输出 {{\"action\":\"tool_call\",\"tool\":\"{hint_tool}\",\"params\":{{}}}}"}) continue - # 调了工具但太少(1-2次),LLM 想停 → 推它继续深入 - if self._tool_call_count <= 2 and self._turn_count < self.config.max_turns - 2: + # 调了工具但太少(1-2次),LLM 想停 → 推它继续深入(最多3次) + if self._tool_call_count <= 2 and self._auto_push_count < 3: + self._auto_push_count += 1 hint = "请继续:查看失败任务的详情(task_detail),查看待回答问题(list_questions),或启动agent(start_agents)" yield json.dumps({ - "type": "auto_tool", "message": f"已调{self._tool_call_count}次工具,继续深入", + "type": "auto_tool", "message": f"已调{self._tool_call_count}次工具,继续深入({self._auto_push_count}/3)", }, ensure_ascii=False) + "\n" self._msgs.append({"role": "assistant", "content": "继续分析"}) self._msgs.append({"role": "user", "content": hint}) @@ -477,9 +479,11 @@ class AgentExecutor: "create_project": self._t_create_project, "create_task": self._t_create_task, "list_tasks": self._t_list_tasks, - "get_task_list": self._t_list_tasks, # 别名 + "get_task_list": self._t_list_tasks, + "get_tasks": self._t_list_tasks, # 别名 "task_detail": self._t_task_detail, - "get_task": self._t_task_detail, # 别名 + "get_task": self._t_task_detail, + "get_task_detail": self._t_task_detail, # 别名 "start_agents": self._t_start_agents, "diagnose_project": self._t_diagnose_project, "list_deliverables": self._t_list_deliverables, @@ -732,10 +736,20 @@ class AgentExecutor: if not pid: return "请先切换到项目" - recs = await sor.sqlExe( - "SELECT id, question, answer_source FROM pipeline_agent_questions " - "WHERE tenant_id=${pid}$ AND answered IS NULL ORDER BY created_at DESC LIMIT 10", - {"pid": pid}) + try: + recs = await sor.sqlExe( + "SELECT id, question, answer_source FROM pipeline_agent_questions " + "WHERE tenant_id=${pid}$ AND answered IS NULL ORDER BY created_at DESC LIMIT 10", + {"pid": pid}) + except Exception: + # 兼容无 answered 列的情况 + try: + recs = await sor.sqlExe( + "SELECT id, question, answer_source FROM pipeline_agent_questions " + "WHERE tenant_id=${pid}$ ORDER BY created_at DESC LIMIT 10", + {"pid": pid}) + except Exception: + return "暂无问题数据" if not recs: return "没有待回答问题"