
=== 2026-06-11 14:20:45 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/pipeline.py /srv/music-files-platform-next/pipeline/batch-20260611-142045-0039e1/_input.json -o /srv/music-files-platform-next/pipeline/batch-20260611-142045-0039e1 -cg 2 -cs 2 --skip-feishu --profile __runtime_batch-20260611-142045-0039e1 --step1-only ===
[profile] ✅ Loaded profile '__runtime_batch-20260611-142045-0039e1' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260611-142045-0039e1.yaml
[   INFO   ] MusicExtractorSVM: no classifier models were configured by default
[   INFO   ] On connection Flux::flux → IIR::signal:
[   INFO   ] BUFFER SIZE MISMATCH: max=0 - asked for read size 4096
[   INFO   ] resizing buffer to 36040/4505
[   INFO   ] FrameCutter: dropping incomplete frame
[   INFO   ] On connection Flux::flux → IIR::signal:
[   INFO   ] BUFFER SIZE MISMATCH: max=0 - asked for read size 4096
[   INFO   ] resizing buffer to 36040/4505
[   INFO   ] FrameCutter: dropping incomplete frame
/usr/local/lib/python3.13/dist-packages/scipy/cluster/hierarchy.py:810: ClusterWarning: The symmetric non-negative hollow observation matrix looks suspiciously like an uncondensed distance matrix
  return linkage(y, method='ward', metric='euclidean')

======================================================================
music-pipeline3000 v2 | 2 songs
======================================================================
Gemini concurrency: 2 | Suno concurrency: 2
Output: /srv/music-files-platform-next/pipeline/batch-20260611-142045-0039e1
Skip Suno: False | Step1 only: True | Version: v4
======================================================================

[14:20:47] 🏥 Health check...
[14:20:48] ✅ qishui: OK
[14:20:48] ✅ netease: OK
[14:20:48] ✅ qq: OK

[14:20:48] 🔍 [01_Who Knows_20260611] Step 0: Fetching...
[14:20:48] 🔍 [02_Sins Of The Father_20260611] Step 0: Fetching...
[14:20:51] ✅ [01_Who Knows_20260611] Step 0: netease | 1189c lyrics
[14:20:51] ⬇️  [01_Who Knows_20260611] Step 0.5: Download from netease...
[14:20:52] ✅ [02_Sins Of The Father_20260611] Step 0: netease | 1309c lyrics
[14:20:52] ⬇️  [02_Sins Of The Father_20260611] Step 0.5: Download from netease...
[14:20:58] ✅ [01_Who Knows_20260611] Step 0.5: 4930184 bytes | 226.3s
[14:20:58] 🔬 [01_Who Knows_20260611] Step 0.75: Audio features...
[14:21:09] ✅ [02_Sins Of The Father_20260611] Step 0.5: 9149921 bytes | 470.5s
[14:21:09] 🔬 [02_Sins Of The Father_20260611] Step 0.75: Audio features...
[14:21:52] ✅ [01_Who Knows_20260611] Step 0.75: BPM=120.73 Key=C# major (53.7s)
[14:21:52] 🧠 [01_Who Knows_20260611] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-06-11T06:21:52.652Z", "trace_id": "batch-20260611-142045-0039e1", "song_key": "01_Who Knows_20260611", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260611-142045-0039e1/01_Who Knows_20260611/song_pgc.mp3", "has_features": true}}
/usr/local/lib/python3.13/dist-packages/scipy/cluster/hierarchy.py:810: ClusterWarning: The symmetric non-negative hollow observation matrix looks suspiciously like an uncondensed distance matrix
  return linkage(y, method='ward', metric='euclidean')
