后端: 1.收口阶段 6 agent 结构迁移,将 newAgent 内核与 agentsvc 编排层迁入 services/agent - 切换 Agent 启动装配与 HTTP handler 直连 agent sv,移除旧 service agent bridge - 补齐 Agent 对 memory、task、task-class、schedule 的 RPC 适配与契约字段 - 扩展 schedule、task、task-class RPC/contract 支撑 Agent 查询、写入与 provider 切流 - 更新迁移文档、README 与相关注释,明确 agent 当前切流点和剩余 memory 迁移面
42 lines
1.2 KiB
Go
42 lines
1.2 KiB
Go
package agentstream
|
||
|
||
import "github.com/cloudwego/eino/schema"
|
||
|
||
// CloneUsage 深拷贝 TokenUsage。
|
||
func CloneUsage(usage *schema.TokenUsage) *schema.TokenUsage {
|
||
if usage == nil {
|
||
return nil
|
||
}
|
||
copied := *usage
|
||
return &copied
|
||
}
|
||
|
||
// MergeUsage 合并两段 usage,取更大值。
|
||
// 适用于同一次调用不同流分片的 usage 收敛。
|
||
func MergeUsage(base *schema.TokenUsage, incoming *schema.TokenUsage) *schema.TokenUsage {
|
||
if incoming == nil {
|
||
return CloneUsage(base)
|
||
}
|
||
if base == nil {
|
||
return CloneUsage(incoming)
|
||
}
|
||
|
||
merged := *base
|
||
if incoming.PromptTokens > merged.PromptTokens {
|
||
merged.PromptTokens = incoming.PromptTokens
|
||
}
|
||
if incoming.CompletionTokens > merged.CompletionTokens {
|
||
merged.CompletionTokens = incoming.CompletionTokens
|
||
}
|
||
if incoming.TotalTokens > merged.TotalTokens {
|
||
merged.TotalTokens = incoming.TotalTokens
|
||
}
|
||
if incoming.PromptTokenDetails.CachedTokens > merged.PromptTokenDetails.CachedTokens {
|
||
merged.PromptTokenDetails.CachedTokens = incoming.PromptTokenDetails.CachedTokens
|
||
}
|
||
if incoming.CompletionTokensDetails.ReasoningTokens > merged.CompletionTokensDetails.ReasoningTokens {
|
||
merged.CompletionTokensDetails.ReasoningTokens = incoming.CompletionTokensDetails.ReasoningTokens
|
||
}
|
||
return &merged
|
||
}
|