Files
ai-agent/internal/ai/skills/plan_service.go
T

38 lines
808 B
Go

package skills
import (
"context"
"strings"
)
func newPlanService() *planService {
return &planService{
loader: newContextLoader(),
}
}
type planService struct {
loader *contextLoader
}
// BuildExecutionPlan 构建当前请求的 Skill 执行计划。
func (s *planService) BuildExecutionPlan(execCtx context.Context, ctx RuntimeContext) (*ExecutionPlan, error) {
if s.loader == nil {
s.loader = newContextLoader()
}
aiAgent, aiConfig, err := s.loader.loadAIAgentWithConfig(ctx.AIAgentID)
skill, matchReason, routeTrace, err := MatchSkill(execCtx, ctx, aiAgent, aiConfig)
if err != nil {
return nil, err
}
return &ExecutionPlan{
AIAgent: aiAgent,
AIConfig: aiConfig,
Skill: skill,
MatchReason: strings.TrimSpace(matchReason),
RouteTrace: routeTrace,
}, nil
}