diff --git a/web/src/components/AITradersPage.tsx b/web/src/components/AITradersPage.tsx
index 00e96037..13b463ae 100644
--- a/web/src/components/AITradersPage.tsx
+++ b/web/src/components/AITradersPage.tsx
@@ -2298,39 +2298,6 @@ function ExchangeConfigModal({
>
)}
- {/* Hyperliquid 交易所的字段 */}
- {selectedExchange.id === 'hyperliquid' && (
- <>
-
-
-
setApiKey(e.target.value)}
- placeholder={t('enterPrivateKey', language)}
- className="w-full px-3 py-2 rounded"
- style={{
- background: '#0B0E11',
- border: '1px solid #2B3139',
- color: '#EAECEF',
- }}
- required
- />
-
- {t('hyperliquidPrivateKeyDesc', language)}
-
-
- >
- )}
-
{/* Aster 交易所的字段 */}
{selectedExchange.id === 'aster' && (
<>
@@ -2555,160 +2522,6 @@ function ExchangeConfigModal({
>
)}
-
- {/* Aster 交易所的字段 */}
- {selectedExchange.id === 'aster' && (
- <>
-
-
- setAsterUser(e.target.value)}
- placeholder={t('enterUser', language)}
- className="w-full px-3 py-2 rounded"
- style={{
- background: '#0B0E11',
- border: '1px solid #2B3139',
- color: '#EAECEF',
- }}
- required
- />
-
-
-
-
- setAsterSigner(e.target.value)}
- placeholder={t('enterSigner', language)}
- className="w-full px-3 py-2 rounded"
- style={{
- background: '#0B0E11',
- border: '1px solid #2B3139',
- color: '#EAECEF',
- }}
- required
- />
-
-
-
-
-
-
-
-
- {asterPrivateKey && (
-
- )}
-
- {asterPrivateKey && (
-
- {t('secureInputHint', language)}
-
- )}
-
-
-
-
-
-
- {' '}
- {t('securityWarning', language)}
-
-
-
- {selectedExchange.id === 'aster' && (
-
{t('asterUsdtWarning', language)}
- )}
-
{t('exchangeConfigWarning1', language)}
-
{t('exchangeConfigWarning2', language)}
-
{t('exchangeConfigWarning3', language)}
-
-
- >
- )}
>
)}
diff --git a/web/src/i18n/translations.ts b/web/src/i18n/translations.ts
index 456005d8..b08ab391 100644
--- a/web/src/i18n/translations.ts
+++ b/web/src/i18n/translations.ts
@@ -202,6 +202,18 @@ export const translations = {
'Hyperliquid uses private key for trading authentication',
hyperliquidWalletAddressDesc:
'Wallet address corresponding to the private key',
+ // Hyperliquid Agent Wallet (New Security Model)
+ hyperliquidAgentWalletTitle: 'Hyperliquid Agent Wallet Configuration',
+ hyperliquidAgentWalletDesc:
+ 'Use Agent Wallet for secure trading: Agent wallet signs transactions (balance ~0), Main wallet holds funds (never expose private key)',
+ hyperliquidAgentPrivateKey: 'Agent Private Key',
+ enterHyperliquidAgentPrivateKey: 'Enter Agent wallet private key',
+ hyperliquidAgentPrivateKeyDesc:
+ 'Agent wallet private key for signing transactions (keep balance near 0 for security)',
+ hyperliquidMainWalletAddress: 'Main Wallet Address',
+ enterHyperliquidMainWalletAddress: 'Enter Main wallet address',
+ hyperliquidMainWalletAddressDesc:
+ 'Main wallet address that holds your trading funds (never expose its private key)',
asterUserDesc:
'Main wallet address - The EVM wallet address you use to log in to Aster (Note: Only EVM wallets are supported, Solana wallets are not supported)',
asterSignerDesc:
@@ -1000,6 +1012,18 @@ export const translations = {
enterPassphrase: '输入Passphrase (OKX必填)',
hyperliquidPrivateKeyDesc: 'Hyperliquid 使用私钥进行交易认证',
hyperliquidWalletAddressDesc: '与私钥对应的钱包地址',
+ // Hyperliquid 代理钱包 (新安全模型)
+ hyperliquidAgentWalletTitle: 'Hyperliquid 代理钱包配置',
+ hyperliquidAgentWalletDesc:
+ '使用代理钱包安全交易:代理钱包用于签名(餘額~0),主钱包持有资金(永不暴露私钥)',
+ hyperliquidAgentPrivateKey: '代理私钥',
+ enterHyperliquidAgentPrivateKey: '输入代理钱包私钥',
+ hyperliquidAgentPrivateKeyDesc:
+ '代理钱包私钥,用于签名交易(为了安全应保持余额接近0)',
+ hyperliquidMainWalletAddress: '主钱包地址',
+ enterHyperliquidMainWalletAddress: '输入主钱包地址',
+ hyperliquidMainWalletAddressDesc:
+ '持有交易资金的主钱包地址(永不暴露其私钥)',
asterUserDesc:
'主钱包地址 - 您用于登录 Aster 的 EVM 钱包地址(注意:仅支持 EVM 钱包,不支持 Solana 钱包)',
asterSignerDesc:
@@ -1080,9 +1104,11 @@ export const translations = {
promptTemplateNof1: 'NoF1 英文框架',
promptTemplateTaroLong: 'Taro 长仓',
promptDescDefault: '📊 默认稳健策略',
- promptDescDefaultContent: '最大化夏普比率,平衡风险收益,适合新手和长期稳定交易',
+ promptDescDefaultContent:
+ '最大化夏普比率,平衡风险收益,适合新手和长期稳定交易',
promptDescAdaptive: '🛡️ 保守策略 (v6.0.0)',
- promptDescAdaptiveContent: '严格风控,BTC 强制确认,高胜率优先,适合保守型交易者',
+ promptDescAdaptiveContent:
+ '严格风控,BTC 强制确认,高胜率优先,适合保守型交易者',
promptDescAdaptiveRelaxed: '⚡ 激进策略 (v6.0.0)',
promptDescAdaptiveRelaxedContent:
'高频交易,BTC 可选确认,追求交易机会,适合波动市场',
@@ -1092,7 +1118,8 @@ export const translations = {
promptDescNof1Content:
'Hyperliquid 交易所专用,英文提示词,风险调整回报最大化',
promptDescTaroLong: '📈 Taro 长仓策略',
- promptDescTaroLongContent: '数据驱动决策,多维度验证,持续学习进化,长仓专用',
+ promptDescTaroLongContent:
+ '数据驱动决策,多维度验证,持续学习进化,长仓专用',
// Loading & Error
loading: '加载中...',
diff --git a/web/src/lib/api.ts b/web/src/lib/api.ts
index a2f948ce..39ab8e9e 100644
--- a/web/src/lib/api.ts
+++ b/web/src/lib/api.ts
@@ -157,7 +157,6 @@ export const api = {
if (!res.ok) throw new Error('更新模型配置失败')
},
-
// 交易所配置接口
async getExchangeConfigs(): Promise {
const res = await httpClient.get(`${API_BASE}/exchanges`, getAuthHeaders())