Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

wzzfather/jsdSkillHub

Repository files navigation

🏪 JSD SkillHub — 企业级 AI Agent 应用商店

面向企业内部的 AI Skill 统一管理平台。开发者提交 Skill 包,管理员审批上架,员工浏览、搜索、一键安装。

应用市场


✨ 功能特性

  • 🔐 用户认证 — 用户名 + 邮箱双模式登录,邮箱验证码注册
  • 🛒 应用市场 — 卡片式展示,动态分类、作者筛选、热门排序
  • 📦 Skill 上传 — ZIP 包上传,自动触发三层安全扫描
  • 🛡️ 三层安全扫描 — Semgrep 静态分析 + ClamAV 病毒扫描 + LLM 语义分析
  • ✅ 审批工作台 — 管理员查看扫描结果,区分来源(新上传/重新提交/重新上架),一键审批
  • 📊 看板 Dashboard — KPI 统计:总数、扫描中、待审批、已上架
  • 📋 我的应用 — 开发者查看所有提交的 Skill,驳回后可重新提交
  • ⚙️ 管理员应用管理 — 搜索、分类筛选、作者筛选、下架/重新上架、快捷审批
  • ⬇️ 下载与安装 — MinIO 预签名 URL 下载,一键安装到 OpenClaw
  • 🔄 完整生命周期 — 上传 → 扫描 → 审批 → 上架 → 下架 → 重新上架

📸 页面预览

应用市场

浏览、搜索、分类筛选、作者筛选、热门排序

应用市场

登录 / 注册

用户名 + 邮箱双模式,邮箱验证码

登录 注册

邮箱验证

邮箱验证

提交应用

两步流程:基础信息 → 上传 ZIP + 实时扫描进度

提交应用

看板 Dashboard

KPI 统计总览

看板

我的应用

开发者 Skill 管理,状态流程条,驳回后可重新提交

我的应用

审批工作台

三层扫描结果 + 来源区分(新上传/重新提交/重新上架)

审批工作台

管理员应用管理

搜索 + 分类筛选 + 作者筛选 + 快捷审批

管理员应用管理

Skill 详情

扫描摘要 + 安装/下载 + 工作流可视化

Skill详情

🏗️ 技术栈

层级 技术
前端 Vue 3 + TypeScript + Element Plus + Vite
后端 FastAPI + SQLAlchemy (async) + Alembic
数据库 PostgreSQL 16
对象存储 MinIO(Skill 包存储)
安全扫描 Semgrep + ClamAV + Qwen LLM
容器化 Docker + Docker Compose

🚀 快速开始

前置要求

  • Docker & Docker Compose (v2+)
  • Node.js ≥ 18(仅本地开发需要)
  • Python ≥ 3.11(仅本地开发需要)
  • 通义千问 API Key(用于 LLM 语义扫描)

方式一:Docker Compose 一键部署(推荐)

适用于生产环境或快速体验,所有服务容器化运行。

# 1. 克隆仓库
git clone https://github.com/wzzfather/jsdSkillHub.git
cd jsdSkillHub
# 2. 配置环境变量
cp .env.example .env
# 编辑 .env,填入 QWEN_API_KEY(必需)和 JWT_SECRET_KEY(生产环境必改)
# 3. 启动所有服务
docker compose up -d
# 4. 等待服务就绪(首次启动需等待 ClamAV 病毒库下载,约 1-3 分钟)
docker compose ps
# 5. 后端自动运行数据库迁移,访问前端
curl http://localhost:8000/docs # API 文档

注意:前端暂未容器化,Docker Compose 仅启动后端及基础设施。前端需单独部署(见下方方式二)。

默认账号:admin / admin123

方式二:本地开发

适用于开发调试,前后端在本地运行,基础设施用 Docker。

# 1. 克隆仓库
git clone https://github.com/wzzfather/jsdSkillHub.git
cd jsdSkillHub
# 2. 启动基础设施(PostgreSQL + MinIO + OpenSearch + ClamAV)
docker compose up -d postgres minio opensearch clamav
# 3. 配置后端
cd backend
cp ../.env.example ../.env
# 编辑 .env:DATABASE_URL 改为 localhost,MINIO_ENDPOINT_URL 改为 localhost 等
pip install -r requirements.txt
alembic upgrade head
uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload
# 4. 配置前端(新终端)
cd frontend
npm install
npm run dev

访问 http://localhost:5173 即可使用。

方式三:生产部署

前端构建为静态文件,由 Nginx 托管;后端和基础设施全部容器化。

# 1. 基础设施 + 后端
docker compose up -d
# 2. 构建前端
cd frontend
npm install
npm run build # 输出到 dist/
# 3. Nginx 配置示例
# 将 dist/ 目录部署到 Nginx,配置 API 反向代理:
server {
 listen 80;
 server_name your-domain.com;
 root /path/to/frontend/dist;
 index index.html;
 # Vue Router history 模式
 location / {
 try_files $uri $uri/ /index.html;
 }
 # API 反向代理
 location /api/ {
 proxy_pass http://127.0.0.1:8000;
 proxy_set_header Host $host;
 proxy_set_header X-Real-IP $remote_addr;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 proxy_set_header X-Forwarded-Proto $scheme;
 }
}

环境变量说明

变量 说明 默认值
POSTGRES_USER PostgreSQL 用户名 appstore
POSTGRES_PASSWORD PostgreSQL 密码 appstore
POSTGRES_DB PostgreSQL 数据库名 appstore
MINIO_ROOT_USER MinIO 管理员用户名 minioadmin
MINIO_ROOT_PASSWORD MinIO 管理员密码 minioadmin
MINIO_BUCKET MinIO 存储桶名 app-store
QWEN_API_KEY 通义千问 API Key (必填)
QWEN_MODEL LLM 模型名称 qwen-turbo
JWT_SECRET_KEY JWT 签名密钥 change-me-in-production
DEBUG 调试模式 false

📁 项目结构

├── frontend/ # Vue 3 前端
│ └── src/
│ ├── api/ # API 调用层
│ ├── views/ # 页面组件
│ ├── stores/ # Pinia 状态管理
│ └── router/ # 路由配置
├── backend/ # FastAPI 后端
│ └── app/
│ ├── routers/ # API 路由
│ ├── models/ # SQLAlchemy 模型
│ ├── schemas/ # Pydantic schemas
│ ├── services/ # 业务逻辑
│ └── tasks/ # 异步任务(扫描)
├── skills/ # 默认 Skill 模板
│ ├── pm/ # 产品经理 Skill
│ ├── developer/ # 开发者 Skill
│ ├── tester/ # 测试 Skill
│ └── ui-design/ # UI 设计 Skill
├── core/ # 项目文档(MRD/PRD/TRD/RFC)
├── screenshots/ # 页面截图
└── docker-compose.yml

🤝 贡献

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/amazing-feature)
  3. 提交改动 (git commit -m 'Add some amazing feature')
  4. 推送到分支 (git push origin feature/amazing-feature)
  5. 创建 Pull Request

📄 许可证

MIT


Built with ❤️ by wzzfather

About

企业级 AI Agent 应用商店 — Skill 的统一管理、安全扫描、审批与分发平台

Topics

Resources

License

Stars

Watchers

Forks

Packages

Contributors

AltStyle によって変換されたページ (->オリジナル) /