Skip to content

fix(workbench): 工作台资源按需加载并修复同名技能挂载冲突 - #4338

Merged
YehongPan merged 3 commits into
developfrom
djb/fix-workbench-lazy-resources
Nov 13, 2026
Merged

YehongPan merged 3 commits into
developfrom
djb/fix-workbench-lazy-resources

Conversation

@DongJiBao2001

@DongJiBao2001 DongJiBao2001 commented Nov 13, 2026 •

Copy link
Copy Markdown
Contributor

问题与修复

工作台原先将对话区和输入框渲染与资源查询绑定,打开智能体、知识库选择器之前就会请求候选列表。本次改为在打开对应选择器时按需加载,加载、错误和重试状态限制在选择器内部,同时保留草稿和已挂载资源,并按用户身份隔离智能体缓存。

技能选择器及安装后的刷新改用 GET /skills?view=mount 轻量列表,不返回技能正文,也不逐个查询工具关联;保留展示信息、权限校验和配置表单所需字段。默认完整列表及详情接口保持兼容,运行时仍按技能 ID 从后端获取正文文件和工具关联。

同时修复显式挂载技能与默认技能同名时的运行冲突。例如,租户技能与工作台默认技能都叫 analyze-image,但技能和工具 ID 不同,原先会重复注册 analyze_image,导致模型执行前报错。现在先按名称确定最终生效技能,再解析配置、捕获文件和加载工具依赖:

  • 有权限的显式挂载整体替换同名默认技能,正文、附属文件、配置结构、默认值和工具均来自同一个技能,避免混用。
  • 移除显式挂载后恢复默认技能;同一技能 ID 的配置覆盖顺序保持不变。
  • 对同优先级的同名技能、最终工具标识冲突明确报错;文件快照写入前检查技能名称唯一性。
  • 不修改持久化技能定义,无数据库结构变更。

验证结果

最新修复提交:bbb44f3d52bcf14e9a2e4c802d2dd23457e54ae5。已重新拉取并确认分支包含 develop 的最新代码。

  • 后端传统单测:147 项通过,覆盖技能解析、服务、工具准备、快照、运行配置覆盖和轻量列表回归。容易受共享 Mock 影响的既有套件使用独立进程执行。新增回归覆盖全部六个默认技能名称、整体替换、权限与资源不存在错误、默认恢复、工具冲突及写入前校验,并已在修复前复现缺陷。
  • 正式用例 WB-SKILL-PRECEDENCE-D1-001:通过。执行真实的内部解析、可见性策略、源文件捕获与清理、快照落盘、工具依赖解析以及 SDK 正文和附属文件读取;外部数据库和源存储边界使用受控数据。
  • 正式用例 WB-SKILL-SUMMARY-D2-001:重新执行通过,完成用例创建的服务和会话清理。
  • 正式用例 WB-RESOURCE-LAZY-D4-001:重新执行通过,验证按需请求、局部重试、草稿保留及轻量列表参数;使用受控浏览器接口,完成清理并精确恢复临时修改的本地环境配置。
  • 三项缺陷记录及 D1/D2/D4 验收绑定的严格测试资产校验通过,版权和暂存差异空白检查通过。
  • 前序提交 287cb17c4 的前端验证:95 个工作台 Vitest 文件、736 项测试,以及 TypeScript 类型和变更文件格式检查通过;前序技能列表、数据库、API 和服务相关 Python 测试为 247 项通过。这些历史结果与本次后端测试分别记录。

页面实测与限制

本地 runtime 更新了两处服务文件并重启,文件哈希与提交源码一致,就绪检查返回 HTTP 200。之前失败的同名 analyze-image 挂载现已成功读取完整技能指南,并实际调用关联的 analyze_image 工具,未再出现重复工具标识错误。

完整图片分析仍被部署环境缺少图片理解模型配置阻断,实际工具返回对应配置错误,因此不将图片分析标为成功。本次未修改模型配置;本地验证采用容器内文件更新,未重新构建 runtime 镜像。

前序页面实测已确认轻量列表不返回正文和工具 ID,技能选择正常;挂载的纯文本技能也成功读取完整指南及示例并返回预期 JSON。全仓库 lint 尚不能认定通过,服务文件既有诊断未纳入本次修改。

20261113_172024.mp4
image

@codecov

codecov Bot commented Nov 13, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 94.28571% with 2 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
backend/management/services/agent/workbench.py 90.00% 1 Missing and 1 partial ⚠️

📢 Thoughts on this report? Let us know!

@DongJiBao2001 DongJiBao2001 changed the title fix(workbench): lazily load mount resources and trim skill list payloads fix(workbench): load resources on demand and resolve skill overrides Nov 13, 2026
@DongJiBao2001 DongJiBao2001 changed the title fix(workbench): load resources on demand and resolve skill overrides fix(workbench): 工作台资源按需加载并修复同名技能挂载冲突 Nov 13, 2026
@YehongPan
YehongPan merged commit 264b6c6 into develop Nov 13, 2026
16 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants