🔄 卡若AI 同步 2026-02-15 23:09 | 变更 5 个文件 | 排除 >20MB: 4 个
Some checks failed
Sync GitHub to CKB NAS Gitea / sync (push) Has been cancelled
Some checks failed
Sync GitHub to CKB NAS Gitea / sync (push) Has been cancelled
This commit is contained in:
@@ -20,6 +20,7 @@ alwaysApply: true
|
||||
2. 读取 `_共享模块/references/卡若AI交互流程与强制执行条件.md`
|
||||
3. 读取 `_共享模块/skill_router/SKILL.md` 技能索引
|
||||
4. 同步文件到 D:\卡若ai(排除超过1MB的大文件)
|
||||
5. **有更新就上传 Gitea**:若本次对话对工作台有文件变更,对话结束前执行 `_共享模块/auto_sync_gitea.sh`,将变更推送到 open.quwanzhi.com:3000/fnvtk/karuo-ai,并建立推送记录(见 `_共享模块/工作台/gitea_push_log.md`)。上传规则:单文件 >20MB 不提交、不推送。
|
||||
|
||||
## 统一执行流程(所有任务必守)
|
||||
|
||||
@@ -65,6 +66,7 @@ alwaysApply: true
|
||||
|
||||
**核心入口**:`_共享模块/工作台/00_卡若AI总索引.md`
|
||||
**Skill 路由表**:`_共享模块/skill_router/SKILL.md`
|
||||
**Gitea 同步**:有更新即执行 `bash _共享模块/auto_sync_gitea.sh` → 推送到 open.quwanzhi.com:3000/fnvtk/karuo-ai,>20MB 不上传,记录见 `_共享模块/工作台/gitea_push_log.md`
|
||||
|
||||
## 大文件规则(强制)
|
||||
|
||||
|
||||
7
.gitignore
vendored
7
.gitignore
vendored
@@ -77,3 +77,10 @@ _大文件外置/视频切片_models/ggml-small.bin
|
||||
_大文件外置/财务管理_data/chat.snapshot_data.db
|
||||
_大文件外置/财务管理_data/chat.snapshot_收集.db
|
||||
# === 自动排除结束 ===
|
||||
|
||||
# === 自动排除:超过20MB的文件(脚本自动管理,勿手动修改)===
|
||||
_大文件外置/消息中枢_dist/windows控制包.zip
|
||||
_大文件外置/视频切片_models/ggml-small.bin
|
||||
_大文件外置/财务管理_data/chat.snapshot_data.db
|
||||
_大文件外置/财务管理_data/chat.snapshot_收集.db
|
||||
# === 自动排除结束 ===
|
||||
|
||||
@@ -1,23 +1,21 @@
|
||||
#!/bin/bash
|
||||
# ============================================
|
||||
# 卡若AI 自动同步脚本
|
||||
# 功能:每5分钟自动提交并推送到存客宝NAS的Gitea
|
||||
# 规则:超过5MB的文件自动排除不上传
|
||||
# 卡若AI → Gitea 实时同步(open.quwanzhi.com:3000/fnvtk/karuo-ai)
|
||||
# 规则:超过 20MB 的文件不上传(与 Skill 目录规则一致)
|
||||
# 推送成功后建立记录:_共享模块/工作台/gitea_push_log.md
|
||||
# ============================================
|
||||
|
||||
REPO_DIR="/Users/karuo/Documents/个人/卡若AI"
|
||||
REMOTE="gitea"
|
||||
BRANCH="main"
|
||||
MAX_SIZE_MB=5
|
||||
MAX_SIZE_MB=20
|
||||
LOG_FILE="$REPO_DIR/_共享模块/sync.log"
|
||||
PUSH_LOG="$REPO_DIR/_共享模块/工作台/gitea_push_log.md"
|
||||
GITIGNORE="$REPO_DIR/.gitignore"
|
||||
|
||||
# 日志函数
|
||||
log() {
|
||||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> "$LOG_FILE"
|
||||
}
|
||||
log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> "$LOG_FILE"; }
|
||||
|
||||
# 限制日志文件大小(最大 500KB)
|
||||
# 限制 sync.log 大小
|
||||
if [ -f "$LOG_FILE" ] && [ $(stat -f%z "$LOG_FILE" 2>/dev/null || echo 0) -gt 512000 ]; then
|
||||
tail -100 "$LOG_FILE" > "$LOG_FILE.tmp" && mv "$LOG_FILE.tmp" "$LOG_FILE"
|
||||
fi
|
||||
@@ -25,19 +23,15 @@ fi
|
||||
cd "$REPO_DIR" || { log "错误:无法进入目录 $REPO_DIR"; exit 1; }
|
||||
|
||||
# ============================================
|
||||
# Step 1: 动态查找 >5MB 的文件,更新 .gitignore
|
||||
# Step 1: 排除 >20MB 文件(动态写入 .gitignore 区段)
|
||||
# ============================================
|
||||
MARKER_START="# === 自动排除:超过${MAX_SIZE_MB}MB的文件(脚本自动管理,勿手动修改)==="
|
||||
MARKER_END="# === 自动排除结束 ==="
|
||||
|
||||
# 查找所有 >5MB 的文件(排除 .git 目录)
|
||||
LARGE_FILES=$(find . -type f -size +${MAX_SIZE_MB}M -not -path "./.git/*" 2>/dev/null | sort)
|
||||
|
||||
# 生成新的大文件排除列表
|
||||
NEW_SECTION="$MARKER_START"
|
||||
if [ -n "$LARGE_FILES" ]; then
|
||||
while IFS= read -r file; do
|
||||
# 去掉开头的 ./
|
||||
clean_path="${file#./}"
|
||||
NEW_SECTION="$NEW_SECTION
|
||||
$clean_path"
|
||||
@@ -46,10 +40,7 @@ fi
|
||||
NEW_SECTION="$NEW_SECTION
|
||||
$MARKER_END"
|
||||
|
||||
# 更新 .gitignore 中的自动管理区域
|
||||
if grep -q "$MARKER_START" "$GITIGNORE" 2>/dev/null; then
|
||||
# 已存在标记,替换区域内容
|
||||
# 用 python 处理多行替换更可靠
|
||||
python3 -c "
|
||||
import re
|
||||
with open('$GITIGNORE', 'r') as f:
|
||||
@@ -60,45 +51,35 @@ with open('$GITIGNORE', 'w') as f:
|
||||
f.write(new_content)
|
||||
" 2>/dev/null
|
||||
else
|
||||
# 不存在标记,追加到末尾
|
||||
echo "" >> "$GITIGNORE"
|
||||
echo "$NEW_SECTION" >> "$GITIGNORE"
|
||||
fi
|
||||
|
||||
LARGE_COUNT=$(echo "$LARGE_FILES" | grep -c '.' 2>/dev/null || echo 0)
|
||||
log "大文件扫描:发现 $LARGE_COUNT 个超过 ${MAX_SIZE_MB}MB 的文件已排除"
|
||||
log "大文件扫描:$LARGE_COUNT 个 >${MAX_SIZE_MB}MB 已排除"
|
||||
|
||||
# ============================================
|
||||
# Step 2: 检查是否有变更
|
||||
# ============================================
|
||||
git add -A 2>/dev/null
|
||||
|
||||
# 检查是否有需要提交的变更
|
||||
if git diff --cached --quiet 2>/dev/null; then
|
||||
log "无变更,跳过同步"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# ============================================
|
||||
# Step 3: 自动提交
|
||||
# Step 3: 提交
|
||||
# ============================================
|
||||
CHANGED_COUNT=$(git diff --cached --numstat | wc -l | tr -d ' ')
|
||||
TIMESTAMP=$(date '+%Y-%m-%d %H:%M')
|
||||
COMMIT_MSG="🔄 卡若AI 同步 $TIMESTAMP | 变更 ${CHANGED_COUNT} 个文件 | 排除 >${MAX_SIZE_MB}MB: ${LARGE_COUNT} 个"
|
||||
|
||||
git commit -m "$(cat <<EOF
|
||||
🔄 自动同步 $TIMESTAMP
|
||||
|
||||
变更文件: ${CHANGED_COUNT} 个
|
||||
排除大文件: ${LARGE_COUNT} 个 (>${MAX_SIZE_MB}MB)
|
||||
EOF
|
||||
)" --quiet 2>/dev/null
|
||||
|
||||
git commit -m "$COMMIT_MSG" --quiet 2>/dev/null
|
||||
if [ $? -ne 0 ]; then
|
||||
log "错误:提交失败"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
log "提交成功:${CHANGED_COUNT} 个文件变更"
|
||||
log "提交成功:${CHANGED_COUNT} 个文件"
|
||||
|
||||
# ============================================
|
||||
# Step 4: 推送到 Gitea
|
||||
@@ -107,15 +88,24 @@ git push "$REMOTE" "$BRANCH" --quiet 2>&1
|
||||
PUSH_RESULT=$?
|
||||
|
||||
if [ $PUSH_RESULT -eq 0 ]; then
|
||||
log "推送成功 → $REMOTE/$BRANCH"
|
||||
log "推送成功 → gitea/$BRANCH"
|
||||
# 建立推送记录
|
||||
mkdir -p "$(dirname "$PUSH_LOG")"
|
||||
if [ ! -f "$PUSH_LOG" ]; then
|
||||
echo -e "# Gitea 推送记录\n\n> 卡若AI 有更新即同步到 open.quwanzhi.com:3000/fnvtk/karuo-ai\n\n| 时间 | 提交说明 |\n|:---|:---|" > "$PUSH_LOG"
|
||||
fi
|
||||
echo "| $(date '+%Y-%m-%d %H:%M:%S') | $COMMIT_MSG |" >> "$PUSH_LOG"
|
||||
else
|
||||
# 如果推送失败(可能远程有差异),尝试 force push
|
||||
log "推送失败(code=$PUSH_RESULT),尝试强制推送..."
|
||||
git push "$REMOTE" "$BRANCH" --force --quiet 2>&1
|
||||
if [ $? -eq 0 ]; then
|
||||
log "强制推送成功 → $REMOTE/$BRANCH"
|
||||
log "强制推送成功 → gitea/$BRANCH"
|
||||
mkdir -p "$(dirname "$PUSH_LOG")"
|
||||
[ ! -f "$PUSH_LOG" ] && echo -e "# Gitea 推送记录\n\n| 时间 | 提交说明 |\n|:---|:---|" > "$PUSH_LOG"
|
||||
echo "| $(date '+%Y-%m-%d %H:%M:%S') | [强制] $COMMIT_MSG |" >> "$PUSH_LOG"
|
||||
else
|
||||
log "错误:强制推送也失败,需要手动处理"
|
||||
log "错误:强制推送也失败"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
@@ -67,3 +67,16 @@ git push -u gitea main
|
||||
3. 取凭证:fnvtk / Zhiqun1984
|
||||
4. **新建仓库**:用 API `curl -u fnvtk:Zhiqun1984` 创建
|
||||
5. **推送**:`git push gitea main`(remote 用 HTTPS URL)
|
||||
|
||||
---
|
||||
|
||||
## 五、卡若AI 有更新就上传(实时同步 Gitea)
|
||||
|
||||
| 项 | 说明 |
|
||||
|:---|:---|
|
||||
| **脚本** | `_共享模块/auto_sync_gitea.sh` |
|
||||
| **目标** | http://open.quwanzhi.com:3000/fnvtk/karuo-ai |
|
||||
| **规则** | 单文件 >20MB 不提交、不推送(与 Skill 目录规则一致) |
|
||||
| **建立记录** | 每次推送成功写入 `_共享模块/工作台/gitea_push_log.md` |
|
||||
|
||||
**卡若AI 行为**:对话或任务对工作台产生文件变更后,在对话结束前执行一次 `bash _共享模块/auto_sync_gitea.sh`,使 Gitea 仓库保持最新状态。
|
||||
|
||||
7
_共享模块/工作台/gitea_push_log.md
Normal file
7
_共享模块/工作台/gitea_push_log.md
Normal file
@@ -0,0 +1,7 @@
|
||||
# Gitea 推送记录
|
||||
|
||||
> 卡若AI 有更新即同步到 **open.quwanzhi.com:3000/fnvtk/karuo-ai**
|
||||
> 规则:单文件 >20MB 不上传,推送后在此建立记录。
|
||||
|
||||
| 时间 | 提交说明 |
|
||||
|:---|:---|
|
||||
Reference in New Issue
Block a user