From 1ce15fbb15771c9802ad894a46bd40fe4997b0c6 Mon Sep 17 00:00:00 2001 From: Administrator Date: Tue, 9 Jun 2026 20:34:59 +0800 Subject: [PATCH] =?UTF-8?q?style(knowledge):=20=E5=AE=9E=E4=BD=93=E6=94=B9?= =?UTF-8?q?=E5=9B=9E=E7=BA=AF=E5=B1=95=E7=A4=BA=EF=BC=88=E4=B8=8D=E5=8F=AF?= =?UTF-8?q?=E7=82=B9=E5=87=BB=EF=BC=89=EF=BC=8Cchip=20=E7=B2=BE=E8=87=B4?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 按需求去掉点击筛选,实体为静态彩色 chip:色点 + 名称 + 胶囊型类型标签。 Co-Authored-By: Claude Opus 4.8 (1M context) --- .../workspace/agents/agent-card.tsx | 17 +- .../settings/skill-settings-page.tsx | 43 ++- .../workspace/skills/skill-detail-dialog.tsx | 94 +++++- frontend-web/src/core/skills/api.ts | 59 ++++ frontend-web/src/core/skills/hooks.ts | 36 +++ frontend-web/src/core/skills/type.ts | 2 + frontend-web/src/pages/KnowledgeBasePage.tsx | 31 +- frontend-web/src/pages/NewAgentPage.tsx | 5 +- offline-backend-20260512/backend/CLAUDE.md | 1 + .../backend/app/gateway/routers/skills.py | 287 +++++++++++++++++- .../deerflow/config/extensions_config.py | 1 - .../versions/20260609_01_skill_name_zh.py | 42 +++ .../deerflow/persistence/skills/memory.py | 6 + .../deerflow/persistence/skills/model.py | 4 + .../deerflow/persistence/skills/sql.py | 6 + 15 files changed, 596 insertions(+), 38 deletions(-) create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/persistence/migrations/versions/20260609_01_skill_name_zh.py diff --git a/frontend-web/src/components/workspace/agents/agent-card.tsx b/frontend-web/src/components/workspace/agents/agent-card.tsx index 5d96b7e0..3dd8052f 100644 --- a/frontend-web/src/components/workspace/agents/agent-card.tsx +++ b/frontend-web/src/components/workspace/agents/agent-card.tsx @@ -510,6 +510,15 @@ export function AgentCard({ agent, layout = "card" }: AgentCardProps) { ) : null; + // 技能英文名 → 中文名映射,用于把智能体的技能徽章显示为中文(agent.skills 只存英文名)。 + const skillNameZhMap = useMemo(() => { + const map = new Map(); + for (const s of skills) { + if (s.name_zh?.trim()) map.set(s.name, s.name_zh.trim()); + } + return map; + }, [skills]); + const skillBadgeItems = [ ...(agent.tool_groups ?? []).map((group) => ({ key: `tg:${group}`, @@ -532,7 +541,7 @@ export function AgentCard({ agent, layout = "card" }: AgentCardProps) { setDetailSkillName(skill); }} > - {desensitize(skill)} + {skillNameZhMap.get(skill) ?? desensitize(skill)} ), })), @@ -831,7 +840,11 @@ export function AgentCard({ agent, layout = "card" }: AgentCardProps) { title={desensitize(skill.description ?? "")} className="h-8 min-w-0 flex-1 rounded-r-none" > - {desensitize(skill.name)} + + {skill.name_zh?.trim() + ? skill.name_zh + : desensitize(skill.name)} + + + )} + + {canManage ? ( +
+ setNameZhDraft(event.currentTarget.value)} + placeholder="为该技能设置中文名称(留空则使用英文名)" + className="h-8 text-sm" + disabled={generateNameZh.isPending} + /> + +
+ ) : ( +

+ {skill?.name_zh?.trim() ? skill.name_zh : "未设置"} +

+ )} + {editing ? (