From c8c3f2fb11631579d7a091720a5b6133f6497ce1 Mon Sep 17 00:00:00 2001 From: ai_member_only Date: Tue, 31 Mar 2026 11:01:23 +0800 Subject: [PATCH] initial backup 2026-03-31 11:01:23 --- skills/vala_git_workspace_backup/SKILL.md | 10 +++++++ .../scripts/setup.sh | 26 +++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/skills/vala_git_workspace_backup/SKILL.md b/skills/vala_git_workspace_backup/SKILL.md index 16fcc9f..8bec78d 100644 --- a/skills/vala_git_workspace_backup/SKILL.md +++ b/skills/vala_git_workspace_backup/SKILL.md @@ -2,11 +2,21 @@ ## 功能说明 自动将OpenClaw workspace内容定期备份到Git仓库,自动过滤敏感信息,无硬编码凭证。 ## 特性 +- ✅ 全流程自动化,无需手动提前创建Git仓库 - ✅ 自动排除密钥、密码等敏感文件(secrets.md、.env、*.key等) - ✅ 内置公司Git服务(git.valavala.com)支持,无需额外配置地址 - ✅ 支持自定义定时备份时间 - ✅ 敏感信息通过参数传入,不存储在skill代码中 - ✅ 自动生成备份日志,便于排查问题 +## 完整执行流程 +1. 检查传入的Git Token是否有效 +2. 自动检查对应Git仓库是否存在,不存在则调用API自动创建 +3. 初始化本地Git仓库(如果未初始化) +4. 配置.gitignore敏感文件过滤规则 +5. 配置Git用户信息和远程仓库地址 +6. 首次提交并推送所有非敏感文件 +7. 创建备份执行脚本和日志目录 +8. 添加定时任务到系统crontab,按指定时间自动执行备份 ## 配置参数 | 参数名 | 类型 | 必填 | 说明 | |--------|------|------|------| diff --git a/skills/vala_git_workspace_backup/scripts/setup.sh b/skills/vala_git_workspace_backup/scripts/setup.sh index dd06f67..c5f4fff 100755 --- a/skills/vala_git_workspace_backup/scripts/setup.sh +++ b/skills/vala_git_workspace_backup/scripts/setup.sh @@ -6,6 +6,32 @@ GIT_USERNAME="$2" GIT_EMAIL="$3" GIT_REPO_URL="${4:-https://git.valavala.com/${GIT_USERNAME}/ai_member_${GIT_USERNAME}.git}" CRON_SCHEDULE="${5:-30 8 * * *}" +# 自动创建Git仓库(如果不存在) +REPO_NAME="ai_member_${GIT_USERNAME}" +echo "🔍 检查Git仓库是否存在: $REPO_NAME" +REPO_CHECK=$(curl -s -o /dev/null -w "%{http_code}" -H "Authorization: token $GIT_TOKEN" "https://git.valavala.com/api/v1/repos/$GIT_USERNAME/$REPO_NAME") +if [ "$REPO_CHECK" -eq 404 ]; then + echo "🆕 仓库不存在,自动创建中..." + CREATE_RESPONSE=$(curl -s -X POST "https://git.valavala.com/api/v1/user/repos" \ + -H "Authorization: token $GIT_TOKEN" \ + -H "Content-Type: application/json" \ + -d "{ + \"name\": \"$REPO_NAME\", + \"private\": false, + \"description\": \"${GIT_USERNAME} workspace 备份\", + \"auto_init\": false + }") + if echo "$CREATE_RESPONSE" | grep -q '"id":'; then + echo "✅ 仓库创建成功: https://git.valavala.com/$GIT_USERNAME/$REPO_NAME" + else + echo "❌ 仓库创建失败: $CREATE_RESPONSE" + exit 1 + fi +elif [ "$REPO_CHECK" -eq 200 ]; then + echo "✅ 仓库已存在,跳过创建" +else + echo "⚠️ 仓库检查失败,HTTP状态码: $REPO_CHECK,继续执行配置" +fi WORKSPACE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../../.." && pwd)" # 初始化Git仓库 cd "$WORKSPACE_DIR"