diff --git a/internal/agent/agent.go b/internal/agent/agent.go index 94b7e2db..dabfa544 100644 --- a/internal/agent/agent.go +++ b/internal/agent/agent.go @@ -6,6 +6,7 @@ import ( "encoding/json" "fmt" "io" + "net" "net/http" "strings" "time" @@ -30,8 +31,28 @@ func NewAgent(cfg *config.OpenAIConfig, mcpServer *mcp.Server, logger *zap.Logge if maxIterations <= 0 { maxIterations = 30 } + + // 配置HTTP Transport,优化连接管理和超时设置 + transport := &http.Transport{ + DialContext: (&net.Dialer{ + Timeout: 30 * time.Second, + KeepAlive: 30 * time.Second, + }).DialContext, + MaxIdleConns: 100, + MaxIdleConnsPerHost: 10, + IdleConnTimeout: 90 * time.Second, + TLSHandshakeTimeout: 10 * time.Second, + ResponseHeaderTimeout: 5 * time.Minute, // 响应头超时 + DisableKeepAlives: false, // 启用连接复用 + } + + // 增加超时时间到30分钟,以支持长时间运行的AI推理 + // 特别是当使用流式响应或处理复杂任务时 return &Agent{ - openAIClient: &http.Client{Timeout: 5 * time.Minute}, + openAIClient: &http.Client{ + Timeout: 30 * time.Minute, // 从5分钟增加到30分钟 + Transport: transport, + }, config: cfg, mcpServer: mcpServer, logger: logger,