204 lines
5.4 KiB
Bash
204 lines
5.4 KiB
Bash
|
|
#!/bin/bash
|
|||
|
|
|
|||
|
|
echo "=== inkos 问题终极解决方案 ==="
|
|||
|
|
echo "此方案将:"
|
|||
|
|
echo "1. 备份现有章节文件"
|
|||
|
|
echo "2. 创建全新的inkos项目"
|
|||
|
|
echo "3. 导入现有章节"
|
|||
|
|
echo "4. 测试创作功能"
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# 1. 停止所有进程
|
|||
|
|
echo "1. 停止所有inkos进程..."
|
|||
|
|
pkill -9 -f "inkos" 2>/dev/null || true
|
|||
|
|
sleep 2
|
|||
|
|
|
|||
|
|
# 2. 备份章节文件
|
|||
|
|
echo "2. 备份章节文件..."
|
|||
|
|
BACKUP_DIR="/root/.openclaw/workspace/backups/chapters_backup_$(date +%Y%m%d_%H%M%S)"
|
|||
|
|
mkdir -p "$BACKUP_DIR"
|
|||
|
|
|
|||
|
|
# 备份原始章节文件
|
|||
|
|
CHAPTERS_SOURCE="/root/.openclaw/workspace/tomato-novel/tomato-novel/books/末日重生-开局囤货十亿物资/chapters"
|
|||
|
|
if [ -d "$CHAPTERS_SOURCE" ]; then
|
|||
|
|
cp -r "$CHAPTERS_SOURCE" "$BACKUP_DIR/"
|
|||
|
|
echo " 章节文件已备份到: $BACKUP_DIR"
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# 3. 清理旧的inkos数据
|
|||
|
|
echo "3. 清理旧的inkos数据..."
|
|||
|
|
rm -rf /root/.openclaw/workspace/tomato-novel/books/末日重生-开局囤货十亿物资/story 2>/dev/null || true
|
|||
|
|
rm -rf /root/.openclaw/workspace/tomato-novel/books/末日重生-开局囤货十亿物资 2>/dev/null || true
|
|||
|
|
|
|||
|
|
# 4. 创建最简单的inkos配置
|
|||
|
|
echo "4. 创建最简单的inkos配置..."
|
|||
|
|
cat > /root/.openclaw/workspace/tomato-novel/inkos_ultimate.json << 'EOF'
|
|||
|
|
{
|
|||
|
|
"name": "tomato-novel-ultimate",
|
|||
|
|
"version": "0.1.0",
|
|||
|
|
"language": "zh",
|
|||
|
|
"llm": {
|
|||
|
|
"provider": "custom",
|
|||
|
|
"baseUrl": "https://ark.cn-beijing.volces.com/api/coding/v3",
|
|||
|
|
"model": "deepseek-v3.2"
|
|||
|
|
},
|
|||
|
|
"daemon": {
|
|||
|
|
"schedule": {
|
|||
|
|
"writeCron": "0 */1 * * *"
|
|||
|
|
},
|
|||
|
|
"maxConcurrentBooks": 1
|
|||
|
|
},
|
|||
|
|
"quality": {
|
|||
|
|
"enforcement": "none"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
EOF
|
|||
|
|
|
|||
|
|
cp /root/.openclaw/workspace/tomato-novel/inkos_ultimate.json /root/.openclaw/workspace/tomato-novel/inkos.json
|
|||
|
|
|
|||
|
|
# 5. 创建新的小说项目
|
|||
|
|
echo "5. 创建新的小说项目..."
|
|||
|
|
cd /root/.openclaw/workspace/tomato-novel
|
|||
|
|
|
|||
|
|
# 创建书籍目录结构
|
|||
|
|
BOOK_DIR="books/末日重生-开局囤货十亿物资"
|
|||
|
|
mkdir -p "$BOOK_DIR/chapters"
|
|||
|
|
mkdir -p "$BOOK_DIR/story/state"
|
|||
|
|
mkdir -p "$BOOK_DIR/story/runtime"
|
|||
|
|
|
|||
|
|
# 创建基本的book.json
|
|||
|
|
cat > "$BOOK_DIR/book.json" << 'EOF'
|
|||
|
|
{
|
|||
|
|
"id": "末日重生-开局囤货十亿物资",
|
|||
|
|
"title": "末日重生:开局囤货十亿物资",
|
|||
|
|
"platform": "tomato",
|
|||
|
|
"genre": "urban",
|
|||
|
|
"language": "zh",
|
|||
|
|
"targetChapters": 200,
|
|||
|
|
"currentChapter": 143,
|
|||
|
|
"status": "active",
|
|||
|
|
"createdAt": "2026-04-06T21:55:00.000Z",
|
|||
|
|
"updatedAt": "2026-04-06T21:55:00.000Z"
|
|||
|
|
}
|
|||
|
|
EOF
|
|||
|
|
|
|||
|
|
# 6. 复制章节文件
|
|||
|
|
echo "6. 复制章节文件..."
|
|||
|
|
if [ -d "$CHAPTERS_SOURCE" ]; then
|
|||
|
|
# 只复制第136-143章,避免任何数据错误
|
|||
|
|
for chapter in {136..143}; do
|
|||
|
|
chapter_file=$(find "$CHAPTERS_SOURCE" -name "${chapter}_*.md" | head -1)
|
|||
|
|
if [ -f "$chapter_file" ]; then
|
|||
|
|
cp "$chapter_file" "$BOOK_DIR/chapters/"
|
|||
|
|
echo " 复制: $(basename "$chapter_file")"
|
|||
|
|
fi
|
|||
|
|
done
|
|||
|
|
|
|||
|
|
# 复制最新的index.json
|
|||
|
|
if [ -f "$CHAPTERS_SOURCE/index.json" ]; then
|
|||
|
|
cp "$CHAPTERS_SOURCE/index.json" "$BOOK_DIR/chapters/"
|
|||
|
|
echo " 复制: index.json"
|
|||
|
|
fi
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# 7. 创建简单的index.json(只包含136-143章)
|
|||
|
|
echo "7. 创建简单的index.json..."
|
|||
|
|
cat > "$BOOK_DIR/chapters/index_simple.json" << 'EOF'
|
|||
|
|
[
|
|||
|
|
{
|
|||
|
|
"number": 136,
|
|||
|
|
"title": "危机升级",
|
|||
|
|
"status": "ready-for-review",
|
|||
|
|
"wordCount": 2442
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"number": 137,
|
|||
|
|
"title": "暗流涌动",
|
|||
|
|
"status": "ready-for-review",
|
|||
|
|
"wordCount": 3494
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"number": 138,
|
|||
|
|
"title": "夜色酒吧",
|
|||
|
|
"status": "ready-for-review",
|
|||
|
|
"wordCount": 3467
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"number": 139,
|
|||
|
|
"title": "眼镜来访",
|
|||
|
|
"status": "ready-for-review",
|
|||
|
|
"wordCount": 3345
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"number": 140,
|
|||
|
|
"title": "资金链危机",
|
|||
|
|
"status": "ready-for-review",
|
|||
|
|
"wordCount": 2626
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"number": 141,
|
|||
|
|
"title": "眼镜的选择",
|
|||
|
|
"status": "ready-for-review",
|
|||
|
|
"wordCount": 2291
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"number": 142,
|
|||
|
|
"title": "老火车站的交易",
|
|||
|
|
"status": "ready-for-review",
|
|||
|
|
"wordCount": 2580
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"number": 143,
|
|||
|
|
"title": "刀疤刘的行动",
|
|||
|
|
"status": "ready-for-review",
|
|||
|
|
"wordCount": 2102
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
EOF
|
|||
|
|
|
|||
|
|
cp "$BOOK_DIR/chapters/index_simple.json" "$BOOK_DIR/chapters/index.json"
|
|||
|
|
|
|||
|
|
# 8. 启动inkos
|
|||
|
|
echo "8. 启动inkos守护进程..."
|
|||
|
|
nohup inkos up > /tmp/inkos_ultimate_start.log 2>&1 &
|
|||
|
|
|
|||
|
|
sleep 10
|
|||
|
|
|
|||
|
|
# 9. 检查启动状态
|
|||
|
|
echo "9. 检查启动状态..."
|
|||
|
|
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)"
|
|||
|
|
|
|||
|
|
# 等待一下,然后检查状态
|
|||
|
|
sleep 5
|
|||
|
|
|
|||
|
|
echo "10. 检查inkos状态..."
|
|||
|
|
inkos status 2>&1
|
|||
|
|
|
|||
|
|
echo ""
|
|||
|
|
echo "11. 测试创作第144章..."
|
|||
|
|
echo "正在创作,请等待30-60秒..."
|
|||
|
|
|
|||
|
|
# 尝试创作下一章
|
|||
|
|
result=$(timeout 30 inkos draft 末日重生-开局囤货十亿物资 2>&1 | head -30)
|
|||
|
|
|
|||
|
|
if echo "$result" | grep -q "Writing draft for"; then
|
|||
|
|
echo "✅ inkos 创作测试成功!"
|
|||
|
|
echo "inkos现在应该可以正常创作了。"
|
|||
|
|
else
|
|||
|
|
echo "❌ inkos 创作测试失败"
|
|||
|
|
echo "错误信息:"
|
|||
|
|
echo "$result"
|
|||
|
|
echo ""
|
|||
|
|
echo "查看详细日志: tail -50 /tmp/inkos_ultimate_start.log"
|
|||
|
|
fi
|
|||
|
|
else
|
|||
|
|
echo "❌ inkos 启动失败"
|
|||
|
|
echo "查看日志: tail -50 /tmp/inkos_ultimate_start.log"
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
echo ""
|
|||
|
|
echo "=== 解决方案完成 ==="
|
|||
|
|
echo "备份位置: $BACKUP_DIR"
|
|||
|
|
echo "如果创作成功,inkos将继续自动创作第144章及后续章节。"
|