package main import ( "context" "log" "os" "sync" "time" "go-tiny-claw/internal/engine" "go-tiny-claw/internal/provider" "go-tiny-claw/internal/schema" "go-tiny-claw/internal/tools" ) func main() { // 1. 初始化真实的 Provider大脑 // 这里你可以任意切换 NewZhipuClaudeProvider 或 NewZhipuOpenAIProvider,效果完全一致! llmProvider := provider.DeepseekOpenAIProvider("deepseek-v4-flash") registry := tools.NewRegistry() // 挂载工具全家桶 // registry.Register(tools.NewReadFileTool(workDir)) // registry.Register(tools.NewWriteFileTool(workDir)) // registry.Register(tools.NewBashTool(workDir)) // registry.Register(tools.NewEditFileTool(workDir)) // registry.Register(tools.NewReadSkillTool(workDir)) workDir, _ := os.Getwd() registry.Register(tools.NewReadFileTool(workDir + "/tmp/project_front")) // 实例化引擎,开启 EnableThinking = true eng := engine.NewAgentEngine(llmProvider, registry, false) reporter := engine.NewTerminalReporter() var wg sync.WaitGroup // ================= 模拟并发场景 1:飞书前端群 ================= wg.Add(1) go func() { defer wg.Done() sessionA := engine.GlobalSessionMgr.GetOrCreate("chat_front_001", workDir+"/tmp/project_front") // 回合 1:获取机密 log.Println("\n>>> 🙋‍♂️ [Session A / Turn 1]: 帮我看看 README.md 里记录了什么密钥?我的操作系统是windows") sessionA.Append(schema.Message{Role: schema.RoleUser, Content: "帮我看看 README.md 里记录了什么密钥?"}) _ = eng.Run(context.Background(), sessionA, reporter) // 故意制造大量“废话”对话,刷掉记忆 (假设 Working Memory Limit=6) for i := 0; i < 6; i++ { sessionA.Append(schema.Message{Role: schema.RoleUser, Content: "这只是一句闲聊占位符。"}) sessionA.Append(schema.Message{Role: schema.RoleAssistant, Content: "好的,收到闲聊。"}) } // 回合 2:验证记忆截断 (此时第一轮的密钥已经被挤出 Working Memory 了!) log.Println("\n>>> 🙋‍♂️ [Session A / Turn 2]: 请直接告诉我,刚才第一轮你查到的那个密钥是什么?") sessionA.Append(schema.Message{Role: schema.RoleUser, Content: "请直接告诉我,刚才第一轮你查到的那个密钥是什么?不准调用工具!"}) _ = eng.Run(context.Background(), sessionA, reporter) }() // ================= 模拟并发场景 2:飞书后端群 ================= wg.Add(1) go func() { defer wg.Done() // 稍微错开一点时间发起请求 time.Sleep(1 * time.Second) sessionB := engine.GlobalSessionMgr.GetOrCreate("chat_back_002", workDir+"/tmp/project_back") log.Println("\n>>> 🙋‍♂️ [Session B]: 别人查到了一个密钥,你这里能看到吗?") sessionB.Append(schema.Message{Role: schema.RoleUser, Content: "别人查到了一个密钥,你这里能看到吗?不准调用工具!"}) _ = eng.Run(context.Background(), sessionB, reporter) }() wg.Wait() }