diff --git a/pipeline_core/skill_loader.py b/pipeline_core/skill_loader.py index 2105df2..0b8e9de 100644 --- a/pipeline_core/skill_loader.py +++ b/pipeline_core/skill_loader.py @@ -20,7 +20,7 @@ pipeline-core: Skill Loader — 六级可插拔技能隔离 users/{user_id}/ ← 用户个人技能 加载优先级(低 → 高,同名后者覆盖前者): - global → org → pipeline(common) → role → project → user + global → org → pipeline(common) → project → role → user """ import logging @@ -36,8 +36,8 @@ SCOPE_PRIORITY = { "global": 0, "org": 1, "pipeline": 2, - "role": 3, - "project": 4, + "project": 3, + "role": 4, "user": 5, } @@ -156,7 +156,7 @@ def _parse_frontmatter(content: str) -> Optional[dict]: # ── 六级技能加载器 ── class SkillLoader: - """六级技能加载器:global → org → pipeline → role → project → user""" + """六级技能加载器:global → org → pipeline → project → role → user""" def __init__(self, base_dir: str = ""): self.base_dir = base_dir @@ -270,7 +270,7 @@ class SkillLoader: user_id: str = "") -> Dict[str, Skill]: """按优先级合并六级技能。同名技能高优先级覆盖低优先级。 - 优先级(低→高):global → org → pipeline → role → project → user + 优先级(低→高):global → org → pipeline → project → role → user """ merged = dict(self._global) @@ -280,14 +280,14 @@ class SkillLoader: if pipeline_id and pipeline_id in self._pipelines: merged.update(self._pipelines[pipeline_id]) + if project_id and project_id in self._projects: + merged.update(self._projects[project_id]) + if pipeline_id and role: role_key = f"{pipeline_id}:{role}" if role_key in self._roles: merged.update(self._roles[role_key]) - if project_id and project_id in self._projects: - merged.update(self._projects[project_id]) - if user_id and user_id in self._users: merged.update(self._users[user_id]) @@ -312,7 +312,7 @@ class SkillLoader: return "" blocks = ["## 可用技能\n"] for s in skills: - blocks.append(f"- **[{SCOPE_TAG.get(s.scope, s.scope)}] {s.name}**: {s.description[:200]}") + blocks.append(f"- **[{SCOPE_TAG.get(s.scope, s.scope)}] {s.name}**: {s.description[:80]}") blocks.append("") return "\n".join(blocks) @@ -390,7 +390,7 @@ class SkillLoader: blocks = ["## 可用技能\n"] for s in skills: - blocks.append(f"- **[{SCOPE_TAG.get(s.scope, s.scope)}] {s.name}**: {s.description[:200]}") + blocks.append(f"- **[{SCOPE_TAG.get(s.scope, s.scope)}] {s.name}**: {s.description[:80]}") blocks.append("") return "\n".join(blocks)