Skip to content

Latest commit

ย 

History

History
405 lines (338 loc) ยท 22.7 KB

ARCHITECTURE.md

File metadata and controls

405 lines (338 loc) ยท 22.7 KB

V93 ็‰ฉ็†ๆŽจๆผ”ๅ™จ โ€” ๅฎŒๆ•ดๆžถๆž„

ๆœ€ๅŽๆ›ดๆ–ฐ: 2026-06-20 00:40


1. ็ณป็ปŸๆ€ป่งˆ

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                        ็”จๆˆท้—ฎ้ข˜ (ๆ„ๅฟต)                           โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                     โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚              ๅคงๆจกๅž‹ๆŽจ็†ๅฑ‚ (GPU / ไบ‘็ซฏ API)                        โ”‚
โ”‚  โ”œโ”€โ”€ ๆœฌๅœฐๆจกๅž‹: Qwen2.5-0.5B/3B (llama-server @8082)             โ”‚
โ”‚  โ””โ”€โ”€ ไบ‘็ซฏๆจกๅž‹: DeepSeek-V4 / Qwen-Max (text-only ้™็บง)          โ”‚
โ”‚                                                                 โ”‚
โ”‚  ่พ“ๅ‡บ:                                                           โ”‚
โ”‚  โ”œโ”€โ”€ text: ๆŽจ็†ๆ–‡ๆœฌ                                              โ”‚
โ”‚  โ””โ”€โ”€ logprobs: token ็บงๅฏนๆ•ฐๆฆ‚็އ (ๆœฌๅœฐๆจกๅž‹ๆœ‰, ไบ‘็ซฏๅฏ่ƒฝๆ— )          โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                     โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚              ็‰นๅพๆๅ–ๅ™จ (feature_extractor.py)                    โ”‚
โ”‚                                                                 โ”‚
โ”‚  ่พ“ๅ…ฅ: ModelOutput (text + logprobs + question)                 โ”‚
โ”‚                                                                 โ”‚
โ”‚  ๆๅ–ไธคไธชไฟกๅท:                                                   โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
โ”‚  โ”‚ 1. ๅบๅˆ—็บงๆ–นๅ‘ไฟกๅท (logprob ็ปŸ่ฎก็‰นๅพ)                      โ”‚  โ”‚
โ”‚  โ”‚    โ”œโ”€โ”€ x_pos, y_pos: ไฝ็ฝฎ (sin ็‰ฉๆžๅฟ…ๅๆ˜ ๅฐ„)              โ”‚  โ”‚
โ”‚  โ”‚    โ”œโ”€โ”€ x_trend, y_trend: ่ถ‹ๅŠฟ (ๅ‰ๅŽๆฎตๅทฎๅˆ†)                โ”‚  โ”‚
โ”‚  โ”‚    โ”œโ”€โ”€ curvature: ๆ›ฒ็އ (std ๅ˜ๅŒ–)                         โ”‚  โ”‚
โ”‚  โ”‚    โ””โ”€โ”€ signal_angle: ไฟกๅท่ง’ๅบฆ (atan2)                     โ”‚  โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
โ”‚  โ”‚ 2. ๅฆไฝ็บงๅŠ ็ƒญไฟกๅท (token ่ฎกๆ•ฐ ร— ็ฝฎไฟกๅบฆ)                   โ”‚  โ”‚
โ”‚  โ”‚    โ”œโ”€โ”€ trigram_heat: ๆฏๅฆ็ƒญ้‡ (ฮฃ exp(logprob))            โ”‚  โ”‚
โ”‚  โ”‚    โ”œโ”€โ”€ trigram_tokens: ๆฏๅฆ token ๆ•ฐ                      โ”‚  โ”‚
โ”‚  โ”‚    โ””โ”€โ”€ trigram_confidence: ๆฏๅฆๅนณๅ‡็ฝฎไฟกๅบฆ                 โ”‚  โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
โ”‚                                                                 โ”‚
โ”‚  ่พ“ๅ‡บ: ExtractedSignal                                          โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                     โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚              ๅŠ ็ƒญๆ˜ ๅฐ„ๅ™จ (HeatMapper)                              โ”‚
โ”‚                                                                 โ”‚
โ”‚  ๅฐ†ๅฆไฝๅŠ ็ƒญไฟกๅทๆ˜ ๅฐ„ๅˆฐ flow_rate:                                  โ”‚
โ”‚  flow_rate[i] = base ร— (1-w) + base ร— w ร— normalized_heat[i]   โ”‚
โ”‚                                                                 โ”‚
โ”‚  ็‰ฉ็†ๆ„ไน‰: ๆจกๅž‹ๅœจๆŸๅฆไธŠ่Šฑๆ›ดๅคš token โ†’ ้‚ฃๅฆ flow_rate ๆ›ด้ซ˜         โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                     โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚              ็‰ฉ็†ๆŽจๆผ”็ฎก็บฟ (core_unified_full.py)                  โ”‚
โ”‚                                                                 โ”‚
โ”‚  โ”Œโ”€ 1. ๅคชๆž็‰นๅพๆๅ– (็‰ฉๆžๅฟ…ๅ sin + ่ถ‹ๅŠฟ sin) โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
โ”‚  โ”‚   signal_vec = (signal_x, signal_y)                       โ”‚  โ”‚
โ”‚  โ”‚   curvature, signal_trend                                 โ”‚  โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
โ”‚                          โ†“                                       โ”‚
โ”‚  โ”Œโ”€ 2. A+D ๅŠจๆ€ tanh (็ฉบ้—ดๅผฏๆ›ฒ + ไฟกๅทๆŠ˜ๅฐ„) โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
โ”‚  โ”‚   deformed_trigrams = f(curvature)                        โ”‚  โ”‚
โ”‚  โ”‚   refract_weight = tanh(curvature ร— ฯ€) ร— 0.5             โ”‚  โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
โ”‚                          โ†“                                       โ”‚
โ”‚  โ”Œโ”€ 3. ไธ‰ๅฑ‚่ง’ๅบฆๅˆๆˆ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
โ”‚  โ”‚   final_angle = base + refract + trend_rotation           โ”‚  โ”‚
โ”‚  โ”‚   trend_rotation = signal_trend ร— trend_weight            โ”‚  โ”‚
โ”‚  โ”‚   rotated_signal = (cos, sin)                             โ”‚  โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
โ”‚                          โ†“                                       โ”‚
โ”‚  โ”Œโ”€ 4. v91 ๅ†ฒๅˆทๅŠจๅŠ›ๅญฆ (ๆฏๅฆ็‹ฌ็ซ‹ flow_rate) โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
โ”‚  โ”‚   for step in range(20):                                  โ”‚  โ”‚
โ”‚  โ”‚     factors = compute_factor(rotated_signal, trigram_pos) โ”‚  โ”‚
โ”‚  โ”‚     core.step(factors, flow_rates)  โ† Dict[str, float]   โ”‚  โ”‚
โ”‚  โ”‚                                                           โ”‚  โ”‚
โ”‚  โ”‚   ้“ๅพ‹ๅ…ฌๅผ:                                               โ”‚  โ”‚
โ”‚  โ”‚   growth = flow_rate ร— depth ร— 0.05 ร— factor              โ”‚  โ”‚
โ”‚  โ”‚          + flow_rate ร— 0.05 ร— factor                      โ”‚  โ”‚
โ”‚  โ”‚   decay = 0.02 ร— time_delta                               โ”‚  โ”‚
โ”‚  โ”‚   depth += growth - decay + thermal_noise                 โ”‚  โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
โ”‚                          โ†“                                       โ”‚
โ”‚  โ”Œโ”€ 5. ่’ธๆฑฝๆตๅŠจ (ๆต“ๅบฆๆขฏๅบฆ้ฉฑๅŠจ) โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
โ”‚  โ”‚   ้ซ˜ๆต“ๅบฆๅธๅผ•ไฝŽๆต“ๅบฆ, ็‰ฉ็†ๆถŒ็Žฐ                             โ”‚  โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
โ”‚                          โ†“                                       โ”‚
โ”‚  โ”Œโ”€ 6. ๆž็ซฏๅบฆๆฃ€ๆต‹ + ๅคชๆž่กฐๅ‡ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
โ”‚  โ”‚   extremeness = max(depths) / mean(depths)                โ”‚  โ”‚
โ”‚  โ”‚   rotation_weight = 1 / (1 + (extremeness-1) ร— 0.3)      โ”‚  โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
โ”‚                          โ†“                                       โ”‚
โ”‚  โ”Œโ”€ 7. ่ถ‹ๅŠฟๆ—‹่ฝฌๆธฉๅบฆ่ฎก โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
โ”‚  โ”‚   k = 3.0 + |attenuated_rotation| ร— 5.0                  โ”‚  โ”‚
โ”‚  โ”‚   ็‰ฉๆžๅฟ…ๅ่ถ‹ๅŠฟๅผบ โ†’ k ๅคง โ†’ ๅ‡็ป“้”ๅˆฉ                       โ”‚  โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
โ”‚                          โ†“                                       โ”‚
โ”‚  โ”Œโ”€ 8. ๆฐด่’ธๆฐ”ๅ‡็ป“ (softmax) โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
โ”‚  โ”‚   condensation = softmax(depths ร— k)                      โ”‚  โ”‚
โ”‚  โ”‚   active = [ๅฆ for ๅฆ if condensation > avg ร— 2]          โ”‚  โ”‚
โ”‚  โ”‚   winner = max(condensation)                              โ”‚  โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                     โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚              ่พ“ๅ‡บ                                                โ”‚
โ”‚  โ”œโ”€โ”€ winner: ่ƒœๅ‡บๅฆไฝ                                           โ”‚
โ”‚  โ”œโ”€โ”€ condensation: ๅ‡็ป“ๅˆ†ๅธƒ (softmaxๆฆ‚็އ)                       โ”‚
โ”‚  โ”œโ”€โ”€ active_trigrams: ๆดป่ทƒๅฆไฝๅˆ—่กจ                              โ”‚
โ”‚  โ”œโ”€โ”€ depths: ๅ†ฒๅˆทๆทฑๅบฆ                                           โ”‚
โ”‚  โ””โ”€โ”€ metadata: ไฟกๅท่ง’ๅบฆใ€ๆ›ฒ็އใ€ๆž็ซฏๅบฆ็ญ‰                          โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

