204 lines
5.4 KiB
Bash
Executable File
204 lines
5.4 KiB
Bash
Executable File
#!/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章及后续章节。" |