feat(subagent): 实验功能设置新增子代理模型配置
- 子代理设置页支持选择次主力模型,仅保存模型引用(不再写补丁字段), 子代理直接继承所选模型的上下文长度与思考模式 - 界面只读展示继承的上下文长度与思考模式,移除补丁编辑项 - 仪表盘统计识别子代理请求(__secondary__):归为「子代理模型(估算)」 并缓存次主力模型定价;自定义网关模型价格按官方同名模型跨 provider 匹配 - bump v0.7.1
This commit is contained in:
1 parent
8b0daabd95
commit
8aed04898c
22 files changed
+16648
-8882
No files matched your search
@@ -59,6 +59,10 @@ export function DailyBars({ daily, dimension, names, unknownProviderLabel }: Dai
|
||||
if (dimension === "provider") {
|
||||
return key === "unknown" ? unknownProviderLabel : key;
|
||||
}
|
||||
// Subagent records (Kimi Code `__secondary__` marker) show their own label.
|
||||
if (key === "__secondary__") {
|
||||
return t("subagentModel");
|
||||
}
|
||||
return shortModel(key);
|
||||
};
|
||||
|
||||
|
||||
@@ -25,6 +25,10 @@ export function DailyDetailModal({ day, dimension, colorMap, unknownProviderLabe
|
||||
const { t } = useTranslation();
|
||||
const { money } = useCurrency();
|
||||
|
||||
/** Subagent records (Kimi Code `__secondary__` marker) show their own label. */
|
||||
const modelName = (model: string) =>
|
||||
model === "__secondary__" ? t("subagentModel") : shortModel(model);
|
||||
|
||||
useEffect(() => {
|
||||
const onKey = (e: KeyboardEvent) => {
|
||||
if (e.key === "Escape") onClose();
|
||||
@@ -143,7 +147,7 @@ export function DailyDetailModal({ day, dimension, colorMap, unknownProviderLabe
|
||||
<div className="mt-1 ml-5 space-y-0.5">
|
||||
{p.models.map((m) => (
|
||||
<div key={m.model} className="flex items-baseline justify-between gap-2 text-xs">
|
||||
<span className="truncate text-content-muted" title={m.model}>{shortModel(m.model)}</span>
|
||||
<span className="truncate text-content-muted" title={m.model}>{modelName(m.model)}</span>
|
||||
<span className="shrink-0 text-content-muted tabular-nums">{fmtTokens(m.tokens)}</span>
|
||||
</div>
|
||||
))}
|
||||
@@ -167,7 +171,7 @@ export function DailyDetailModal({ day, dimension, colorMap, unknownProviderLabe
|
||||
<span className="inline-block h-2.5 w-2.5 rounded-sm shrink-0" style={{ backgroundColor: modelColor(i) }} />
|
||||
<div className="min-w-0 flex-1">
|
||||
<div className="flex items-baseline justify-between gap-2">
|
||||
<span className="truncate text-content-primary" title={s.model}>{shortModel(s.model)}</span>
|
||||
<span className="truncate text-content-primary" title={s.model}>{modelName(s.model)}</span>
|
||||
<span className="shrink-0 text-xs text-content-muted tabular-nums">
|
||||
{fmtTokens(s.tokens)} <span className="text-content-muted">· {s.pct.toFixed(1)}%</span>
|
||||
</span>
|
||||
|
||||
@@ -310,7 +310,9 @@ export function DashboardPage() {
|
||||
}}
|
||||
/>
|
||||
<div className="flex items-center gap-1.5 min-w-0">
|
||||
<span className="text-content-primary whitespace-nowrap truncate">{m.modelDisplay || m.model}</span>
|
||||
<span className="text-content-primary whitespace-nowrap truncate">
|
||||
{m.isSecondary ? t("subagentModel") : m.modelDisplay || m.model}
|
||||
</span>
|
||||
{m.costEstimated && (
|
||||
<span className="text-[10px] text-yellow-600 shrink-0">({t("estimate")})</span>
|
||||
)}
|
||||
@@ -371,7 +373,13 @@ export function DashboardPage() {
|
||||
<td className="py-1.5 pr-4 text-content-muted whitespace-nowrap">
|
||||
{fmtTime(r.time)}
|
||||
</td>
|
||||
<td className="py-1.5 pr-4 text-content-primary">{r.modelDisplay || r.model}</td>
|
||||
<td className="py-1.5 pr-4 text-content-primary">
|
||||
<span className="flex items-center gap-1.5 min-w-0">
|
||||
<span className="truncate">
|
||||
{r.isSecondary ? t("subagentModel") : r.modelDisplay || r.model}
|
||||
</span>
|
||||
</span>
|
||||
</td>
|
||||
<td className="py-1.5 pr-4 text-right text-content-muted">{fmtTokens(r.inputOther)}</td>
|
||||
<td className="py-1.5 pr-4 text-right text-content-muted">{fmtTokens(r.output)}</td>
|
||||
<td className="py-1.5 pr-4 text-right text-content-muted">{fmtTokens(r.inputCacheRead)}</td>
|
||||
|
||||
Reference in new issue
Block a user