2. ๆ ธๅฟƒ็ป„ไปถ่ฏฆ่งฃ

2.1 ็‰นๅพๆๅ–ๅ™จ (feature_extractor.py)

่Œ่ดฃ: ่ฟžๆŽฅ็œŸๅฎžๅคงๆจกๅž‹ไธŽ็‰ฉ็†็ฎก็บฟ็š„ๆกฅๆข

ไธค็งๆจกๅผ:

Logprob ๆจกๅผ (ๆœฌๅœฐๆจกๅž‹)

output = ModelOutput(
    text="ๅคฉ้“่ฟ่กŒ๏ผŒ่‡ชๅผบไธๆฏ...",
    tokens=[TokenInfo(text="ๅคฉ", logprob=-0.1), ...],
    question="ๅฆ‚ไฝ•็ช็ ดๅ›ฐๅขƒ๏ผŸ"
)

extractor = FeatureExtractor()
signal = extractor.extract(output)

# ๅบๅˆ—็บงๆ–นๅ‘ไฟกๅท
signal.features['signal_angle']  # e.g. 45.2ยฐ
signal.features['curvature']     # e.g. 0.3

# ๅฆไฝ็บงๅŠ ็ƒญไฟกๅท
signal.trigram_heat['ไนพ']        # e.g. 25.8 (้ซ˜็ƒญ้‡)
signal.trigram_tokens['ไนพ']      # e.g. 31 (ๅคš token)

