动态加载工具配置

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2026-06-17 13:13:06 +08:00
co-authored by Claude
parent 249227ef0a
commit 4e4c6b32fc
13 changed files with 704 additions and 188 deletions
+6 -21
View File
@@ -5,12 +5,12 @@ import (
"os"
"strings"
searchagent "aichat/agents/search"
sqlquery "aichat/agents/sql"
agents "aichat/agenttool"
"aichat/config"
"aichat/conversation"
"aichat/llm"
"aichat/server"
"aichat/toolmanager"
"aichat/toolrouter"
)
@@ -27,27 +27,12 @@ func main() {
fmt.Fprintln(os.Stderr, "OpenAI 配置初始化失败:", err)
os.Exit(1)
}
searchConfig, err := searchagent.LoadConfig("agents/search/config.yaml", legacySearchProfiles)
toolManager, err := toolmanager.Load("agents", agents.LoadOptions{Values: map[string]any{agents.LegacySearchProfilesKey: legacySearchProfiles}})
if err != nil {
fmt.Fprintln(os.Stderr, "联网搜索配置加载失败:", err)
fmt.Fprintln(os.Stderr, "工具加载失败:", err)
os.Exit(1)
}
searchState, err := searchagent.NewState(searchConfig)
if err != nil {
fmt.Fprintln(os.Stderr, "联网搜索初始化失败:", err)
os.Exit(1)
}
sqlConfig, err := sqlquery.LoadConfig("agents/sql/config.yaml")
if err != nil {
fmt.Fprintln(os.Stderr, "SQL 查询插件配置加载失败:", err)
os.Exit(1)
}
sqlState, err := sqlquery.NewState(sqlConfig)
if err != nil {
fmt.Fprintln(os.Stderr, "SQL 查询插件初始化失败:", err)
os.Exit(1)
}
defer sqlState.Close()
defer toolManager.Close()
toolRouterState, err := toolrouter.NewState(&cfg.ToolRouter, aiState)
if err != nil {
fmt.Fprintln(os.Stderr, "工具路由配置初始化失败:", err)
@@ -55,7 +40,7 @@ func main() {
}
store := conversation.NewStore("conversations")
app := server.New(cfg, aiState, searchState, sqlState, toolRouterState, store)
app := server.New(cfg, aiState, toolManager, toolRouterState, store)
cfg.Server.Mode = strings.ToLower(cfg.Server.Mode)
if err := app.Run(); err != nil {
fmt.Fprintln(os.Stderr, "服务异常退出:", err)