23 lines
874 B
Python
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]
|