novel-doomsday-resurgence/fix_inkos_audit.sh
2026-04-06 22:06:30 +08:00

124 lines
3.7 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
echo "=== 修复 inkos 审计问题 ==="
# 1. 停止所有 inkos 进程
echo "1. 停止 inkos 进程..."
pkill -f "inkos" 2>/dev/null
sleep 3
# 2. 备份当前状态
echo "2. 备份当前状态..."
BACKUP_DIR="/root/.openclaw/workspace/backups/inkos_fix_$(date +%Y%m%d_%H%M%S)"
mkdir -p "$BACKUP_DIR"
cp -r /root/.openclaw/workspace/tomato-novel/books/末日重生-开局囤货十亿物资/story/state/* "$BACKUP_DIR/" 2>/dev/null || true
# 3. 修复 index.json 数据问题
echo "3. 修复 index.json 数据问题..."
cd /root/.openclaw/workspace/tomato-novel/books/末日重生-开局囤货十亿物资/chapters
# 检查并修复空标题问题
python3 -c "
import json
import os
try:
with open('index.json', 'r', encoding='utf-8') as f:
data = json.load(f)
print(f'原始条目数: {len(data)}')
# 修复空标题
fixed_count = 0
for i, item in enumerate(data):
if 'title' not in item or not item['title'] or item['title'].strip() == '':
if 'number' in item:
item['title'] = f'第{item[\"number\"]}章'
fixed_count += 1
else:
item['title'] = '未命名章节'
fixed_count += 1
print(f'修复了 {fixed_count} 个空标题')
# 保存修复后的文件
with open('index.json', 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=2)
print('index.json 修复完成')
except Exception as e:
print(f'修复 index.json 时出错: {e}')
"
# 4. 清理运行时文件
echo "4. 清理运行时文件..."
RUNTIME_DIR="/root/.openclaw/workspace/tomato-novel/books/末日重生-开局囤货十亿物资/story/runtime"
if [ -d "$RUNTIME_DIR" ]; then
# 备份运行时文件
cp -r "$RUNTIME_DIR" "$BACKUP_DIR/runtime_backup" 2>/dev/null || true
# 清理有问题的运行时文件保留前100章
find "$RUNTIME_DIR" -name "chapter-*.json" -type f | sort -V | tail -n +101 | xargs rm -f 2>/dev/null || true
echo "已清理 chapter-100 之后的运行时文件"
fi
# 5. 重置 inkos 状态
echo "5. 重置 inkos 状态..."
STATE_DIR="/root/.openclaw/workspace/tomato-novel/books/末日重生-开局囤货十亿物资/story/state"
if [ -d "$STATE_DIR" ]; then
# 创建新的状态文件
cat > "$STATE_DIR/current_state.md" << 'EOF'
# 当前状态
## 角色状态
- **陈末**: 在城西旧货场棚子,伤口感染,正在制定对付疤哥的计划
- **小雨**: 在吴建军物流园安全位置
- **小野**: 在吴建军物流园安全位置
- **疤哥**: 资金链断裂,老鬼跑路,手下离心
- **刀疤刘**: 准备趁机夺回城南地盘
- **眼镜**: 已离开,提供监控系统后门
## 物资状态
- 钢材交易完成定金5万已付
- 监控系统后门密码: 20260816
- 现金: 约10万
- 武器: 匕首一把
## 时间线
- 当前时间: 8月16日晚上
- 末日倒计时: 25天
- 疤哥计划对胡文斌下手: 3天后
## 主要威胁
1. 疤哥势力威胁
2. 伤口感染恶化
3. 物资安全
4. 时间紧迫
EOF
echo "状态文件已重置"
fi
# 6. 启动 inkos
echo "6. 启动 inkos..."
cd /root/.openclaw/workspace/tomato-novel && nohup inkos up > /tmp/inkos_fix_start.log 2>&1 &
# 等待启动
sleep 10
# 7. 检查状态
echo "7. 检查状态..."
if ps aux | grep -q "inkos up" | grep -v grep; then
PID=$(ps aux | grep "inkos up" | grep -v grep | awk '{print $2}')
echo "✅ inkos 守护进程已启动 (PID: $PID)"
# 检查书籍状态
cd /root/.openclaw/workspace/tomato-novel && inkos status 2>/dev/null || echo "无法获取状态"
else
echo "❌ inkos 启动失败"
echo "查看日志: tail -50 /tmp/inkos_fix_start.log"
fi
echo "=== 修复完成 ==="
echo "备份位置: $BACKUP_DIR"