149 lines
4.6 KiB
Bash
Executable File
149 lines
4.6 KiB
Bash
Executable File
#!/bin/bash
|
||
# ============================================================================
|
||
# 平安书反思生成模块 v1.0.5 (Python修复版)
|
||
# ============================================================================
|
||
|
||
NOVEL_DIR="/root/.openclaw/workspace/平安书"
|
||
REFLECTION_DIR="$NOVEL_DIR/反思记录"
|
||
TIMESTAMP=$(date '+%Y-%m-%d %H:%M')
|
||
|
||
mkdir -p "$REFLECTION_DIR"
|
||
|
||
echo "╔════════════════════════════════════════════════════╗"
|
||
echo "║ 平安书反思生成模块 v1.0.5 ║"
|
||
echo "╚════════════════════════════════════════════════════╝"
|
||
echo ""
|
||
|
||
# 检测最新章节
|
||
latest=$(ls -t "$NOVEL_DIR"/第*章*.txt 2>/dev/null | head -1)
|
||
|
||
if [ -z "$latest" ]; then
|
||
echo "ℹ️ 未发现章节文件"
|
||
exit 0
|
||
fi
|
||
|
||
chapter_name=$(basename "$latest" .txt)
|
||
reflection_file="$REFLECTION_DIR/${chapter_name}-反思.md"
|
||
|
||
if [ -f "$reflection_file" ]; then
|
||
echo "⚠️ 已有反思记录: $chapter_name"
|
||
exit 0
|
||
fi
|
||
|
||
echo "📖 章节: ${chapter_name}.txt"
|
||
echo ""
|
||
|
||
# Python统计分析
|
||
stats=$(python3 -c "
|
||
import sys
|
||
import re
|
||
|
||
with open('$latest', 'r', encoding='utf-8') as f:
|
||
content = f.read()
|
||
|
||
# 字数
|
||
char_count = sum(1 for c in content if '\u4e00' <= c <= '\u9fff')
|
||
|
||
# 内心独白
|
||
inner = len(re.findall(r'想道|心中|暗自|默念|忖道', content))
|
||
|
||
# 动作描写
|
||
action = len(re.findall(r'身形|身形一|伸手|抬手|迈步|纵身|疾驰|飞奔', content))
|
||
|
||
# 对话 (引号数量/2)
|
||
dialogue = content.count('「') + content.count('”')
|
||
dialogue = dialogue // 2
|
||
|
||
# 环境描写
|
||
env = len(re.findall(r'天空|山林|月光|风声|树叶|流水', content))
|
||
|
||
# 评分
|
||
inner_score = 25 if inner >= 3 else inner * 8
|
||
action_score = 25 if action >= 3 else action * 8
|
||
dialogue_score = 25 if dialogue >= 4 else dialogue * 6
|
||
env_score = 25 if env >= 5 else env * 5
|
||
total = inner_score + action_score + dialogue_score + env_score
|
||
|
||
print(f'{char_count}|{inner}|{action}|{dialogue}|{env}|{inner_score}|{action_score}|{dialogue_score}|{env_score}|{total}')
|
||
" 2>/dev/null)
|
||
|
||
if [ -z "$stats" ]; then
|
||
echo "❌ 统计分析失败"
|
||
exit 1
|
||
fi
|
||
|
||
IFS='|' read -r char_count inner action dialogue env inner_score action_score dialogue_score env_score total <<< "$stats"
|
||
|
||
echo " 📊 字数: $char_count 字"
|
||
echo " 💭 内心独白: $inner 处"
|
||
echo " ⚡ 动作描写: $action 处"
|
||
echo " 💬 对话: $dialogue 段"
|
||
echo " 🌲 环境描写: $env 处"
|
||
echo ""
|
||
echo "📊 牧神记风格评分: $total/100"
|
||
|
||
# 评估
|
||
if [ "$char_count" -ge 5000 ] && [ "$char_count" -le 8000 ] && [ "$inner" -ge 3 ] && [ "$action" -ge 3 ] && [ "$dialogue" -ge 4 ] && [ "$env" -ge 5 ]; then
|
||
eval_status="✅ **章节评估: 合格**"
|
||
eval_detail="本章达到牧神记风格标准,可进入发表流程。"
|
||
issues=""
|
||
else
|
||
eval_status="⚠️ **章节评估: 需要改进**"
|
||
eval_detail="未达标项:"
|
||
issues=1
|
||
fi
|
||
|
||
[ "$inner" -lt 3 ] && eval_detail="${eval_detail}\n- 内心独白不足 ($inner/3)"
|
||
[ "$action" -lt 3 ] && eval_detail="${eval_detail}\n- 动作描写不足 ($action/3)"
|
||
[ "$dialogue" -lt 4 ] && eval_detail="${eval_detail}\n- 对话不足 ($dialogue/4)"
|
||
[ "$env" -lt 5 ] && eval_detail="${eval_detail}\n- 环境描写不足 ($env/5)"
|
||
[ "$char_count" -lt 5000 ] && eval_detail="${eval_detail}\n- 字数不足 ($char_count/5000)"
|
||
[ "$char_count" -gt 8000 ] && eval_detail="${eval_detail}\n- 字数超标 ($char_count/8000)"
|
||
|
||
# 生成报告
|
||
cat > "$reflection_file" << EOF
|
||
# ${chapter_name} - 反思报告
|
||
|
||
**时间**: $TIMESTAMP
|
||
**章节**: ${chapter_name}.txt
|
||
|
||
## 基本信息
|
||
|
||
| 项目 | 数值 |
|
||
|------|------|
|
||
| 字数 | $char_count 字 |
|
||
| 内心独白 | $inner 处 |
|
||
| 动作描写 | $action 处 |
|
||
| 对话 | $dialogue 段 |
|
||
| 环境描写 | $env 处 |
|
||
|
||
## 评分
|
||
|
||
| 维度 | 得分 | 说明 |
|
||
|------|------|------|
|
||
| 内心独白 | $inner_score/25 | $([ "$inner" -ge 3 ] && echo "✅" || echo "⚠️") |
|
||
| 动作描写 | $action_score/25 | $([ "$action" -ge 3 ] && echo "✅" || echo "⚠️") |
|
||
| 对话 | $dialogue_score/25 | $([ "$dialogue" -ge 4 ] && echo "✅" || echo "⚠️") |
|
||
| 环境描写 | $env_score/25 | $([ "$env" -ge 5 ] && echo "✅" || echo "⚠️") |
|
||
|
||
**总分**: $total/100
|
||
|
||
## 评估
|
||
|
||
$eval_status
|
||
|
||
$eval_detail
|
||
|
||
## 改进建议
|
||
|
||
- 根据评分针对性优化
|
||
- 参考牧神记原文提升描写技巧
|
||
|
||
---
|
||
*自动生成于 $TIMESTAMP*
|
||
EOF
|
||
|
||
echo ""
|
||
echo "✅ 反思报告已生成: $(basename "$reflection_file")"
|
||
ls -la "$reflection_file"
|