From 06130bcbefb00409906f22f8511e1b7fc5960413 Mon Sep 17 00:00:00 2001 From: ymq Date: Mon, 31 Aug 2026 19:31:48 +0800 Subject: [PATCH] =?UTF-8?q?fix(workspace):=20switch=5Fproject=E5=90=8E?= =?UTF-8?q?=E5=88=B7=E6=96=B0=E5=B7=A5=E4=BD=9C=E7=9B=AE=E5=BD=95=E2=80=94?= =?UTF-8?q?=E2=80=94=E6=A0=B9=E6=B2=BB=E5=88=87=E9=A1=B9=E7=9B=AE=E5=90=8E?= =?UTF-8?q?list=5Ffiles=E4=BB=8D=E5=88=97=E6=97=A7=E7=9B=AE=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pipeline_service/agent_loop_v2.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/pipeline_service/agent_loop_v2.py b/pipeline_service/agent_loop_v2.py index f6fc3b6..ad865c8 100644 --- a/pipeline_service/agent_loop_v2.py +++ b/pipeline_service/agent_loop_v2.py @@ -845,6 +845,7 @@ class AgentExecutor: r = recs[0] self.project_id = getattr(r, "id", "") await self._persist_project(sor, self.project_id) + await self._refresh_workspace_dir(sor) return f"OK: 已切换到 {getattr(r, 'name', name)}" # LLM 分类匹配 @@ -866,12 +867,28 @@ class AgentExecutor: r = recs2[0] self.project_id = getattr(r, "id", "") await self._persist_project(sor, self.project_id) + await self._refresh_workspace_dir(sor) return f"OK: 已切换到 {getattr(r, 'name', matched)}" except Exception: pass return f"未找到项目: {name}" + async def _refresh_workspace_dir(self, sor): + """切换项目后同步刷新工作目录(与上传落盘/初始化同一解析逻辑)。 + + 不刷新则 list_files/read_file 仍停在切换前的目录(或无项目时的总根)。 + """ + try: + from .workspace import get_project_dir_by_id + _pdir, _ = await get_project_dir_by_id(sor, self.project_id) + if _pdir: + import os as _os + _os.makedirs(_pdir, exist_ok=True) + self.workspace_dir = _pdir + except Exception: + pass + async def _t_create_project(self, sor, p, pid): import os import re