- 删除 10 个兼容层文件 (~55KB),调用方直接引用模块类 - cost-control 模块改为不可禁用,ModuleLoader 强制启用 - ProviderRegistrar 改用字符串 FQCN,添加 wpmind_provider_map filter - IntelligentRouter 添加 wpmind_register_routing_strategies action - routing.php 添加 class_exists() 守卫处理 analytics 模块禁用 - AjaxController analytics 端点添加 class_exists() 守卫 - 更新集成测试移除已删除文件引用 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
69 lines
2.1 KiB
PHP
69 lines
2.1 KiB
PHP
<?php
|
|
/**
|
|
* Provider 注册器
|
|
*
|
|
* @package WPMind
|
|
* @since 1.3.0
|
|
*/
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace WPMind\Providers;
|
|
|
|
use WordPress\AiClient\Providers\Http\DTO\ApiKeyRequestAuthentication;
|
|
use WordPress\AiClient\Providers\ProviderRegistry;
|
|
|
|
/**
|
|
* Provider 注册器
|
|
*/
|
|
class ProviderRegistrar
|
|
{
|
|
private const PROVIDER_MAP = [
|
|
'deepseek' => 'WPMind\\Providers\\DeepSeek\\DeepSeekProvider',
|
|
'qwen' => 'WPMind\\Providers\\Qwen\\QwenProvider',
|
|
'zhipu' => 'WPMind\\Providers\\Zhipu\\ZhipuProvider',
|
|
'moonshot' => 'WPMind\\Providers\\Moonshot\\MoonshotProvider',
|
|
'doubao' => 'WPMind\\Providers\\Doubao\\DoubaoProvider',
|
|
'siliconflow' => 'WPMind\\Providers\\SiliconFlow\\SiliconFlowProvider',
|
|
'baidu' => 'WPMind\\Providers\\Baidu\\BaiduProvider',
|
|
'minimax' => 'WPMind\\Providers\\MiniMax\\MiniMaxProvider',
|
|
];
|
|
|
|
public static function registerProviders(ProviderRegistry $registry, array $endpoints): void
|
|
{
|
|
/**
|
|
* 过滤 Provider 映射表,允许第三方注册自定义 Provider
|
|
*
|
|
* @since 3.7.0
|
|
* @param array<string, string> $map Provider ID => FQCN 映射
|
|
*/
|
|
$map = apply_filters('wpmind_provider_map', self::PROVIDER_MAP);
|
|
|
|
foreach ($map as $key => $providerClass) {
|
|
if (empty($endpoints[$key]['enabled']) || empty($endpoints[$key]['api_key'])) {
|
|
continue;
|
|
}
|
|
|
|
// 注册 Provider
|
|
$registry->registerProvider($providerClass);
|
|
|
|
// 设置 API Key 认证
|
|
$registry->setProviderRequestAuthentication(
|
|
$providerClass,
|
|
new ApiKeyRequestAuthentication($endpoints[$key]['api_key'])
|
|
);
|
|
}
|
|
}
|
|
|
|
public static function getSupportedProviderIds(): array
|
|
{
|
|
$map = apply_filters('wpmind_provider_map', self::PROVIDER_MAP);
|
|
return array_keys($map);
|
|
}
|
|
|
|
public static function getProviderClass(string $providerId): ?string
|
|
{
|
|
$map = apply_filters('wpmind_provider_map', self::PROVIDER_MAP);
|
|
return $map[$providerId] ?? null;
|
|
}
|
|
}
|