From 34ff8c290b8843d31a86f401fc2d7abb3c83e7ba Mon Sep 17 00:00:00 2001 From: karuo Date: Sun, 15 Feb 2026 23:09:39 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=84=20=E5=8D=A1=E8=8B=A5AI=20=E5=90=8C?= =?UTF-8?q?=E6=AD=A5=202026-02-15=2023:09=20|=20=E5=8F=98=E6=9B=B4=205=20?= =?UTF-8?q?=E4=B8=AA=E6=96=87=E4=BB=B6=20|=20=E6=8E=92=E9=99=A4=20>20MB:?= =?UTF-8?q?=204=20=E4=B8=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cursor/rules/karuo-ai.mdc | 2 + .gitignore | 7 +++ _共享模块/auto_sync_gitea.sh | 62 ++++++++----------- .../references/Gitea推送_卡若AI调用手册.md | 13 ++++ _共享模块/工作台/gitea_push_log.md | 7 +++ 5 files changed, 55 insertions(+), 36 deletions(-) create mode 100644 _共享模块/工作台/gitea_push_log.md diff --git a/.cursor/rules/karuo-ai.mdc b/.cursor/rules/karuo-ai.mdc index bb9d3bb7..a4fd8c96 100644 --- a/.cursor/rules/karuo-ai.mdc +++ b/.cursor/rules/karuo-ai.mdc @@ -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` ## 大文件规则(强制) diff --git a/.gitignore b/.gitignore index 2a211574..c1001ca9 100644 --- a/.gitignore +++ b/.gitignore @@ -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 +# === 自动排除结束 === diff --git a/_共享模块/auto_sync_gitea.sh b/_共享模块/auto_sync_gitea.sh index d3d0a10c..fdb8bf66 100755 --- a/_共享模块/auto_sync_gitea.sh +++ b/_共享模块/auto_sync_gitea.sh @@ -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 <${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 diff --git a/_共享模块/references/Gitea推送_卡若AI调用手册.md b/_共享模块/references/Gitea推送_卡若AI调用手册.md index 0e8b81b3..7d4bdde4 100644 --- a/_共享模块/references/Gitea推送_卡若AI调用手册.md +++ b/_共享模块/references/Gitea推送_卡若AI调用手册.md @@ -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 仓库保持最新状态。 diff --git a/_共享模块/工作台/gitea_push_log.md b/_共享模块/工作台/gitea_push_log.md new file mode 100644 index 00000000..c713c105 --- /dev/null +++ b/_共享模块/工作台/gitea_push_log.md @@ -0,0 +1,7 @@ +# Gitea 推送记录 + +> 卡若AI 有更新即同步到 **open.quwanzhi.com:3000/fnvtk/karuo-ai** +> 规则:单文件 >20MB 不上传,推送后在此建立记录。 + +| 时间 | 提交说明 | +|:---|:---|