From 2c2650ff077de7f671e4d3553b4459e03fc88c8f Mon Sep 17 00:00:00 2001 From: xuhd Date: Wed, 3 Jun 2026 18:08:21 +0800 Subject: [PATCH] feat(skill-evolution): expose model_name as per-user configurable field MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 前端恢复模型选择器,后端允许 model_name 写入 per-user skill_evolution.json。 Co-Authored-By: Claude Sonnet 4.6 --- .../skills/skill-evolution-panel.tsx | 43 +++++++++++++++++++ frontend-web/src/core/curator/api.ts | 1 + .../backend/app/gateway/routers/skills.py | 6 ++- .../config/skill_evolution_runtime.py | 2 +- 4 files changed, 49 insertions(+), 3 deletions(-) diff --git a/frontend-web/src/components/workspace/skills/skill-evolution-panel.tsx b/frontend-web/src/components/workspace/skills/skill-evolution-panel.tsx index 82fc7b08..349a0871 100644 --- a/frontend-web/src/components/workspace/skills/skill-evolution-panel.tsx +++ b/frontend-web/src/components/workspace/skills/skill-evolution-panel.tsx @@ -21,6 +21,13 @@ import { CardTitle, } from "@/components/ui/card"; import { Input } from "@/components/ui/input"; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "@/components/ui/select"; import { Switch } from "@/components/ui/switch"; import { useCuratorConfig, @@ -31,6 +38,7 @@ import { } from "@/core/curator/hooks"; import type { CuratorConfig } from "@/core/curator/types"; import { useI18n } from "@/core/i18n/hooks"; +import { useModels } from "@/core/models/hooks"; import { cn } from "@/lib/utils"; export function SkillEvolutionPanel() { @@ -269,13 +277,17 @@ interface CuratorDraft { interval_hours: number; stale_after_days: number; archive_after_days: number; + model_name: string | null; } +const DEFAULT_MODEL_VALUE = "__default__"; + function toDraft(config: CuratorConfig): CuratorDraft { return { interval_hours: config.curator.interval_hours, stale_after_days: config.curator.stale_after_days, archive_after_days: config.curator.archive_after_days, + model_name: config.curator.model_name, }; } @@ -284,6 +296,7 @@ function ConfigCard() { const tt = t.settings.skillEvolution.config; const { config, isLoading } = useCuratorConfig(); const updateConfig = useUpdateCuratorConfig(); + const { models } = useModels(); const [draft, setDraft] = useState(null); useEffect(() => { @@ -368,6 +381,36 @@ function ConfigCard() { } /> + + +