更新SkillHub自动同步脚本,遵循最新use_vala_skillhub技能规范:调整配置文件路径、更新哈希计算逻辑、优化跳过规则

This commit is contained in:
xiaoban 2026-04-01 23:31:57 +08:00
parent 91bd6f283d
commit 9c3e29e834
7 changed files with 57 additions and 25 deletions

8
.vala_skill_hashes Normal file
View File

@ -0,0 +1,8 @@
cron-schedule 76a1450e7eb093079509657b0a741653ea6d29119317826e6f26d3e9caf580b0
feishu_send_file 93ecafd166240f204d8b9947f877a7f24232752d30c007e080af3b1a778bd8b6
feishu-wiki-access c7cca22bcf68c0e297d99859c114b1a4e469c35b8c143623742f3f9d2a841c09
find-skills fc331652faaa71746a3f63a6bd46ae57da7679c5081b03e84c930ed366493503
skill-builder 20cdb6ec00e493cdfac624a9a844207acf1bf155c6f3f8e07c2bbf591ba2e73b
kids-english-script-production 3cb6929e4f5a43e7245adb79091e56ce4cc2ae77198dc795fe1cc088575c3a78
lark_wiki_operate_as_bot 2a37701f568849f03eb46dd938baeda171380fe252b698ac8bda69caa19aea08
vala_git_workspace_backup 4cf352bec88fe84af065ba1ffcbb06647b77df0e01860faaf0bca9fd64b968ec

4
.vala_skillhub_config Normal file
View File

@ -0,0 +1,4 @@
GITEA_URL=https://git.valavala.com
GITEA_TOKEN=ef9dfa0b3ae3cfba010c1462b8f77e11a0d4289f
GITEA_OWNER=vala_skillhub
SOURCE_NAME=xiaoyan

View File

@ -50,12 +50,20 @@
3. 修改完成后立即 `git add . && git commit -m "修改说明" && git push origin master` 3. 修改完成后立即 `git add . && git commit -m "修改说明" && git push origin master`
4. 禁止本地提交堆积 4. 禁止本地提交堆积
## SkillHub 自动同步配置 ## SkillHub 自动同步配置遵循use_vala_skillhub.vala技能规范
- **远程仓库:** https://git.valavala.com/vala_skillhub - **远程仓库:** https://git.valavala.com/vala_skillhub
- **配置文件:** ./.vala_skillhub_config工作区根目录
- **哈希状态文件:** ./.vala_skill_hashes工作区根目录记录各技能上次推送的哈希值
- **同步规则:** - **同步规则:**
1. 每次修改/新增/删除 `./skills/` 目录下的技能文件后,立即执行 `./scripts/sync_skills.sh` 自动同步到 SkillHub 1. **触发时机:**
2. 会话启动时自动执行同步脚本,检查并推送所有有变更的技能 - 会话启动时自动执行 `./scripts/sync_skills.sh`
- **首次推送结果:** 已成功推送5个技能到SkillHub - 每次修改/新增/删除 `./skills/` 目录下的技能文件后立即执行同步
- 自动跳过 `use_vala_skillhub` 系列技能自身
2. **同步逻辑:**
- 智能变更检测:仅推送内容有变化的技能,无变更的自动跳过
- 使用临时目录执行Git操作不会在 `./skills` 下生成 `.git` 目录不影响工作区Git管理
- 命名规则:`{技能目录名}.xiaoban`
- **已推送技能列表:**
- cron-schedule.xiaoban - cron-schedule.xiaoban
- feishu_send_file.xiaoban - feishu_send_file.xiaoban
- feishu-wiki-access.xiaoban - feishu-wiki-access.xiaoban

View File

