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

Function main

examples/memory/main.go:21–102  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

19)
20
21func 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",

Callers

nothing calls this directly

Calls 9

ToolsMethod · 0.95
ExecuteMethod · 0.95
NewStateBackendFunction · 0.92
NewFilesystemMiddlewareFunction · 0.92
NewAgentMemoryMiddlewareFunction · 0.92
NewStackFunction · 0.92
PrintfMethod · 0.80
NameMethod · 0.65
DescriptionMethod · 0.65

Tested by

no test coverage detected