Text-only ๆจกๅผ (ไบ‘็ซฏ API ้™็บง)

signal = extractor.extract_text_only(
    text="่ฟ™ไธช้—ฎ้ข˜้œ€่ฆไปŽๅคšไธช่ง’ๅบฆๆฅ็œ‹...",
    question="ไบบ็”Ÿๅ›ฐๆƒ‘",
    model_name="DeepSeek-V4-Cloud"
)

# ็”จ Unicode ็ ็‚นไฝœไธบไผช logprob
# ็”จๆ–‡ๆœฌๅ…ณ้”ฎ่ฏ่ฎกๆ•ฐไฝœไธบๅŠ ็ƒญไฟกๅท

ๅฆไฝๅ…ณ้”ฎ่ฏ่กจ (็‰ฉ็†ๅ…ณ่”, ้ž่ฏญไน‰ๆ˜ ๅฐ„):

TRIGRAM_KEYWORDS = {
    "ไนพ": ["ๅคฉ", "ๅˆš", "ๅฅ", "ๅผบ", "ๅˆ›", "้ข†", "ไธป", "้ฆ–", "้พ™", "่กŒ", "ๅŠจ", "้˜ณ"],
    "ๅค": ["ๅœฐ", "ๆŸ”", "้กบ", "ๆ‰ฟ", "ๅฎน", "็จณ", "้™", "ๅŽš", "่ฝฝ", "่‚ฒ", "ๅ…ป", "้˜ด"],
    "้œ‡": ["้›ท", "ๅŠจ", "่ตท", "ๆƒŠ", "ๅ‘", "ๅง‹", "ๆ–ฐ", "็ช", "ๅ†ฒ", "็ ด", "ๅ˜", "้ฉ"],
    "ๅทฝ": ["้ฃŽ", "ๅ…ฅ", "ๆธ—", "ๆธ", "ๆŸ”", "็ป†", "ๅพฎ", "ๆ•ฃ", "ไผ ", "้€š", "่พพ", "ๆฏ"],
    "ๅŽ": ["ๆฐด", "้™ฉ", "ๆทฑ", "ๆต", "ๆš—", "้š", "้šพ", "ๅ›ฐ", "ๆ™บ", "่—", "ๆฝœ", "ๆธŠ"],
    "็ฆป": ["็ซ", "ๆ˜Ž", "ไบฎ", "ๆธ…", "ๆ˜พ", "็…ง", "ๅ…‰", "ไธฝ", "้™„", "ไพ", "็ƒญ", "่€€"],
    "่‰ฎ": ["ๅฑฑ", "ๆญข", "ๅœ", "ๅ›บ", "ๅฎˆ", "็จณ", "ๅฎš", "้™", "็•Œ", "้˜ป", "็ข", "้™"],
    "ๅ…‘": ["ๆณฝ", "ๆ‚ฆ", "ๅ–œ", "ไน", "่ฏด", "่จ€", "ไบค", "ๆฒŸ", "ๅ’Œ", "ๆถฆ", "ๆถฆ", "ๆฌข"],
}