[14:22:15] ✅ [02_Sins Of The Father_20260611] Step 0.75: BPM=123.63 Key=C# major (65.4s)
[14:22:15] 🧠 [02_Sins Of The Father_20260611] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-06-11T06:22:15.313Z", "trace_id": "batch-20260611-142045-0039e1", "song_key": "02_Sins Of The Father_20260611", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260611-142045-0039e1/02_Sins Of The Father_20260611/song_pgc.mp3", "has_features": true}}
  📊 Gemini official: 42s | prompt_tokens=10696 completion=1586
{"__trace__": true, "ts": "2026-06-11T06:22:34.493Z", "trace_id": "batch-20260611-142045-0039e1", "song_key": "01_Who Knows_20260611", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 41.8, "cost_usd": null, "status": "success"}
{"__trace__": true, "ts": "2026-06-11T06:22:34.493Z", "trace_id": "batch-20260611-142045-0039e1", "song_key": "01_Who Knows_20260611", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 41.841}
[14:22:34] ⚠️  [01_Who Knows_20260611] Step 1.5: prompt 1202c > 1000c, compressing...
  📏 [01_Who Knows_20260611] prompt 1202c → 873c (smart truncate)
[14:22:34] ✅ [01_Who Knows_20260611] Step 1.5: prompt compressed 1202c → 873c
[14:22:34] ✅ [01_Who Knows_20260611] Step 1: 41.8s | prompt=873c | prompt_ok=True lyrics_ok=True
  📊 Gemini official: 45s | prompt_tokens=18525 completion=1344
{"__trace__": true, "ts": "2026-06-11T06:22:59.902Z", "trace_id": "batch-20260611-142045-0039e1", "song_key": "02_Sins Of The Father_20260611", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 44.5, "cost_usd": null, "status": "success"}
{"__trace__": true, "ts": "2026-06-11T06:22:59.902Z", "trace_id": "batch-20260611-142045-0039e1", "song_key": "02_Sins Of The Father_20260611", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 44.589}
[14:22:59] ⚠️  [02_Sins Of The Father_20260611] Step 1.5: prompt 1010c > 1000c, compressing...
  📏 [02_Sins Of The Father_20260611] prompt 1010c → 991c (smart truncate)
[14:22:59] ✅ [02_Sins Of The Father_20260611] Step 1.5: prompt compressed 1010c → 991c
[14:22:59] ✅ [02_Sins Of The Father_20260611] Step 1: 44.5s | prompt=991c | prompt_ok=True lyrics_ok=True

======================================================================
SUMMARY | 131s (2.2min)
======================================================================
✅ Done: 2 | ⏳ Awaiting Step 2: 0 | ❌ Failed: 0
[MasterDB] ✅ 批次 batch-20260611-142045-0039e1 → +0 新增, ~0 更新 | 总计 786 首
[exit 0]

=== 2026-06-11 14:23:01 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/orchestrate_phase2.py /srv/music-files-platform-next/pipeline/batch-20260611-142045-0039e1 --profile __runtime_batch-20260611-142045-0039e1 --resume-mode end --skip-feishu ===
[phase2] batch=batch-20260611-142045-0039e1 pending=2 groups=1
[phase2] group 1/1 -> 01_Who Knows_20260611, 02_Sins Of The Father_20260611
[profile] ✅ Loaded profile '__runtime_batch-20260611-142045-0039e1' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260611-142045-0039e1.yaml
[phase2] 🌐 01_Who Knows_20260611: target_language=auto
[profile] ✅ Loaded profile '__runtime_batch-20260611-142045-0039e1' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260611-142045-0039e1.yaml
[phase2] 🌐 02_Sins Of The Father_20260611: target_language=auto
[phase2] resume -> /usr/bin/python3 /srv/repos/3000music-platform-next/services/music-pipeline/scripts/pipeline.py /srv/music-files-platform-next/pipeline/batch-20260611-142045-0039e1/_manifest.json --resume /srv/music-files-platform-next/pipeline/batch-20260611-142045-0039e1 --profile __runtime_batch-20260611-142045-0039e1 --skip-feishu
[14:23:01] 🌐 [01_Who Knows_20260611] Step 2: target_language=auto → lang_mode=EN | single-turn
[14:23:01] 🤖 [01_Who Knows_20260611] Step 2 Turn 2: 36288 chars ≈ 9072 tokens → claude-sonnet-4-6
[14:23:01] 🌐 [02_Sins Of The Father_20260611] Step 2: target_language=auto → lang_mode=EN | single-turn
[14:23:01] 🤖 [02_Sins Of The Father_20260611] Step 2 Turn 2: 35771 chars ≈ 8942 tokens → claude-sonnet-4-6
[14:24:25] ⚠️  [01_Who Knows_20260611] Step 2 API attempt 1: JSON parse error: Expecting value: line 1 column 1 (char 0)
[14:25:07] ⚠️  [01_Who Knows_20260611] Step 2 API: originality 55% < 85% | 2 copied phrases
          ❗ "for a full beat, creating a sweet, lingering tension before resolving to the root.)" ~ "for a full beat, creating a sweet, lingering tension before resolving to the root.)" (100%)
          ❗ "for a full beat, creating a sweet, lingering tension before resolving to the root.)" ~ "for a full beat, creating a sweet, lingering tension before resolving to the root.)" (100%)
