Class Diagram

internal/agentcore 类图

四个密封接口 (Content / Message / AgentEvent / AgentTool) 及其实现,聚合于 AgentContext 的静态结构

类图 (Class Diagram) — 结构性图形。展现 pigo agent 内核 "叶子" 数据模型的静态结构:接口、实现、组合与聚合关系。

[]Content Messages 0..* Tools 0..* returns Content INTERFACE Content «sealed» isContent() decodeContent(raw) 分派 type: text|thinking|toolCall|image TYPE ContentList []Content + UnmarshalJSON([]byte) 按 type 判别式解码 INTERFACE Message «sealed» isMessage() + Role() string alias: AgentMessage · MessageList TextContent Type / Text string TextSignature string + NewTextContent() ThinkingContent Thinking string ThinkingSignature string Redacted bool ToolCallContent ID / Name string Arguments json.RawMessage ThoughtSignature string → AgentToolCall (loop 视图) ImageContent Data string MimeType string UserMessage Content ContentList Timestamp int64 AssistantMessage Content ContentList Model / Provider string Usage *Usage · StopReason + ToolCalls() []ToolCallContent ToolResultMessage ToolCallID / ToolName string Content ContentList Details any · IsError bool CompactionMessage Summary string TokensBefore int · Details + AsUserMessage() UserMessage INTERFACE AgentTool + Name() / Description() string + Schema() json.RawMessage + ExecutionMode() Mode + Execute(ctx,id,args,onUpdate) Mode: parallel | sequential ToolUpdateFunc(partial) AgentToolResult Content ContentList Details any Terminate *bool ← AgentToolCall {ID,Name,Args} HUB AgentContext SystemPrompt string → Messages MessageList → Tools []AgentTool loop 运行输入状态 AgentLoopTurnUpdate 可换 ctx/model EmitFunc(ctx, AgentEvent) Hook: before/afterToolCall INTERFACE AgentEvent «sealed» isAgentEvent() + EventType() string 11 种事件 (对标 pi 全集) AgentEvent 实现 (11) AgentStartEvent · AgentEndEvent TurnStartEvent · TurnEndEvent MessageStart/Update/EndEvent ToolExecutionStart/Update/EndEvent CompactionEvent (reason/tokens/counts) 经 EventStream[T,R] 泛型流投递 LEGEND 接口/核心 具体实现 值/辅助类型 实现接口 组合 聚合 依赖

SEALED INTERFACES

4 个密封接口 + 判别式解码

  • • Content — text / thinking / toolCall / image,isContent() 密封
  • • Message — user / assistant / toolResult / compaction,Role() 判别
  • • AgentEvent — 11 种事件,isAgentEvent() + EventType()
  • • AgentTool — Name/Schema/ExecutionMode/Execute
  • • ContentList / MessageList 自定义 UnmarshalJSON 按判别式分派

AGGREGATION & FLOW

AgentContext 为运行时枢纽

  • • AgentContext ◇→ MessageList (0..*) + []AgentTool (0..*)
  • • ContentList ◆ Content;ToolResult/User/Assistant 均持有
  • • AgentTool.Execute ⇢ 返回 AgentToolResult
  • • 事件经 EventStream[T,R] 泛型流投递 (Emit/Result)
  • • Hooks: before/afterToolCall, prepareNextTurn (指针三态)