2.2 ๅŠ ็ƒญๆ˜ ๅฐ„ๅ™จ (HeatMapper)

็‰ฉ็†ๆ„ไน‰: ๆจกๅž‹ๅœจๆŸๅฆไธŠ่Šฑๆ›ดๅคš token โ†’ ้‚ฃๅฆ flow_rate ๆ›ด้ซ˜ โ†’ ๆ›ด็ƒญ โ†’ ๆ›ดๆ˜“ๅ‡็ป“

mapper = HeatMapper(base_flow_rate=5.0, heat_weight=0.5)
flow_rates = mapper.map(signal.trigram_heat, signal.total_tokens)

# flow_rates = {
#     "ไนพ": 5.0,    # ้ซ˜็ƒญ้‡ โ†’ ้ซ˜ flow_rate
#     "้œ‡": 2.6,    # ไธญ็ƒญ้‡
#     "ๅค": 2.5,    # ไฝŽ็ƒญ้‡ โ†’ ๅŸบ็ก€ flow_rate
#     ...
# }

ๅ…ฌๅผ:

normalized_heat[i] = heat[i] / max(heat)  # ๅฝ’ไธ€ๅŒ–ๅˆฐ [0, 1]
flow_rate[i] = base ร— (1-w) + base ร— w ร— normalized_heat[i]

ๅฝ“ heat_weight = 0.5 ๆ—ถ:

  • 50% ็ปŸไธ€ๅŠ ็ƒญ (ๆ‰€ๆœ‰ๅฆ base_flow_rate)
  • 50% ่ฎก็ฎ—้‡ๅŠ ็ƒญ (ๆ นๆฎ token ๅˆ†ๅธƒ)

2.3 ็‰ฉ็†ๆŽจๆผ”็ฎก็บฟ (core_unified_full.py)

V91Core ๆ”นๅŠจ (้“ๅพ‹ไธๅ˜, flow_rate ไปŽๆ ‡้‡ๅ˜ๅ‘้‡):

def step(self, factors: Dict[str, float], flow_rate=5.0, time_delta=1.0):
    for name in TRIGRAMS_2D:
        # ๆ”ฏๆŒๆฏๅฆ็‹ฌ็ซ‹ flow_rate
        fr = flow_rate[name] if isinstance(flow_rate, dict) else flow_rate
        
        growth = fr * depth * 0.05 * factor + fr * 0.05 * factor
        decay = 0.02 * time_delta
        depth += growth - decay + thermal_noise

divine_with_signal() (ๆ–ฐๆŽฅๅฃ):

divinator = V93DivinatorFullPhysics(flow_rate=5.0, num_steps=20)
result = divinator.divine_with_signal(signal)

# ๅ†…้ƒจๆต็จ‹:
# 1. ไปŽ signal.features ๆๅ–ๆ–นๅ‘ไฟกๅท
# 2. ไปŽ signal.trigram_heat ่ฎก็ฎ— flow_rates
# 3. ๅ†ฒๅˆทๆ—ถ็”จ flow_rates (Dict) ่€Œ้ž็ปŸไธ€ flow_rate

