v1.5 多工具并发执行

将引擎的工具调用从串行改为并行:预分配结果切片 + sync.WaitGroup + 按索引无锁写入,模型一次请求多个工具时同时执行。
This commit is contained in:
aruo
2026-05-16 23:20:03 +08:00
parent deb1b6e660
commit d84fdbd24e
4 changed files with 74 additions and 31 deletions
+12 -7
View File
@@ -27,16 +27,21 @@ func main() {
registry.Register(tools.NewEditFileTool(workDir))
// 实例化引擎,开启 EnableThinking = true
eng := engine.NewAgentEngine(llmProvider, registry, workDir, false)
eng := engine.NewAgentEngine(llmProvider, registry, workDir, true)
// 发起一个需要局部修改的指令
//prompt := `
//我当前目录下有一个 server.go 文件。
//请帮我把里面 "TODO: 增加鉴权逻辑" 下面的那个 if 语句,整个替换为:
//if user == nil {
// fmt.Println("Forbidden!")
// return
//}
//`
prompt := `
我当前目录下有一个 server.go 文件。
请帮我把里面 "TODO: 增加鉴权逻辑" 下面的那个 if 语句,整个替换为:
if user == nil {
fmt.Println("Forbidden!")
return
}
我当前目录下有 a.txt, b.txt, c.txt 三个文件。
为了节省时间,请你同时一次性读取这三个文件,并将它们的内容综合起来,告诉我它们分别记录了什么领域的信息。
`
err := eng.Run(context.Background(), prompt)