diff --git a/frontend/src/pages/settings/DataSources.tsx b/frontend/src/pages/settings/DataSources.tsx
index 17c8afa..a90be42 100644
--- a/frontend/src/pages/settings/DataSources.tsx
+++ b/frontend/src/pages/settings/DataSources.tsx
@@ -1082,7 +1082,7 @@ function PluginDetail({ plugin, isActive, matrixCaps, servingSet, onSwitch, swit
}
/** TickFlow 详情: 介绍 + 能力档位表 + Key/可用功能左右两栏。
- * 检测档位不再单独设面板 — 以头部「档位徽章 + ? 说明 + 重新检测」小集群呈现。 */
+ * 检测档位集群 (档位徽章 + ? 说明 + 重新检测 + 可用功能悬停) 挂在 API Key 标题行右侧。 */
function TickFlowDetail({ active, matrix }: { active: boolean; matrix?: CapabilityMatrix }) {
const caps = matrix?.capabilities ?? []
const tier = matrix?.tickflow_tier
@@ -1093,6 +1093,57 @@ function TickFlowDetail({ active, matrix }: { active: boolean; matrix?: Capabili
mutationFn: () => api.redetectCapabilities(),
onSuccess: () => invalidate(),
})
+ // 检测档位集群: API Key 标题行右侧 (检测档位徽章 + 档位说明 + 重检测 + 可用功能悬停)
+ const tierCluster = tier ? (
+
+
检测档位
+
+
+
+ {/* 可用功能: 收进悬停浮层, 不占版面 (能力清单 + 限频)。图标在标题行右侧, 浮层向左展开 */}
+
+
+
+
+
+
+ 可用功能
+ {capEntries.length} 项
+
+ {capEntries.length > 0 ? (
+
+ {capEntries.map(([cap, lim]) => (
+
+
+ {CAP_LABELS[cap]?.name ?? cap}
+
+
+ {lim.rpm ? `${lim.rpm}/min` : lim.subscribe ? `${lim.subscribe} 订阅` : '—'}
+ {lim.batch ? ` · ${lim.batch}/次` : ''}
+
+
+ ))}
+
+ ) : (
+
+ 暂无 — 配置 API Key 后自动检测
+
+ )}
+
+ 根据 API Key 自动检测
+
+
+
+
+ ) : null
return (
{/* 介绍 */}
@@ -1104,56 +1155,6 @@ function TickFlowDetail({ active, matrix }: { active: boolean; matrix?: Capabili
TickFlow
第三方
- {tier && (
- <>
-
检测档位
-
-
-
- {/* 可用功能: 收进悬停浮层, 不占版面 (能力清单 + 限频) */}
-
-
-
-
-
-
- 可用功能
- {capEntries.length} 项
-
- {capEntries.length > 0 ? (
-
- {capEntries.map(([cap, lim]) => (
-
-
- {CAP_LABELS[cap]?.name ?? cap}
-
-
- {lim.rpm ? `${lim.rpm}/min` : lim.subscribe ? `${lim.subscribe} 订阅` : '—'}
- {lim.batch ? ` · ${lim.batch}/次` : ''}
-
-
- ))}
-
- ) : (
-
- 暂无 — 配置 API Key 后自动检测
-
- )}
-
- 根据 API Key 自动检测
-
-
-
- >
- )}
{active && (
@@ -1171,7 +1172,7 @@ function TickFlowDetail({ active, matrix }: { active: boolean; matrix?: Capabili
{/* 主体: API Key 配置 (左) | 能力档位表 (右) */}
-
+
{/* 能力档位表: 各能力所需档位 + 当前档位可用性 */}
diff --git a/frontend/src/pages/settings/Keys.tsx b/frontend/src/pages/settings/Keys.tsx
index d8bb5ba..f390d9a 100644
--- a/frontend/src/pages/settings/Keys.tsx
+++ b/frontend/src/pages/settings/Keys.tsx
@@ -56,7 +56,7 @@ export function useInvalidateTierRelated() {
}
/** API Key 配置区块: 状态 + 输入 + 保存并检测 (先探后存) */
-export function TickFlowKeySection() {
+export function TickFlowKeySection({ right }: { right?: React.ReactNode }) {
const settings = useSettings()
const invalidate = useInvalidateTierRelated()
@@ -93,7 +93,7 @@ export function TickFlowKeySection() {
return (