Documentation
¶
Index ¶
- Constants
- func CreatePlanToolSchema() types.ToolSchema
- func GetPlanStatusToolSchema() types.ToolSchema
- func GetPlannerToolSchemas() []types.ToolSchema
- func UpdatePlanToolSchema() types.ToolSchema
- type CreatePlanArgs
- type CreateTaskArgs
- type DefaultDispatcher
- type DispatchStrategy
- type Executor
- type Plan
- type PlanExecutor
- type PlanStatus
- type PlanStatusReport
- type PlanTask
- type PlanTaskStatus
- type PlannerToolHandler
- type TaskDetail
- type TaskDispatcher
- type TaskOutput
- type TaskPlanner
- func (p *TaskPlanner) CreatePlan(_ context.Context, args CreatePlanArgs) (*Plan, error)
- func (p *TaskPlanner) DeletePlan(planID string)
- func (p *TaskPlanner) GetPlan(planID string) (*Plan, bool)
- func (p *TaskPlanner) GetPlanStatus(_ context.Context, planID string) (*PlanStatusReport, error)
- func (p *TaskPlanner) SetPlanStatus(planID string, status PlanStatus)
- func (p *TaskPlanner) SetTaskResult(planID, taskID string, status PlanTaskStatus, output *TaskOutput, ...)
- func (p *TaskPlanner) UpdatePlan(_ context.Context, args UpdatePlanArgs) error
- type TaskUpdate
- type UpdatePlanArgs
Constants ¶
const ( ToolCreatePlan = "create_plan" ToolUpdatePlan = "update_plan" ToolGetPlanStatus = "get_plan_status" )
Tool names for planner tools.
Variables ¶
This section is empty.
Functions ¶
func CreatePlanToolSchema ¶
func CreatePlanToolSchema() types.ToolSchema
CreatePlanToolSchema returns the tool schema for creating a plan.
func GetPlanStatusToolSchema ¶
func GetPlanStatusToolSchema() types.ToolSchema
GetPlanStatusToolSchema returns the tool schema for querying plan status.
func GetPlannerToolSchemas ¶
func GetPlannerToolSchemas() []types.ToolSchema
GetPlannerToolSchemas returns all planner tool schemas.
func UpdatePlanToolSchema ¶
func UpdatePlanToolSchema() types.ToolSchema
UpdatePlanToolSchema returns the tool schema for updating a plan.
Types ¶
type CreatePlanArgs ¶
type CreatePlanArgs struct {
Title string `json:"title"`
Tasks []CreateTaskArgs `json:"tasks"`
}
CreatePlanArgs contains the arguments for creating a new plan.
type CreateTaskArgs ¶
type CreateTaskArgs struct {
ID string `json:"id"`
ParentID string `json:"parent_id,omitempty"`
Title string `json:"title"`
Description string `json:"description"`
AssignTo string `json:"assign_to,omitempty"`
Dependencies []string `json:"dependencies,omitempty"`
Priority int `json:"priority,omitempty"`
Metadata map[string]any `json:"metadata,omitempty"`
}
CreateTaskArgs contains the arguments for creating a single task within a plan.
type DefaultDispatcher ¶
type DefaultDispatcher struct {
// contains filtered or unexported fields
}
DefaultDispatcher implements TaskDispatcher with configurable strategies.
func NewDefaultDispatcher ¶
func NewDefaultDispatcher(strategy DispatchStrategy, logger *zap.Logger) *DefaultDispatcher
NewDefaultDispatcher creates a new DefaultDispatcher.
func (*DefaultDispatcher) Dispatch ¶
func (d *DefaultDispatcher) Dispatch(ctx context.Context, task *PlanTask, executors map[string]Executor) (*TaskOutput, error)
Dispatch selects an executor and runs the task.
type DispatchStrategy ¶
type DispatchStrategy string
DispatchStrategy determines how tasks are assigned to executors.
const ( StrategyByRole DispatchStrategy = "by_role" // 按角色名匹配 StrategyByCapability DispatchStrategy = "by_capability" // 按能力匹配(当前同 by_role) StrategyRoundRobin DispatchStrategy = "round_robin" // 轮询分配 )
type Executor ¶
type Executor interface {
ID() string
Name() string
Execute(ctx context.Context, content string, taskCtx map[string]any) (*TaskOutput, error)
}
Executor is the minimal interface a planner task dispatcher needs from an agent. Decoupled from agent.Agent to avoid circular imports.
type Plan ¶
type Plan struct {
ID string
Title string
RootTaskID string // 根任务 ID
Tasks map[string]*PlanTask
Status PlanStatus
CreatedAt time.Time
UpdatedAt time.Time
}
Plan represents an execution plan containing multiple tasks.
func (*Plan) IsComplete ¶
IsComplete returns true when every task is in a terminal state.
func (*Plan) ReadyTasks ¶
ReadyTasks returns tasks whose dependencies are all completed and status is pending or ready.
func (*Plan) StatusReport ¶
func (p *Plan) StatusReport() *PlanStatusReport
StatusReport generates a PlanStatusReport from the current plan state.
type PlanExecutor ¶
type PlanExecutor struct {
// contains filtered or unexported fields
}
PlanExecutor executes a plan by dispatching tasks in topological order with parallel execution.
func NewPlanExecutor ¶
func NewPlanExecutor(planner *TaskPlanner, dispatcher TaskDispatcher, maxParallel int, logger *zap.Logger) *PlanExecutor
NewPlanExecutor creates a new PlanExecutor.
func (*PlanExecutor) ExecuteWithAgents ¶
func (e *PlanExecutor) ExecuteWithAgents(ctx context.Context, planID string, executors map[string]Executor) (*TaskOutput, error)
ExecuteWithAgents executes a plan by dispatching tasks to the provided executors.
type PlanStatus ¶
type PlanStatus string
PlanStatus represents the overall status of a plan.
const ( PlanStatusPending PlanStatus = "pending" PlanStatusRunning PlanStatus = "running" PlanStatusCompleted PlanStatus = "completed" PlanStatusFailed PlanStatus = "failed" )
type PlanStatusReport ¶
type PlanStatusReport struct {
PlanID string
Status PlanStatus
TotalTasks int
CompletedTasks int
FailedTasks int
RunningTasks int
PendingTasks int
TaskDetails []TaskDetail
}
PlanStatusReport provides a summary of plan execution progress.
type PlanTask ¶
type PlanTask struct {
ID string
ParentID string // 父任务 ID(支持递归分解)
Title string
Description string
AssignTo string // 目标 agent role/id
Dependencies []string // 依赖的任务 ID 列表
Priority int
Status PlanTaskStatus
Result *TaskOutput
Error string
Metadata map[string]any
}
PlanTask represents a single task within a plan.
type PlanTaskStatus ¶
type PlanTaskStatus string
PlanTaskStatus represents the status of an individual task within a plan.
const ( TaskStatusPending PlanTaskStatus = "pending" TaskStatusBlocked PlanTaskStatus = "blocked" TaskStatusReady PlanTaskStatus = "ready" TaskStatusRunning PlanTaskStatus = "running" TaskStatusCompleted PlanTaskStatus = "completed" TaskStatusFailed PlanTaskStatus = "failed" TaskStatusSkipped PlanTaskStatus = "skipped" )
type PlannerToolHandler ¶
type PlannerToolHandler struct {
// contains filtered or unexported fields
}
PlannerToolHandler handles tool calls for planner operations. It is an infrastructure adapter for plan CRUD/status tools only and must not evolve into a default closed-loop agent execution entrypoint.
func NewPlannerToolHandler ¶
func NewPlannerToolHandler(planner *TaskPlanner) *PlannerToolHandler
NewPlannerToolHandler creates a new PlannerToolHandler.
func (*PlannerToolHandler) CanHandle ¶
func (h *PlannerToolHandler) CanHandle(name string) bool
CanHandle returns true if the tool name is a planner tool.
func (*PlannerToolHandler) Handle ¶
func (h *PlannerToolHandler) Handle(ctx context.Context, call types.ToolCall) llmtools.ToolResult
Handle dispatches a tool call to the appropriate handler method.
type TaskDetail ¶
type TaskDetail struct {
ID string
Title string
Status PlanTaskStatus
AssignTo string
Error string
}
TaskDetail provides status information for a single task.
type TaskDispatcher ¶
type TaskDispatcher interface {
Dispatch(ctx context.Context, task *PlanTask, executors map[string]Executor) (*TaskOutput, error)
}
TaskDispatcher dispatches a task to an appropriate executor.
type TaskOutput ¶
type TaskOutput struct {
Content string
TokensUsed int
Cost float64
Duration time.Duration
Metadata map[string]any
}
TaskOutput holds the result of a dispatched task execution. Decoupled from agent.Output to avoid circular imports.
type TaskPlanner ¶
type TaskPlanner struct {
// contains filtered or unexported fields
}
TaskPlanner manages plans and their lifecycle.
func NewTaskPlanner ¶
func NewTaskPlanner(dispatcher TaskDispatcher, logger *zap.Logger) *TaskPlanner
NewTaskPlanner creates a new TaskPlanner instance.
func (*TaskPlanner) CreatePlan ¶
func (p *TaskPlanner) CreatePlan(_ context.Context, args CreatePlanArgs) (*Plan, error)
CreatePlan creates a new plan from the given arguments.
func (*TaskPlanner) DeletePlan ¶
func (p *TaskPlanner) DeletePlan(planID string)
DeletePlan removes a plan from the planner.
func (*TaskPlanner) GetPlan ¶
func (p *TaskPlanner) GetPlan(planID string) (*Plan, bool)
GetPlan returns a plan by ID.
func (*TaskPlanner) GetPlanStatus ¶
func (p *TaskPlanner) GetPlanStatus(_ context.Context, planID string) (*PlanStatusReport, error)
GetPlanStatus returns a status report for the given plan.
func (*TaskPlanner) SetPlanStatus ¶
func (p *TaskPlanner) SetPlanStatus(planID string, status PlanStatus)
SetPlanStatus sets the status of a plan (used by executor).
func (*TaskPlanner) SetTaskResult ¶ added in v1.8.10
func (p *TaskPlanner) SetTaskResult(planID, taskID string, status PlanTaskStatus, output *TaskOutput, errMsg string)
SetTaskResult updates a task's status and stores its result atomically. Used by PlanExecutor to record task completion/failure without exposing internal locks.
func (*TaskPlanner) UpdatePlan ¶
func (p *TaskPlanner) UpdatePlan(_ context.Context, args UpdatePlanArgs) error
UpdatePlan updates task statuses within an existing plan.
type TaskUpdate ¶
type TaskUpdate struct {
TaskID string `json:"task_id"`
Status *PlanTaskStatus `json:"status,omitempty"`
Error *string `json:"error,omitempty"`
}
TaskUpdate describes a status update for a single task.
type UpdatePlanArgs ¶
type UpdatePlanArgs struct {
PlanID string `json:"plan_id"`
TaskUpdates []TaskUpdate `json:"task_updates"`
}
UpdatePlanArgs contains the arguments for updating an existing plan.