diff --git a/skillagent/agent.py b/skillagent/agent.py index 972ca16..001c2db 100644 --- a/skillagent/agent.py +++ b/skillagent/agent.py @@ -26,6 +26,7 @@ class SkillDecision: skill: str script: str params: dict + missing_params: list reason: Optional[str] = None @dataclass @@ -116,17 +117,19 @@ class Agent: self.load_skills() candidates = await self._candidate_skills(user_text) decision = await self._plan_with_candidates(user_text, candidates) - try: - debug(f'{decision=}') - validated_params = self._validate_params(decision) - except MissingParams as e: - question = await self._ask_user_for_params(user_text, decision.skill, decision.script, e.fields) + if decision.missing_params != []: + question = await self._ask_user_for_params( + user_text, + decision.skill, + decision.script, + decision.missing_params + ) state = PlanState( user_intent=user_text, skill=decision.skill, script=decision.script, params=decision.params, - missing=e.fields + missing=decision.missing_params ) return { "type": "clarification", diff --git a/skillagent/tmpls.py b/skillagent/tmpls.py index e28b74b..3b1fcd9 100644 --- a/skillagent/tmpls.py +++ b/skillagent/tmpls.py @@ -36,7 +36,6 @@ Output: 1. 选择最符合用户需求的技能脚本 规则 -- 如果一个需要的参数缺失,设为null - 只输出JSON 输出: @@ -44,6 +43,7 @@ Output: "skill": "...", "script": "...", "params": {}, + "missing_params":[...], "reason": "..." } """