fix(skill_pack): ensure_org_skills 同步 pipelines/(产线common+角色skills) 到机构工作目录
此前 ensure_org_skills 只复制 global+packs,产线技能(pipelines/{pid}/common/
与 pipelines/{pid}/roles/{role}/)未同步到机构运行时目录,导致角色 agent 加载不到
角色技能。新增 _sync_tree 递归增量同步 + PIPELINES_DIR 常量。
This commit is contained in:
parent
0579609d19
commit
6826d49f01
@ -32,6 +32,29 @@ def get_skills_base():
|
||||
SKILLS_BASE = get_skills_base()
|
||||
PACKS_DIR = os.path.join(SKILLS_BASE, "packs")
|
||||
ALL_DIR = os.path.join(SKILLS_BASE, "global") # 公共技能 = 全局模板(源头)
|
||||
PIPELINES_DIR = os.path.join(SKILLS_BASE, "pipelines") # 产线技能(common/roles),源头在 build.sh 6b 复制
|
||||
|
||||
|
||||
def _sync_tree(src_dir, dst_dir):
|
||||
"""递归增量同步目录树:src 里 dst 缺失的文件/子目录复制过去(不覆盖已存在的)。
|
||||
|
||||
用于产线技能 pipelines/(结构是 pipelines/{pid}/common/{skill} 与
|
||||
pipelines/{pid}/roles/{role}/{skill},比 global/packs 深一层)。
|
||||
"""
|
||||
if not os.path.isdir(src_dir):
|
||||
return
|
||||
os.makedirs(dst_dir, exist_ok=True)
|
||||
for name in os.listdir(src_dir):
|
||||
src = os.path.join(src_dir, name)
|
||||
dst = os.path.join(dst_dir, name)
|
||||
if os.path.isdir(src):
|
||||
if not os.path.exists(dst):
|
||||
shutil.copytree(src, dst)
|
||||
else:
|
||||
_sync_tree(src, dst)
|
||||
else:
|
||||
if not os.path.exists(dst):
|
||||
shutil.copy2(src, dst)
|
||||
|
||||
|
||||
def get_org_skills_dir(workspace_base, org_id):
|
||||
@ -81,6 +104,13 @@ def ensure_org_skills(workspace_base, org_id):
|
||||
shutil.copytree(src, dst)
|
||||
else:
|
||||
shutil.copy2(src, dst)
|
||||
# 产线技能(pipelines/:common + roles):首次全量复制,之后递归增量同步
|
||||
org_pipelines = os.path.join(org_skills, "pipelines")
|
||||
if not os.path.isdir(org_pipelines):
|
||||
if os.path.isdir(PIPELINES_DIR):
|
||||
shutil.copytree(PIPELINES_DIR, org_pipelines)
|
||||
else:
|
||||
_sync_tree(PIPELINES_DIR, org_pipelines)
|
||||
return org_skills
|
||||
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user