feat(agent): Agent 工作台 - 计划插话记忆、统一模型选择器并修复摘要与视频入库
将计划清单、运行中插话和个人记忆接入云端 Agent;全站模型选择器统一为左右二级菜单。画布摘要按预算截断不再整轮拒绝,首页视频未知宽高可入库。README 补充贡献者 morrow。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -39,6 +39,7 @@ func (w *taskWorkerCoordinator) start(ctx context.Context) {
|
||||
s.startTextReplayCleanup(ctx)
|
||||
s.startProviderCancellationReconciliation(ctx)
|
||||
s.startBillingReviewAudit(ctx)
|
||||
s.startAgentMemoryCompactScheduler()
|
||||
s.runWorkerLoop(func(ctx context.Context) {
|
||||
ticker := time.NewTicker(2 * time.Second)
|
||||
defer ticker.Stop()
|
||||
@@ -185,6 +186,7 @@ func (w *taskWorkerCoordinator) processClaimedTask(task *model.Task, globalSlot
|
||||
return w.processTimelineRender(task, ctx)
|
||||
}
|
||||
|
||||
s.markAgentMemoryCompactRunning(*task)
|
||||
task.Stage = "调用生成模型"
|
||||
task.Progress = 35
|
||||
if taskUsesUpstreamReportedProgress(task.Type) {
|
||||
@@ -252,6 +254,7 @@ func (w *taskWorkerCoordinator) processClaimedTask(task *model.Task, globalSlot
|
||||
if errors.Is(err, context.DeadlineExceeded) {
|
||||
err = errors.New(taskTimeoutMessage(task.Type))
|
||||
}
|
||||
s.noteAgentMemoryCompactTask(*task, nil, err)
|
||||
return terminal.handleExecutionFailure(task, err, providerSucceeded, channelSlotFailedBeforeRequest)
|
||||
}
|
||||
latest, err := s.repo.Task(task.ID)
|
||||
@@ -259,22 +262,27 @@ func (w *taskWorkerCoordinator) processClaimedTask(task *model.Task, globalSlot
|
||||
return err
|
||||
}
|
||||
if latest.Status == model.TaskStatusCancelled {
|
||||
s.noteAgentMemoryCompactTask(*task, nil, errors.New("压缩任务已取消"))
|
||||
return terminal.handleCancelledResult(*latest)
|
||||
}
|
||||
resultJSON, err := json.Marshal(result)
|
||||
if err != nil {
|
||||
s.noteAgentMemoryCompactTask(*task, nil, err)
|
||||
_, terminalErr := terminal.handleResultPersistenceFailure(task, fmt.Errorf("序列化任务结果失败:%w", err))
|
||||
return terminalErr
|
||||
}
|
||||
opsJSON, err := json.Marshal(canvasOps)
|
||||
if err != nil {
|
||||
s.noteAgentMemoryCompactTask(*task, nil, err)
|
||||
_, terminalErr := terminal.handleResultPersistenceFailure(task, fmt.Errorf("序列化画布操作失败:%w", err))
|
||||
return terminalErr
|
||||
}
|
||||
if err := s.saveTaskCompletionWithinStorageQuota(task, resultJSON, opsJSON, len(canvasOps) > 0); err != nil {
|
||||
s.noteAgentMemoryCompactTask(*task, nil, err)
|
||||
_, terminalErr := terminal.handleResultPersistenceFailure(task, err)
|
||||
return terminalErr
|
||||
}
|
||||
s.noteAgentMemoryCompactTask(*task, result, nil)
|
||||
return terminal.handleSuccess(task)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user