SkillHub – 企业级自托管智能体技能仓库

SkillHub 封面图

SkillHub – 企业级自托管智能体技能仓库

SkillHub Logo

一个企业级、开源的智能体技能仓库——在您的组织内发布、发现和管理可重用的技能包。


✨ 核心特性

自托管与隐私保护

自托管与私有 — 在您自己的基础设施上部署。将专有技能保留在防火墙后,完全数据主权。一个 make dev-all 命令即可在本地运行。

发布与版本管理

发布与版本 — 上传带有语义化版本、自定义标签(beta、stable)的智能体技能包,并自动跟踪最新版本。

发现与搜索

发现 — 全文搜索,可按命名空间、下载量、评分和新近度过滤。可见性规则确保用户只能看到他们被授权查看的内容。

团队命名空间

团队命名空间 — 在团队或全局作用域下组织技能。每个命名空间都有自己的成员、角色(所有者/管理员/成员)和发布策略。

审核与治理

审核与治理 — 团队管理员在其命名空间内审核;平台管理员控制晋升到全局作用域。治理操作会记录审计日志以确保合规。

社交功能

社交功能 — 收藏技能、评分,并跟踪下载量。围绕您组织的最佳实践建立社区。

账号合并

账号合并 — 将多个 OAuth 身份和 API 令牌合并到一个用户账户下。

API Token 管理

API Token 管理 — 生成用于 CLI 和编程访问的作用域令牌,具有基于前缀的安全哈希。

CLI 优先

CLI 优先 — 原生 REST API 以及针对现有 ClawHub 风格仓库客户端的兼容层。原生 CLI API 是主要支持路径,同时协议兼容性继续扩展。

可插拔存储

可插拔存储 — 开发时使用本地文件系统,生产时使用 S3/MinIO。通过配置切换。

国际化

国际化 — 使用 i18next 支持多语言。


🚀 快速开始

官方镜像

使用以下命令之一启动完整的本地堆栈:

官方镜像:

rm -rf /tmp/skillhub-runtime
curl -fsSL https://imageless.oss-cn-beijing.aliyuncs.com/runtime-github.sh | sh -s -- up

默认命令会拉取最新的稳定版本镜像。如果您想要 main 分支的最新构建,请使用 --version edge

阿里云镜像快捷方式:

rm -rf /tmp/skillhub-aliyun
curl -fsSL https://imageless.oss-cn-beijing.aliyuncs.com/runtime.sh | sh -s -- up --home /tmp/skillhub-aliyun --aliyun --version latest

如果部署遇到问题,请清除现有的运行时主目录并重试。

本地开发

Docker & Docker Compose

make dev-all

然后打开:

默认情况下,make dev-all 使用本地配置文件启动后端。在该模式下,本地开发保留了下面的模拟认证用户,并且默认创建了一个基于密码的引导管理员账户:

  • local-user 用于普通发布和命名空间操作
  • local-admin 具有 SUPER_ADMIN 权限,用于审核和管理流程

在本地开发中使用它们时,通过 X-Mock-User-Id 头部传递。

本地引导管理员默认在 application-local.yml 中启用:

  • 用户名: admin
  • 密码: ChangeMe!2026

要禁用它,请在启动后端前设置 BOOTSTRAP_ADMIN_ENABLED=false

停止所有服务:

make dev-all-down

重置本地依赖并从干净状态开始:

make dev-all-reset

运行 make help 查看所有可用命令。


🛠 开发指南

后端命令

有用的后端命令:

make test
make test-backend-app
make build-backend-app

不要直接在 server/ 目录下运行 ./mvnw -pl skillhub-app clean test。skillhub-app 依赖于同一仓库中的兄弟模块,独立的干净构建可能会回退到本地 Maven 仓库中的旧构件,这会导致误导性的"找不到符号"和签名不匹配错误。请使用 -am,或者上面的 make test-backend-appmake build-backend-app 目标。

有关完整的开发工作流(本地开发 → 暂存 → PR),请参阅 docs/dev-workflow.md

API 类型生成

