diff --git a/src/renderer/src/i18n/locales/en-us.json b/src/renderer/src/i18n/locales/en-us.json index efcdd11158..b6093a46bc 100644 --- a/src/renderer/src/i18n/locales/en-us.json +++ b/src/renderer/src/i18n/locales/en-us.json @@ -677,6 +677,7 @@ "model_placeholder": "Select the model to use", "model_required": "Please select a model", "select_folder": "Select Folder", + "supported_providers": "Supported Providers", "title": "Code Tools", "update_options": "Update Options", "working_directory": "Working Directory" diff --git a/src/renderer/src/i18n/locales/ja-jp.json b/src/renderer/src/i18n/locales/ja-jp.json index 1f4ef33d70..5745763c80 100644 --- a/src/renderer/src/i18n/locales/ja-jp.json +++ b/src/renderer/src/i18n/locales/ja-jp.json @@ -677,6 +677,7 @@ "model_placeholder": "使用するモデルを選択してください", "model_required": "モデルを選択してください", "select_folder": "フォルダを選択", + "supported_providers": "サポートされているプロバイダー", "title": "コードツール", "update_options": "更新オプション", "working_directory": "作業ディレクトリ" diff --git a/src/renderer/src/i18n/locales/ru-ru.json b/src/renderer/src/i18n/locales/ru-ru.json index e65b979103..cb7b2b3c04 100644 --- a/src/renderer/src/i18n/locales/ru-ru.json +++ b/src/renderer/src/i18n/locales/ru-ru.json @@ -677,6 +677,7 @@ "model_placeholder": "Выберите модель для использования", "model_required": "Пожалуйста, выберите модель", "select_folder": "Выберите папку", + "supported_providers": "Поддерживаемые поставщики", "title": "Инструменты кода", "update_options": "Параметры обновления", "working_directory": "Рабочая директория" diff --git a/src/renderer/src/i18n/locales/zh-cn.json b/src/renderer/src/i18n/locales/zh-cn.json index 9f330ab5fc..5e5bcc3b42 100644 --- a/src/renderer/src/i18n/locales/zh-cn.json +++ b/src/renderer/src/i18n/locales/zh-cn.json @@ -677,6 +677,7 @@ "model_placeholder": "选择要使用的模型", "model_required": "请选择模型", "select_folder": "选择文件夹", + "supported_providers": "支持的服务商", "title": "代码工具", "update_options": "更新选项", "working_directory": "工作目录" diff --git a/src/renderer/src/i18n/locales/zh-tw.json b/src/renderer/src/i18n/locales/zh-tw.json index e67daa2232..df75d3da9b 100644 --- a/src/renderer/src/i18n/locales/zh-tw.json +++ b/src/renderer/src/i18n/locales/zh-tw.json @@ -677,6 +677,7 @@ "model_placeholder": "選擇要使用的模型", "model_required": "請選擇模型", "select_folder": "選擇資料夾", + "supported_providers": "支援的供應商", "title": "程式碼工具", "update_options": "更新選項", "working_directory": "工作目錄" diff --git a/src/renderer/src/pages/code/CodeToolsPage.tsx b/src/renderer/src/pages/code/CodeToolsPage.tsx index 2b600547fe..f4cf60bb92 100644 --- a/src/renderer/src/pages/code/CodeToolsPage.tsx +++ b/src/renderer/src/pages/code/CodeToolsPage.tsx @@ -2,19 +2,22 @@ import AiProvider from '@renderer/aiCore' import { Navbar, NavbarCenter } from '@renderer/components/app/Navbar' import ModelSelector from '@renderer/components/ModelSelector' import { isEmbeddingModel, isRerankModel, isTextToImageModel } from '@renderer/config/models' +import { getProviderLogo } from '@renderer/config/providers' import { useCodeTools } from '@renderer/hooks/useCodeTools' -import { useProviders } from '@renderer/hooks/useProvider' +import { useAllProviders, useProviders } from '@renderer/hooks/useProvider' import { useTimer } from '@renderer/hooks/useTimer' +import { getProviderLabel } from '@renderer/i18n/label' import { getProviderByModel } from '@renderer/services/AssistantService' import { loggerService } from '@renderer/services/LoggerService' import { getModelUniqId } from '@renderer/services/ModelService' import { useAppDispatch, useAppSelector } from '@renderer/store' import { setIsBunInstalled } from '@renderer/store/mcp' import { Model } from '@renderer/types' -import { Alert, Button, Checkbox, Input, Select, Space } from 'antd' -import { Download, Terminal, X } from 'lucide-react' +import { Alert, Avatar, Button, Checkbox, Input, Popover, Select, Space } from 'antd' +import { ArrowUpRight, Download, HelpCircle, Terminal, X } from 'lucide-react' import { FC, useCallback, useEffect, useMemo, useState } from 'react' import { useTranslation } from 'react-i18next' +import { Link } from 'react-router-dom' import styled from 'styled-components' import { @@ -22,6 +25,7 @@ import { CLI_TOOL_PROVIDER_MAP, CLI_TOOLS, generateToolEnvironment, + getClaudeSupportedProviders, parseEnvironmentVariables } from '.' @@ -30,6 +34,7 @@ const logger = loggerService.withContext('CodeToolsPage') const CodeToolsPage: FC = () => { const { t } = useTranslation() const { providers } = useProviders() + const allProviders = useAllProviders() const dispatch = useAppDispatch() const isBunInstalled = useAppSelector((state) => state.mcp.isBunInstalled) const { @@ -258,7 +263,35 @@ const CodeToolsPage: FC = () => { -
{t('code.model')}
+
+ {t('code.model')} + {selectedCliTool === 'claude-code' && ( + +
{t('code.supported_providers')}
+
+ {getClaudeSupportedProviders(allProviders).map((provider) => { + return ( + + + {getProviderLabel(provider.id)} + + + ) + })} +
+
+ } + trigger="hover" + placement="right"> + + + )} + { anthropic: { api_base_url: 'https://open.bigmodel.cn/api/anthropic' } + }, + dashscope: { + anthropic: { + api_base_url: 'https://dashscope.aliyuncs.com/api/v2/apps/claude-code-proxy' + } } } @@ -132,4 +137,8 @@ export const generateToolEnvironment = ({ return env } +export const getClaudeSupportedProviders = (providers: Provider[]) => { + return providers.filter((p) => p.type === 'anthropic' || CLAUDE_SUPPORTED_PROVIDERS.includes(p.id)) +} + export { default } from './CodeToolsPage'