From 9c3e29e834850987ff987e546078b5e4443d816d Mon Sep 17 00:00:00 2001 From: xiaoban Date: Wed, 1 Apr 2026 23:31:57 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0SkillHub=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E8=84=9A=E6=9C=AC=EF=BC=8C=E9=81=B5=E5=BE=AA?= =?UTF-8?q?=E6=9C=80=E6=96=B0use=5Fvala=5Fskillhub=E6=8A=80=E8=83=BD?= =?UTF-8?q?=E8=A7=84=E8=8C=83=EF=BC=9A=E8=B0=83=E6=95=B4=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E8=B7=AF=E5=BE=84=E3=80=81=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E5=93=88=E5=B8=8C=E8=AE=A1=E7=AE=97=E9=80=BB=E8=BE=91=E3=80=81?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=B7=B3=E8=BF=87=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vala_skill_hashes | 8 ++++++++ .vala_skillhub_config | 4 ++++ MEMORY.md | 16 ++++++++++++---- scripts/sync_skills.sh | 18 ++++++++++++------ skills/use_vala_skillhub.vala/README.md | 6 +++--- skills/use_vala_skillhub.vala/SKILL.md | 12 ++++++------ skills/use_vala_skillhub.vala/skill.json | 18 ++++++++++++------ 7 files changed, 57 insertions(+), 25 deletions(-) create mode 100644 .vala_skill_hashes create mode 100644 .vala_skillhub_config diff --git a/.vala_skill_hashes b/.vala_skill_hashes new file mode 100644 index 0000000..a8486ff --- /dev/null +++ b/.vala_skill_hashes @@ -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 diff --git a/.vala_skillhub_config b/.vala_skillhub_config new file mode 100644 index 0000000..202243c --- /dev/null +++ b/.vala_skillhub_config @@ -0,0 +1,4 @@ +GITEA_URL=https://git.valavala.com +GITEA_TOKEN=ef9dfa0b3ae3cfba010c1462b8f77e11a0d4289f +GITEA_OWNER=vala_skillhub +SOURCE_NAME=xiaoyan diff --git a/MEMORY.md b/MEMORY.md index 1149068..ea4428a 100644 --- a/MEMORY.md +++ b/MEMORY.md @@ -50,12 +50,20 @@ 3. 修改完成后立即 `git add . && git commit -m "修改说明" && git push origin master` 4. 禁止本地提交堆积 -## SkillHub 自动同步配置 +## SkillHub 自动同步配置(遵循use_vala_skillhub.vala技能规范) - **远程仓库:** https://git.valavala.com/vala_skillhub +- **配置文件:** ./.vala_skillhub_config(工作区根目录) +- **哈希状态文件:** ./.vala_skill_hashes(工作区根目录,记录各技能上次推送的哈希值) - **同步规则:** - 1. 每次修改/新增/删除 `./skills/` 目录下的技能文件后,立即执行 `./scripts/sync_skills.sh` 自动同步到 SkillHub - 2. 会话启动时自动执行同步脚本,检查并推送所有有变更的技能 -- **首次推送结果:** 已成功推送5个技能到SkillHub: + 1. **触发时机:** + - 会话启动时自动执行 `./scripts/sync_skills.sh` + - 每次修改/新增/删除 `./skills/` 目录下的技能文件后立即执行同步 + - 自动跳过 `use_vala_skillhub` 系列技能自身 + 2. **同步逻辑:** + - 智能变更检测:仅推送内容有变化的技能,无变更的自动跳过 + - 使用临时目录执行Git操作,不会在 `./skills` 下生成 `.git` 目录,不影响工作区Git管理 + - 命名规则:`{技能目录名}.xiaoban` +- **已推送技能列表:** - cron-schedule.xiaoban - feishu_send_file.xiaoban - feishu-wiki-access.xiaoban diff --git a/scripts/sync_skills.sh b/scripts/sync_skills.sh index 1f32e16..035e5fa 100755 --- a/scripts/sync_skills.sh +++ b/scripts/sync_skills.sh @@ -1,21 +1,27 @@ #!/bin/bash # SkillHub自动同步脚本:检测./skills下的技能变更,自动推送到Vala SkillHub -source ~/.vala_skillhub_config -HASH_FILE=~/.vala_skill_hashes +# 遵循use_vala_skillhub.vala技能规范实现 WORKDIR="/root/.openclaw/workspace-xiaoban" cd "${WORKDIR}" || exit 1 +source ./.vala_skillhub_config +HASH_FILE=./.vala_skill_hashes touch "${HASH_FILE}" mkdir -p ./tmp/skill_push SYNC_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 skill_name=$(basename "${skill_dir}") - # 跳过use_vala_skillhub自身 - if [ "${skill_name}" = "use_vala_skillhub.vala" ]; then + # 跳过use_vala_skillhub自身(兼容带和不带.vala后缀的命名) + if [[ "${skill_name}" == "use_vala_skillhub"* ]]; then continue 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}') if [ "${current_hash}" = "${stored_hash}" ]; then SKIP_COUNT=$((SKIP_COUNT + 1)) diff --git a/skills/use_vala_skillhub.vala/README.md b/skills/use_vala_skillhub.vala/README.md index e7f166a..73e3836 100644 --- a/skills/use_vala_skillhub.vala/README.md +++ b/skills/use_vala_skillhub.vala/README.md @@ -14,13 +14,13 @@ Vala SkillHub 技能管理 —— 让数字员工推送、安装和自动同步 推送和安装均不在 `./skills` 目录内产生 `.git`,确保不影响 workspace 级别的 git 备份: - **推送 / 自动同步**:复制到 `./tmp/skill_push/` 临时目录,完成 git 推送后清理 - **安装**:通过 Gitea API 下载归档解压,不使用 git clone -- **变更检测**:通过 `~/.vala_skill_hashes` 记录每个 skill 的内容哈希,对比检测变更 +- **变更检测**:通过 `./.vala_skill_hashes` 记录每个 skill 的内容哈希,对比检测变更 ## 自动同步机制 数字员工在新增或修改 skill 后,**必须自动执行 check_and_push**: 1. 计算 skill 目录的综合哈希(含文件路径 + 内容) -2. 与 `~/.vala_skill_hashes` 中的历史哈希对比 +2. 与 `./.vala_skill_hashes` 中的历史哈希对比 3. 仅推送有变更的 skill,推送成功后更新哈希记录 可选配合 `cron_job` 技能设置定时全量同步作为安全网。 @@ -38,7 +38,7 @@ Vala SkillHub 技能管理 —— 让数字员工推送、安装和自动同步 ## 配置 -首次使用需提供配置,保存在 `~/.vala_skillhub_config`: +首次使用需提供配置,保存在 `./.vala_skillhub_config`(当前 workspace 根目录下,各数字员工独立): - `GITEA_URL` — Gitea 服务地址(默认 `https://git.valavala.com`) - `GITEA_TOKEN` — API Token(需有组织仓库的创建和推送权限) diff --git a/skills/use_vala_skillhub.vala/SKILL.md b/skills/use_vala_skillhub.vala/SKILL.md index 934b262..c88d90a 100644 --- a/skills/use_vala_skillhub.vala/SKILL.md +++ b/skills/use_vala_skillhub.vala/SKILL.md @@ -18,7 +18,7 @@ SkillHub 基于 Gitea,每个技能对应一个独立的 Git 仓库。推送时 ## 配置 -操作前需要确认以下配置(保存到 `~/.vala_skillhub_config`): +操作前需要确认以下配置(保存到 `./.vala_skillhub_config`,即当前 workspace 根目录下): | 配置项 | 说明 | 默认值 | |--------|------|--------| @@ -30,7 +30,7 @@ SkillHub 基于 Gitea,每个技能对应一个独立的 Git 仓库。推送时 如果配置文件不存在,请询问用户获取以上信息后创建: ```bash -cat > ~/.vala_skillhub_config < ./.vala_skillhub_config < GITEA_OWNER=vala_skillhub @@ -40,7 +40,7 @@ EOF 后续操作前先加载配置: ```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 @@ -178,8 +178,8 @@ compute_skill_hash() { 1. **加载配置和哈希状态**: ```bash - source ~/.vala_skillhub_config - HASH_FILE=~/.vala_skill_hashes + source ./.vala_skillhub_config + HASH_FILE=./.vala_skill_hashes touch "${HASH_FILE}" ``` diff --git a/skills/use_vala_skillhub.vala/skill.json b/skills/use_vala_skillhub.vala/skill.json index 2c79a02..97684fd 100644 --- a/skills/use_vala_skillhub.vala/skill.json +++ b/skills/use_vala_skillhub.vala/skill.json @@ -1,8 +1,14 @@ { - "name": "use_vala_skillhub", - "version": "4.0.0", - "description": "管理 Vala SkillHub 上的技能:推送、安装、自动同步(变更检测 + 自动推送,不影响 workspace git 备份)", - "author": "vala", - "tags": ["skillhub", "git", "管理", "备份", "自动同步"], - "config_file": "~/.vala_skillhub_config" + "name": "use_vala_skillhub", + "version": "4.0.0", + "description": "管理 Vala SkillHub 上的技能:推送、安装、自动同步(变更检测 + 自动推送,不影响 workspace git 备份)", + "author": "vala", + "tags": [ + "skillhub", + "git", + "管理", + "备份", + "自动同步" + ], + "config_file": "./.vala_skillhub_config" }