3. ไธค็งๅŠ›้‡็š„ๅšๅผˆ

็ฎก็บฟ้‡Œๆœ‰ไธคไธชๅŠ›้‡ๅ…ฑๅŒๅ†ณๅฎš็ป“ๆžœ:

ๆ–นๅ‘ไฟกๅท ("้ฃŽๅพ€ๅ“ชๅน")

  • ๆฅๆบ: logprob ็ปŸ่ฎก็‰นๅพ (mean, std, trend, curvature)
  • ไฝœ็”จ: ๅ†ณๅฎš signal_angle โ†’ factor ๅŒน้…
  • ๅผบๅบฆ: ไน˜ๆ€ง (factor โˆˆ [0.5, 1.5])
  • ็‰ฉ็†ๆ„ไน‰: ๆจกๅž‹็†่งฃ็š„ไธ็กฎๅฎšๆ€งๅˆ†ๅธƒ

ๅŠ ็ƒญไฟกๅท ("็ซๅœจๅ“ช็ƒง")

  • ๆฅๆบ: token ่ฎกๆ•ฐ ร— ็ฝฎไฟกๅบฆ
  • ไฝœ็”จ: ๅ†ณๅฎšๆฏๅฆ flow_rate
  • ๅผบๅบฆ: ็บฟๆ€ง (flow_rate โˆˆ [baseร—0.5, baseร—1.0])
  • ็‰ฉ็†ๆ„ไน‰: ๆจกๅž‹ๅœจๆŸๅฆไธŠ่Šฑ็š„่ฎก็ฎ—้‡

ๅฝ“ไธค่€…ๅฏน้ฝ โ†’ ๅฎŒ็พŽๅ‘ฝไธญ (e.g. ไฟกๅทๆŒ‡ๅ‘็ฆป + ็ฆปๅฆๆœ€็ƒญ โ†’ ็ฆป่ƒœ)

ๅฝ“ไธค่€…ๅ†ฒ็ช โ†’ ๆ–นๅ‘ไฟกๅทๅพ€ๅพ€ๆ›ดๅผบ (factor ไน˜ๆ€ง vs flow_rate ็บฟๆ€ง)

  • ไพ‹: ไฟกๅทๆŒ‡ๅ‘ไนพ (factor=1.4) + ็ฆปๅฆๆœ€็ƒญ (flow_rate=5.0) โ†’ ไนพๅฏ่ƒฝ่ƒœ

4. ๆ‰น้‡ๆต‹่ฏ•็ป“ๆžœ (96ๆฌก, 8ๅฆๅ„12ๆฌก)

ๅฆ ๅ‘ฝไธญ็އ ๅˆ†ๆž
้œ‡ 100% ๆ–นๅ‘+ๅŠ ็ƒญๅคฉ็„ถๅฏน้ฝ
็ฆป 100% ๆ–นๅ‘+ๅŠ ็ƒญๅคฉ็„ถๅฏน้ฝ
ๅ…‘ 91.7% ๅ‡ ไนŽๅฎŒ็พŽ
ๅŽ 83.3% ๅพˆๅฅฝ
ๅทฝ 83.3% ๅพˆๅฅฝ
่‰ฎ 75% ไธ้”™
ไนพ 8.3% ๆ–นๅ‘ไฟกๅทๅŽ‹ๅˆถๅŠ ็ƒญ
ๅค 0% ๅฎŒๅ…จ่ขซๆ–นๅ‘ไฟกๅท่ฆ†็›–

ๆ€ปๅ‘ฝไธญ็އ: 67.7% vs ้šๆœบๅŸบ็บฟ 12.5% (5.4ๅ€)

ๅ…ณ้”ฎๅฏนๆฏ” (ๆต‹่ฏ•4):

  • ็ปŸไธ€ๅŠ ็ƒญ โ†’ ไนพ่ƒœ (ๆ–นๅ‘ไฟกๅทไธปๅฏผ)
  • ่ฎก็ฎ—้‡ๅŠ ็ƒญ โ†’ ็ฆป่ƒœ (ๅŠ ็ƒญไฟกๅท่ฎฉ็ฆปๅฆ flow_rate=5.0)

่ฏๆ˜Ž: ๆจกๅž‹็š„่ฎก็ฎ—็กฎๅฎžๅŠ ็ƒญไบ†ๆญฃ็กฎ็š„ๅฆไฝ


