#!/bin/bash # knowledge_digest.sh — knowledge-digester 子 Agent 的辅助脚本 # 被 knowledge-digester 子 Agent 调用,用于扫描 PDF 学习笔记并提取关键知识 # # Usage: # ./knowledge_digest.sh scan # 扫描所有 PDF 目录,输出统计 # ./knowledge_digest.sh concept # 搜索某个概念跨 PDF 的出现情况 # ./knowledge_digest.sh recent # 搜索最近修改的 PDF(按 atime) # INDEX_DIR="/root/personal/learn/pdf_index" LEARN_DIR="/root/personal/learn" DIGEST_DIR="/root/personal/notes/knowledge_digest" mkdir -p "$DIGEST_DIR" case "${1:-scan}" in scan) echo "=== Knowledge Digest: 目录统计 ===" echo "时间: $(date '+%Y-%m-%d %H:%M:%S')" echo "" for dir in "$LEARN_DIR"/lectures/BLDC_FOC/ \ "$LEARN_DIR"/bldc_motor_control/pdfs/app_notes/ \ "$LEARN_DIR"/humanoid_robot/ \ "$LEARN_DIR"/oopc/; do if [ -d "$dir" ]; then count=$(find "$dir" -name "*.pdf" -type f | wc -l) echo " $dir → $count PDF files" fi done echo "" echo "=== 索引 manifest ===" if [ -f "$INDEX_DIR/manifest.txt" ]; then wc -l < "$INDEX_DIR/manifest.txt" echo " entries in manifest" else echo "NO manifest found" fi ;; concept) keyword="${2:-FOC}" echo "=== Cross-PDF search: $keyword ===" echo "时间: $(date '+%Y-%m-%d %H:%M:%S')" echo "" for dir in "$LEARN_DIR"/lectures/BLDC_FOC/ \ "$LEARN_DIR"/bldc_motor_control/pdfs/app_notes/ \ "$LEARN_DIR"/humanoid_robot/; do [ -d "$dir" ] || continue find "$dir" -name "*.pdf" -type f 2>/dev/null | while read pdf; do match=$(pdftotext "$pdf" - 2>/dev/null | grep -ci "$keyword") if [ "$match" -gt 0 ]; then fname=$(basename "$pdf") echo " [$match hits] $fname" fi done done ;; recent) days="${2:-7}" echo "=== PDF modified in last $days days ===" echo "时间: $(date '+%Y-%m-%d %H:%M:%S')" echo "" find "$LEARN_DIR" -name "*.pdf" -type f -mtime -"$days" 2>/dev/null | while read pdf; do fname=$(basename "$pdf") mtime=$(stat -c '%y' "$pdf" 2>/dev/null | cut -d. -f1) echo " $mtime $fname ($(dirname "$pdf"))" done ;; *) echo "Usage: $0 {scan|concept |recent }" exit 1 ;; esac