from __future__ import annotations from .base import BaseSkill, SkillResult, WorkflowContext class SkillRegistry: def __init__(self): self._skills: dict[str, BaseSkill] = {} def register(self, skill: BaseSkill) -> None: if not skill.name: raise ValueError("Skill 必须声明 name。") self._skills[skill.name] = skill def get(self, name: str) -> BaseSkill: try: return self._skills[name] except KeyError as exc: raise KeyError(f"Skill 未注册:{name}") from exc def execute(self, name: str, context: WorkflowContext) -> SkillResult: return self.get(name).run(context)