[14:25:07] 🔄 [01_Who Knows_20260611] Step 2 API: originality retry 1/3...
[14:25:23] ⚠️  [02_Sins Of The Father_20260611] Step 2 API attempt 1: JSON parse error: Expecting value: line 1 column 1 (char 0)
[14:25:59] ⚠️  [01_Who Knows_20260611] Step 2 API originality retry 1 failed: Expecting value: line 1 column 1 (char 0)
[14:25:59] ⚠️  [01_Who Knows_20260611] Step 2 API: best originality 55% after 3 retries
[14:26:05] ⚠️  [02_Sins Of The Father_20260611] Step 2 API: originality 59% < 85% | 0 copied phrases
[14:26:05] 🔄 [02_Sins Of The Father_20260611] Step 2 API: originality retry 1/3...
[14:26:23] 🎨 [01_Who Knows_20260611] Step 2 craft: 79/100
[14:26:23] ✅ [01_Who Knows_20260611] Step 2 API: 《Second Guess》 engine=? | 42.3s | in=21626 out=3272 | ~$0.114
[14:26:55] ⚠️  [02_Sins Of The Father_20260611] Step 2 API retry 1: originality 59%
[14:26:55] 🔄 [02_Sins Of The Father_20260611] Step 2 API: originality retry 2/3...
[14:27:53] ⚠️  [02_Sins Of The Father_20260611] Step 2 API originality retry 2 failed: Expecting value: line 1 column 1 (char 0)
[14:27:53] ⚠️  [02_Sins Of The Father_20260611] Step 2 API: best originality 59% after 3 retries
[14:28:14] 🎨 [02_Sins Of The Father_20260611] Step 2 craft: 79/100
[14:28:14] ✅ [02_Sins Of The Father_20260611] Step 2 API: 《Hollow Inheritance》 engine=? | 91.8s | in=43966 out=5965 | ~$0.221
{"timestamp": "2026-06-11T14:23:01.258401+08:00", "batch_dir": "/srv/music-files-platform-next/pipeline/batch-20260611-142045-0039e1", "profile": "__runtime_batch-20260611-142045-0039e1", "concurrency": 3, "resume_mode": "end", "pending_song_count": 2, "groups": [{"group_index": 1, "songs": ["/srv/music-files-platform-next/pipeline/batch-20260611-142045-0039e1/01_Who Knows_20260611", "/srv/music-files-platform-next/pipeline/batch-20260611-142045-0039e1/02_Sins Of The Father_20260611"], "success_count": 2, "failed_count": 0, "results": [{"status": "success", "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260611-142045-0039e1/01_Who Knows_20260611", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260611-142045-0039e1/01_Who Knows_20260611/step2_json_b.json", "agent_summary": "API direct: Second Guess", "returncode": 0, "stderr": "", "attempt": 1, "attempts": [{"status": "success", "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260611-142045-0039e1/01_Who Knows_20260611", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260611-142045-0039e1/01_Who Knows_20260611/step2_json_b.json", "agent_summary": "API direct: Second Guess", "returncode": 0, "stderr": "", "attempt": 1}]}, {"status": "success", "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260611-142045-0039e1/02_Sins Of The Father_20260611", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260611-142045-0039e1/02_Sins Of The Father_20260611/step2_json_b.json", "agent_summary": "API direct: Hollow Inheritance", "returncode": 0, "stderr": "", "attempt": 1, "attempts": [{"status": "success", "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260611-142045-0039e1/02_Sins Of The Father_20260611", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260611-142045-0039e1/02_Sins Of The Father_20260611/step2_json_b.json", "agent_summary": "API direct: Hollow Inheritance", "returncode": 0, "stderr": "", "attempt": 1}]}]}], "resume": {"status": "success", "returncode": 0, "stdout_tail": "\n======================================================================\nmusic-pipeline3000 v2 | 2 songs\n======================================================================\nGemini concurrency: 2 | Suno concurrency: 3\nOutput: /srv/music-files-platform-next/pipeline/batch-20260611-142045-0039e1\nSkip Suno: False | Step1 only: False | Version: v4\n======================================================================\n\n[14:28:16] 🏥 Health check...\n[14:28:18] ✅ qishui: OK\n[14:28:18] ✅ netease: OK\n[14:28:18] ✅ qq: OK\n\n  📝 [01_Who Knows_20260611] lyrics stripped: 4440c → 4432c\n[14:28:18] 🎵 [01_Who Knows_20260611] Step 3: Suno generation (weirdness=50, style_influence=50)...\n  📝 [02_Sins Of The Father_20260611] lyrics stripped: 4173c → 4166c\n[14:28:18] 🎵 [02_Sins Of The Father_20260611] Step 3: Suno generation (weirdness=50, style_influence=50)...\n  ✅ submitted: ['396bbea5', '8773f151']\n  🎵 396bbea5... → submitted\n  🎵 8773f151... → submitted\n  ✅ submitted: ['116a6cc3', '9975cbc2']\n  🎵 116a6cc3... → submitted\n  🎵 9975cbc2... → submitted\n  🎵 396bbea5... → queued\n  🎵 8773f151... → queued\n  🎵 116a6cc3... → queued\n  🎵 9975cbc2... → queued\n  🎵 396bbea5... → streaming\n  🎵 8773f151... → streaming\n  🎵 116a6cc3... → streaming\n  🎵 9975cbc2... → streaming\n  🎵 8773f151... → complete\n  🎵 396bbea5... → complete\n[14:31:29]    🎧 [02_Sins Of The Father_20260611] Song 1: https://cdn1.suno.ai/396bbea5-43cb-4614-b5e5-67f05d5654c2.mp3\n[14:31:29]    🎧 [02_Sins Of The Father_20260611] Song 2: https://cdn1.suno.ai/8773f151-c69c-4605-ba61-74b1943204f6.mp3\n[14:31:29] 🎛️ [02_Sins Of The Father_20260611] Step 3.5: 混音...\n[14:31:53]    🎚️ [02_Sins Of The Father_20260611] Song 1: pop | 低57/中40/高4%\n[14:32:14]    🎚️ [02_Sins Of The Father_20260611] Song 2: pop | 低61/中35/高4%\n[14:32:14] ✅ [02_Sins Of The Father_20260611] Step 3.5: 45.4s | 2 songs mixed\n  🎵 116a6cc3... → complete\n  🎵 9975cbc2... → complete\n[14:32:20]    🎧 [01_Who Knows_20260611] Song 1: https://cdn1.suno.ai/116a6cc3-f4b9-4d24-a942-cf6da16ca191.mp3\n[14:32:20]    🎧 [01_Who Knows_20260611] Song 2: https://cdn1.suno.ai/9975cbc2-156c-4027-b4ff-10f6d4b47867.mp3\n[14:32:20] 🎛️ [01_Who Knows_20260611] Step 3.5: 混音...\n[14:32:36]    🎚️ [01_Who Knows_20260611] Song 1: pop | 低69/中29/高2%\n[14:32:53]    🎚️ [01_Who Knows_20260611] Song 2: edm | 低78/中20/高2%\n[14:32:53] ✅ [01_Who Knows_20260611] Step 3.5: 32.9s | 2 songs mixed\n\n======================================================================\nSUMMARY | 275s (4.6min)\n======================================================================\n✅ Done: 2 | ⏳ Awaiting Step 2: 0 | ❌ Failed: 0\n[MasterDB] ✅ 批次 batch-20260611-142045-0039e1 → +2 新增, ~0 更新 | 总计 788 首\n", "stderr_tail": "[profile] ✅ Loaded profile '__runtime_batch-20260611-142045-0039e1' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260611-142045-0039e1.yaml\nUnclosed connection\nclient_connection: Connection<ConnectionKey(host='localhost', port=12138, is_ssl=False, ssl=True, proxy=None, proxy_auth=None, proxy_headers_hash=None)>\nUnclosed connection\nclient_connection: Connection<ConnectionKey(host='localhost', port=12138, is_ssl=False, ssl=True, proxy=None, proxy_auth=None, proxy_headers_hash=None)>\n", "summary": {"timestamp": "2026-06-11T14:32:53.088222+08:00", "wall_clock": 274.7, "total": 2, "success": 2, "awaiting_step2": 0, "failed": 0}}, "status": "success"}
[exit 0]

