""" JIANGCHANG_* 数据根与用户目录:解析规则 + 可选本地 CLI 默认值。 各技能 scripts/jiangchang_skill_core/ 为发布用副本,与 kit 保持同步。 """ from __future__ import annotations import os import sys # 发版/嵌入宿主前改为 False,或仅通过环境变量 JIANGCHANG_CLI_LOCAL_DEV=1 开启 CLI_LOCAL_DEV_ENABLED = True # 本地开发且未设置 JIANGCHANG_USER_ID 时注入(与宿主约定一致即可修改) DEFAULT_LOCAL_USER_ID = "10032" # Windows 下未设置 JIANGCHANG_DATA_ROOT 时的默认盘路径 WIN_DEFAULT_DATA_ROOT = r"D:\jiangchang-data" def platform_default_data_root() -> str: if sys.platform == "win32": return WIN_DEFAULT_DATA_ROOT return os.path.join(os.path.expanduser("~"), ".jiangchang-data") def get_data_root() -> str: env = (os.getenv("JIANGCHANG_DATA_ROOT") or "").strip() if env: return env return platform_default_data_root() def get_user_id() -> str: return (os.getenv("JIANGCHANG_USER_ID") or "").strip() or "_anon" def apply_cli_local_defaults() -> None: """ 在 CLI 最早阶段调用(main.py 在 import 业务包之前)。 宿主已设置 JIANGCHANG_* 时不会覆盖。 """ enabled = CLI_LOCAL_DEV_ENABLED if not enabled: v = (os.getenv("JIANGCHANG_CLI_LOCAL_DEV") or "").strip().lower() enabled = v in ("1", "true", "yes", "on") if not enabled: return if not (os.getenv("JIANGCHANG_DATA_ROOT") or "").strip(): os.environ["JIANGCHANG_DATA_ROOT"] = platform_default_data_root() if not (os.getenv("JIANGCHANG_USER_ID") or "").strip(): os.environ["JIANGCHANG_USER_ID"] = DEFAULT_LOCAL_USER_ID.strip()