"""Skill 关键词触发匹配(纯函数,无 IO)。 按 ``trigger`` 逗号分隔关键词,``context_text`` 包含任一关键词(大小写不敏感)则命中。 仅 ``status=enabled`` 的 skill 参与;返回保持输入顺序。 """ from collections.abc import Sequence def match_skills[T](context_text: str, skills: Sequence[T]) -> list[T]: text = context_text.lower() result: list[T] = [] for skill in skills: if getattr(skill, "status", "enabled") != "enabled": continue trigger = getattr(skill, "trigger", "") or "" keywords = [k.strip().lower() for k in trigger.split(",") if k.strip()] if any(kw in text for kw in keywords): result.append(skill) return result