- Registry 从纯接口升级为完整实现:Register/Execute/路由查找/错误自愈 - 新增 BaseTool 接口,统一工具契约 - 新增 ReadFileTool,首个真实工具实现(路径防穿越 + 截断保护) - 新增 String() 方法,Registry/Engine 调试可视化 - 新增 ToolCall 执行状态日志 - cmd/claw 切换为真实 Registry + ReadFileTool
42 lines
1.2 KiB
Go
42 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")
|
|
|
|
// 3. 初始化真实的 Tool Registry
|
|
registry := tools.NewRegistry()
|
|
|
|
// 4. 将真实的 ReadFile 工具挂载到注册表中
|
|
readFileTool := tools.NewReadFileTool(workDir)
|
|
registry.Register(readFileTool)
|
|
|
|
// 5. 实例化核心引擎,由于任务简单,我们关闭思考阶段 (EnableThinking = false) 以加快速度
|
|
eng := engine.NewAgentEngine(llmProvider, registry, workDir, false)
|
|
|
|
log.Printf("registry: %s\n", registry)
|
|
log.Printf("engine: %s\n", eng)
|
|
|
|
// 6. 下发一个必须通过真实工具才能完成的任务
|
|
prompt := "请调用工具读取一下当前工作区目录下 hello.txt 文件的内容,并用一句话向我总结它说了什么。"
|
|
|
|
err := eng.Run(context.Background(), prompt)
|
|
if err != nil {
|
|
log.Fatalf("引擎运行崩溃: %v", err)
|
|
}
|
|
}
|