- 新增 EditFileTool,支持局部字符串替换 - 四级容错降级:精确匹配 → 换行符归一 → Trim Space → 逐行滑动窗口 - 工具集扩展至 4 个(read/write/edit/bash) - 新增 server.go 测试目标文件
47 lines
1.2 KiB
Go
47 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"log"
|
|
"os"
|
|
|
|
"go-tiny-claw/internal/engine"
|
|
"go-tiny-claw/internal/provider"
|
|
"go-tiny-claw/internal/tools"
|
|
)
|
|
|
|
func main() {
|
|
|
|
workDir, _ := os.Getwd()
|
|
|
|
// 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))
|
|
|
|
// 实例化引擎,开启 EnableThinking = true
|
|
eng := engine.NewAgentEngine(llmProvider, registry, workDir, false)
|
|
|
|
// 发起一个需要局部修改的指令
|
|
prompt := `
|
|
我当前目录下有一个 server.go 文件。
|
|
请帮我把里面 "TODO: 增加鉴权逻辑" 下面的那个 if 语句,整个替换为:
|
|
if user == nil {
|
|
fmt.Println("Forbidden!")
|
|
return
|
|
}
|
|
`
|
|
|
|
err := eng.Run(context.Background(), prompt)
|
|
if err != nil {
|
|
log.Fatalf("引擎运行崩溃: %v", err)
|
|
}
|
|
}
|