Files
go-tiny-claw/cmd/claw/main.go
T
zhuyongxin b94460083a v1.3 Registry 实现重构 + 第一把真实工具
- Registry 从纯接口升级为完整实现:Register/Execute/路由查找/错误自愈
- 新增 BaseTool 接口,统一工具契约
- 新增 ReadFileTool,首个真实工具实现(路径防穿越 + 截断保护)
- 新增 String() 方法,Registry/Engine 调试可视化
- 新增 ToolCall 执行状态日志
- cmd/claw 切换为真实 Registry + ReadFileTool
2026-05-15 11:24:42 +08:00

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)
}
}