Web 客户端的 OpenAPI 类型已签入仓库。当后端 API 契约更改时,重新生成 SDK 并提交更新后的生成文件:

make generate-api

要进行更严格的端到端漂移检查,请运行:

./scripts/check-openapi-generated.sh

这会启动本地依赖、启动后端、重新生成前端架构,如果签入的 SDK 过期则失败。


📦 运行时部署

已发布的运行时镜像由 GitHub Actions 构建并推送到 GHCR。这是任何想要即用型本地环境而无需在自己的机器上构建后端或前端的人的支持路径。已发布的镜像同时针对 linux/amd64 和 linux/arm64。

部署步骤

  1. 复制运行时环境模板。
  2. 选择一个镜像标签。
  3. 使用 Docker Compose 启动堆栈。
cp .env.release.example .env.release

推荐的镜像标签:

  • SKILLHUB_VERSION=edge 用于最新的 main 分支构建
  • SKILLHUB_VERSION=vX.Y.Z 用于固定版本

启动运行时:

make validate-release-config
docker compose --env-file .env.release -f compose.release.yml up -d

然后打开:

停止它:

docker compose --env-file .env.release -f compose.release.yml down

运行时堆栈使用自己的 Compose 项目名称,因此它不会与 make dev-all 的容器冲突。

生产 Compose 堆栈现在默认为仅 docker 配置文件。它不启用本地模拟认证。发布模板(.env.release.example)默认启用引导管理员,因此通过 runtime.sh 的零配置快速启动可以开箱即用:

  • 用户名: admin
  • 密码: ChangeMe!2026

推荐的生产基准:

  • 将 SKILLHUB_PUBLIC_BASE_URL 设置为最终的 HTTPS 入口点
  • 保持 PostgreSQL/Redis 绑定到 127.0.0.1
  • 通过 SKILLHUB_STORAGES3* 使用外部 S3/OSS
  • 将 BOOTSTRAP_ADMIN_PASSWORD 更改为强密码(validate-release-config.sh 会拒绝默认的 ChangeMe!2026)
  • 初始设置后轮换或禁用引导管理员
  • docker compose up -d 之前运行 make validate-release-config

如果 GHCR 包仍然是私有的,请在 docker compose up -d 之前运行 docker login ghcr.io


📄 技能包验证

技能包上传验证使用 SkillPackagePolicy.java 中的默认扩展名允许列表。SkillPublishProperties 默认将该相同列表用于 skillhub.publish.allowed-file-extensions

如果您需要在运行时替换默认允许列表,请设置:

SKILLHUB_PUBLISH_ALLOWED_FILE_EXTENSIONS=.md,.json,.xsd,.xsl,.dtd,.docx,.xlsx,.pptx

Spring Boot 将此环境变量绑定到 skillhub.publish.allowed-file-extensions。设置后,它会替换默认允许列表,而不是追加到其中。


📊 监控栈

Prometheus + Grafana 监控栈位于 monitoring/ 目录下。它会抓取后端的 Actuator Prometheus 端点。

启动它:

cd monitoring
docker compose -f docker-compose.monitoring.yml up -d

然后打开:

默认情况下,Prometheus 抓取 http://host.docker.internal:8080/actuator/prometheus,因此请先在本地 8080 端口上启动后端。


☸️ Kubernetes 部署

基本的 Kubernetes 清单位于 deploy/k8s/ 目录下:

  • configmap.yaml
  • secret.yaml.example
  • backend-deployment.yaml
  • frontend-deployment.yaml
  • services.yaml
  • ingress.yaml

在创建自己的密钥后应用它们:

kubectl apply -f deploy/k8s/configmap.yaml
kubectl apply -f deploy/k8s/secret.yaml
kubectl apply -f deploy/k8s/backend-deployment.yaml
kubectl apply -f deploy/k8s/frontend-deployment.yaml
kubectl apply -f deploy/k8s/services.yaml
kubectl apply -f deploy/k8s/ingress.yaml

🧪 冒烟测试

轻量级冒烟测试脚本位于 scripts/smoke-test.sh