@ -1,21 +1,27 @@
#!/bin/bash #!/bin/bash
# SkillHub自动同步脚本检测./skills下的技能变更自动推送到Vala SkillHub # SkillHub自动同步脚本检测./skills下的技能变更自动推送到Vala SkillHub
source ~/.vala_skillhub_config # 遵循use_vala_skillhub.vala技能规范实现
HASH_FILE=~/.vala_skill_hashes
WORKDIR="/root/.openclaw/workspace-xiaoban" WORKDIR="/root/.openclaw/workspace-xiaoban"
cd "${WORKDIR}" || exit 1 cd "${WORKDIR}" || exit 1
source ./.vala_skillhub_config
HASH_FILE=./.vala_skill_hashes
touch "${HASH_FILE}" touch "${HASH_FILE}"
mkdir -p ./tmp/skill_push mkdir -p ./tmp/skill_push
SYNC_COUNT=0 SYNC_COUNT=0
SKIP_COUNT=0 SKIP_COUNT=0
# 计算技能目录哈希函数
compute_skill_hash() {
local skill_dir="$1"
(cd "${skill_dir}" && find . -type f -not -path '*/\.*' | LC_ALL=C sort | while read f; do echo "FILE:$f"; cat "$f"; done | sha256sum | awk '{print $1}')
}
for skill_dir in ./skills/*/; do for skill_dir in ./skills/*/; do
skill_name=$(basename "${skill_dir}") skill_name=$(basename "${skill_dir}")
# 跳过use_vala_skillhub自身 # 跳过use_vala_skillhub自身(兼容带和不带.vala后缀的命名
if [ "${skill_name}" = "use_vala_skillhub.vala" ]; then if [[ "${skill_name}" == "use_vala_skillhub"* ]]; then
continue continue
fi fi
# 计算当前目录哈希 # 计算当前目录哈希(遵循规范哈希算法)
current_hash=$(cd "${skill_dir}" && find . -type f -not -path '*/\.*' | LC_ALL=C sort | while read f; do echo "FILE:$f"; cat "$f"; done | sha256sum | awk '{print $1}') current_hash=$(compute_skill_hash "${skill_dir}")
stored_hash=$(grep "^${skill_name} " "${HASH_FILE}" | awk '{print $2}') stored_hash=$(grep "^${skill_name} " "${HASH_FILE}" | awk '{print $2}')
if [ "${current_hash}" = "${stored_hash}" ]; then if [ "${current_hash}" = "${stored_hash}" ]; then
SKIP_COUNT=$((SKIP_COUNT + 1)) SKIP_COUNT=$((SKIP_COUNT + 1))

View File

