Skip to content

feat(skill): add ModelScope external skill marketplace - #3725

Open
Summer-Si wants to merge 16 commits into
developfrom
smm/external-skill-market
Open

feat(skill): add ModelScope external skill marketplace#3725
Summer-Si wants to merge 16 commits into
developfrom
smm/external-skill-market

Conversation

@Summer-Si

@Summer-Si Summer-Si commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

功能概述

新增 ModelScope 外部 Skill 市场,支持用户在 Nexent 中搜索、查看并安装外部 Skill。

主要改动

  • 新增 ModelScope Skill 列表、搜索、分页和详情接口
  • 支持将 ModelScope Skill 安装为可编辑的本地 Skill
  • 记录外部 Skill 标识及来源更新时间
  • 支持检查并更新已安装的 ModelScope Skill
  • 在 Skill 创建弹窗中新增“外部市场”入口
  • 增加页面缓存和下一页预加载,优化市场浏览速度
  • 优化无网络、请求超时、下载及安装失败时的提示
  • 新增数据库迁移及相关后端单元测试

说明

  • 当前仅支持 ModelScope 的公开 Skill
  • 下载过程中不会执行 Skill 内的脚本,也不会自动安装第三方依赖
  • 安装后的 Skill 继续使用 Nexent 现有的用户组及权限机制

市场
external_market

卡片详情
detail

安装弹窗
image

安装到本地
installed

Summer-Si and others added 13 commits August 17, 2026 14:29
Insert the tenant-local skill first so the unique name is reserved, then download and update content. Roll back the row if download or local move fails. Reuse shared path validation and call market services directly from the HTTP handlers.
…parsing

Parse ModelScope raw_tags into category and custom tags on the backend,
and expose upstream_last_modified via an optional market/detail query
parameter so edit flows can check updates without extra hub calls from
the external market list.

Add ModelScope update support in the skill edit modal with a persistent
update button, keep the build modal open after update/open actions, and
sync description when refreshing installed ModelScope skills.
# Conflicts:
#	backend/apps/northbound_app.py
@codecov

codecov Bot commented Aug 21, 2026

Copy link
Copy Markdown

Codecov Report

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

Files with missing lines Patch % Lines
backend/services/modelscope_skill_service.py 98.85% 2 Missing ⚠️

📢 Thoughts on this report? Let us know!

Add GET /skills/market/hub-detail for ModelScope Hub metadata, rename
/market/detail query to unique_id, and drop include_upstream_last_modified.
Edit-time update checks now compare local version_update_time with hub
last_modified instead of fetching upstream via /market/detail.
@Lifeng-Chen

Copy link
Copy Markdown
Contributor

如果当前的skill版本比modelscope线上的最新版本落后,则编辑skill时的更新按钮会由灰色变为蓝色,此时点击更新按钮即可将skill更新到最新。

image

@Lifeng-Chen

Copy link
Copy Markdown
Contributor

每个用户最多只能安装同一个skill一次,已经安装的skill,下方的安装按钮会被替换成打开,点击“打开”则会打开编辑skill的窗口。
此外如果已经安装的skill版本落后于最新版本,则会出现蓝色的更新按钮。
image

@Lifeng-Chen

Copy link
Copy Markdown
Contributor

连用科技诉求:北向接口新增获取model_id的接口,会返回当前租户下配置的所有模型,返回的字段如下所示。
{
"model_id": 48,
"model_name": "jina-embeddings-v4",
"model_type": "embedding",
"display_name": "jina-embeddings-v4"
}

image image

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