package squad import "context" // StepEvaluator 单步评估器:顺序步骤完成后评估产出,产出动态调整建议。 // 默认实现为 NoOpEvaluator(不做任何调整);产品可注入规则/模型评估器。 type StepEvaluator interface { // Evaluate 返回对该步骤产出的评估与调整建议(加步/跳步/新假设)。 // DynamicStepsToAdd 中的新步骤默认插入最后一个"成文/终审"步骤之前。 Evaluate(ctx context.Context, req EvaluateRequest) (*EvaluationResult, error) } // EvaluateRequest 评估输入。 type EvaluateRequest struct { RunID string Step StepSpec Workspace string // 运行工作区根目录 Output string // 步骤主产出文本 Blackboard *BlackboardState } // EvaluationResult 评估结论与动态调整建议(与产品 squad 语义对齐)。 type EvaluationResult struct { StepID string `json:"step_id"` Action StepAction `json:"action"` Reason string `json:"reason"` NewAssumptions []AssumptionItem `json:"new_assumptions,omitempty"` ResolvedGaps []string `json:"resolved_gaps,omitempty"` DynamicStepsToAdd []StepSpec `json:"dynamic_steps_to_add,omitempty"` StepsToSkip []string `json:"steps_to_skip,omitempty"` // NeedsApproval 为 true 时,本批调整先经 HITL 审批再应用。 NeedsApproval bool `json:"needs_approval,omitempty"` ApprovalNote string `json:"approval_note,omitempty"` } // StepAction 动态调整动作。 type StepAction string const ( ActionContinue StepAction = "CONTINUE" ActionAddStep StepAction = "ADD_STEP" ActionUpdateStep StepAction = "UPDATE_STEP" ActionSkipStep StepAction = "SKIP_STEP" ) // NoOpEvaluator 默认空评估器。 type NoOpEvaluator struct{} func (NoOpEvaluator) Evaluate(ctx context.Context, req EvaluateRequest) (*EvaluationResult, error) { return &EvaluationResult{StepID: req.Step.ID, Action: ActionContinue}, nil }