155 lines
4.3 KiB
Bash
155 lines
4.3 KiB
Bash
|
|
#!/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"
|