refactor: workspace_base 从 appbase params 表读(去硬编码,带默认值兜底)

This commit is contained in:
ymq 2026-08-14 15:59:49 +08:00
parent e48cb2c62c
commit bd3a9a5abd

View File

@ -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()