Merge branch 'feature/rag_retrive_top_k' into dev
This commit is contained in:
commit
631f944340
@ -401,23 +401,30 @@ def _extract_skills_to_robot(bot_id: str, skills: List[str], project_path: Path)
|
|||||||
skills_target_dir.mkdir(parents=True, exist_ok=True)
|
skills_target_dir.mkdir(parents=True, exist_ok=True)
|
||||||
logger.info(f"Copying skills to {skills_target_dir}")
|
logger.info(f"Copying skills to {skills_target_dir}")
|
||||||
|
|
||||||
|
managed_skill_names = set()
|
||||||
|
for base_dir in skills_source_dirs:
|
||||||
|
if not base_dir.exists():
|
||||||
|
continue
|
||||||
|
for item in base_dir.iterdir():
|
||||||
|
if item.is_dir():
|
||||||
|
managed_skill_names.add(item.name)
|
||||||
|
|
||||||
# 清理不在列表中的多余 skill 文件夹
|
# 清理不在列表中的多余 skill 文件夹
|
||||||
expected_skill_names = {Path(skill.lstrip("@")).name for skill in skills}
|
expected_skill_names = {Path(skill.lstrip("@")).name for skill in skills}
|
||||||
if skills_target_dir.exists():
|
if skills_target_dir.exists():
|
||||||
for item in skills_target_dir.iterdir():
|
for item in skills_target_dir.iterdir():
|
||||||
if item.is_dir() and item.name not in expected_skill_names:
|
if not item.is_dir() or item.name in expected_skill_names:
|
||||||
logger.info(f" Removing stale skill directory: {item}")
|
continue
|
||||||
|
if item.name in managed_skill_names:
|
||||||
|
logger.info(f" Removing managed stale skill directory: {item}")
|
||||||
shutil.rmtree(item)
|
shutil.rmtree(item)
|
||||||
|
else:
|
||||||
|
logger.info(f" Keeping unmanaged skill directory: {item}")
|
||||||
|
|
||||||
for skill in skills:
|
for skill in skills:
|
||||||
skill_name = Path(skill.lstrip("@")).name
|
skill_name = Path(skill.lstrip("@")).name
|
||||||
target_dir = skills_target_dir / skill_name
|
target_dir = skills_target_dir / skill_name
|
||||||
|
|
||||||
# 如果目标目录已存在,跳过复制
|
|
||||||
if target_dir.exists():
|
|
||||||
logger.info(f" Skill '{skill}' already exists in {target_dir}, skipping")
|
|
||||||
continue
|
|
||||||
|
|
||||||
source_dir = None
|
source_dir = None
|
||||||
|
|
||||||
if skill.startswith("@"):
|
if skill.startswith("@"):
|
||||||
@ -440,7 +447,7 @@ def _extract_skills_to_robot(bot_id: str, skills: List[str], project_path: Path)
|
|||||||
continue
|
continue
|
||||||
|
|
||||||
try:
|
try:
|
||||||
shutil.copytree(source_dir, target_dir)
|
shutil.copytree(source_dir, target_dir, dirs_exist_ok=True)
|
||||||
logger.info(f" Copied: {source_dir} -> {target_dir}")
|
logger.info(f" Synced: {source_dir} -> {target_dir}")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f" Failed to copy {source_dir}: {e}")
|
logger.error(f" Failed to copy {source_dir}: {e}")
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user