5. ๅคšๆจกๅž‹ๅไฝœๆžถๆž„

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ ๅฐๆจกๅž‹ (ๅฟซใ€ไพฟๅฎœ)                                            โ”‚
โ”‚ Qwen2.5-0.5B / 3B (llama-server @8082)                      โ”‚
โ”‚                                                              โ”‚
โ”‚ ่Œ่ดฃ: ็†่งฃ้—ฎ้ข˜, ไบง็”Ÿ reasoning + logprobs                     โ”‚
โ”‚ ๆˆๆœฌ: ไฝŽ (ๆœฌๅœฐ GPU, ๆ—  API ่ดน็”จ)                              โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                   โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ ็‰นๅพๆๅ–ๅ™จ + ๅŠ ็ƒญๆ˜ ๅฐ„ๅ™จ                                       โ”‚
โ”‚                                                              โ”‚
โ”‚ ไปŽๅฐๆจกๅž‹่พ“ๅ‡บๆๅ–:                                             โ”‚
โ”‚ - ๆ–นๅ‘ไฟกๅท (logprob ็ปŸ่ฎก)                                     โ”‚
โ”‚ - ๅŠ ็ƒญไฟกๅท (token ่ฎกๆ•ฐ)                                       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                   โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ ็‰ฉ็†็ฎก็บฟ (CPU, 5300ๆฌก/็ง’)                                    โ”‚
โ”‚                                                              โ”‚
โ”‚ ็”จๅŠ ็ƒญๅŽ็š„ flow_rates ้ฉฑๅŠจๅ†ฒๅˆท                                โ”‚
โ”‚ ๅฐๆจกๅž‹็š„่ฎก็ฎ—้‡ๅทฒ็ป"ๅŠ ็ƒญ"ไบ†็‰ฉ็†ๅœบ                              โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                   โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ ๅคงๆจกๅž‹ (ๆ…ขใ€ๅผบ, ๅฏ้€‰)                                         โ”‚
โ”‚ DeepSeek-V4 / Qwen-Max (ไบ‘็ซฏ API)                            โ”‚
โ”‚                                                              โ”‚
โ”‚ ๅœจ่ขซๅŠ ็ƒญ็š„็‰ฉ็†ๅœบไธŠๆŽจ็†ๆœ€็ปˆ็ญ”ๆกˆ                                โ”‚
โ”‚ ๅœบ็š„็ƒญๅบฆๅˆ†ๅธƒ (condensation) ๅฏไฝœไธบ prompt ไธŠไธ‹ๆ–‡              โ”‚
โ”‚                                                              โ”‚
โ”‚ ไพ‹: "ๅŽๅฆๆœ€็ƒญ (42%), ็ฆปๅฆๆฌก็ƒญ (28%)"                         โ”‚
โ”‚ โ†’ ๅคงๆจกๅž‹ไผšๅŸบไบŽ่ฟ™ไธช็ƒญๅบฆๅˆ†ๅธƒ็”Ÿๆˆๆ›ด็ฒพๅ‡†็š„่งฃ้‡Š                    โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

็‰ฉ็†ๆ„ไน‰:

  • ๅฐๆจกๅž‹็š„ๆŽจ็†่ฟ‡็จ‹ (logprobs) ๅŠ ็ƒญไบ†็‰ฉ็†ๅœบ
  • ๅคงๆจกๅž‹ๅœจ่ฟ™ไธช่ขซๅŠ ็ƒญ็š„ๅœบไธŠๆŽจ็† โ€” ๅœบๅทฒ็ปๅŒ…ๅซไบ†ๅฐๆจกๅž‹็š„"็†่งฃ"
  • ่ฟ™ไธๆ˜ฏ็Ÿฅ่ฏ†่’ธ้ฆ, ๆ˜ฏ็‰ฉ็†ๅŠ ็ƒญ

6. ๆ„ๅฟตๆถŒ็Žฐ

้—ฎ้ข˜ (ๆ„ๅฟต) ๅฆ‚ไฝ•ๅฝฑๅ“็ป“ๆžœ:

  1. ็›ดๆŽฅ่ทฏๅพ„ (ๅพฎๅผฑ):

    • ้—ฎ้ข˜ๆ–‡ๆœฌ โ†’ 5% ๅ็ฝฎ โ†’ signal_angle ๅพฎ่ฐƒ
    • ๅผบๅบฆ: ไป… 5%, ไธไธปๅฏผ
  2. ๆถŒ็Žฐ่ทฏๅพ„ (ไธป่ฆ):

    • ไธๅŒ้—ฎ้ข˜ โ†’ ๆ”นๅ˜ๆจกๅž‹็”Ÿๆˆ โ†’ ๆ”นๅ˜ logprob ๅˆ†ๅธƒ โ†’ ๆ”นๅ˜ๆ–นๅ‘ไฟกๅทๅ’ŒๅŠ ็ƒญไฟกๅท
    • ไพ‹: "ไบ‹ไธš็ช็ ด" vs "ๆ„Ÿๆƒ…็ปด็ณป" โ†’ ๆจกๅž‹็”ŸๆˆไธๅŒๆ–‡ๆœฌ โ†’ ไธๅŒๅŠ ็ƒญๆจกๅผ