@ -14,13 +14,13 @@ Vala SkillHub 技能管理 —— 让数字员工推送、安装和自动同步
推送和安装均不在 `./skills` 目录内产生 `.git`,确保不影响 workspace 级别的 git 备份: 推送和安装均不在 `./skills` 目录内产生 `.git`,确保不影响 workspace 级别的 git 备份:
- **推送 / 自动同步**:复制到 `./tmp/skill_push/` 临时目录,完成 git 推送后清理 - **推送 / 自动同步**:复制到 `./tmp/skill_push/` 临时目录,完成 git 推送后清理
- **安装**:通过 Gitea API 下载归档解压,不使用 git clone - **安装**:通过 Gitea API 下载归档解压,不使用 git clone
- **变更检测**:通过 `~/.vala_skill_hashes` 记录每个 skill 的内容哈希,对比检测变更 - **变更检测**:通过 `./.vala_skill_hashes` 记录每个 skill 的内容哈希,对比检测变更
## 自动同步机制 ## 自动同步机制
数字员工在新增或修改 skill 后,**必须自动执行 check_and_push** 数字员工在新增或修改 skill 后,**必须自动执行 check_and_push**
1. 计算 skill 目录的综合哈希(含文件路径 + 内容) 1. 计算 skill 目录的综合哈希(含文件路径 + 内容)
2. 与 `~/.vala_skill_hashes` 中的历史哈希对比 2. 与 `./.vala_skill_hashes` 中的历史哈希对比
3. 仅推送有变更的 skill推送成功后更新哈希记录 3. 仅推送有变更的 skill推送成功后更新哈希记录
可选配合 `cron_job` 技能设置定时全量同步作为安全网。 可选配合 `cron_job` 技能设置定时全量同步作为安全网。
@ -38,7 +38,7 @@ Vala SkillHub 技能管理 —— 让数字员工推送、安装和自动同步
## 配置 ## 配置
首次使用需提供配置,保存在 `~/.vala_skillhub_config` 首次使用需提供配置,保存在 `./.vala_skillhub_config`(当前 workspace 根目录下,各数字员工独立)
- `GITEA_URL` — Gitea 服务地址(默认 `https://git.valavala.com` - `GITEA_URL` — Gitea 服务地址(默认 `https://git.valavala.com`
- `GITEA_TOKEN` — API Token需有组织仓库的创建和推送权限 - `GITEA_TOKEN` — API Token需有组织仓库的创建和推送权限

View File

@ -18,7 +18,7 @@ SkillHub 基于 Gitea每个技能对应一个独立的 Git 仓库。推送时
## 配置 ## 配置
操作前需要确认以下配置(保存到 `~/.vala_skillhub_config` 操作前需要确认以下配置(保存到 `./.vala_skillhub_config`,即当前 workspace 根目录下
| 配置项 | 说明 | 默认值 | | 配置项 | 说明 | 默认值 |
|--------|------|--------| |--------|------|--------|
@ -30,7 +30,7 @@ SkillHub 基于 Gitea每个技能对应一个独立的 Git 仓库。推送时
如果配置文件不存在,请询问用户获取以上信息后创建: 如果配置文件不存在,请询问用户获取以上信息后创建:
```bash ```bash
cat > ~/.vala_skillhub_config <<EOF cat > ./.vala_skillhub_config <<EOF
GITEA_URL=https://git.valavala.com GITEA_URL=https://git.valavala.com
GITEA_TOKEN=<token> GITEA_TOKEN=<token>
GITEA_OWNER=vala_skillhub GITEA_OWNER=vala_skillhub
@ -40,7 +40,7 @@ EOF
后续操作前先加载配置: 后续操作前先加载配置:
```bash ```bash
source ~/.vala_skillhub_config source ./.vala_skillhub_config
``` ```
--- ---
@ -151,7 +151,7 @@ curl -s "${GITEA_URL}/api/v1/orgs/${GITEA_OWNER}/repos?page=1&limit=50&sort=upda
### 哈希状态文件 ### 哈希状态文件
使用 `~/.vala_skill_hashes` 记录每个 skill 上次推送时的内容哈希,格式为每行一条记录: 使用 `./.vala_skill_hashes`workspace 根目录下)记录每个 skill 上次推送时的内容哈希,格式为每行一条记录:
``` ```
skill_dir_name hash skill_dir_name hash
@ -178,8 +178,8 @@ compute_skill_hash() {
1. **加载配置和哈希状态** 1. **加载配置和哈希状态**
```bash ```bash
source ~/.vala_skillhub_config source ./.vala_skillhub_config
HASH_FILE=~/.vala_skill_hashes HASH_FILE=./.vala_skill_hashes
touch "${HASH_FILE}" touch "${HASH_FILE}"
``` ```

View File

@ -1,8 +1,14 @@
{ {
"name": "use_vala_skillhub", "name": "use_vala_skillhub",
"version": "4.0.0", "version": "4.0.0",
"description": "管理 Vala SkillHub 上的技能:推送、安装、自动同步(变更检测 + 自动推送,不影响 workspace git 备份)", "description": "管理 Vala SkillHub 上的技能:推送、安装、自动同步(变更检测 + 自动推送,不影响 workspace git 备份)",
"author": "vala", "author": "vala",
"tags": ["skillhub", "git", "管理", "备份", "自动同步"], "tags": [
"config_file": "~/.vala_skillhub_config" "skillhub",
"git",
"管理",
"备份",
"自动同步"
],
"config_file": "./.vala_skillhub_config"
} }