Files
DEMO-AGENT/review_agent/file_summary/skills/registry.py

23 lines
678 B
Python

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)