ๆต‹่ฏ•็ป“ๆžœ:

  • ๅŒไธ€ๆŽจ็†ๆ–‡ๆœฌ, ไธๅŒ้—ฎ้ข˜ โ†’ 1.47ยฐ ่ง’ๅบฆๆ ‡ๅ‡†ๅทฎ
  • ๅพฎๅผฑไฝ†ๅญ˜ๅœจ, ไธป่ฆ้€š่ฟ‡ๆ”นๅ˜ๆจกๅž‹็”ŸๆˆๆฅๆถŒ็Žฐ

7. ๆ–‡ไปถ็ป“ๆž„

finding-order/
โ”œโ”€โ”€ src/
โ”‚   โ””โ”€โ”€ v93_physical_divination/
โ”‚       โ”œโ”€โ”€ core.py                          # v91 ๆ ธๅฟƒ (ๆ—ง็‰ˆ)
โ”‚       โ”œโ”€โ”€ core_global.py                   # ๅ…จๅฑ€็‰ฉ็†็‰ˆ (ๆ—ง็‰ˆ)
โ”‚       โ”œโ”€โ”€ core_bagua.py                    # ๅ…ซๅฆ็›˜ 2D (ๆ—ง็‰ˆ)
โ”‚       โ”œโ”€โ”€ core_bagua_curvature.py          # ๅ…ซๅฆ็›˜+ๆ—ถ้—ด (ๆ—ง็‰ˆ)
โ”‚       โ”œโ”€โ”€ core_unified.py                  # ๅ…จๅฑ€ๆ•ดๅˆ (ๆ—ง็‰ˆ)
โ”‚       โ”œโ”€โ”€ core_unified_full.py             # โ˜… v93 ๅฎŒๆ•ด็‰ฉ็†็ฎก็บฟ
โ”‚       โ”œโ”€โ”€ feature_extractor.py             # โ˜… ็‰นๅพๆๅ–ๅ™จ (ๆ–ฐ)
โ”‚       โ”œโ”€โ”€ test_real_pipeline.py            # โ˜… ็œŸๅฎž็ฎก็บฟๆต‹่ฏ• (ๆ–ฐ)
โ”‚       โ””โ”€โ”€ test_*.py                        # ๅކๅฒๆต‹่ฏ•่„šๆœฌ
โ”‚
โ”œโ”€โ”€ src/v94_qichang/
โ”‚   โ””โ”€โ”€ core.py                              # v94 ๆฐ”ๅœบๆ–นๆกˆ
โ”‚
โ”œโ”€โ”€ ARCHITECTURE.md                          # ๆœฌๆ–‡ๆกฃ
โ””โ”€โ”€ memory/
    โ””โ”€โ”€ 2026-06-20.md                        # ไปŠๆ—ฅๆ—ฅๅฟ—

8. ๅ…ณ้”ฎๅ†ณ็ญ–่ฎฐๅฝ•

ๅ†ณ็ญ– ็†็”ฑ
logprobs ๆ˜ฏ็ƒญ้‡ ๆจกๅž‹ๅœจๆŸๅฆไธŠ่Šฑๆ›ดๅคš token โ†’ ้‚ฃๅฆๆ›ด็ƒญ โ†’ ๆ›ดๆ˜“ๅ‡็ป“
ๆ„ๅฟตๆ˜ฏๆถŒ็Žฐ็š„ ไธๅŒ้—ฎ้ข˜ๆ”นๅ˜ๆจกๅž‹็”Ÿๆˆ โ†’ ๆ”นๅ˜ logprob ๅˆ†ๅธƒ โ†’ ๆ”นๅ˜็‰ฉ็†็ป“ๆžœ
ๅคšๆจกๅž‹ๅไฝœ ๅฐๆจกๅž‹ไพฟๅฎœ, ๅคงๆจกๅž‹ๅผบ, ็‰ฉ็†็ฎก็บฟ่ฟžๆŽฅไธค่€…
heat_weight=0.5 ๅนณ่กกๆ–นๅ‘ไฟกๅทๅ’ŒๅŠ ็ƒญไฟกๅท, ้ฟๅ…ๅ•ไธ€ไธปๅฏผ
ๆ„ๅฟตๆณจๅ…ฅไป… 5% ไธป่ฆ้€š่ฟ‡ๆ”นๅ˜ๆจกๅž‹็”ŸๆˆๆฅๆถŒ็Žฐ, ไธไบบๅทฅๆณจๅ…ฅ
text-only ้™็บง ไบ‘็ซฏ API ๆ—  logprob ๆ—ถ็”จ Unicode ็ ็‚น + ๆ–‡ๆœฌ่ฎกๆ•ฐ
V91Core ๆ”ฏๆŒ Dict flow_rate ้“ๅพ‹ไธๅ˜, ๅชๆ˜ฏ flow_rate ไปŽๆ ‡้‡ๅ˜ๅ‘้‡

