3.5 KiB
3.5 KiB
use_vala_skillhub
管理 Vala SkillHub 上的技能:推送(上传)和安装。
SkillHub 基于 Gitea,每个技能对应一个 Git 仓库。
命名规则
仓库名格式:{skill_name}.{source_name}
skill_name:技能目录名(如cron_job、web_scraper)source_name:来源名称,即当前数字员工的 name(如xiaoxi)- 如果
source_name为vala,表示公司级别的官方技能
示例:
cron_job.xiaoxi— xiaoxi 的定时任务技能web_scraper.vala— 公司官方的爬虫技能
配置
操作前需要确认以下配置(保存到 ~/.vala_skillhub_config):
| 配置项 | 说明 | 默认值 |
|---|---|---|
GITEA_URL |
Gitea 服务地址 | https://git.valavala.com |
GITEA_TOKEN |
Gitea API Token(需有创建仓库和推送权限) | — |
GITEA_OWNER |
SkillHub 统一账号 | skillhub |
SOURCE_NAME |
当前数字员工的 name,用于组合仓库名 | — |
如果配置文件不存在,请询问用户获取以上信息后创建:
cat > ~/.vala_skillhub_config <<EOF
GITEA_URL=https://git.valavala.com
GITEA_TOKEN=<token>
GITEA_OWNER=skillhub
SOURCE_NAME=<name>
EOF
后续操作前先加载配置:
source ~/.vala_skillhub_config
操作一:推送技能到 SkillHub
将本地 ./skills 下的技能目录推送到 SkillHub。
流程
-
确定仓库名:
repo_name = {skill_dir_name}.{SOURCE_NAME} -
检查远程仓库是否存在:
curl -s -o /dev/null -w "%{http_code}" \ "${GITEA_URL}/api/v1/repos/${GITEA_OWNER}/${repo_name}" \ -H "Authorization: token ${GITEA_TOKEN}"- 返回 200 → 仓库已存在,跳到步骤 4
- 返回 404 → 需要创建,执行步骤 3
-
创建远程仓库:
curl -s -X POST "${GITEA_URL}/api/v1/user/repos" \ -H "Authorization: token ${GITEA_TOKEN}" \ -H "Content-Type: application/json" \ -d '{"name": "'${repo_name}'", "private": false, "description": "技能描述", "auto_init": false}' -
在技能目录中初始化 Git 并推送:
cd ./skills/<skill_dir_name> git init git checkout -b main git add -A git commit -m "update: sync skill" git remote add origin https://oauth2:${GITEA_TOKEN}@${GITEA_URL#https://}/${GITEA_OWNER}/${repo_name}.git git push -u origin main --force -
推送后清理 token(安全起见):
git remote set-url origin ${GITEA_URL}/${GITEA_OWNER}/${repo_name}.git
批量推送
遍历 ./skills/ 下所有子目录,对每个目录重复以上流程。注意跳过 use_vala_skillhub 目录本身。
操作二:从 SkillHub 安装技能
将 SkillHub 上的技能克隆到本地 ./skills 目录。
流程
-
确定要安装的仓库名(完整名,如
cron_job.xiaoxi) -
检查本地是否已存在:
- 已存在 →
git pull更新 - 不存在 →
git clone
repo_name="cron_job.xiaoxi" target_dir="./skills/${repo_name}" if [ -d "$target_dir" ]; then cd "$target_dir" && git pull else git clone "${GITEA_URL}/${GITEA_OWNER}/${repo_name}.git" "$target_dir" fi - 已存在 →
操作三:列出 SkillHub 上的技能
curl -s "${GITEA_URL}/api/v1/users/${GITEA_OWNER}/repos?page=1&limit=50&sort=updated" \
-H "Authorization: token ${GITEA_TOKEN}"
返回 JSON 数组,每个元素包含 name、description、updated_at 等字段。如结果满 50 条,继续翻页 page=2。