MCPcopy Create free account
hub / github.com/astercloud/aster / initialize

Method initialize

pkg/agent/agent.go:488–545  ·  view source on GitHub ↗

initialize 初始化Agent

(ctx context.Context)

Source from the content-addressed store, hash-verified

486
487// initialize 初始化Agent
488func (a *Agent) initialize(ctx context.Context) error {
489 // 从Store加载状态
490 messages, err := a.deps.Store.LoadMessages(ctx, a.id)
491 if err == nil && len(messages) > 0 {
492 // 验证并清理不完整的 tool_calls 消息
493 // DeepSeek 等 API 要求每个包含 tool_calls 的 assistant 消息后必须紧跟对应的 tool_result 消息
494 if !a.validateMessageHistory(messages) {
495 agentLog.Warn(ctx, "invalid message history detected, cleaning incomplete tool_calls", map[string]any{"agent_id": a.id, "original_count": len(messages)})
496 cleanedMessages := a.removeIncompleteToolCalls(messages)
497 if len(cleanedMessages) > 0 && a.validateMessageHistory(cleanedMessages) {
498 messages = cleanedMessages
499 // 保存清理后的消息
500 if err := a.deps.Store.SaveMessages(ctx, a.id, messages); err != nil {
501 agentLog.Warn(ctx, "failed to save cleaned messages", map[string]any{"error": err})
502 } else {
503 agentLog.Info(ctx, "cleaned message history", map[string]any{"agent_id": a.id, "removed": len(messages) - len(cleanedMessages), "remaining": len(cleanedMessages)})
504 }
505 } else {
506 agentLog.Warn(ctx, "could not fix message history, clearing all messages", map[string]any{"agent_id": a.id})
507 messages = []types.Message{}
508 _ = a.deps.Store.SaveMessages(ctx, a.id, messages)
509 }
510 }
511 a.messages = messages
512 }
513
514 toolRecords, err := a.deps.Store.LoadToolCallRecords(ctx, a.id)
515 if err == nil {
516 for _, record := range toolRecords {
517 a.toolRecords[record.ID] = &record
518 }
519 }
520
521 // 注意:工具手册已在 Agent 创建时注入,这里不再重复注入
522
523 // 保存Agent信息
524 info := types.AgentInfo{
525 AgentID: a.id,
526 TemplateID: a.template.ID,
527 CreatedAt: a.createdAt,
528 Lineage: []string{},
529 ConfigVersion: "v1.0.0",
530 MessageCount: len(a.messages),
531 }
532
533 if err := a.deps.Store.SaveInfo(ctx, a.id, info); err != nil {
534 return err
535 }
536
537 // 通知 Middleware Agent 启动 (Phase 6C)
538 if a.middlewareStack != nil {
539 if err := a.middlewareStack.OnAgentStart(ctx, a.id); err != nil {
540 return fmt.Errorf("middleware onAgentStart: %w", err)
541 }
542 }
543
544 return nil
545}

Callers 1

CreateFunction · 0.95

Calls 9

LoadMessagesMethod · 0.65
WarnMethod · 0.65
SaveMessagesMethod · 0.65
InfoMethod · 0.65
LoadToolCallRecordsMethod · 0.65
SaveInfoMethod · 0.65
OnAgentStartMethod · 0.65

Tested by

no test coverage detected