()
| 194 | } |
| 195 | |
| 196 | func main() { |
| 197 | ctx := context.Background() |
| 198 | |
| 199 | // 1. 构建 Backend: 默认使用 StateBackend + 本地 ./memories 目录 |
| 200 | stateBackend := backends.NewStateBackend() |
| 201 | localMemBackend := backends.NewStateBackend() |
| 202 | |
| 203 | memoryBackend := backends.NewCompositeBackend( |
| 204 | stateBackend, |
| 205 | []backends.RouteConfig{ |
| 206 | { |
| 207 | Prefix: "/memories/", |
| 208 | Backend: localMemBackend, |
| 209 | }, |
| 210 | }, |
| 211 | ) |
| 212 | |
| 213 | // 2. 创建 AgentMemoryMiddleware, 以便获取底层 memory_write 工具 |
| 214 | memoryMW, err := middleware.NewAgentMemoryMiddleware(&middleware.AgentMemoryMiddlewareConfig{ |
| 215 | Backend: memoryBackend, |
| 216 | MemoryPath: "/memories/", |
| 217 | }) |
| 218 | if err != nil { |
| 219 | log.Fatalf("create AgentMemoryMiddleware failed: %v", err) |
| 220 | } |
| 221 | |
| 222 | // 3. 通过中间件栈收集工具 |
| 223 | stack := middleware.NewStack([]middleware.Middleware{memoryMW}) |
| 224 | allTools := stack.Tools() |
| 225 | |
| 226 | var memoryWriteTool tools.Tool |
| 227 | for _, t := range allTools { |
| 228 | if t.Name() == "memory_write" { |
| 229 | memoryWriteTool = t |
| 230 | break |
| 231 | } |
| 232 | } |
| 233 | if memoryWriteTool == nil { |
| 234 | log.Fatalf("memory_write 工具未找到, 请检查 AgentMemoryMiddleware 实现") |
| 235 | } |
| 236 | |
| 237 | // 4. 构造封装工具 (以 user=alice, project=demo, article=abc 为例) |
| 238 | userID := "alice" |
| 239 | projectID := "demo" |
| 240 | |
| 241 | userPrefTool := &userPreferenceTool{ |
| 242 | userID: userID, |
| 243 | memoryWrite: memoryWriteTool, |
| 244 | } |
| 245 | |
| 246 | projectFact := &projectFactTool{ |
| 247 | userID: userID, |
| 248 | projectID: projectID, |
| 249 | shared: false, // 用户级项目记忆 |
| 250 | memoryWrite: memoryWriteTool, |
| 251 | } |
| 252 | |
| 253 | resourceNote := &resourceNoteTool{ |
nothing calls this directly
no test coverage detected