from qitos.engine.critic import Critic
from qitos.engine.critic_result import CriticResult
class MyMethodCritic(Critic):
"""MyMethod 的 Critic — 完成时停止,失败时重试。"""
def __init__(self, max_iterations: int = 3, quality_threshold: float = 0.7):
super().__init__(name="my_method_critic")
self.max_iterations = max_iterations
self.quality_threshold = quality_threshold
def evaluate(self, state, decision, results):
my_state = MyMethodState(**state) if isinstance(state, dict) else state
# 检查任务是否完成
if my_state.is_complete:
return CriticResult(
action="stop",
reason="Task completed successfully",
score=1.0,
)
# 检查迭代预算
if my_state.iterations >= self.max_iterations:
return CriticResult(
action="stop",
reason=f"Max iterations ({self.max_iterations}) reached",
score=0.0,
)
# 检查结果中的错误 — 带指导重试
has_error = any(
hasattr(r, "error") and r.error
for r in (results or [])
)
if has_error:
return CriticResult(
action="retry",
reason="Error detected in results",
score=0.3,
instruction_patch="Review the error and try a different approach.",
)
# 正常继续
return CriticResult(
action="continue",
reason="Progress being made",
score=0.5,
)