针对本地后端运行它:

./scripts/smoke-test.sh http://localhost:8080

🏗 技术架构

┌─────────────┐ ┌─────────────┐ ┌──────────────┐
│   Web UI   │ │  CLI Tools  │ │  REST API   │
│ (React 19) │ │             │ │             │
└──────┬──────┘ └──────┬──────┘ └──────┬───────┘
       │                │                │
       └────────────────┼────────────────┘
                        │
              ┌─────────▼──────────┐
              │     Nginx        │
              └─────────┬──────────┘
                        │
              ┌─────────▼──────────┐
              │  Spring Boot  │ Auth · RBAC · Core Services
              │  (Java 21)   │ OAuth2 · API Tokens · Audit
              └─────────┬──────────┘
                        │
        ┌───────────────┼───────────────┐
        │               │               │
   ┌────▼────┐    ┌─────▼────┐   ┌────▼────┐
   │PostgreSQL│    │   Redis   │   │ Storage  │
   │   16    │    │    7     │   │S3/MinIO│
   └─────────┘    └──────────┘   └─────────┘

后端技术栈

后端(Spring Boot 3.2.3,Java 21):

  • 具有干净架构的多模块 Maven 项目
  • 模块:app、domain、auth、search、storage、infra
  • 带有 Flyway 迁移的 PostgreSQL 16
  • 用于会话管理的 Redis
  • 用于技能包存储的 S3/MinIO

前端技术栈

前端(React 19,TypeScript,Vite):

  • TanStack Router 用于路由
  • TanStack Query 用于数据获取
  • Tailwind CSS + Radix UI 用于样式
  • OpenAPI TypeScript 用于类型安全的 API 客户端
  • i18next 用于国际化

🔗 平台集成

SkillHub 作为多个智能体平台的技能仓库后端。将下面任何客户端指向您的 SkillHub 实例以发布、发现和安装技能。

OpenClaw 集成

OpenClaw 是一个开源的智能体技能 CLI。将其配置为使用您的 SkillHub 端点作为仓库:

# 配置仓库 URL
export CLAWHUB_REGISTRY=https://skillhub.your-company.com

# 如有需要,认证一次
clawhub login --token YOUR_API_TOKEN

# 搜索和安装技能
npx clawhub search email
npx clawhub install my-skill
npx clawhub install my-namespace--my-skill

# 发布技能
npx clawhub publish ./my-skill

💡 提示: 上述命令不仅适用于 OpenClaw,还可以通过指定安装目录(–dir)适用于其他 CLI 编码智能体或智能体助手。例如:

npx clawhub --dir ~/.claude/skills install my-skill

📖 完整 OpenClaw 集成指南 →

AstronClaw 集成

AstronClaw 是一个构建在 OpenClaw 核心能力之上的云 AI 助手,通过企业微信、钉钉和飞书等企业平台提供 7×24 小时在线服务。它具有内置的技能系统,包含 130 多个官方技能。您可以将其连接到自托管的 SkillHub 仓库,以启用一键技能安装、搜索仓库、基于对话的自动安装,甚至在您的组织内管理自定义技能。

Loomy 集成

Loomy 是一个专注于真实办公场景的桌面 AI 工作伙伴。它与本地文件和系统工具深度集成,为个人和小团队构建高效的自动化工作流。通过将 Loomy 连接到您的 SkillHub 仓库,您可以轻松发现和安装组织特定的技能,以增强您的本地桌面自动化和生产力。

astron-agent 集成

astron-agent 是科大讯飞的 Astron 智能体框架。存储在 SkillHub 中的技能可以被 astron-agent 引用和加载,实现从开发到生产的受治理、版本化的技能生命周期。


🤝 贡献指南

欢迎贡献。请先打开一个 issue 讨论您想要更改的内容。


📄 许可证

请参阅本 README 顶部的图表。

  • 此仓库不声称拥有原始 Claw Code 源材料的所有权。
  • 此仓库不隶属于、认可或由原作者维护。

原文来源:https://github.com/iflytek/skillhub

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容