9. ๅทฒ็Ÿฅ้™ๅˆถ

  1. ๆ–นๅ‘-ๅŠ ็ƒญๅ†ฒ็ช: ๅฝ“ๆ–นๅ‘ไฟกๅทๅ’ŒๅŠ ็ƒญไฟกๅทๆŒ‡ๅ‘ไธๅŒๅฆไฝๆ—ถ, ๆ–นๅ‘ไฟกๅทๅพ€ๅพ€่ƒœๅ‡บ (factor ไน˜ๆ€ง vs flow_rate ็บฟๆ€ง)
  2. ไนพ/ๅคๅ‘ฝไธญ็އไฝŽ: 8.3% / 0%, ่ฏดๆ˜Ž logprob ็ปŸ่ฎกๅฏนไนพ/ๅค็š„ๆŒ‡ๅ‘ๅผฑ
  3. ๆ„ๅฟตๅฝฑๅ“ๅพฎๅผฑ: 1.47ยฐ ่ง’ๅบฆๆ ‡ๅ‡†ๅทฎ, ไธป่ฆ้€š่ฟ‡ๆ”นๅ˜ๆจกๅž‹็”ŸๆˆๆฅๆถŒ็Žฐ
  4. ๅ…ณ้”ฎ่ฏ่กจๅฑ€้™: ไป… 96 ไธชๅ…ณ้”ฎ่ฏ, ๅฏ่ƒฝ้—ๆผ้‡่ฆ่ฏๆฑ‡

10. ไธ‹ไธ€ๆญฅ

  1. ๆŽฅๅ…ฅ็œŸๅฎžๆœฌๅœฐๆจกๅž‹ (Qwen2.5-0.5B/3B):

    • ็”จ llama-server ไบง็”Ÿ็œŸๅฎž logprobs
    • ๆต‹่ฏ•็œŸๅฎžๆŽจ็†ๆ–‡ๆœฌ็š„ๅŠ ็ƒญๆ•ˆๆžœ
  2. ไผ˜ๅŒ–ๅ…ณ้”ฎ่ฏ่กจ:

    • ไปŽ่ฏญๆ–™ๅบ“่‡ชๅŠจๆๅ–ๅฆไฝ็›ธๅ…ณ่ฏๆฑ‡
    • ๆˆ–็”จ embedding ็›ธไผผๅบฆๅŒน้…
  3. ๅนณ่กกๆ–นๅ‘ๅ’ŒๅŠ ็ƒญไฟกๅท:

    • ่ฐƒๆ•ด factor ๅ’Œ flow_rate ็š„็›ธๅฏนๅผบๅบฆ
    • ๆˆ–ๅผ•ๅ…ฅ้ž็บฟๆ€ง flow_rate ๆ˜ ๅฐ„
  4. ๅคงๆจกๅž‹ๅไฝœๅฎž้ชŒ:

    • ็”จ DeepSeek-V4 ๅœจ่ขซๅŠ ็ƒญ็š„ๅœบไธŠๆŽจ็†
    • ๆต‹่ฏ•็ƒญๅบฆๅˆ†ๅธƒไฝœไธบ prompt ไธŠไธ‹ๆ–‡็š„ๆ•ˆๆžœ

V93 ็‰ฉ็†ๆŽจๆผ”ๅ™จ โ€” ่ฎฉไฟกๅท้€š่ฟ‡็‰ฉ็†ๅ†ฒๅˆท่‡ช็„ถๅฝขๆˆๆฒŸๅฃ‘, ่ฎฉ็ญ”ๆกˆ่‡ช็„ถๆถŒ็Žฐ