From 32968259e1244e815514bc791fcb3104cc46de56 Mon Sep 17 00:00:00 2001 From: Wenjie Zhang Date: Fri, 20 Mar 2026 03:21:52 +0800 Subject: [PATCH] =?UTF-8?q?refactor(web):=20=E9=87=8D=E6=9E=84=E4=BB=A3?= =?UTF-8?q?=E7=90=86=E9=85=8D=E7=BD=AE=E4=BE=A7=E8=BE=B9=E6=A0=8F=E5=92=8C?= =?UTF-8?q?=E8=BE=93=E5=85=A5=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 更新了 AgentConfigSidebar.vue 以增强配置管理界面,包括添加用于创建新配置的模态框和改进只读状态的处理。 - 重构了 AgentInputArea.vue 以简化操作按钮并提高响应性。 - 简化了 AgentView.vue 中选择代理配置的下拉菜单,将其替换为切换侧边栏的按钮。 - 增强了 agent.js 中数值的处理,确保正确的类型转换。 - 清理了多个组件中的 CSS 样式,以获得更好的一致性和响应性。 - 删除了不必要的代码并提高了各种组件的可读性。 --- backend/package/yuxi/knowledge/__init__.py | 2 +- .../yuxi/repositories/subagent_repository.py | 7 +- .../package/yuxi/services/subagent_service.py | 6 +- web/src/assets/css/extensions.less | 3 +- web/src/components/AgentConfigSidebar.vue | 631 +++++++++++------- web/src/components/AgentInputArea.vue | 40 +- web/src/components/McpServersComponent.vue | 4 +- web/src/components/SubAgentsComponent.vue | 1 - web/src/stores/agent.js | 12 + web/src/views/AgentView.vue | 168 +---- 10 files changed, 441 insertions(+), 433 deletions(-) diff --git a/backend/package/yuxi/knowledge/__init__.py b/backend/package/yuxi/knowledge/__init__.py index abbd3401..bb429613 100644 --- a/backend/package/yuxi/knowledge/__init__.py +++ b/backend/package/yuxi/knowledge/__init__.py @@ -14,7 +14,7 @@ if not _LITE_MODE: # 注册知识库类型 KnowledgeBaseFactory.register("milvus", MilvusKB, {"description": "基于 Milvus 的生产级向量知识库,适合高性能部署"}) - KnowledgeBaseFactory.register("lightrag", LightRagKB, {"description": "基于图检索的知识库,支持实体关系构建和复杂查询"}) + KnowledgeBaseFactory.register("lightrag", LightRagKB, {"description": "基于图的知识库,支持实体关系构建和复杂查询"}) KnowledgeBaseFactory.register("dify", DifyKB, {"description": "连接 Dify Dataset 的只读检索知识库"}) diff --git a/backend/package/yuxi/repositories/subagent_repository.py b/backend/package/yuxi/repositories/subagent_repository.py index a8ae08de..69861ab1 100644 --- a/backend/package/yuxi/repositories/subagent_repository.py +++ b/backend/package/yuxi/repositories/subagent_repository.py @@ -30,10 +30,9 @@ class SubAgentRepository: async def exists_name(self, name: str) -> bool: """检查名称是否存在(仅查询计数,不获取完整数据)""" - from sqlalchemy import select, func - result = await self.db.execute( - select(func.count()).select_from(SubAgent).where(SubAgent.name == name) - ) + from sqlalchemy import func, select + + result = await self.db.execute(select(func.count()).select_from(SubAgent).where(SubAgent.name == name)) return result.scalar() > 0 async def create( diff --git a/backend/package/yuxi/services/subagent_service.py b/backend/package/yuxi/services/subagent_service.py index 18bcce49..89171e29 100644 --- a/backend/package/yuxi/services/subagent_service.py +++ b/backend/package/yuxi/services/subagent_service.py @@ -100,6 +100,7 @@ def clear_specs_cache() -> None: global _subagent_specs_cache _subagent_specs_cache = None + async def get_subagents_from_names(selected_names: Any, *, db: AsyncSession | None = None) -> list[dict[str, Any]]: """根据名称获取 subagent specs(含工具解析)。""" specs = await get_subagent_specs(db) @@ -125,13 +126,12 @@ async def get_subagents_from_names(selected_names: Any, *, db: AsyncSession | No for spec in matched: resolved_spec = dict(spec) tool_names = spec.get("tools", []) - resolved_spec["tools"] = [ - all_tool_names[name] for name in tool_names if name in all_tool_names - ] + resolved_spec["tools"] = [all_tool_names[name] for name in tool_names if name in all_tool_names] resolved_specs.append(resolved_spec) return resolved_specs + async def get_all_subagents(db: AsyncSession | None = None) -> list[dict[str, Any]]: """获取所有 SubAgent(含禁用的)""" async with _get_session(db) as session: diff --git a/web/src/assets/css/extensions.less b/web/src/assets/css/extensions.less index e4ba07d6..0b0e603b 100644 --- a/web/src/assets/css/extensions.less +++ b/web/src/assets/css/extensions.less @@ -111,7 +111,6 @@ } &.active { - .item-icon, .server-icon { color: var(--main-color); @@ -400,4 +399,4 @@ opacity: 0.6; pointer-events: none; transition: opacity 0.2s; -} \ No newline at end of file +} diff --git a/web/src/components/AgentConfigSidebar.vue b/web/src/components/AgentConfigSidebar.vue index e97661a5..b29f299d 100644 --- a/web/src/components/AgentConfigSidebar.vue +++ b/web/src/components/AgentConfigSidebar.vue @@ -2,12 +2,50 @@