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

Function main

examples/memory-advanced/main.go:196–297  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

194}
195
196func 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{

Callers

nothing calls this directly

Calls 10

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

Tested by

no test coverage detected