Fix/moonshot cn web search domain (#338)

This commit is contained in:
Lingxuan Zuo
2026-03-08 00:00:47 +08:00
committed by GitHub
Unverified
parent b41a8eedd9
commit c03d92e9a2
10 changed files with 318 additions and 74 deletions

View File

@@ -16,7 +16,7 @@ import {
} from '../utils/paths';
import { getAllSettings, getSetting } from '../utils/store';
import { getApiKey, getDefaultProvider, getProvider } from '../utils/secure-storage';
import { getProviderEnvVar, getKeyableProviderTypes } from '../utils/provider-registry';
import { getProviderEnvVars, getKeyableProviderTypes } from '../utils/provider-registry';
import { GatewayEventType, JsonRpcNotification, isNotification, isResponse } from './protocol';
import { logger } from '../utils/logger';
import { getUvMirrorEnv } from '../utils/uv-env';
@@ -181,6 +181,14 @@ const GATEWAY_FETCH_PRELOAD_SOURCE = `'use strict';
})();
`;
function injectMoonshotWebSearchEnv(
env: Record<string, string>,
apiKey: string
): void {
// OpenClaw web_search(kimi) reads KIMI_API_KEY before provider-specific config.
env.KIMI_API_KEY = apiKey;
}
function ensureGatewayFetchPreload(): string {
const dest = path.join(app.getPath('userData'), 'gateway-fetch-preload.cjs');
try { writeFileSync(dest, GATEWAY_FETCH_PRELOAD_SOURCE, 'utf-8'); } catch { /* best-effort */ }
@@ -1146,9 +1154,14 @@ export class GatewayManager extends EventEmitter {
const defaultProviderType = defaultProvider?.type;
const defaultProviderKey = await getApiKey(defaultProviderId);
if (defaultProviderType && defaultProviderKey) {
const envVar = getProviderEnvVar(defaultProviderType);
if (envVar) {
providerEnv[envVar] = defaultProviderKey;
const envVars = getProviderEnvVars(defaultProviderType);
if (envVars.length > 0) {
for (const envVar of envVars) {
providerEnv[envVar] = defaultProviderKey;
}
if (defaultProviderType === 'moonshot') {
injectMoonshotWebSearchEnv(providerEnv, defaultProviderKey);
}
loadedProviderKeyCount++;
}
}
@@ -1161,9 +1174,14 @@ export class GatewayManager extends EventEmitter {
try {
const key = await getApiKey(providerType);
if (key) {
const envVar = getProviderEnvVar(providerType);
if (envVar) {
providerEnv[envVar] = key;
const envVars = getProviderEnvVars(providerType);
if (envVars.length > 0) {
for (const envVar of envVars) {
providerEnv[envVar] = key;
}
if (providerType === 'moonshot') {
injectMoonshotWebSearchEnv(providerEnv, key);
}
loadedProviderKeyCount++;
}
}