novel-doomsday-resurgence/inkos_simple_monitor.sh

155 lines
4.3 KiB
Bash
Raw Permalink Normal View History

#!/bin/bash
echo "=== inkos 简单监控系统 ==="
echo "时间: $(date)"
echo ""
# 配置
PROJECT_DIR="/root/.openclaw/workspace/tomato-novel"
BOOK_ID="末日重生-开局囤货十亿物资"
CHAP_DIR="$PROJECT_DIR/books/$BOOK_ID/chapters"
# 获取初始章节数量
INITIAL_CHAP_COUNT=$(find "$CHAP_DIR" -name "*.md" -type f | grep -E "^[0-9]{4}_" | wc -l)
echo "📊 初始状态:"
echo " - 章节数量: $INITIAL_CHAP_COUNT"
echo " - 监控开始: $(date -Iseconds)"
echo ""
# 监控循环
MONITOR_INTERVAL=30 # 秒
MONITOR_CYCLES=60 # 30分钟
for ((i=1; i<=MONITOR_CYCLES; i++)); do
# 1. 检查 inkos 状态
if ps aux | grep "inkos up" | grep -v grep > /dev/null; then
PID=$(ps aux | grep "inkos up" | grep -v grep | awk '{print $2}')
STATUS="✅ 运行中 (PID: $PID)"
else
STATUS="❌ 未运行"
fi
# 2. 检查章节变化
CURRENT_CHAP_COUNT=$(find "$CHAP_DIR" -name "*.md" -type f | grep -E "^[0-9]{4}_" | wc -l)
NEW_CHAP_COUNT=$((CURRENT_CHAP_COUNT - INITIAL_CHAP_COUNT))
# 3. 检查日志
if [ -f /tmp/inkos_optimized.log ]; then
LOG_TAIL=$(tail -2 /tmp/inkos_optimized.log 2>/dev/null | tr '\n' ' ')
else
LOG_TAIL="无日志"
fi
# 4. 显示状态
echo "========================================"
echo "监控周期 #$i - $(date +%H:%M:%S)"
echo "========================================"
echo ""
echo "🖥️ inkos状态: $STATUS"
echo "📚 章节统计:"
echo " - 初始数量: $INITIAL_CHAP_COUNT"
echo " - 当前数量: $CURRENT_CHAP_COUNT"
echo " - 新增章节: $NEW_CHAP_COUNT"
echo ""
# 如果有新章节,检查质量
if [ $NEW_CHAP_COUNT -gt 0 ]; then
echo "🎉 发现新章节!"
echo "🔍 检查新章节:"
# 找到最新的章节
NEWEST_CHAP=$(find "$CHAP_DIR" -name "*.md" -type f -printf "%T@ %p\n" | sort -rn | head -1 | cut -d' ' -f2-)
if [ -f "$NEWEST_CHAP" ]; then
CHAP_NAME=$(basename "$NEWEST_CHAP")
CHAP_SIZE=$(wc -c < "$NEWEST_CHAP" 2>/dev/null || echo 0)
echo " - 文件名: $CHAP_NAME"
echo " - 文件大小: $CHAP_SIZE 字符"
echo ""
# 质量检查
echo " 🔍 质量检查:"
python3 /root/.openclaw/workspace/tomato-novel/scripts/simple_quality_check.py "$NEWEST_CHAP" 2>/dev/null | \
grep -E "段落分析|爽点分析|对话分析|发现问题|修复建议|章节号" | head -8
fi
fi
# 5. 检查是否第19章产出
if ls "$CHAP_DIR/0019_"*.md 2>/dev/null >/dev/null; then
echo ""
echo "🎉 第19章已产出!"
CHAP_FILE=$(ls -t "$CHAP_DIR/0019_"*.md 2>/dev/null | head -1)
CHAP_SIZE=$(wc -c < "$CHAP_FILE" 2>/dev/null || echo 0)
echo "📊 章节信息:"
echo " - 文件名: $(basename "$CHAP_FILE")"
echo " - 文件大小: $CHAP_SIZE 字符"
echo " - 产出时间: $(stat -c %y "$CHAP_FILE" 2>/dev/null || echo "unknown")"
echo ""
# 详细质量检查
echo "🔍 详细质量检查:"
python3 /root/.openclaw/workspace/tomato-novel/scripts/simple_quality_check.py "$CHAP_FILE" 2>&1 | tail -30
echo ""
echo "✅ 监控目标达成!"
echo "第19章已成功产出请检查质量是否符合番茄小说标准"
exit 0
fi
# 6. 显示日志
echo "📝 最近日志: $LOG_TAIL"
echo ""
echo "⏳ 等待 ${MONITOR_INTERVAL}秒..."
sleep $MONITOR_INTERVAL
# 更新章节计数
INITIAL_CHAP_COUNT=$CURRENT_CHAP_COUNT
done
echo ""
echo "========================================"
echo "监控结束 - 达到最长监控时间"
echo "时间: $(date)"
echo "========================================"
echo ""
echo "⚠️ 注意第19章尚未产出"
echo "📊 最后状态:"
echo " - 章节数量: $CURRENT_CHAP_COUNT"
echo " - inkos状态: $STATUS"
echo " - 最近日志: $LOG_TAIL"
echo ""
echo "🎯 建议:"
echo "1. 检查 inkos 日志: /tmp/inkos_optimized.log"
echo "2. 可能需要手动干预"
echo "3. 检查 spot-fix 修复状态"
echo "4. 考虑重启 inkos"