=== 2026-06-11 14:32:54 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/steps/step5_feishu.py /srv/music-files-platform-next/pipeline/batch-20260611-142045-0039e1 ===
[Feishu] ✅ Exported 2 songs to: https://ccnu62373cgc.feishu.cn/sheets/PH24sfUYnhiQLytm1Ctcokq6n4d
[Feishu] 📐 Expanded master sheet from 723 to 825 rows
[Feishu] ✅ Appended 2 new songs to master sheet (rows 724-725)
[MasterDB] ✅ 批次 batch-20260611-142045-0039e1 → +2 新增, ~0 更新 | 总计 725 首
[Feishu IM] ✅ Text sent: 📊 本批次结果表格：https://ccnu62373cgc.feishu.cn/sheets/PH24sfUYnhiQ
[14:33:04] 📨 Step 5: Sending files to Feishu IM...
[Feishu IM] ✅ [Second Guess] topic head sent (message_id=om_x100b6d9124d8ec9cb293a7591bda19f)
[Feishu IM] ✅ [Second Guess] Second Guess_V1_raw.mp3 replied
[Feishu IM] ✅ [Second Guess] Second Guess_V1_mixed.mp3 replied
[Feishu IM] ✅ [Second Guess] Second Guess_V2_raw.mp3 replied
[Feishu IM] ✅ [Second Guess] Second Guess_V2_mixed.mp3 replied
[Feishu IM] ✅ [Hollow Inheritance] topic head sent (message_id=om_x100b6d9125fda900b1fde144d2f2555)
[Feishu IM] ✅ [Hollow Inheritance] Hollow Inheritance_V1_raw.mp3 replied
[Feishu IM] ✅ [Hollow Inheritance] Hollow Inheritance_V1_mixed.mp3 replied
[Feishu IM] ✅ [Hollow Inheritance] Hollow Inheritance_V2_raw.mp3 replied
[Feishu IM] ✅ [Hollow Inheritance] Hollow Inheritance_V2_mixed.mp3 replied
[Feishu] ✅ Already on file server: /srv/music-files-platform-next/pipeline/batch-20260611-142045-0039e1
[Feishu] ✅ Archived to GDrive: /mnt/gdrive/music-pipeline/batch-20260611-142045-0039e1
[Feishu] 📦 Local files kept at: /srv/music-files-platform-next/pipeline/batch-20260611-142045-0039e1

📊 https://ccnu62373cgc.feishu.cn/sheets/PH24sfUYnhiQLytm1Ctcokq6n4d
[exit 0]
