Files
2026-08-21 16:00:13 +08:00

23 lines
874 B
Python

"""从既有 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]