chore: get_sibling_skills_root prefer co-located inference over env
Made-with: Cursor
This commit is contained in:
@@ -92,20 +92,22 @@ def get_skills_root() -> str:
|
|||||||
|
|
||||||
def get_sibling_skills_root(skill_scripts_dir: str | None = None) -> str:
|
def get_sibling_skills_root(skill_scripts_dir: str | None = None) -> str:
|
||||||
"""
|
"""
|
||||||
编排子进程调用兄弟技能时用:优先环境变量;否则从本技能 scripts 目录推断并列根
|
编排子进程调用兄弟技能时用:先根据本技能 scripts 目录推断并列根;若目录下能识别出兄弟技能
|
||||||
(OpenClaw 开发仓与网关 skills/<slug>/scripts 均满足「技能根之上一级 = 并列根」)。
|
则用之(开发仓 D:\\OpenClaw 与安装目录 ~/.openclaw/skills 均满足「技能根之上一级 = 并列根」),
|
||||||
|
避免全局 JIANGCHANG_SKILLS_ROOT / CLAW_SKILLS_ROOT 指向与当前检出不一致时错调兄弟进程。
|
||||||
|
推断失败时再读上述环境变量,最后回落 get_skills_root()。
|
||||||
"""
|
"""
|
||||||
for key in ("JIANGCHANG_SKILLS_ROOT", "CLAW_SKILLS_ROOT"):
|
|
||||||
v = (os.getenv(key) or "").strip()
|
|
||||||
if v:
|
|
||||||
return os.path.normpath(v)
|
|
||||||
|
|
||||||
if skill_scripts_dir:
|
if skill_scripts_dir:
|
||||||
scripts = os.path.abspath(skill_scripts_dir)
|
scripts = os.path.abspath(skill_scripts_dir)
|
||||||
skill_root = os.path.dirname(scripts)
|
skill_root = os.path.dirname(scripts)
|
||||||
inferred = os.path.dirname(skill_root)
|
inferred = os.path.dirname(skill_root)
|
||||||
if _looks_like_skills_root(inferred):
|
if _looks_like_skills_root(inferred):
|
||||||
return inferred
|
return os.path.normpath(inferred)
|
||||||
|
|
||||||
|
for key in ("JIANGCHANG_SKILLS_ROOT", "CLAW_SKILLS_ROOT"):
|
||||||
|
v = (os.getenv(key) or "").strip()
|
||||||
|
if v:
|
||||||
|
return os.path.normpath(v)
|
||||||
|
|
||||||
return get_skills_root()
|
return get_skills_root()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user