Browse Source

feat(tool): 摸鱼内容块结构不规则化+数字随机化

- 命令不再强制成对(约一半带输出),块大小随机,插入随机空行打散
- 新增裸输出行池(错误/告警/PASS等可重复)
- gen_rand_lines 动态生成随机数字(耗时/大小/进度/测试数),消除固定值反复出现
- 实测两次运行块结构明显不同
b 5 days ago
parent
commit
53413c9ae6
1 changed files with 49 additions and 9 deletions
  1. 49 9
      tool-moyu.sh

+ 49 - 9
tool-moyu.sh

@@ -95,6 +95,38 @@ STANDALONE=(
 	"🔒 reviewing security config..."
 )
 
+# 输出/日志/错误行(可重复,作为“裸输出”随机插入)
+OUTPUTS=(
+	"PASS"
+	"ok"
+	"HTTP 200"
+	"Active: active (running)"
+	"[GIN-debug] Listening and serving HTTP on :8081"
+	"warn: chunk size exceeds 4000 kB"
+	"ERROR: failed to open source \"file://internal/migrations\""
+	"FATAL: database connection refused, retrying..."
+	"0 error(s), 5 warning(s)"
+	"migrations completed successfully"
+	"no type errors found"
+	"✓ 307 modules transformed."
+	"Build succeeded after 3 retries"
+)
+
+# 动态随机数字行(消除固定值反复出现)
+gen_rand_lines() {
+	local n=$((1 + RANDOM % 3))   # 1-3 条
+	local i r
+	for ((i=0;i<n;i++)); do
+		r=$((RANDOM % 4))
+		case $r in
+			0) echo "ok  $(awk 'BEGIN{srand(); printf "%.3f", 0.05+rand()*1.5}')s" ;;
+			1) echo "dist/assets/index-*.js  $(awk 'BEGIN{srand(); printf "%.2f", 8+rand()*300}') kB │ gzip: $(awk 'BEGIN{srand(); printf "%.2f", 3+rand()*80}') kB" ;;
+			2) echo "Progress: $((5+RANDOM%95))%..." ;;
+			3) echo "$((1+RANDOM%40)) test(s), $((RANDOM%4)) failed" ;;
+		esac
+	done
+}
+
 # 返回 $1 个不重复随机下标(0..$2-1)
 pick_unique() {
 	local count=$1 pool=$2
@@ -102,23 +134,31 @@ pick_unique() {
 	seq 0 $((pool-1)) | sort -R | head -n "$count"
 }
 
-# 随机生成一段“工作日志”:命令对 + 独立行,洗牌打乱,尽量不重复
-# 同一次运行内命令对与独立行均不重复,避免“重复模式”
+# 随机生成一段“工作日志”:命令(约一半带输出)+独立行+裸输出+动态数字,洗牌打乱
+# 块大小不规则、数字随机化,消除固定模式与重复数字
 gen_random_content() {
-	local cmdc=$((2 + RANDOM % 3))   # 2-4 对命令
-	local stc=$((3 + RANDOM % 4))   # 3-6 独立行
-	local ci si i
+	local cmdc=$((1 + RANDOM % 5))   # 1-5 条命令
+	local stc=$((2 + RANDOM % 6))   # 2-7 条独立行
+	local ci si oi i
 	LINES=()
-	# 命令对(不重复抽取),命令后紧跟其输出
+	# 命令:约一半紧跟输出(不一定成对,制造不规则块)
 	for ci in $(pick_unique "$cmdc" "${#COMMANDS[@]}"); do
 		LINES+=("\$ ${COMMANDS[$ci]}")
-		LINES+=("${COMMAND_OUT[$ci]}")
+		if [ $((RANDOM % 2)) -eq 0 ]; then LINES+=("${COMMAND_OUT[$ci]}"); fi
+		[ $((RANDOM % 4)) -eq 0 ] && LINES+=("")   # 随机空行
 	done
-	# 独立行(不重复抽取
+	# 独立行(不重复)
 	for si in $(pick_unique "$stc" "${#STANDALONE[@]}"); do
 		LINES+=("${STANDALONE[$si]}")
+		[ $((RANDOM % 3)) -eq 0 ] && LINES+=("")   # 随机空行
+	done
+	# 裸输出行(可重复)
+	for ((i=0;i<$((2+RANDOM%4));i++)); do
+		LINES+=("${OUTPUTS[$((RANDOM % ${#OUTPUTS[@]}))]}")
 	done
-	# 洗牌打乱整体顺序,避免命令总是集中在一处
+	# 动态随机数字行
+	while IFS= read -r l; do LINES+=("$l"); done < <(gen_rand_lines)
+	# 洗牌打乱整体顺序
 	local idx=($(seq 0 $((${#LINES[@]}-1)) | sort -R))
 	local shuffled=()
 	for i in "${idx[@]}"; do shuffled+=("${LINES[$i]}"); done