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

Method SendWithContent

pkg/agent/agent.go:974–1007  ·  view source on GitHub ↗

SendWithContent 发送多模态消息

(ctx context.Context, blocks []types.ContentBlock)

Source from the content-addressed store, hash-verified

972
973// SendWithContent 发送多模态消息
974func (a *Agent) SendWithContent(ctx context.Context, blocks []types.ContentBlock) error {
975 a.mu.Lock()
976 defer a.mu.Unlock()
977
978 // 创建用户消息
979 message := types.Message{
980 Role: types.MessageRoleUser,
981 ContentBlocks: blocks,
982 }
983
984 a.messages = append(a.messages, message)
985
986 // ✅ 修复:保存前在内存中修剪
987 if a.shouldTrimMessages() {
988 a.messages = a.trimMessagesInMemory(a.messages, a.config.Store.MaxMessages)
989 agentLog.Debug(ctx, "messages trimmed in memory before save (multimodal message)", map[string]any{
990 "agent_id": a.id,
991 "max_messages": a.config.Store.MaxMessages,
992 "actual_count": len(a.messages),
993 })
994 }
995
996 a.stepCount++
997
998 // 持久化(已修剪的消息)
999 if err := a.deps.Store.SaveMessages(ctx, a.id, a.messages); err != nil {
1000 return fmt.Errorf("save multimodal messages: %w", err)
1001 }
1002
1003 // 触发处理
1004 go a.processMessages(ctx)
1005
1006 return nil
1007}
1008
1009// Chat 同步对话(阻塞式)
1010func (a *Agent) Chat(ctx context.Context, text string) (*types.CompleteResult, error) {

Callers 1

ChatWithContentMethod · 0.95

Calls 5

shouldTrimMessagesMethod · 0.95
trimMessagesInMemoryMethod · 0.95
processMessagesMethod · 0.95
DebugMethod · 0.65
SaveMessagesMethod · 0.65

Tested by

no test coverage detected