"""从既有 Skill 存储加载运行时 manifest。""" from __future__ import annotations from app.modules.skills import SkillManifest, parse_skill_manifest from app.repositories.json_utils import loads_list from app.services.skills import get_enabled_skills_by_names, match_active_skills async def load_skill_manifests( context_text: str, *, skill_refs: tuple[str, ...] = (), ) -> list[SkillManifest]: """加载关键词命中或显式引用的 enabled Skill。""" skills = await match_active_skills(context_text) if skill_refs: by_name = {skill.name: skill for skill in skills} for skill in await get_enabled_skills_by_names(skill_refs): by_name.setdefault(skill.name, skill) skills = list(by_name.values()) return [parse_skill_manifest(skill, loads_list(skill.tool_bindings_json)) for skill in skills]