From bd3a9a5abde67ab1916d395af4d4fd202b98cd5a Mon Sep 17 00:00:00 2001 From: ymq Date: Fri, 14 Aug 2026 15:59:49 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20workspace=5Fbase=20=E4=BB=8E=20appb?= =?UTF-8?q?ase=20params=20=E8=A1=A8=E8=AF=BB=EF=BC=88=E5=8E=BB=E7=A1=AC?= =?UTF-8?q?=E7=BC=96=E7=A0=81=EF=BC=8C=E5=B8=A6=E9=BB=98=E8=AE=A4=E5=80=BC?= =?UTF-8?q?=E5=85=9C=E5=BA=95=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pipeline_service/agent_loop_v2.py | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/pipeline_service/agent_loop_v2.py b/pipeline_service/agent_loop_v2.py index 2661fe0..4e05c54 100644 --- a/pipeline_service/agent_loop_v2.py +++ b/pipeline_service/agent_loop_v2.py @@ -25,6 +25,24 @@ from typing import AsyncGenerator, Dict, List, Optional logger = logging.getLogger("pipeline.agent_executor") + +async def _get_param(sor, name: str, default: str = "") -> str: + """从 appbase params 表读参数(params_name → params_value),带默认值兜底。 + + params 表由 appbase 模块提供,用于存系统级可配置参数,避免硬编码。 + 默认值仅作兜底,真正值以 params 表为准(可动态维护)。 + """ + try: + recs = await sor.sqlExe( + "SELECT params_value FROM params WHERE params_name=${n}$ LIMIT 1", + {"n": name}) + if recs: + return getattr(recs[0], "params_value", "") or default + except Exception: + pass + return default + + # ── 默认工具定义(在 pipeline-core 未加载时使用)── _BUILTIN_ASK_USER_SCHEMA = { @@ -667,10 +685,11 @@ class AgentExecutor: if _u: org_id = getattr(_u[0], "orgid", "0") or "0" - # 项目专属工作空间目录(与 workspace_tree.dspy 的 workspace_base 一致) + # 项目专属工作空间目录(workspace_base 从 appbase params 表读,可动态配置) # 不设置 workspace_dir 会导致 _resolve_workspace 回退到 ~/pipeline_ws/default, # 所有项目共用同一目录,设计文档/代码互相覆盖。 - workspace_dir = os.path.join("/d/pipeline/workspaces", str(org_id), name) + workspace_base = await _get_param(sor, "workspace_base", "/d/pipeline/workspaces") + workspace_dir = os.path.join(workspace_base, str(org_id), name) os.makedirs(workspace_dir, exist_ok=True) pid_val = getID()