()
| 19 | ) |
| 20 | |
| 21 | func main() { |
| 22 | ctx := context.Background() |
| 23 | |
| 24 | // 1. 构建 Backend: |
| 25 | // - 使用 StateBackend (内存临时文件) |
| 26 | stateBackend := backends.NewStateBackend() |
| 27 | |
| 28 | // Note: 在实际应用中,可以使用FilesystemBackend或其他持久化Backend |
| 29 | // memoryBackend := backends.NewCompositeBackend(...) |
| 30 | memoryBackend := stateBackend |
| 31 | |
| 32 | // 2. 创建 Filesystem + AgentMemory 中间件 |
| 33 | fsMiddleware := middleware.NewFilesystemMiddleware(&middleware.FilesystemMiddlewareConfig{ |
| 34 | Backend: memoryBackend, |
| 35 | }) |
| 36 | |
| 37 | memoryMW, err := middleware.NewAgentMemoryMiddleware(&middleware.AgentMemoryMiddlewareConfig{ |
| 38 | Backend: memoryBackend, |
| 39 | MemoryPath: "/memories/", |
| 40 | }) |
| 41 | if err != nil { |
| 42 | log.Fatalf("create AgentMemoryMiddleware failed: %v", err) |
| 43 | } |
| 44 | |
| 45 | // 3. 组装中间件栈并收集工具 |
| 46 | stack := middleware.NewStack([]middleware.Middleware{ |
| 47 | fsMiddleware, |
| 48 | memoryMW, |
| 49 | }) |
| 50 | |
| 51 | allTools := stack.Tools() |
| 52 | fmt.Printf("✅ 中间件栈已创建, 工具总数: %d\n\n", len(allTools)) |
| 53 | |
| 54 | var memoryWriteTool tools.Tool |
| 55 | var memorySearchTool tools.Tool |
| 56 | |
| 57 | for _, t := range allTools { |
| 58 | fmt.Printf("- 工具: %-16s 描述: %s\n", t.Name(), t.Description()) |
| 59 | switch t.Name() { |
| 60 | case "memory_write": |
| 61 | memoryWriteTool = t |
| 62 | case "memory_search": |
| 63 | memorySearchTool = t |
| 64 | } |
| 65 | } |
| 66 | fmt.Println() |
| 67 | |
| 68 | if memoryWriteTool == nil || memorySearchTool == nil { |
| 69 | log.Fatalf("memory_write 或 memory_search 工具未找到, 请检查 AgentMemoryMiddleware 初始化是否成功") |
| 70 | } |
| 71 | |
| 72 | toolCtx := &tools.ToolContext{} // 本例中不需要 Sandbox, 传空即可 |
| 73 | |
| 74 | // 4. 使用 memory_write 追加一条长期记忆 |
| 75 | fmt.Println("=== 使用 memory_write 追加记忆 ===") |
| 76 | writeInput := map[string]any{ |
| 77 | "file": "user/alice.md", |
| 78 | "mode": "append", |
nothing calls this directly
no test coverage detected