Documentation
¶
Overview ¶
Package job Agent 队列:Job = 调度单元;执行台账见 ningharness/task。
Index ¶
- Constants
- func BuildStepPrompt(job Job, stepIdx int) string
- func BuildStepUserPrompt(job Job, stepIdx int) string
- func BuildStepWirePrompt(job Job, stepIdx int) string
- func FormatEnqueueOK(job Job) string
- func FormatSidebarEnqueue(job Job) string
- func FormatSidebarProgress(job Job, kind ProgressKind) string
- func FormatSteerBlock(text string) string
- func FormatSteerForSession(text string) string
- func GoalControlPath(root, jobID string) string
- func InjectWriteTarget(feed, targetRel string) string
- func NormRel(rel string) string
- func QueueSessionKey(jobID string) string
- func WrapRetryPrompt(t Job) string
- func WriteTargetLine(rel string) string
- type AgentJobBrief
- type AgentSnapshot
- type AgentStepBrief
- type Executor
- type File
- type GoalEnqueue
- type Job
- type Manager
- func (m *Manager) Bind(root string)
- func (m *Manager) Brief() string
- func (m *Manager) Cancel(taskID string) error
- func (m *Manager) CancelRunning()
- func (m *Manager) Delete(taskID string) error
- func (m *Manager) Enqueue(prompt, driver, title, targetRel string) (Job, error)
- func (m *Manager) EnqueueGoal(in GoalEnqueue) (Job, error)
- func (m *Manager) EnqueueIsolated(prompt, driver, title, targetRel string) (Job, error)
- func (m *Manager) EnqueuePaths(paths []string, promptTpl, driver, sessionKey, model string) ([]Job, error)
- func (m *Manager) EnqueueSession(prompt, driver, title, targetRel, sessionKey, purpose, model string) (Job, error)
- func (m *Manager) EnqueueSteps(title, driver, sessionKey, purpose string, steps []Step, feedExtra string) (Job, error)
- func (m *Manager) HasRunning() bool
- func (m *Manager) MaxParallel() int
- func (m *Manager) MoveBefore(taskID, beforeID string) error
- func (m *Manager) MoveByDir(taskID, dir string) error
- func (m *Manager) ResumeGoal(jobID string) (Job, error)
- func (m *Manager) Retry(taskID string) (Job, error)
- func (m *Manager) RetryFailed() (int, error)
- func (m *Manager) Run() (requeued int, err error)
- func (m *Manager) RunningIDs() []string
- func (m *Manager) SetExecutor(exec Executor)
- func (m *Manager) SetMaxParallel(n int)
- func (m *Manager) SetOnChange(fn func(Snapshot))
- func (m *Manager) SetPauseOnError(v bool) error
- func (m *Manager) SetPaused(paused bool) error
- func (m *Manager) SetProgressHook(h ProgressHook)
- func (m *Manager) Shutdown()
- func (m *Manager) Snapshot() Snapshot
- func (m *Manager) Start(taskID string) error
- func (m *Manager) Steer(jobID, text string) (Job, error)
- func (m *Manager) Stop() error
- func (m *Manager) TakeSteerPending(jobID string) string
- type ProgressHook
- type ProgressKind
- type Snapshot
- type Stats
- type Status
- type Step
- type StepStatus
Constants ¶
const DefaultGoalMaxRounds = 100
DefaultGoalMaxRounds Goal 外环默认硬上限。
const DefaultMaxParallel = 2
DefaultMaxParallel 默认并发度(可 SetMaxParallel)。
const DefaultPathPrompt = `请按任务说明处理本节。完成后聊天只回路径与短确认,不要贴全文。`
DefaultPathPrompt MCP/空模板时的兜底。
const JobTypeAgentTurn = "agent-turn"
JobTypeAgentTurn 一条 prompt → 一轮或多轮串行 agentkit.Run。
const JobTypeGoal = "goal"
JobTypeGoal 外环:反复跑 Executor,直到 GOAL.yaml status 终态或超轮。
Variables ¶
This section is empty.
Functions ¶
func BuildStepUserPrompt ¶
BuildStepUserPrompt 批内当前节进会话气泡 / Agent 主任务:仅用户模板(可选显式 {path} 占位)。 树勾选路径在 queue.json steps 里,不拼进 Prompt;Agent 用 list_queue + batch-write Skill 读取。
func BuildStepWirePrompt ¶
BuildStepWirePrompt 等同用户主任务。
func FormatSidebarEnqueue ¶
FormatSidebarEnqueue 隐藏队列入队时侧栏短话术(assistant)。
func FormatSidebarProgress ¶
func FormatSidebarProgress(job Job, kind ProgressKind) string
FormatSidebarProgress 隐藏队列执行进度/终态侧栏短话术。
func FormatSteerBlock ¶
func FormatSteerForSession ¶
func GoalControlPath ¶
GoalControlPath 项目根下 GOAL.yaml 绝对路径。
func InjectWriteTarget ¶
InjectWriteTarget 以 targetRel 为权威落点:去掉旧「本轮只写」单行/多行块后置顶注入。 FeedExtra 与 TargetRel 并存时,执行节以 TargetRel 为准,避免写路径解析读到第一条旧路径。
func WrapRetryPrompt ¶
WrapRetryPrompt 失败重启信封:保留原任务意图,明确告知这是重试,先查磁盘进度再续写。
func WriteTargetLine ¶
WriteTargetLine 前馈单行「本轮只写」(告知写哪;验收只汇总实际写盘路径,不强制再轮)。
Types ¶
type AgentJobBrief ¶
type AgentJobBrief struct {
ID string `json:"id"`
Type string `json:"type,omitempty"`
Title string `json:"title,omitempty"`
Status string `json:"status"`
TargetRel string `json:"targetRel,omitempty"`
ProgressHint string `json:"progressHint,omitempty"`
StepDone int `json:"stepDone,omitempty"`
StepTotal int `json:"stepTotal,omitempty"`
GoalRound int `json:"goalRound,omitempty"`
GoalMaxRounds int `json:"goalMaxRounds,omitempty"`
Steps []AgentStepBrief `json:"steps,omitempty"`
Error string `json:"error,omitempty"`
PromptBrief string `json:"promptBrief,omitempty"`
}
AgentJobBrief Skill/MCP 可读任务摘要。
type AgentSnapshot ¶
type AgentSnapshot struct {
Note string `json:"note"`
Paused bool `json:"paused"`
PauseOnError bool `json:"pauseOnError"`
PauseReason string `json:"pauseReason,omitempty"`
MaxParallel int `json:"maxParallel"`
Stats Stats `json:"stats"`
Jobs []AgentJobBrief `json:"jobs"`
}
AgentSnapshot list_queue 给 Agent 的结构化快照(无 prompt/FeedExtra 全文)。
func FormatAgentSnapshot ¶
func FormatAgentSnapshot(snap Snapshot) AgentSnapshot
FormatAgentSnapshot 压缩 Snapshot,供 list_queue。
type AgentStepBrief ¶
type AgentStepBrief struct {
Rel string `json:"rel"`
Title string `json:"title,omitempty"`
Status string `json:"status"`
Error string `json:"error,omitempty"`
}
AgentStepBrief Skill/MCP 可读节(不含 prompt 全文)。
type File ¶
type File struct {
Version int `json:"version"`
Paused bool `json:"paused"`
PauseOnError bool `json:"pauseOnError"`
PauseReason string `json:"pauseReason,omitempty"`
MaxParallel int `json:"maxParallel,omitempty"`
Jobs []Job `json:"jobs"`
// LegacyTasks 仅迁移读旧 queue.json 的 tasks 字段。
LegacyTasks []Job `json:"tasks,omitempty"`
History []Job `json:"history,omitempty"`
}
File 落盘格式。
type GoalEnqueue ¶
type GoalEnqueue struct {
Objective string
Driver string
Title string
SessionKey string // 空则 once:queue:{id}
Purpose string
Model string
MaxRounds int // <1 → DefaultGoalMaxRounds
FeedExtra string
}
GoalEnqueue EnqueueGoal 入参(避免一长串位置参数)。
type Job ¶
type Job struct {
ID string `json:"id"`
Type string `json:"type"`
Title string `json:"title"`
Prompt string `json:"prompt"`
WirePrompt string `json:"-"`
Driver string `json:"driver,omitempty"`
Model string `json:"model,omitempty"`
TargetRel string `json:"targetRel,omitempty"`
Status Status `json:"status"`
TaskID string `json:"taskId,omitempty"` // 最近一次执行台账
Error string `json:"error,omitempty"`
LastError string `json:"lastError,omitempty"`
RetryCount int `json:"retryCount,omitempty"`
BatchID string `json:"batchId,omitempty"`
CreatedAt int64 `json:"createdAt"`
StartedAt int64 `json:"startedAt,omitempty"`
FinishedAt int64 `json:"finishedAt,omitempty"`
SessionKey string `json:"sessionKey,omitempty"`
Purpose string `json:"purpose,omitempty"`
// FeedExtra 入队时固化的前馈块(如练笔评分/路径);执行时并入 history_message.feedforward。
FeedExtra string `json:"feedExtra,omitempty"`
Steps []Step `json:"steps,omitempty"`
StepDone int `json:"stepDone,omitempty"`
StepTotal int `json:"stepTotal,omitempty"`
ProgressHint string `json:"progressHint,omitempty"`
GoalMaxRounds int `json:"goalMaxRounds,omitempty"`
GoalRound int `json:"goalRound,omitempty"`
// GoalNext 遗留列(旧队列库可能仍有);不再写入或消费。
GoalNext string `json:"goalNext,omitempty"`
// SteerPending 运行中插话(人引导);下一工具结果或下一 Goal 轮注入后清空。
SteerPending string `json:"steerPending,omitempty"`
}
Job 队列调度单元(可含多 step)。
type Manager ¶
type Manager struct {
// contains filtered or unexported fields
}
Manager 每项目一份队列;最多 MaxParallel 路并发执行 Executor。
func (*Manager) Enqueue ¶
Enqueue 入队一条 agent-turn(sessionKey 空则执行时用侧栏 active)。 侧栏发送请用 App.QueueEnqueue / EnqueueSession 钉住 active。 MCP enqueue_agent_turn 默认 EnqueueSession(active);仅 session=isolated 时用 EnqueueIsolated。
func (*Manager) EnqueueGoal ¶
func (m *Manager) EnqueueGoal(in GoalEnqueue) (Job, error)
EnqueueGoal 入队 Goal 外环:Prompt=objective;反复 Executor 直到 GOAL.yaml 终态或超轮。
func (*Manager) EnqueueIsolated ¶
EnqueueIsolated 隐藏会话 once:queue:{id}:与侧栏 main 及并行任务隔离(MCP session=isolated / EnqueuePaths 空 session)。
func (*Manager) EnqueuePaths ¶
func (m *Manager) EnqueuePaths(paths []string, promptTpl, driver, sessionKey, model string) ([]Job, error)
EnqueuePaths 按路径批量入队:一条任务内串行多节。 sessionKey 空则 once:queue:{id}(批处理隔离;对话入队请用 EnqueueSession/active)。 侧栏勾选入队应传入 activeSessionId 以续接对话记忆。
func (*Manager) EnqueueSession ¶
func (m *Manager) EnqueueSession(prompt, driver, title, targetRel, sessionKey, purpose, model string) (Job, error)
EnqueueSession 入队并指定编排会话与 Purpose(ask=只读;空=Agent)。model 入队时钉死。 sessionKey 空:执行时回落侧栏 active(仅兼容旧调用;新 UI 应入队时钉死)。
func (*Manager) EnqueueSteps ¶
func (m *Manager) EnqueueSteps(title, driver, sessionKey, purpose string, steps []Step, feedExtra string) (Job, error)
EnqueueSteps 入队一条多节任务;每节可自带 Prompt(覆盖 Job.Prompt)。 feedExtra 固化本轮评分/路径等前馈块(执行时并入 feedforward)。
func (*Manager) MoveBefore ¶
MoveBefore 将排队中任务移到 beforeID 之前(beforeID 空=排到 queued 队尾)。 仅 StatusQueued 可调序;running/终态不动。
func (*Manager) ResumeGoal ¶
ResumeGoal 将 blocked Goal 控制面改回 active,并把已结束的 Goal Job 重新入队续跑。
func (*Manager) RetryFailed ¶
RetryFailed 将全部失败任务就地改回排队(失败重启);返回重启条数。
func (*Manager) RunningIDs ¶
RunningIDs 当前内存中执行中的 task id(取消前快照用)。
func (*Manager) SetExecutor ¶
SetExecutor 绑定执行器(Open 后由宿主注入)。
func (*Manager) SetMaxParallel ¶
SetMaxParallel 设置并发上限;<1 则回落为 1;落盘到 queue.json。
func (*Manager) SetOnChange ¶
SetOnChange 绑定队列快照变更回调。
func (*Manager) SetPauseOnError ¶
SetPauseOnError 失败后是否自动暂停。
func (*Manager) SetProgressHook ¶
func (m *Manager) SetProgressHook(h ProgressHook)
SetProgressHook 设置进度回调(节完成 / 终态)。
func (*Manager) TakeSteerPending ¶
type ProgressHook ¶
type ProgressHook func(job Job, kind ProgressKind)
ProgressHook 任务进度(节完成/终态);在锁外调用,供侧栏话术等。
type ProgressKind ¶
type ProgressKind string
ProgressKind 隐藏会话任务写回侧栏的进度阶段。
const ( ProgressStep ProgressKind = "step" ProgressDone ProgressKind = "done" ProgressError ProgressKind = "error" ProgressCancelled ProgressKind = "cancelled" )
type Snapshot ¶
type Snapshot struct {
Paused bool `json:"paused"`
PauseOnError bool `json:"pauseOnError"`
PauseReason string `json:"pauseReason,omitempty"`
MaxParallel int `json:"maxParallel"`
Jobs []Job `json:"jobs"`
Stats Stats `json:"stats"`
}
Snapshot UI / MCP 可见快照。
type Stats ¶
type Stats struct {
Queued int `json:"queued"`
Running int `json:"running"`
Done int `json:"done"`
Error int `json:"error"`
Cancelled int `json:"cancelled"`
}
Stats 聚合。
type Step ¶
type Step struct {
Rel string `json:"rel"`
Title string `json:"title,omitempty"`
Prompt string `json:"prompt,omitempty"` // 非空则覆盖 Job.Prompt(风格训练等)
Status StepStatus `json:"status"`
TaskID string `json:"taskId,omitempty"` // 执行台账 id(agenttask)
Error string `json:"error,omitempty"`
}
Step 批 Job 内的一节;串行执行、共用 SessionKey。
type StepStatus ¶
type StepStatus string
StepStatus 批内节状态。
const ( StepPending StepStatus = "pending" StepRunning StepStatus = "running" StepDone StepStatus = "done" StepError StepStatus = "error" )