更新SkillHub自动同步脚本,遵循最新use_vala_skillhub技能规范:调整配置文件路径、更新哈希计算逻辑、优化跳过规则
This commit is contained in:
parent
91bd6f283d
commit
9c3e29e834
8
.vala_skill_hashes
Normal file
8
.vala_skill_hashes
Normal 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
4
.vala_skillhub_config
Normal file
@ -0,0 +1,4 @@
|
||||
GITEA_URL=https://git.valavala.com
|
||||
GITEA_TOKEN=ef9dfa0b3ae3cfba010c1462b8f77e11a0d4289f
|
||||
GITEA_OWNER=vala_skillhub
|
||||
SOURCE_NAME=xiaoyan
|
||||
16
MEMORY.md
16
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
|
||||
|
||||
@ -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))
|
||||
|
||||
@ -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(需有组织仓库的创建和推送权限)
|
||||
|
||||
@ -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 <<EOF
|
||||
cat > ./.vala_skillhub_config <<EOF
|
||||
GITEA_URL=https://git.valavala.com
|
||||
GITEA_TOKEN=<token>
|
||||
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}"
|
||||
```
|
||||
|
||||
|
||||
@ -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"
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user