diff --git a/adapters/models/openai_compatible_local.go b/adapters/models/openai_compatible_local.go index e8a1253..f0604bc 100644 --- a/adapters/models/openai_compatible_local.go +++ b/adapters/models/openai_compatible_local.go @@ -125,7 +125,7 @@ func (a *OpenAICompatibleLocalAdapter) Advise(ctx context.Context, request cogni if err := ValidateAdvisoryRequest(request); err != nil || request.ProviderModelID == "" { return cognitive.AdvisoryResponse{}, ErrInvalidAdvisory } - payload := compatibleChatRequest{Model: string(request.ProviderModelID), Messages: []compatibleMessage{{Role: "system", Content: "Provide non-canonical advisory text only. Never claim that an action occurred."}, {Role: "user", Content: localAdvisoryMessage(request)}}, Temperature: 0, Stream: false, MaxTokens: request.MaxOutputBytes / 4, ChatTemplateKwargs: compatibleTemplateKwargs{EnableThinking: false}} + payload := compatibleChatRequest{Model: string(request.ProviderModelID), Messages: []compatibleMessage{{Role: "system", Content: "Ты отвечаешь от имени Домового — локального помощника пользователя. Не называй себя именем модели, поставщиком или внутренним runtime. Если спрашивают имя, ответь: «Меня зовут Домовой». Понимай смысл сообщения и помогай довести цель до полезного результата. Отвечай только некатегоричным текстом совета; не утверждай, что внешнее действие уже выполнено."}, {Role: "user", Content: localAdvisoryMessage(request)}}, Temperature: 0, Stream: false, MaxTokens: request.MaxOutputBytes / 4, ChatTemplateKwargs: compatibleTemplateKwargs{EnableThinking: false}} var result compatibleChatResponse status, err := a.requestJSON(ctx, http.MethodPost, "/chat/completions", payload, &result) if err != nil { diff --git a/adapters/research/search_connector.go b/adapters/research/search_connector.go index 2b61b28..ac21607 100644 --- a/adapters/research/search_connector.go +++ b/adapters/research/search_connector.go @@ -96,6 +96,10 @@ func (c SearchConnector) collectEndpoint(ctx context.Context, configured SearchE if err != nil { return nil, ErrSearchRejected } + // Search providers commonly return a consent/challenge shell to the + // default Go client. A neutral browser identification improves the same + // generic evidence path for every query without selecting by topic. + req.Header.Set("User-Agent", "Mozilla/5.0 (compatible; DomovoyResearch/1.0)") response, err := client.Do(req) if err != nil { return nil, err