#!/bin/zsh # Knomo 维护自动脚本:去重 + 提取(#成链) # 用法: # zsh knomo_auto.sh # 真正去重 + 提取(--apply) # zsh knomo_auto.sh --dry # 仅预览,不改动任何文件 # 触发:launchd 每日 04:00(不带参数=应用)/ 手动 Terminal 运行(按钮方案已于 2026-08-24 废弃) # 完全本地、不依赖 WorkBuddy。脚本位于 vault 内 X2.Archived/scripts/。 # 路径全部相对脚本自身推导,迁移不影响 DIR="${0:A:h}" VAULT="$(cd "$DIR/../.." && pwd)" LOG="$DIR/logs/knomo_maintain.log" PY=/usr/bin/python3 DRY="" if [ "$1" = "--dry" ]; then DRY="--dry"; fi # knomo_dedupe.py / knomo_extract.py 以「不带 --apply = 预览」为约定, # 所以只在“应用模式”下补 --apply,预览模式什么都不加。 APPLY_ARG="" if [ -z "$DRY" ]; then APPLY_ARG="--apply"; fi mkdir -p "$DIR/logs" { echo "===== $(date) =====" echo "--- [1/2] 去重 Memos-*.md 重复 memoblock ---" "$PY" "$DIR/knomo_dedupe.py" --vault "$VAULT" $APPLY_ARG echo "--- [2/2] 提取 #成链 memo -> X1.Knomo/Atom/ ---" "$PY" "$DIR/knomo_extract.py" --vault "$VAULT" $APPLY_ARG echo "===== done $(date) =====" } >> "$LOG" 2>&1 # 给按钮/通知用的简短回显(stdout 不被重定向到日志) if [ -n "$DRY" ]; then echo "Knomo 预览完成(未改动任何文件)。详情见 $LOG" else echo "Knomo 维护完成(已去重 + 提取 #成链)。详情见 $LOG" fi