@furongjun1999/dsh-memory 0.4.4 → 0.4.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +104 -483
- package/cordis.yml.example +78 -9
- package/docs/AGI/344/270/203/347/273/264/350/257/204/345/210/206/346/212/245/345/221/212_md_cg_v1.0.md +170 -0
- package/docs/AGI/344/270/203/347/273/264/350/257/204/345/210/206/346/212/245/345/221/212_md_cg_v2.0.md +239 -0
- package/docs/README/350/257/246/347/273/206/347/211/210_v0.4.5.md +625 -0
- package/docs/cordis-patch-profile-web.example.yml +49 -5
- package/docs/release_v0.3.0.md +36 -0
- package/docs/release_v0.4.5.md +55 -0
- package/docs/tool_table_v0.3.0.md +117 -0
- package/docs//344/273/244/347/211/214/344/270/216/350/247/222/350/211/262/346/235/203/350/201/214/345/210/206/347/246/273_v0.1.md +160 -0
- package/docs//345/212/237/350/203/275/350/260/203/347/224/250/346/230/240/345/260/204/350/241/250_v0.1.md +221 -0
- package/docs//345/267/245/344/275/234/347/272/252/345/276/213_/350/256/244/347/237/245/345/233/276/346/235/241/347/233/256_v1.1.json +26 -2
- package/docs//347/201/265/346/236/24282/345/267/245/345/205/267_/345/212/237/350/203/275/346/225/264/347/220/206/344/270/216/350/277/201/347/247/273/346/230/240/345/260/204_v0.1.md +278 -0
- package/docs//347/201/265/346/236/242/344/270/211/345/261/202/346/213/206/345/210/206/350/247/204/345/210/222_v0.1.md +181 -0
- package/docs//347/220/206/350/256/272/344/273/223/346/213/206/345/210/206/344/270/216/347/231/275/347/256/261/347/237/245/350/257/206/345/272/223/345/206/205/350/277/201_v0.1.md +198 -0
- package/docs//347/231/275/347/256/261/346/231/272/350/203/275/347/263/273/345/210/227/302/267/347/254/254/344/272/224/347/257/207/357/274/232/350/256/251AI/347/234/237/346/255/243/350/243/205/344/270/212/350/256/260/345/277/206.md +49 -1
- package/docs//347/274/272/345/217/243/345/215/225_P0/346/224/266/345/217/243_v0.1.md +270 -0
- package/docs//350/234/202/347/276/244/344/272/222/350/201/224_v0.1.md +704 -0
- package/docs//350/256/244/347/237/245/345/233/276_G4-G8/347/274/272/345/217/243/350/243/201/345/256/232/345/215/225_v0.1.md +491 -0
- package/docs//350/256/244/347/237/245/345/233/276_MD/347/233/256/345/275/225/346/226/271/346/241/210_v0.1.md +60 -38
- package/docs//350/256/244/347/237/245/345/233/276_/346/235/241/344/273/266/347/251/272/351/227/264/345/220/210/346/210/220/344/270/216/347/224/237/346/225/210/346/235/241/344/273/266/345/217/243/345/276/204_v0.1.md +340 -0
- package/docs//350/256/244/347/237/245/345/233/276_/347/264/242/345/274/225/344/270/216/345/267/245/347/250/213/350/247/204/350/214/203/345/214/226_/350/256/241/345/210/222_v0.1.md +496 -0
- package/docs//350/256/244/347/237/245/345/233/276/344/275/234/344/270/272/350/256/260/345/277/206/346/223/215/344/275/234/347/263/273/347/273/237_/350/257/204/344/274/260/344/270/216/350/267/257/347/272/277_v0.1.md +2 -2
- package/docs//350/256/260/345/277/206/346/223/215/344/275/234/347/263/273/347/273/237_MdCGOS/344/270/216MCP/346/216/245/345/205/245_v0.1.md +129 -26
- package/lib/bridge.d.ts +4 -4
- package/lib/bridge.js +4 -4
- package/lib/hooks.d.ts +23 -8
- package/lib/hooks.js +75 -26
- package/lib/index.d.ts +53 -8
- package/lib/index.js +216 -63
- package/lib/lib/datapath.d.ts +16 -0
- package/lib/lib/datapath.js +114 -0
- package/lib/lib/mdcg_client.d.ts +152 -0
- package/lib/lib/mdcg_client.js +266 -0
- package/lib/lib/mutual.d.ts +121 -0
- package/lib/lib/mutual.js +348 -0
- package/lib/lib/roleplay_web.d.ts +6 -0
- package/{src/roleplay_web.ts → lib/lib/roleplay_web.js} +503 -450
- package/lib/lib/whitebox_llm.d.ts +129 -0
- package/lib/lib/whitebox_llm.js +249 -0
- package/lib/tools.d.ts +13 -6
- package/lib/tools.js +41 -55
- package/md_cg/__init__.py +7 -0
- package/md_cg/__pycache__/__init__.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/_dbg_p30.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/_diag_p19.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/_tmp_dbg.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/audit.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/backfill.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/bench_membench.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/bench_p0.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/census.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/chain.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/codeindex.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/consistency.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/consolidate.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/corpus.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/crosscheck.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/crypto.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/datapath.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/docindex.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/evidence.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/evolution.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/export.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/forgetting.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/fsutil.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/identity.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/insight.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/links.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/mcp_server.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/md_whitebox.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/mdcg.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/mdcos.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/metacognition.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/migrate.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/migrate_aeis.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/migrate_roleplay.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/migrate_wisdom_graph.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/nodefile.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/pooling.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/predict.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/protect.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/provenance.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/refindex.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/refine.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/routing.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/scrub.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/security.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/self_state.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/signer.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/sources.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/stg.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/subgraph.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/sustain.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/test_lock.cpython-310-pytest-9.1.1.pyc +0 -0
- package/md_cg/__pycache__/test_lock.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/test_p0.cpython-310-pytest-9.1.1.pyc +0 -0
- package/md_cg/__pycache__/test_p0.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/test_p1.cpython-310-pytest-9.1.1.pyc +0 -0
- package/md_cg/__pycache__/test_p1.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/test_p10_identity.cpython-310-pytest-9.1.1.pyc +0 -0
- package/md_cg/__pycache__/test_p10_identity.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/test_p11_consistency.cpython-310-pytest-9.1.1.pyc +0 -0
- package/md_cg/__pycache__/test_p11_consistency.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/test_p12_metacognition.cpython-310-pytest-9.1.1.pyc +0 -0
- package/md_cg/__pycache__/test_p12_metacognition.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/test_p13_encryption.cpython-310-pytest-9.1.1.pyc +0 -0
- package/md_cg/__pycache__/test_p13_encryption.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/test_p14_sustain.cpython-310-pytest-9.1.1.pyc +0 -0
- package/md_cg/__pycache__/test_p14_sustain.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/test_p15_scrub.cpython-310-pytest-9.1.1.pyc +0 -0
- package/md_cg/__pycache__/test_p15_scrub.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/test_p16_self_state.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/test_p17_predict.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/test_p18_whitebox.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/test_p19_migrate_roleplay.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/test_p2.cpython-310-pytest-9.1.1.pyc +0 -0
- package/md_cg/__pycache__/test_p2.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/test_p20_evolution.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/test_p21_tokens.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/test_p22_theory.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/test_p23_links.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/test_p24_evidence.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/test_p25_weights.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/test_p26_refindex.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/test_p27_docindex.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/test_p28_refcheck.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/test_p29_session_ingest_export.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/test_p2_mcp.cpython-310-pytest-9.1.1.pyc +0 -0
- package/md_cg/__pycache__/test_p2_mcp.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/test_p3.cpython-310-pytest-9.1.1.pyc +0 -0
- package/md_cg/__pycache__/test_p3.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/test_p30_maintain.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/test_p31_insight.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/test_p32_backfill.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/test_p33_ccg_wiring.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/test_p34_crosscheck.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/test_p35_conditioned_claim.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/test_p36_kp_align.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/test_p37_condition_space.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/test_p38_contextualize.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/test_p39_vision_evidence.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/test_p40_refine_worklist.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/test_p41_evolve_patrol.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/test_p42_provenance.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/test_p43_pooling.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/test_p44_md_whitebox.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/test_p4_fuzzy.cpython-310-pytest-9.1.1.pyc +0 -0
- package/md_cg/__pycache__/test_p4_fuzzy.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/test_p5_semantic.cpython-310-pytest-9.1.1.pyc +0 -0
- package/md_cg/__pycache__/test_p5_semantic.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/test_p6_consolidate.cpython-310-pytest-9.1.1.pyc +0 -0
- package/md_cg/__pycache__/test_p6_consolidate.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/test_p7_goals_recent.cpython-310-pytest-9.1.1.pyc +0 -0
- package/md_cg/__pycache__/test_p7_goals_recent.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/test_p8_subgraph_chain.cpython-310-pytest-9.1.1.pyc +0 -0
- package/md_cg/__pycache__/test_p8_subgraph_chain.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/test_p9_forget_protect.cpython-310-pytest-9.1.1.pyc +0 -0
- package/md_cg/__pycache__/test_p9_forget_protect.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/theory.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/tokens.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/vision_evidence.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/weights.cpython-310.pyc +0 -0
- package/md_cg/__pycache__/whitebox.cpython-310.pyc +0 -0
- package/md_cg/audit.py +223 -0
- package/md_cg/backfill.py +1272 -0
- package/md_cg/bench_membench.py +602 -0
- package/md_cg/bench_p0.py +147 -0
- package/md_cg/bench_task_ab.py +237 -0
- package/md_cg/bench_task_ab_llm.py +397 -0
- package/md_cg/census.py +117 -0
- package/md_cg/chain.py +280 -0
- package/md_cg/codeindex.py +359 -0
- package/md_cg/consistency.py +593 -0
- package/md_cg/consolidate.py +1389 -0
- package/md_cg/corpus.py +106 -0
- package/md_cg/crosscheck.py +1058 -0
- package/md_cg/crypto.py +404 -0
- package/md_cg/datapath.py +160 -0
- package/md_cg/docindex.py +333 -0
- package/md_cg/evidence.py +555 -0
- package/md_cg/evolution.py +458 -0
- package/md_cg/export.py +210 -0
- package/md_cg/forgetting.py +552 -0
- package/md_cg/fsutil.py +251 -0
- package/md_cg/identity.py +374 -0
- package/md_cg/insight.py +485 -0
- package/md_cg/links.py +595 -0
- package/md_cg/mcp_server.py +2445 -0
- package/md_cg/md_whitebox.py +271 -0
- package/md_cg/mdcg.py +1210 -0
- package/md_cg/mdcos.py +2505 -0
- package/md_cg/metacognition.py +557 -0
- package/md_cg/migrate.py +115 -0
- package/md_cg/migrate_aeis.py +213 -0
- package/md_cg/migrate_roleplay.py +285 -0
- package/md_cg/migrate_wisdom_graph.py +348 -0
- package/md_cg/nodefile.py +308 -0
- package/md_cg/pooling.py +451 -0
- package/md_cg/predict.py +918 -0
- package/md_cg/protect.py +260 -0
- package/md_cg/provenance.py +321 -0
- package/md_cg/refindex.py +585 -0
- package/md_cg/refine.py +586 -0
- package/md_cg/routing.py +290 -0
- package/md_cg/scrub.py +788 -0
- package/md_cg/security.py +235 -0
- package/md_cg/self_state.py +843 -0
- package/md_cg/signer.py +523 -0
- package/md_cg/sources.py +547 -0
- package/md_cg/stg.py +250 -0
- package/md_cg/subgraph.py +706 -0
- package/md_cg/sustain.py +874 -0
- package/md_cg/test_lock.py +43 -0
- package/md_cg/test_p0.py +250 -0
- package/md_cg/test_p1.py +317 -0
- package/md_cg/test_p10_identity.py +173 -0
- package/md_cg/test_p11_consistency.py +233 -0
- package/md_cg/test_p12_metacognition.py +212 -0
- package/md_cg/test_p13_encryption.py +241 -0
- package/md_cg/test_p14_sustain.py +249 -0
- package/md_cg/test_p15_scrub.py +280 -0
- package/md_cg/test_p16_self_state.py +275 -0
- package/md_cg/test_p17_predict.py +341 -0
- package/md_cg/test_p18_whitebox.py +171 -0
- package/md_cg/test_p19_migrate_roleplay.py +149 -0
- package/md_cg/test_p2.py +205 -0
- package/md_cg/test_p20_evolution.py +315 -0
- package/md_cg/test_p21_tokens.py +270 -0
- package/md_cg/test_p22_theory.py +175 -0
- package/md_cg/test_p23_links.py +311 -0
- package/md_cg/test_p24_evidence.py +227 -0
- package/md_cg/test_p25_weights.py +156 -0
- package/md_cg/test_p26_refindex.py +387 -0
- package/md_cg/test_p27_docindex.py +377 -0
- package/md_cg/test_p28_refcheck.py +305 -0
- package/md_cg/test_p29_session_ingest_export.py +333 -0
- package/md_cg/test_p2_mcp.py +425 -0
- package/md_cg/test_p3.py +252 -0
- package/md_cg/test_p30_maintain.py +330 -0
- package/md_cg/test_p31_insight.py +510 -0
- package/md_cg/test_p32_backfill.py +298 -0
- package/md_cg/test_p33_ccg_wiring.py +293 -0
- package/md_cg/test_p34_crosscheck.py +331 -0
- package/md_cg/test_p35_conditioned_claim.py +252 -0
- package/md_cg/test_p36_kp_align.py +225 -0
- package/md_cg/test_p37_condition_space.py +248 -0
- package/md_cg/test_p38_contextualize.py +273 -0
- package/md_cg/test_p39_vision_evidence.py +369 -0
- package/md_cg/test_p40_refine_worklist.py +241 -0
- package/md_cg/test_p41_evolve_patrol.py +224 -0
- package/md_cg/test_p42_provenance.py +269 -0
- package/md_cg/test_p43_pooling.py +360 -0
- package/md_cg/test_p44_md_whitebox.py +218 -0
- package/md_cg/test_p4_fuzzy.py +223 -0
- package/md_cg/test_p5_semantic.py +226 -0
- package/md_cg/test_p6_consolidate.py +387 -0
- package/md_cg/test_p7_goals_recent.py +202 -0
- package/md_cg/test_p8_subgraph_chain.py +200 -0
- package/md_cg/test_p9_forget_protect.py +231 -0
- package/md_cg/theory.py +259 -0
- package/md_cg/tokens.py +506 -0
- package/md_cg/vision_evidence.py +644 -0
- package/md_cg/weights.py +602 -0
- package/md_cg/whitebox.py +497 -0
- package/md_cg/whitebox_kb/__init__.py +37 -0
- package/md_cg/whitebox_kb/__pycache__/__init__.cpython-310.pyc +0 -0
- package/md_cg/whitebox_kb/__pycache__/engine.cpython-310.pyc +0 -0
- package/md_cg/whitebox_kb/aeis_core/__init__.py +42 -0
- package/md_cg/whitebox_kb/aeis_core/__pycache__/__init__.cpython-310.pyc +0 -0
- package/md_cg/whitebox_kb/aeis_core/__pycache__/core.cpython-310.pyc +0 -0
- package/md_cg/whitebox_kb/aeis_core/__pycache__/semantic.cpython-310.pyc +0 -0
- package/md_cg/whitebox_kb/aeis_core/__pycache__/time_core.cpython-310.pyc +0 -0
- package/md_cg/whitebox_kb/aeis_core/api.py +1042 -0
- package/md_cg/whitebox_kb/aeis_core/core.py +5014 -0
- package/md_cg/whitebox_kb/aeis_core/semantic.py +280 -0
- package/md_cg/whitebox_kb/aeis_core/textutil.py +13 -0
- package/md_cg/whitebox_kb/aeis_core/time_core.py +43 -0
- package/md_cg/whitebox_kb/data/verify_cache.json +1873 -0
- package/md_cg/whitebox_kb/data/verify_savings.jsonl +1330 -0
- package/md_cg/whitebox_kb/engine.py +310 -0
- package/md_cg/whitebox_kb/knowledge/_ccg_dump.json +1 -0
- package/md_cg/whitebox_kb/knowledge/_index.json +15300 -0
- package/md_cg/whitebox_kb/knowledge//344/270/226/347/225/214/345/234/260/346/240/207.md +22 -0
- package/md_cg/whitebox_kb/knowledge//344/270/226/347/225/214/346/226/207/345/214/226.md +15 -0
- package/md_cg/whitebox_kb/knowledge//344/270/226/347/225/214/350/207/252/347/204/266/345/245/207/350/247/202.md +29 -0
- package/md_cg/whitebox_kb/knowledge//344/270/226/347/225/214/351/201/227/344/272/247.md +15 -0
- package/md_cg/whitebox_kb/knowledge//344/270/255/345/233/275/345/217/244/344/273/243/346/226/207/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +167 -0
- package/md_cg/whitebox_kb/knowledge//344/270/255/345/233/275/345/220/215/350/203/234.md +15 -0
- package/md_cg/whitebox_kb/knowledge//344/270/255/345/233/275/345/257/223/350/250/200.md +15 -0
- package/md_cg/whitebox_kb/knowledge//344/270/255/345/233/275/347/216/260/344/273/243/346/226/207/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +153 -0
- package/md_cg/whitebox_kb/knowledge//344/270/255/345/233/275/347/245/236/350/257/235.md +22 -0
- package/md_cg/whitebox_kb/knowledge//344/271/246/346/263/225/346/226/207/345/214/226.md +22 -0
- package/md_cg/whitebox_kb/knowledge//344/272/244/351/200/232/345/256/211/345/205/250.md +15 -0
- package/md_cg/whitebox_kb/knowledge//344/272/244/351/200/232/351/200/232/350/257/206.md +15 -0
- package/md_cg/whitebox_kb/knowledge//344/272/272/344/275/223/347/224/237/347/220/206.md +22 -0
- package/md_cg/whitebox_kb/knowledge//344/272/272/345/267/245/346/231/272/350/203/275/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +307 -0
- package/md_cg/whitebox_kb/knowledge//344/272/272/346/226/207/351/200/232/350/257/206.md +1296 -0
- package/md_cg/whitebox_kb/knowledge//344/272/272/347/211/251/345/216/206/345/217/262.md +15 -0
- package/md_cg/whitebox_kb/knowledge//344/272/272/347/261/273/350/247/202/345/257/237/350/200/205/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +265 -0
- package/md_cg/whitebox_kb/knowledge//344/272/272/351/231/205/346/262/237/351/200/232.md +22 -0
- package/md_cg/whitebox_kb/knowledge//344/274/232/350/256/241/345/255/246/345/216/237/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +131 -0
- package/md_cg/whitebox_kb/knowledge//344/274/240/347/273/237/344/271/220/345/231/250.md +15 -0
- package/md_cg/whitebox_kb/knowledge//344/274/240/347/273/237/345/205/273/347/224/237.md +15 -0
- package/md_cg/whitebox_kb/knowledge//344/274/240/347/273/237/345/216/206/346/263/225.md +15 -0
- package/md_cg/whitebox_kb/knowledge//344/274/240/347/273/237/345/267/245/350/211/272.md +148 -0
- package/md_cg/whitebox_kb/knowledge//344/274/240/347/273/237/345/273/272/347/255/221.md +29 -0
- package/md_cg/whitebox_kb/knowledge//344/274/240/347/273/237/346/226/207/345/214/226.md +92 -0
- package/md_cg/whitebox_kb/knowledge//344/274/240/347/273/237/346/243/213/347/261/273.md +15 -0
- package/md_cg/whitebox_kb/knowledge//344/274/240/347/273/237/346/255/246/346/234/257.md +15 -0
- package/md_cg/whitebox_kb/knowledge//344/274/240/347/273/237/347/276/216/345/276/267.md +29 -0
- package/md_cg/whitebox_kb/knowledge//344/274/240/347/273/237/347/276/216/351/243/237.md +36 -0
- package/md_cg/whitebox_kb/knowledge//344/274/240/347/273/237/350/211/272/346/234/257.md +71 -0
- package/md_cg/whitebox_kb/knowledge//344/274/240/347/273/237/350/212/202/346/227/245.md +22 -0
- package/md_cg/whitebox_kb/knowledge//344/275/223/350/202/262.md +15 -0
- package/md_cg/whitebox_kb/knowledge//344/275/223/350/202/262/350/277/220/345/212/250.md +15 -0
- package/md_cg/whitebox_kb/knowledge//344/277/241/346/201/257/345/256/211/345/205/250.md +15 -0
- package/md_cg/whitebox_kb/knowledge//344/277/241/346/201/257/346/212/200/346/234/257.md +22 -0
- package/md_cg/whitebox_kb/knowledge//344/277/241/346/201/257/350/256/272/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +90 -0
- package/md_cg/whitebox_kb/knowledge//345/201/245/345/272/267/344/271/240/346/203/257.md +15 -0
- package/md_cg/whitebox_kb/knowledge//345/201/245/345/272/267/345/270/270/350/257/206.md +50 -0
- package/md_cg/whitebox_kb/knowledge//345/205/211/345/255/246/351/200/232/350/257/206.md +15 -0
- package/md_cg/whitebox_kb/knowledge//345/205/273/347/224/237/346/226/271/346/263/225.md +15 -0
- package/md_cg/whitebox_kb/knowledge//345/206/233/344/272/213/345/217/262.md +15 -0
- package/md_cg/whitebox_kb/knowledge//345/206/234/344/270/232/345/270/270/350/257/206.md +15 -0
- package/md_cg/whitebox_kb/knowledge//345/210/206/345/255/220/347/224/237/347/211/251/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +167 -0
- package/md_cg/whitebox_kb/knowledge//345/210/206/346/236/220/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +167 -0
- package/md_cg/whitebox_kb/knowledge//345/210/235/344/270/255/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +391 -0
- package/md_cg/whitebox_kb/knowledge//345/210/235/344/270/255/345/216/206/345/217/262/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +279 -0
- package/md_cg/whitebox_kb/knowledge//345/210/235/344/270/255/345/234/260/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +160 -0
- package/md_cg/whitebox_kb/knowledge//345/210/235/344/270/255/346/225/260/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +391 -0
- package/md_cg/whitebox_kb/knowledge//345/210/235/344/270/255/347/211/251/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +545 -0
- package/md_cg/whitebox_kb/knowledge//345/210/235/344/270/255/347/224/237/347/211/251/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +426 -0
- package/md_cg/whitebox_kb/knowledge//345/210/235/344/270/255/350/213/261/350/257/255/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +167 -0
- package/md_cg/whitebox_kb/knowledge//345/210/235/344/270/255/350/257/255/346/226/207/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +167 -0
- package/md_cg/whitebox_kb/knowledge//345/210/235/344/270/255/351/201/223/345/276/267/344/270/216/346/263/225/346/262/273/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +153 -0
- package/md_cg/whitebox_kb/knowledge//345/210/266/345/272/246/345/217/262.md +64 -0
- package/md_cg/whitebox_kb/knowledge//345/211/215/346/262/277/347/247/221/346/212/200.md +36 -0
- package/md_cg/whitebox_kb/knowledge//345/212/250/347/211/251/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +160 -0
- package/md_cg/whitebox_kb/knowledge//345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +2081 -0
- package/md_cg/whitebox_kb/knowledge//345/214/226/345/267/245/345/216/237/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +167 -0
- package/md_cg/whitebox_kb/knowledge//345/214/273/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +139 -0
- package/md_cg/whitebox_kb/knowledge//345/216/206/345/217/262/345/234/260/347/220/206.md +29 -0
- package/md_cg/whitebox_kb/knowledge//345/216/206/345/217/262/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +464 -0
- package/md_cg/whitebox_kb/knowledge//345/216/237/345/255/220/347/211/251/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +139 -0
- package/md_cg/whitebox_kb/knowledge//345/217/244/344/273/243/346/261/211/350/257/255/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +139 -0
- package/md_cg/whitebox_kb/knowledge//345/217/244/347/224/237/347/211/251.md +22 -0
- package/md_cg/whitebox_kb/knowledge//345/223/262/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +118 -0
- package/md_cg/whitebox_kb/knowledge//345/225/206/344/270/232/345/217/262.md +15 -0
- package/md_cg/whitebox_kb/knowledge//345/231/250/347/211/251/345/267/245/350/211/272.md +15 -0
- package/md_cg/whitebox_kb/knowledge//345/233/255/346/236/227/345/273/272/347/255/221.md +15 -0
- package/md_cg/whitebox_kb/knowledge//345/233/272/344/275/223/347/211/251/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +202 -0
- package/md_cg/whitebox_kb/knowledge//345/233/276/345/203/217/347/224/237/346/210/220.md +99 -0
- package/md_cg/whitebox_kb/knowledge//345/234/237/346/234/250/345/267/245/347/250/213/345/237/272/347/241/200/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +125 -0
- package/md_cg/whitebox_kb/knowledge//345/234/260/347/220/206/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +303 -0
- package/md_cg/whitebox_kb/knowledge//345/244/215/345/217/230/345/207/275/346/225/260/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +195 -0
- package/md_cg/whitebox_kb/knowledge//345/244/226/345/233/275/346/226/207/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +118 -0
- package/md_cg/whitebox_kb/knowledge//345/244/247/345/255/246/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +265 -0
- package/md_cg/whitebox_kb/knowledge//345/244/247/345/255/246/346/200/235/346/224/277/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +174 -0
- package/md_cg/whitebox_kb/knowledge//345/244/247/345/255/246/347/211/251/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +321 -0
- package/md_cg/whitebox_kb/knowledge//345/244/247/345/255/246/350/213/261/350/257/255/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +132 -0
- package/md_cg/whitebox_kb/knowledge//345/244/251/344/275/223/347/211/251/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +125 -0
- package/md_cg/whitebox_kb/knowledge//345/244/251/346/226/207/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +173 -0
- package/md_cg/whitebox_kb/knowledge//345/255/230/345/234/250/350/256/272.md +43 -0
- package/md_cg/whitebox_kb/knowledge//345/255/246/344/271/240/346/226/271/346/263/225.md +57 -0
- package/md_cg/whitebox_kb/knowledge//345/256/211/345/205/250/345/270/270/350/257/206.md +22 -0
- package/md_cg/whitebox_kb/knowledge//345/256/217/350/247/202/347/273/217/346/265/216/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +153 -0
- package/md_cg/whitebox_kb/knowledge//345/256/236/345/217/230/345/207/275/346/225/260/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +195 -0
- package/md_cg/whitebox_kb/knowledge//345/256/240/347/211/251.md +29 -0
- package/md_cg/whitebox_kb/knowledge//345/256/266/345/272/255/345/205/263/347/263/273.md +29 -0
- package/md_cg/whitebox_kb/knowledge//345/260/217/345/255/246/346/225/260/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +566 -0
- package/md_cg/whitebox_kb/knowledge//345/260/217/345/255/246/347/247/221/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +1274 -0
- package/md_cg/whitebox_kb/knowledge//345/260/217/345/255/246/350/213/261/350/257/255/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +153 -0
- package/md_cg/whitebox_kb/knowledge//345/260/217/345/255/246/350/257/255/346/226/207/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +174 -0
- package/md_cg/whitebox_kb/knowledge//345/260/217/345/255/246/351/201/223/345/276/267/344/270/216/346/263/225/346/262/273/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +153 -0
- package/md_cg/whitebox_kb/knowledge//345/267/245/347/250/213/345/210/266/345/233/276/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +118 -0
- package/md_cg/whitebox_kb/knowledge//345/267/245/347/250/213/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +611 -0
- package/md_cg/whitebox_kb/knowledge//345/267/245/347/250/213/347/247/221/345/255/246.md +22 -0
- package/md_cg/whitebox_kb/knowledge//345/267/245/350/211/272/351/200/232/350/257/206.md +15 -0
- package/md_cg/whitebox_kb/knowledge//345/270/202/345/234/272/350/220/245/351/224/200/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +111 -0
- package/md_cg/whitebox_kb/knowledge//345/270/270/345/276/256/345/210/206/346/226/271/347/250/213/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +237 -0
- package/md_cg/whitebox_kb/knowledge//345/273/272/347/255/221/344/272/272/346/226/207.md +15 -0
- package/md_cg/whitebox_kb/knowledge//345/273/272/347/255/221/345/216/206/345/217/262.md +43 -0
- package/md_cg/whitebox_kb/knowledge//345/273/272/347/255/221/350/211/272/346/234/257.md +15 -0
- package/md_cg/whitebox_kb/knowledge//345/273/272/347/255/221/351/200/232/350/257/206.md +15 -0
- package/md_cg/whitebox_kb/knowledge//345/275/261/350/247/206/345/270/270/350/257/206.md +29 -0
- package/md_cg/whitebox_kb/knowledge//345/276/256/345/210/206/345/207/240/344/275/225/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +146 -0
- package/md_cg/whitebox_kb/knowledge//345/276/256/347/224/237/347/211/251/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +174 -0
- package/md_cg/whitebox_kb/knowledge//345/276/256/350/247/202/347/273/217/346/265/216/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +146 -0
- package/md_cg/whitebox_kb/knowledge//345/277/203/347/220/206/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +133 -0
- package/md_cg/whitebox_kb/knowledge//346/200/235/347/273/264/345/256/232/345/276/213.md +29 -0
- package/md_cg/whitebox_kb/knowledge//346/203/205/346/204/237/346/203/205/347/273/252/344/273/277/347/234/237/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +186 -0
- package/md_cg/whitebox_kb/knowledge//346/210/217/346/233/262/350/211/272/346/234/257.md +22 -0
- package/md_cg/whitebox_kb/knowledge//346/210/220/350/257/255/345/205/270/346/225/205.md +15 -0
- package/md_cg/whitebox_kb/knowledge//346/211/213/345/267/245/345/270/270/350/257/206.md +15 -0
- package/md_cg/whitebox_kb/knowledge//346/212/275/350/261/241/344/273/243/346/225/260/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +160 -0
- package/md_cg/whitebox_kb/knowledge//346/213/223/346/211/221/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +139 -0
- package/md_cg/whitebox_kb/knowledge//346/223/215/344/275/234/347/263/273/347/273/237/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +160 -0
- package/md_cg/whitebox_kb/knowledge//346/224/266/350/227/217/351/233/206/350/227/217.md +92 -0
- package/md_cg/whitebox_kb/knowledge//346/224/277/346/262/273/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +387 -0
- package/md_cg/whitebox_kb/knowledge//346/225/210/347/216/207/346/226/271/346/263/225.md +15 -0
- package/md_cg/whitebox_kb/knowledge//346/225/260/345/200/274/345/210/206/346/236/220/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +202 -0
- package/md_cg/whitebox_kb/knowledge//346/225/260/345/255/227/347/224/265/350/267/257/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +146 -0
- package/md_cg/whitebox_kb/knowledge//346/225/260/345/255/227/347/264/240/345/205/273.md +22 -0
- package/md_cg/whitebox_kb/knowledge//346/225/260/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +2074 -0
- package/md_cg/whitebox_kb/knowledge//346/225/260/345/255/246/345/210/206/346/236/220/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +349 -0
- package/md_cg/whitebox_kb/knowledge//346/225/260/345/255/246/347/211/251/347/220/206/346/226/271/346/263/225/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +153 -0
- package/md_cg/whitebox_kb/knowledge//346/225/260/346/215/256/345/272/223/347/263/273/347/273/237/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +146 -0
- package/md_cg/whitebox_kb/knowledge//346/225/260/346/215/256/347/273/223/346/236/204/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +174 -0
- package/md_cg/whitebox_kb/knowledge//346/226/207/345/205/267/345/270/270/350/257/206.md +15 -0
- package/md_cg/whitebox_kb/knowledge//346/226/207/345/214/226.md +36 -0
- package/md_cg/whitebox_kb/knowledge//346/226/207/345/214/226/351/200/232/350/257/206.md +15 -0
- package/md_cg/whitebox_kb/knowledge//346/226/207/345/255/227/345/255/246.md +15 -0
- package/md_cg/whitebox_kb/knowledge//346/226/207/345/255/227/350/265/267/346/272/220.md +15 -0
- package/md_cg/whitebox_kb/knowledge//346/226/207/345/255/246/347/220/206/350/256/272/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +328 -0
- package/md_cg/whitebox_kb/knowledge//346/226/207/346/225/231/345/216/206/345/217/262.md +15 -0
- package/md_cg/whitebox_kb/knowledge//346/226/207/347/211/251/351/200/232/350/257/206.md +22 -0
- package/md_cg/whitebox_kb/knowledge//346/226/207/347/214/256/345/255/246.md +22 -0
- package/md_cg/whitebox_kb/knowledge//346/227/240/346/234/272/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +216 -0
- package/md_cg/whitebox_kb/knowledge//346/227/266/347/251/272/350/256/260/345/277/206/345/233/276/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +214 -0
- package/md_cg/whitebox_kb/knowledge//346/230/206/350/231/253/345/270/270/350/257/206.md +29 -0
- package/md_cg/whitebox_kb/knowledge//346/231/272/350/203/275/350/256/272/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +441 -0
- package/md_cg/whitebox_kb/knowledge//346/233/262/350/211/272/345/270/270/350/257/206.md +15 -0
- package/md_cg/whitebox_kb/knowledge//346/234/211/346/234/272/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +195 -0
- package/md_cg/whitebox_kb/knowledge//346/234/215/351/245/260/346/226/207/345/214/226.md +22 -0
- package/md_cg/whitebox_kb/knowledge//346/234/252/345/210/206/347/261/273.md +52 -0
- package/md_cg/whitebox_kb/knowledge//346/234/272/346/242/260/351/200/232/350/257/206.md +15 -0
- package/md_cg/whitebox_kb/knowledge//346/235/220/346/226/231/345/212/233/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +146 -0
- package/md_cg/whitebox_kb/knowledge//346/235/241/344/273/266/350/256/272/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +350 -0
- package/md_cg/whitebox_kb/knowledge//346/243/213/347/211/214/350/247/204/345/210/231.md +15 -0
- package/md_cg/whitebox_kb/knowledge//346/243/213/347/261/273/350/247/204/345/210/231.md +36 -0
- package/md_cg/whitebox_kb/knowledge//346/244/215/347/211/251/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +132 -0
- package/md_cg/whitebox_kb/knowledge//346/246/202/347/216/207/350/256/272/344/270/216/346/225/260/347/220/206/347/273/237/350/256/241/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +230 -0
- package/md_cg/whitebox_kb/knowledge//346/250/241/346/213/237/347/224/265/345/255/220/346/212/200/346/234/257/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +146 -0
- package/md_cg/whitebox_kb/knowledge//346/260/221/344/277/227.md +64 -0
- package/md_cg/whitebox_kb/knowledge//346/260/221/344/277/227/344/277/241/344/273/260.md +36 -0
- package/md_cg/whitebox_kb/knowledge//346/260/221/344/277/227/345/205/273/347/224/237.md +15 -0
- package/md_cg/whitebox_kb/knowledge//346/260/221/344/277/227/345/216/206/346/263/225.md +15 -0
- package/md_cg/whitebox_kb/knowledge//346/260/221/344/277/227/345/231/250/347/211/251.md +15 -0
- package/md_cg/whitebox_kb/knowledge//346/260/221/344/277/227/346/226/207/345/214/226.md +22 -0
- package/md_cg/whitebox_kb/knowledge//346/260/221/344/277/227/350/257/255/350/250/200.md +15 -0
- package/md_cg/whitebox_kb/knowledge//346/260/221/344/277/227/351/233/205/347/216/251.md +50 -0
- package/md_cg/whitebox_kb/knowledge//346/260/224/350/261/241/345/270/270/350/257/206.md +15 -0
- package/md_cg/whitebox_kb/knowledge//346/260/224/350/261/241/351/200/232/350/257/206.md +15 -0
- package/md_cg/whitebox_kb/knowledge//346/261/202/350/201/214/346/212/200/350/203/275.md +29 -0
- package/md_cg/whitebox_kb/knowledge//346/262/237/351/200/232.md +29 -0
- package/md_cg/whitebox_kb/knowledge//346/263/225/345/276/213/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +14 -0
- package/md_cg/whitebox_kb/knowledge//346/263/233/345/207/275/345/210/206/346/236/220/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +188 -0
- package/md_cg/whitebox_kb/knowledge//346/265/267/346/264/213/347/224/237/347/211/251.md +15 -0
- package/md_cg/whitebox_kb/knowledge//347/203/255/345/212/233/345/255/246/344/270/216/347/273/237/350/256/241/347/211/251/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +188 -0
- package/md_cg/whitebox_kb/knowledge//347/203/271/351/245/252/346/212/200/346/263/225.md +15 -0
- package/md_cg/whitebox_kb/knowledge//347/211/251/347/220/206/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +195 -0
- package/md_cg/whitebox_kb/knowledge//347/211/251/347/220/206/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +2256 -0
- package/md_cg/whitebox_kb/knowledge//347/216/260/344/273/243/346/261/211/350/257/255/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +125 -0
- package/md_cg/whitebox_kb/knowledge//347/220/206/350/256/272/345/212/233/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +209 -0
- package/md_cg/whitebox_kb/knowledge//347/224/237/346/200/201/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +132 -0
- package/md_cg/whitebox_kb/knowledge//347/224/237/346/264/273/345/215/253/347/224/237.md +15 -0
- package/md_cg/whitebox_kb/knowledge//347/224/237/346/264/273/345/270/270/350/257/206.md +1296 -0
- package/md_cg/whitebox_kb/knowledge//347/224/237/346/264/273/346/212/200/350/203/275.md +43 -0
- package/md_cg/whitebox_kb/knowledge//347/224/237/346/264/273/347/247/221/346/212/200.md +22 -0
- package/md_cg/whitebox_kb/knowledge//347/224/237/346/264/273/351/200/232/350/257/206.md +15 -0
- package/md_cg/whitebox_kb/knowledge//347/224/237/347/211/251/344/277/235/346/212/244.md +36 -0
- package/md_cg/whitebox_kb/knowledge//347/224/237/347/211/251/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +209 -0
- package/md_cg/whitebox_kb/knowledge//347/224/237/347/211/251/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +1759 -0
- package/md_cg/whitebox_kb/knowledge//347/224/237/347/220/206/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +132 -0
- package/md_cg/whitebox_kb/knowledge//347/224/265/345/212/250/345/212/233/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +188 -0
- package/md_cg/whitebox_kb/knowledge//347/224/265/350/267/257/345/216/237/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +146 -0
- package/md_cg/whitebox_kb/knowledge//347/231/275/347/256/261/345/215/217/350/256/256.md +22 -0
- package/md_cg/whitebox_kb/knowledge//347/233/212/346/231/272/346/270/270/346/210/217.md +15 -0
- package/md_cg/whitebox_kb/knowledge//347/233/212/346/231/272/351/200/232/350/257/206.md +15 -0
- package/md_cg/whitebox_kb/knowledge//347/244/276/344/272/244/346/212/200/345/267/247.md +15 -0
- package/md_cg/whitebox_kb/knowledge//347/244/276/344/274/232/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +117 -0
- package/md_cg/whitebox_kb/knowledge//347/244/276/344/274/232/347/247/221/345/255/246.md +43 -0
- package/md_cg/whitebox_kb/knowledge//347/245/236/350/257/235/344/274/240/350/257/264.md +15 -0
- package/md_cg/whitebox_kb/knowledge//347/247/221/345/255/246/345/217/262.md +22 -0
- package/md_cg/whitebox_kb/knowledge//347/247/221/346/212/200/351/200/232/350/257/206.md +78 -0
- package/md_cg/whitebox_kb/knowledge//347/250/213/345/272/217/350/256/276/350/256/241/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +146 -0
- package/md_cg/whitebox_kb/knowledge//347/256/227/346/263/225/350/256/276/350/256/241/344/270/216/345/210/206/346/236/220/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +153 -0
- package/md_cg/whitebox_kb/knowledge//347/256/241/347/220/206/345/255/246/345/216/237/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +167 -0
- package/md_cg/whitebox_kb/knowledge//347/272/277/346/200/247/344/273/243/346/225/260/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +202 -0
- package/md_cg/whitebox_kb/knowledge//347/273/206/350/203/236/347/224/237/347/211/251/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +181 -0
- package/md_cg/whitebox_kb/knowledge//347/273/217/346/265/216/345/217/262.md +43 -0
- package/md_cg/whitebox_kb/knowledge//347/273/217/346/265/216/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +204 -0
- package/md_cg/whitebox_kb/knowledge//347/273/223/346/236/204/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +153 -0
- package/md_cg/whitebox_kb/knowledge//347/273/274/345/220/210/302/267/347/273/264/345/237/272/347/273/274/350/277/260.md +184 -0
- package/md_cg/whitebox_kb/knowledge//347/274/226/347/250/213-Git.md +15 -0
- package/md_cg/whitebox_kb/knowledge//347/274/226/347/250/213-JS.md +15 -0
- package/md_cg/whitebox_kb/knowledge//347/274/226/347/250/213/346/246/202/345/277/265.md +15 -0
- package/md_cg/whitebox_kb/knowledge//347/274/226/347/250/213/350/257/255/350/250/200.md +120 -0
- package/md_cg/whitebox_kb/knowledge//347/274/226/350/257/221/345/216/237/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +146 -0
- package/md_cg/whitebox_kb/knowledge//347/275/221/347/273/234/345/256/211/345/205/250.md +34 -0
- package/md_cg/whitebox_kb/knowledge//350/200/203/345/217/244/345/270/270/350/257/206.md +64 -0
- package/md_cg/whitebox_kb/knowledge//350/207/252/346/210/221/346/204/217/350/257/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +270 -0
- package/md_cg/whitebox_kb/knowledge//350/211/272/346/234/257/345/220/215/345/256/266.md +15 -0
- package/md_cg/whitebox_kb/knowledge//350/211/272/346/234/257/346/265/201/346/264/276.md +15 -0
- package/md_cg/whitebox_kb/knowledge//350/214/266/346/226/207/345/214/226.md +15 -0
- package/md_cg/whitebox_kb/knowledge//350/256/241/347/256/227/346/234/272/347/247/221/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +4265 -0
- package/md_cg/whitebox_kb/knowledge//350/256/241/347/256/227/346/234/272/347/273/204/346/210/220/345/216/237/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +160 -0
- package/md_cg/whitebox_kb/knowledge//350/256/241/347/256/227/346/234/272/347/275/221/347/273/234/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +160 -0
- package/md_cg/whitebox_kb/knowledge//350/257/255/350/250/200/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +373 -0
- package/md_cg/whitebox_kb/knowledge//350/264/247/345/270/201/345/217/262.md +15 -0
- package/md_cg/whitebox_kb/knowledge//350/264/247/345/270/201/345/270/270/350/257/206.md +15 -0
- package/md_cg/whitebox_kb/knowledge//350/275/257/344/273/266/345/267/245/347/250/213/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +160 -0
- package/md_cg/whitebox_kb/knowledge//350/277/220/345/212/250/345/201/245/345/272/267.md +15 -0
- package/md_cg/whitebox_kb/knowledge//350/277/220/345/212/250/345/270/270/350/257/206.md +15 -0
- package/md_cg/whitebox_kb/knowledge//350/277/220/345/212/250/347/247/221/345/255/246.md +22 -0
- package/md_cg/whitebox_kb/knowledge//350/277/221/344/270/226/346/234/215/351/245/260.md +15 -0
- package/md_cg/whitebox_kb/knowledge//351/200/273/350/276/221/345/255/246.md +14 -0
- package/md_cg/whitebox_kb/knowledge//351/201/227/344/274/240/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +167 -0
- package/md_cg/whitebox_kb/knowledge//351/207/217/345/255/220/345/212/233/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +209 -0
- package/md_cg/whitebox_kb/knowledge//351/207/221/350/236/215/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +125 -0
- package/md_cg/whitebox_kb/knowledge//351/235/236/351/201/227/350/211/272/346/234/257.md +43 -0
- package/md_cg/whitebox_kb/knowledge//351/237/263/344/271/220.md +15 -0
- package/md_cg/whitebox_kb/knowledge//351/237/263/344/271/220/345/220/215/345/256/266.md +22 -0
- package/md_cg/whitebox_kb/knowledge//351/237/263/344/271/220/345/270/270/350/257/206.md +29 -0
- package/md_cg/whitebox_kb/knowledge//351/243/237/345/223/201/347/247/221/345/255/246.md +57 -0
- package/md_cg/whitebox_kb/knowledge//351/245/256/351/243/237/345/270/270/350/257/206.md +29 -0
- package/md_cg/whitebox_kb/knowledge//351/245/256/351/243/237/346/226/207/345/214/226.md +29 -0
- package/md_cg/whitebox_kb/knowledge//351/253/230/344/270/255/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +566 -0
- package/md_cg/whitebox_kb/knowledge//351/253/230/344/270/255/345/216/206/345/217/262/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +146 -0
- package/md_cg/whitebox_kb/knowledge//351/253/230/344/270/255/345/234/260/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +139 -0
- package/md_cg/whitebox_kb/knowledge//351/253/230/344/270/255/346/200/235/346/203/263/346/224/277/346/262/273/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +174 -0
- package/md_cg/whitebox_kb/knowledge//351/253/230/344/270/255/346/225/260/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +566 -0
- package/md_cg/whitebox_kb/knowledge//351/253/230/344/270/255/347/211/251/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +692 -0
- package/md_cg/whitebox_kb/knowledge//351/253/230/344/270/255/347/224/237/347/211/251/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +440 -0
- package/md_cg/whitebox_kb/knowledge//351/253/230/344/270/255/350/213/261/350/257/255/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +167 -0
- package/md_cg/whitebox_kb/knowledge//351/253/230/344/270/255/350/257/255/346/226/207/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +153 -0
- package/md_cg/whitebox_kb/knowledge//351/253/230/345/210/206/345/255/220/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +146 -0
- package/md_cg/whitebox_kb/knowledge//351/253/230/347/255/211/344/273/243/346/225/260/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +244 -0
- package/md_cg/whitebox_kb/knowledge//351/253/230/347/255/211/346/225/260/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +384 -0
- package/md_cg/whitebox_kb/seed_knowledge/__init__.py +2 -0
- package/md_cg/whitebox_kb/seed_knowledge/guardrail-charter.md +164 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//344/270/255/345/233/275/345/217/244/344/273/243/346/226/207/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +113 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//344/270/255/345/233/275/347/216/260/344/273/243/346/226/207/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +89 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//344/272/272/345/267/245/346/231/272/350/203/275/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +121 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//344/272/272/347/261/273/350/247/202/345/257/237/350/200/205/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +161 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//344/274/232/350/256/241/345/255/246/345/216/237/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +89 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//344/277/241/346/201/257/350/256/272/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +90 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/210/206/345/255/220/347/224/237/347/211/251/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +113 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/210/206/346/236/220/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +113 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/210/235/344/270/255/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +241 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/210/235/344/270/255/345/216/206/345/217/262/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +117 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/210/235/344/270/255/345/234/260/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +109 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/210/235/344/270/255/346/225/260/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +241 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/210/235/344/270/255/347/211/251/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +317 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/210/235/344/270/255/347/224/237/347/211/251/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +261 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/210/235/344/270/255/350/213/261/350/257/255/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +113 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/210/235/344/270/255/350/257/255/346/226/207/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +113 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/210/235/344/270/255/351/201/223/345/276/267/344/270/216/346/263/225/346/262/273/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +105 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/212/250/347/211/251/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +101 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +1194 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/214/226/345/267/245/345/216/237/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +113 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/214/273/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +111 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/216/206/345/217/262/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +278 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/216/237/345/255/220/347/211/251/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +97 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/217/244/344/273/243/346/261/211/350/257/255/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +97 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/223/262/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +111 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/233/272/344/275/223/347/211/251/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +133 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/234/237/346/234/250/345/267/245/347/250/213/345/237/272/347/241/200/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +89 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/234/260/347/220/206/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +154 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/244/215/345/217/230/345/207/275/346/225/260/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +129 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/244/226/345/233/275/346/226/207/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +85 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/244/247/345/255/246/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +169 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/244/247/345/255/246/346/200/235/346/224/277/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +117 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/244/247/345/255/246/347/211/251/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +201 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/244/247/345/255/246/350/213/261/350/257/255/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +93 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/244/251/344/275/223/347/211/251/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +89 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/244/251/346/226/207/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +131 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/256/217/350/247/202/347/273/217/346/265/216/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +105 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/256/236/345/217/230/345/207/275/346/225/260/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +129 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/260/217/345/255/246/346/225/260/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +333 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/260/217/345/255/246/347/247/221/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +1124 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/260/217/345/255/246/350/213/261/350/257/255/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +105 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/260/217/345/255/246/350/257/255/346/226/207/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +117 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/260/217/345/255/246/351/201/223/345/276/267/344/270/216/346/263/225/346/262/273/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +105 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/267/245/347/250/213/345/210/266/345/233/276/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +85 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/267/245/347/250/213/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +362 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/270/202/345/234/272/350/220/245/351/224/200/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +81 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/270/270/345/276/256/345/210/206/346/226/271/347/250/213/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +153 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/276/256/345/210/206/345/207/240/344/275/225/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +101 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/276/256/347/224/237/347/211/251/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +97 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/276/256/350/247/202/347/273/217/346/265/216/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +101 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/277/203/347/220/206/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +119 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/203/205/346/204/237/346/203/205/347/273/252/344/273/277/347/234/237/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +186 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/212/275/350/261/241/344/273/243/346/225/260/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +109 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/213/223/346/211/221/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +97 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/223/215/344/275/234/347/263/273/347/273/237/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +109 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/224/277/346/262/273/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +234 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/225/260/345/200/274/345/210/206/346/236/220/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +133 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/225/260/345/255/227/347/224/265/350/267/257/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +101 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/225/260/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +1166 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/225/260/345/255/246/345/210/206/346/236/220/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +217 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/225/260/345/255/246/347/211/251/347/220/206/346/226/271/346/263/225/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +105 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/225/260/346/215/256/345/272/223/347/263/273/347/273/237/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +101 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/225/260/346/215/256/347/273/223/346/236/204/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +117 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/226/207/345/255/246/347/220/206/350/256/272/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +89 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/227/240/346/234/272/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +141 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/227/266/347/251/272/350/256/260/345/277/206/345/233/276/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +214 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/231/272/350/203/275/350/256/272/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +350 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/234/211/346/234/272/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +129 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/235/220/346/226/231/345/212/233/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +101 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/235/241/344/273/266/350/256/272/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +350 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/244/215/347/211/251/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +89 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/246/202/347/216/207/350/256/272/344/270/216/346/225/260/347/220/206/347/273/237/350/256/241/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +149 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/250/241/346/213/237/347/224/265/345/255/220/346/212/200/346/234/257/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +101 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/263/233/345/207/275/345/210/206/346/236/220/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +125 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/203/255/345/212/233/345/255/246/344/270/216/347/273/237/350/256/241/347/211/251/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +125 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/211/251/347/220/206/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +129 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/211/251/347/220/206/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +1302 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/216/260/344/273/243/346/261/211/350/257/255/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +89 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/220/206/350/256/272/345/212/233/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +137 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/224/237/346/200/201/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +93 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/224/237/347/211/251/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +137 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/224/237/347/211/251/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +1018 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/224/237/347/220/206/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +93 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/224/265/345/212/250/345/212/233/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +125 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/224/265/350/267/257/345/216/237/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +101 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/244/276/344/274/232/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +111 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/250/213/345/272/217/350/256/276/350/256/241/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +101 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/256/227/346/263/225/350/256/276/350/256/241/344/270/216/345/210/206/346/236/220/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +105 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/256/241/347/220/206/345/255/246/345/216/237/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +89 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/272/277/346/200/247/344/273/243/346/225/260/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +133 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/273/206/350/203/236/347/224/237/347/211/251/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +121 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/273/217/346/265/216/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +169 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/273/223/346/236/204/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +105 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/273/274/345/220/210/302/267/347/273/264/345/237/272/347/273/274/350/277/260.md +184 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/274/226/350/257/221/345/216/237/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +101 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//350/207/252/346/210/221/346/204/217/350/257/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +270 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//350/256/241/347/256/227/346/234/272/347/247/221/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +698 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//350/256/241/347/256/227/346/234/272/347/273/204/346/210/220/345/216/237/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +109 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//350/256/241/347/256/227/346/234/272/347/275/221/347/273/234/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +109 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//350/257/255/350/250/200/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +226 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//350/275/257/344/273/266/345/267/245/347/250/213/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +97 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//351/201/227/344/274/240/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +113 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//351/207/217/345/255/220/345/212/233/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +137 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//351/207/221/350/236/215/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +89 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//351/253/230/344/270/255/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +341 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//351/253/230/344/270/255/345/216/206/345/217/262/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +101 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//351/253/230/344/270/255/345/234/260/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +97 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//351/253/230/344/270/255/346/200/235/346/203/263/346/224/277/346/262/273/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +117 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//351/253/230/344/270/255/346/225/260/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +341 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//351/253/230/344/270/255/347/211/251/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +365 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//351/253/230/344/270/255/347/224/237/347/211/251/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +269 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//351/253/230/344/270/255/350/213/261/350/257/255/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +113 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//351/253/230/344/270/255/350/257/255/346/226/207/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +105 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//351/253/230/345/210/206/345/255/220/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +101 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//351/253/230/347/255/211/344/273/243/346/225/260/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +157 -0
- package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//351/253/230/347/255/211/346/225/260/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +237 -0
- package/md_cg/whitebox_kb/seed_knowledge//346/231/272/350/203/275/350/256/2723.3.md +4620 -0
- package/md_cg/whitebox_kb/wisdom/__init__.py +6 -0
- package/md_cg/whitebox_kb/wisdom/__pycache__/browser_units.cpython-310.pyc +0 -0
- package/md_cg/whitebox_kb/wisdom/__pycache__/chat_engine.cpython-310.pyc +0 -0
- package/md_cg/whitebox_kb/wisdom/__pycache__/code_compose.cpython-310.pyc +0 -0
- package/md_cg/whitebox_kb/wisdom/__pycache__/compiler_code_units.cpython-310.pyc +0 -0
- package/md_cg/whitebox_kb/wisdom/__pycache__/condition_frame.cpython-310.pyc +0 -0
- package/md_cg/whitebox_kb/wisdom/__pycache__/condition_kb.cpython-310.pyc +0 -0
- package/md_cg/whitebox_kb/wisdom/__pycache__/danmaku_audit.cpython-310.pyc +0 -0
- package/md_cg/whitebox_kb/wisdom/__pycache__/graph_db_units.cpython-310.pyc +0 -0
- package/md_cg/whitebox_kb/wisdom/__pycache__/net_units.cpython-310.pyc +0 -0
- package/md_cg/whitebox_kb/wisdom/__pycache__/neural_retrieve.cpython-310.pyc +0 -0
- package/md_cg/whitebox_kb/wisdom/__pycache__/os_units.cpython-310.pyc +0 -0
- package/md_cg/whitebox_kb/wisdom/__pycache__/python_code_units.cpython-310.pyc +0 -0
- package/md_cg/whitebox_kb/wisdom/__pycache__/route_memory.cpython-310.pyc +0 -0
- package/md_cg/whitebox_kb/wisdom/__pycache__/semantic_translate.cpython-310.pyc +0 -0
- package/md_cg/whitebox_kb/wisdom/__pycache__/verifier.cpython-310.pyc +0 -0
- package/md_cg/whitebox_kb/wisdom/__pycache__/verify_answer.cpython-310.pyc +0 -0
- package/md_cg/whitebox_kb/wisdom/__pycache__/wisdom_book.cpython-310.pyc +0 -0
- package/md_cg/whitebox_kb/wisdom/__pycache__/wisdom_cloud.cpython-310.pyc +0 -0
- package/md_cg/whitebox_kb/wisdom/answer_spec_anchor.py +87 -0
- package/md_cg/whitebox_kb/wisdom/audit_log/chain_heat.json +26 -0
- package/md_cg/whitebox_kb/wisdom/browser_units.py +2631 -0
- package/md_cg/whitebox_kb/wisdom/card_validator.py +223 -0
- package/md_cg/whitebox_kb/wisdom/causal_discover.py +313 -0
- package/md_cg/whitebox_kb/wisdom/chat.html +185 -0
- package/md_cg/whitebox_kb/wisdom/chat_engine.py +1506 -0
- package/md_cg/whitebox_kb/wisdom/code_compose.py +730 -0
- package/md_cg/whitebox_kb/wisdom/code_qa.py +119 -0
- package/md_cg/whitebox_kb/wisdom/code_route_bridge.py +90 -0
- package/md_cg/whitebox_kb/wisdom/code_solidified.json +6196 -0
- package/md_cg/whitebox_kb/wisdom/code_test_runner.py +217 -0
- package/md_cg/whitebox_kb/wisdom/codegraph_white.py +312 -0
- package/md_cg/whitebox_kb/wisdom/compiler_code_units.py +3033 -0
- package/md_cg/whitebox_kb/wisdom/compiler_compose.py +160 -0
- package/md_cg/whitebox_kb/wisdom/compose_engine.py +1633 -0
- package/md_cg/whitebox_kb/wisdom/condition_algebra.py +112 -0
- package/md_cg/whitebox_kb/wisdom/condition_frame.py +315 -0
- package/md_cg/whitebox_kb/wisdom/condition_kb.py +108 -0
- package/md_cg/whitebox_kb/wisdom/condition_vm.py +264 -0
- package/md_cg/whitebox_kb/wisdom/conflict_map.json +4446 -0
- package/md_cg/whitebox_kb/wisdom/core/compiler.py +301 -0
- package/md_cg/whitebox_kb/wisdom/core/condition_vm.py +298 -0
- package/md_cg/whitebox_kb/wisdom/core/lexer.py +512 -0
- package/md_cg/whitebox_kb/wisdom/core/name_checker.py +1023 -0
- package/md_cg/whitebox_kb/wisdom/core/parser.py +1065 -0
- package/md_cg/whitebox_kb/wisdom/cspmn.py +258 -0
- package/md_cg/whitebox_kb/wisdom/csre.py +256 -0
- package/md_cg/whitebox_kb/wisdom/csre_lexicon_index.npz +0 -0
- package/md_cg/whitebox_kb/wisdom/danmaku_audit.py +252 -0
- package/md_cg/whitebox_kb/wisdom/danmaku_bridge.py +141 -0
- package/md_cg/whitebox_kb/wisdom/distilled_condition_units.json +6418 -0
- package/md_cg/whitebox_kb/wisdom/docs/WB-EVAL-20260902b.json +1951 -0
- package/md_cg/whitebox_kb/wisdom/docs/WB-EVAL-20260902c.json +1297 -0
- package/md_cg/whitebox_kb/wisdom/docs/codegraph_ref_rating.md +52 -0
- package/md_cg/whitebox_kb/wisdom/docs/daoti_absorb_analysis.md +54 -0
- package/md_cg/whitebox_kb/wisdom/docs/dsh_memory_v030_stable.md +34 -0
- package/md_cg/whitebox_kb/wisdom/docs/github_absorb_analysis.md +71 -0
- package/md_cg/whitebox_kb/wisdom/docs/gliding_horse_absorb_analysis.md +47 -0
- package/md_cg/whitebox_kb/wisdom/docs/whitebox_capability_graph.md +61 -0
- package/md_cg/whitebox_kb/wisdom/docs/whitebox_capability_graph_demo.json +60 -0
- package/md_cg/whitebox_kb/wisdom/docs/whitebox_code_rating_202609.md +43 -0
- package/md_cg/whitebox_kb/wisdom/docs//344/273/243/347/240/201/346/235/241/344/273/266/350/267/257/347/224/261/345/233/276_CCG/350/256/276/350/256/241.md +150 -0
- package/md_cg/whitebox_kb/wisdom/docs//344/273/243/347/240/201/350/257/255/344/271/211/346/235/241/344/273/266/345/215/217/350/256/256.md +650 -0
- package/md_cg/whitebox_kb/wisdom/docs//345/261/200/351/203/250/346/234/200/344/274/230/344/270/216/346/203/205/347/273/252/345/201/217/345/245/275_/347/220/206/350/256/272/345/267/245/347/250/213.md +97 -0
- package/md_cg/whitebox_kb/wisdom/docs//346/226/271/345/220/221/346/200/247/346/212/211/346/213/251_/350/207/252/344/270/276vs/350/207/252/350/277/255/344/273/243.md +81 -0
- package/md_cg/whitebox_kb/wisdom/docs//347/201/265/346/236/242AGI/346/236/266/346/236/204/346/216/242/347/264/242_/346/226/207/346/241/243/350/247/204/345/210/222.md +51 -0
- package/md_cg/whitebox_kb/wisdom/docs//347/201/265/346/236/242/346/217/222/344/273/266/345/210/206/347/261/273/345/210/206/346/236/220.md +67 -0
- package/md_cg/whitebox_kb/wisdom/docs//347/231/275/347/256/261/346/234/254/345/234/260/346/240/241/351/252/214/345/231/250_ZeroLLM_Verifier.md +276 -0
- package/md_cg/whitebox_kb/wisdom/docs//347/231/275/347/256/261/350/207/252/344/270/276/347/254/254/345/205/255/351/230/266/346/256/265_/346/224/266/345/256/230/346/200/273/347/273/223.md +1207 -0
- package/md_cg/whitebox_kb/wisdom/ds_compose.py +177 -0
- package/md_cg/whitebox_kb/wisdom/graph_db_units.py +3089 -0
- package/md_cg/whitebox_kb/wisdom/graph_qa.py +123 -0
- package/md_cg/whitebox_kb/wisdom/human_observer_knowledge.json +43 -0
- package/md_cg/whitebox_kb/wisdom/knowledge_points.py +234 -0
- package/md_cg/whitebox_kb/wisdom/merge_subgraph.py +178 -0
- package/md_cg/whitebox_kb/wisdom/migrate_wisdom.py +475 -0
- package/md_cg/whitebox_kb/wisdom/mini_python.py +958 -0
- package/md_cg/whitebox_kb/wisdom/multilang_ir.py +124 -0
- package/md_cg/whitebox_kb/wisdom/navigate.py +248 -0
- package/md_cg/whitebox_kb/wisdom/net_units.py +2895 -0
- package/md_cg/whitebox_kb/wisdom/neural_index.json +3032 -0
- package/md_cg/whitebox_kb/wisdom/neural_index.npz +0 -0
- package/md_cg/whitebox_kb/wisdom/neural_retrieve.py +224 -0
- package/md_cg/whitebox_kb/wisdom/os_units.py +2735 -0
- package/md_cg/whitebox_kb/wisdom/pattern_separation.py +223 -0
- package/md_cg/whitebox_kb/wisdom/prereq_map.json +365 -0
- package/md_cg/whitebox_kb/wisdom/python_code_units.py +2766 -0
- package/md_cg/whitebox_kb/wisdom/role_compose.py +268 -0
- package/md_cg/whitebox_kb/wisdom/role_solidified.json +8 -0
- package/md_cg/whitebox_kb/wisdom/route_memory.py +244 -0
- package/md_cg/whitebox_kb/wisdom/scene_reconstruction.py +148 -0
- package/md_cg/whitebox_kb/wisdom/se_compose.py +137 -0
- package/md_cg/whitebox_kb/wisdom/semantic_translate.py +4050 -0
- package/md_cg/whitebox_kb/wisdom/snr_dashboard.py +219 -0
- package/md_cg/whitebox_kb/wisdom/snr_report.json +41 -0
- package/md_cg/whitebox_kb/wisdom/spatial_closure.py +96 -0
- package/md_cg/whitebox_kb/wisdom/spatial_qa.py +182 -0
- package/md_cg/whitebox_kb/wisdom/status_terms.json +21 -0
- package/md_cg/whitebox_kb/wisdom/task_discipline.json +43 -0
- package/md_cg/whitebox_kb/wisdom/test_code_compose_domains.py +7541 -0
- package/md_cg/whitebox_kb/wisdom/test_compiler_self_bootstrap.py +354 -0
- package/md_cg/whitebox_kb/wisdom/test_ecosystem_assembly.py +158 -0
- package/md_cg/whitebox_kb/wisdom/test_ecosystem_demos.py +193 -0
- package/md_cg/whitebox_kb/wisdom/test_graph_db.py +292 -0
- package/md_cg/whitebox_kb/wisdom/test_navigate_self_bootstrap.py +69 -0
- package/md_cg/whitebox_kb/wisdom/test_python_self_bootstrap.py +160 -0
- package/md_cg/whitebox_kb/wisdom/trigger_words_index.json +4367 -0
- package/md_cg/whitebox_kb/wisdom/verifier.py +1012 -0
- package/md_cg/whitebox_kb/wisdom/verify_answer.py +116 -0
- package/md_cg/whitebox_kb/wisdom/wisdom-book-cloud.db +0 -0
- package/md_cg/whitebox_kb/wisdom/wisdom_book.py +2582 -0
- package/md_cg/whitebox_kb/wisdom/wisdom_cloud.py +479 -0
- package/md_cg/whitebox_kb/wisdom/wisdom_ui.html +863 -0
- package/package.json +4 -2
- package/skills/README.md +108 -0
- package/skills/plugin.json +52 -0
- package/skills/skills/analyze-type-infer/SKILL.md +45 -0
- package/skills/skills/browser-02898b15/SKILL.md +45 -0
- package/skills/skills/browser-03b04f98/SKILL.md +45 -0
- package/skills/skills/browser-0754386d/SKILL.md +45 -0
- package/skills/skills/browser-093c03ab/SKILL.md +45 -0
- package/skills/skills/browser-09e60b35/SKILL.md +45 -0
- package/skills/skills/browser-0ab4f2db/SKILL.md +45 -0
- package/skills/skills/browser-0c7f88d6/SKILL.md +45 -0
- package/skills/skills/browser-0f598430/SKILL.md +45 -0
- package/skills/skills/browser-0fd64fa5/SKILL.md +45 -0
- package/skills/skills/browser-17906c62/SKILL.md +45 -0
- package/skills/skills/browser-18f823e2/SKILL.md +45 -0
- package/skills/skills/browser-1bafe81c/SKILL.md +45 -0
- package/skills/skills/browser-1f9ab1f0/SKILL.md +45 -0
- package/skills/skills/browser-1fdb5852/SKILL.md +45 -0
- package/skills/skills/browser-21b0359c/SKILL.md +45 -0
- package/skills/skills/browser-22e8de36/SKILL.md +45 -0
- package/skills/skills/browser-24163519/SKILL.md +45 -0
- package/skills/skills/browser-2471a991/SKILL.md +45 -0
- package/skills/skills/browser-25afee4d/SKILL.md +45 -0
- package/skills/skills/browser-283a91bd/SKILL.md +45 -0
- package/skills/skills/browser-2895ff52/SKILL.md +45 -0
- package/skills/skills/browser-2cc1da58/SKILL.md +45 -0
- package/skills/skills/browser-3189fe6f/SKILL.md +45 -0
- package/skills/skills/browser-31f2b08f/SKILL.md +45 -0
- package/skills/skills/browser-37b8339e/SKILL.md +45 -0
- package/skills/skills/browser-396ec3a6/SKILL.md +45 -0
- package/skills/skills/browser-3df2f904/SKILL.md +45 -0
- package/skills/skills/browser-43154cec/SKILL.md +45 -0
- package/skills/skills/browser-434b74b8/SKILL.md +45 -0
- package/skills/skills/browser-440d4398/SKILL.md +45 -0
- package/skills/skills/browser-44d7f183/SKILL.md +45 -0
- package/skills/skills/browser-4d6c0788/SKILL.md +45 -0
- package/skills/skills/browser-50fecd89/SKILL.md +45 -0
- package/skills/skills/browser-555c0626/SKILL.md +45 -0
- package/skills/skills/browser-57312d24/SKILL.md +45 -0
- package/skills/skills/browser-59a0ada4/SKILL.md +45 -0
- package/skills/skills/browser-5a455aeb/SKILL.md +45 -0
- package/skills/skills/browser-5ae7623a/SKILL.md +45 -0
- package/skills/skills/browser-5dac60b6/SKILL.md +45 -0
- package/skills/skills/browser-5e5f1396/SKILL.md +45 -0
- package/skills/skills/browser-5ebb01dd/SKILL.md +45 -0
- package/skills/skills/browser-5f5453f9/SKILL.md +45 -0
- package/skills/skills/browser-5f90f58c/SKILL.md +45 -0
- package/skills/skills/browser-609362ee/SKILL.md +45 -0
- package/skills/skills/browser-60aefeeb/SKILL.md +45 -0
- package/skills/skills/browser-6636d49c/SKILL.md +45 -0
- package/skills/skills/browser-6cfcb6db/SKILL.md +45 -0
- package/skills/skills/browser-6e1c1158/SKILL.md +45 -0
- package/skills/skills/browser-7008e942/SKILL.md +45 -0
- package/skills/skills/browser-716cd26c/SKILL.md +45 -0
- package/skills/skills/browser-720ce1a1/SKILL.md +45 -0
- package/skills/skills/browser-77a97b43/SKILL.md +45 -0
- package/skills/skills/browser-7bb4871d/SKILL.md +45 -0
- package/skills/skills/browser-7be57bbe/SKILL.md +45 -0
- package/skills/skills/browser-7da433f3/SKILL.md +45 -0
- package/skills/skills/browser-7e96fe1d/SKILL.md +45 -0
- package/skills/skills/browser-7f9cefec/SKILL.md +45 -0
- package/skills/skills/browser-80224e71/SKILL.md +45 -0
- package/skills/skills/browser-81345ecd/SKILL.md +45 -0
- package/skills/skills/browser-822cfa44/SKILL.md +45 -0
- package/skills/skills/browser-853690c0/SKILL.md +45 -0
- package/skills/skills/browser-85553126/SKILL.md +45 -0
- package/skills/skills/browser-87b0ce80/SKILL.md +45 -0
- package/skills/skills/browser-900c4484/SKILL.md +45 -0
- package/skills/skills/browser-910405c4/SKILL.md +45 -0
- package/skills/skills/browser-95fd3c86/SKILL.md +45 -0
- package/skills/skills/browser-97a14ca3/SKILL.md +45 -0
- package/skills/skills/browser-9de10895/SKILL.md +45 -0
- package/skills/skills/browser-9e4914a7/SKILL.md +45 -0
- package/skills/skills/browser-a280ec64/SKILL.md +45 -0
- package/skills/skills/browser-a2d9b0b0/SKILL.md +45 -0
- package/skills/skills/browser-a372edeb/SKILL.md +45 -0
- package/skills/skills/browser-a4c793a4/SKILL.md +45 -0
- package/skills/skills/browser-a681d0c2/SKILL.md +45 -0
- package/skills/skills/browser-a7a2b0c1/SKILL.md +45 -0
- package/skills/skills/browser-a990e68e/SKILL.md +45 -0
- package/skills/skills/browser-aaac4eec/SKILL.md +45 -0
- package/skills/skills/browser-ae6586bb/SKILL.md +45 -0
- package/skills/skills/browser-afa4091f/SKILL.md +45 -0
- package/skills/skills/browser-b4c8cf65/SKILL.md +45 -0
- package/skills/skills/browser-b501767c/SKILL.md +45 -0
- package/skills/skills/browser-bcd4288d/SKILL.md +45 -0
- package/skills/skills/browser-bfad66a5/SKILL.md +45 -0
- package/skills/skills/browser-c45cbfe9/SKILL.md +45 -0
- package/skills/skills/browser-c4dd6078/SKILL.md +45 -0
- package/skills/skills/browser-c879eb0b/SKILL.md +45 -0
- package/skills/skills/browser-c92ac01b/SKILL.md +45 -0
- package/skills/skills/browser-cb179242/SKILL.md +45 -0
- package/skills/skills/browser-cc7d3d6d/SKILL.md +45 -0
- package/skills/skills/browser-cf3c47f0/SKILL.md +45 -0
- package/skills/skills/browser-cf9f812e/SKILL.md +45 -0
- package/skills/skills/browser-d462581c/SKILL.md +45 -0
- package/skills/skills/browser-d5fa0b7f/SKILL.md +45 -0
- package/skills/skills/browser-d72e225b/SKILL.md +45 -0
- package/skills/skills/browser-df1a919e/SKILL.md +45 -0
- package/skills/skills/browser-e84565c1/SKILL.md +45 -0
- package/skills/skills/browser-e947a564/SKILL.md +45 -0
- package/skills/skills/browser-ea9b2b8e/SKILL.md +45 -0
- package/skills/skills/browser-f5ffc6d9/SKILL.md +45 -0
- package/skills/skills/browser-f75a4418/SKILL.md +45 -0
- package/skills/skills/browser-f8f2966e/SKILL.md +45 -0
- package/skills/skills/browser-fa65fa2d/SKILL.md +45 -0
- package/skills/skills/browser-faac8812/SKILL.md +45 -0
- package/skills/skills/browser-ff94a671/SKILL.md +45 -0
- package/skills/skills/check-name-real/SKILL.md +45 -0
- package/skills/skills/compile-assign/SKILL.md +45 -0
- package/skills/skills/compile-expr-tree/SKILL.md +45 -0
- package/skills/skills/compile-full-pipeline/SKILL.md +45 -0
- package/skills/skills/compile-func-def/SKILL.md +45 -0
- package/skills/skills/compile-if-then/SKILL.md +45 -0
- package/skills/skills/compile-logic-expr/SKILL.md +45 -0
- package/skills/skills/compile-recursive/SKILL.md +45 -0
- package/skills/skills/compile-scope/SKILL.md +45 -0
- package/skills/skills/compile-type-check/SKILL.md +45 -0
- package/skills/skills/compile-while/SKILL.md +45 -0
- package/skills/skills/compiler-0010c4bf/SKILL.md +45 -0
- package/skills/skills/compiler-0355bffb/SKILL.md +45 -0
- package/skills/skills/compiler-0361708a/SKILL.md +45 -0
- package/skills/skills/compiler-054a0414/SKILL.md +45 -0
- package/skills/skills/compiler-05a1691a/SKILL.md +45 -0
- package/skills/skills/compiler-05eeed1e/SKILL.md +45 -0
- package/skills/skills/compiler-0622a1f6/SKILL.md +45 -0
- package/skills/skills/compiler-08b54217/SKILL.md +45 -0
- package/skills/skills/compiler-0a62b70c/SKILL.md +45 -0
- package/skills/skills/compiler-0ab24d00/SKILL.md +45 -0
- package/skills/skills/compiler-0e093688/SKILL.md +45 -0
- package/skills/skills/compiler-0e82b966/SKILL.md +45 -0
- package/skills/skills/compiler-0ee9b9b9/SKILL.md +45 -0
- package/skills/skills/compiler-0f3787e6/SKILL.md +45 -0
- package/skills/skills/compiler-1028685f/SKILL.md +45 -0
- package/skills/skills/compiler-11897630/SKILL.md +45 -0
- package/skills/skills/compiler-16661b9b/SKILL.md +45 -0
- package/skills/skills/compiler-1f722303/SKILL.md +45 -0
- package/skills/skills/compiler-25be1262/SKILL.md +45 -0
- package/skills/skills/compiler-2a76ba07/SKILL.md +45 -0
- package/skills/skills/compiler-2dbea54a/SKILL.md +45 -0
- package/skills/skills/compiler-2df52f16/SKILL.md +45 -0
- package/skills/skills/compiler-2ec2c9d2/SKILL.md +45 -0
- package/skills/skills/compiler-2f8c8f39/SKILL.md +45 -0
- package/skills/skills/compiler-38378ac7/SKILL.md +45 -0
- package/skills/skills/compiler-39457d2e/SKILL.md +45 -0
- package/skills/skills/compiler-39fb5926/SKILL.md +45 -0
- package/skills/skills/compiler-47f4fbfa/SKILL.md +45 -0
- package/skills/skills/compiler-4a8cd1f1/SKILL.md +45 -0
- package/skills/skills/compiler-4b230b6b/SKILL.md +45 -0
- package/skills/skills/compiler-4cbbda95/SKILL.md +45 -0
- package/skills/skills/compiler-4d5a68ff/SKILL.md +45 -0
- package/skills/skills/compiler-56dc9bdd/SKILL.md +45 -0
- package/skills/skills/compiler-57e76ebe/SKILL.md +45 -0
- package/skills/skills/compiler-61ff016b/SKILL.md +45 -0
- package/skills/skills/compiler-63eae588/SKILL.md +45 -0
- package/skills/skills/compiler-64c4224b/SKILL.md +45 -0
- package/skills/skills/compiler-66377955/SKILL.md +45 -0
- package/skills/skills/compiler-674ab4f6/SKILL.md +45 -0
- package/skills/skills/compiler-6af76fd6/SKILL.md +45 -0
- package/skills/skills/compiler-6d979db2/SKILL.md +45 -0
- package/skills/skills/compiler-6de326c0/SKILL.md +45 -0
- package/skills/skills/compiler-6f1c0eea/SKILL.md +45 -0
- package/skills/skills/compiler-724d6c9b/SKILL.md +45 -0
- package/skills/skills/compiler-7690177f/SKILL.md +45 -0
- package/skills/skills/compiler-7b229a7d/SKILL.md +45 -0
- package/skills/skills/compiler-7f471b3a/SKILL.md +45 -0
- package/skills/skills/compiler-815cad08/SKILL.md +45 -0
- package/skills/skills/compiler-83c61634/SKILL.md +45 -0
- package/skills/skills/compiler-8c798c81/SKILL.md +45 -0
- package/skills/skills/compiler-8dd747ac/SKILL.md +45 -0
- package/skills/skills/compiler-90324d0a/SKILL.md +45 -0
- package/skills/skills/compiler-94b8d72d/SKILL.md +45 -0
- package/skills/skills/compiler-94f12231/SKILL.md +45 -0
- package/skills/skills/compiler-95937c16/SKILL.md +45 -0
- package/skills/skills/compiler-98a5625b/SKILL.md +45 -0
- package/skills/skills/compiler-98b4c42f/SKILL.md +45 -0
- package/skills/skills/compiler-98e3894a/SKILL.md +45 -0
- package/skills/skills/compiler-9bdfe4b8/SKILL.md +45 -0
- package/skills/skills/compiler-9d9b4e83/SKILL.md +45 -0
- package/skills/skills/compiler-9f7be5ad/SKILL.md +45 -0
- package/skills/skills/compiler-a6daf076/SKILL.md +45 -0
- package/skills/skills/compiler-a7995a0c/SKILL.md +45 -0
- package/skills/skills/compiler-a8399248/SKILL.md +45 -0
- package/skills/skills/compiler-aabbd099/SKILL.md +45 -0
- package/skills/skills/compiler-afe169d8/SKILL.md +45 -0
- package/skills/skills/compiler-b0678bda/SKILL.md +45 -0
- package/skills/skills/compiler-b09bd196/SKILL.md +45 -0
- package/skills/skills/compiler-b1396e23/SKILL.md +45 -0
- package/skills/skills/compiler-b9b31ce0/SKILL.md +45 -0
- package/skills/skills/compiler-c10264a7/SKILL.md +45 -0
- package/skills/skills/compiler-cb1e8e4b/SKILL.md +45 -0
- package/skills/skills/compiler-ccafd438/SKILL.md +45 -0
- package/skills/skills/compiler-cda9c262/SKILL.md +45 -0
- package/skills/skills/compiler-ce648068/SKILL.md +45 -0
- package/skills/skills/compiler-cf5776a4/SKILL.md +45 -0
- package/skills/skills/compiler-d974e5d3/SKILL.md +45 -0
- package/skills/skills/compiler-e3979fd3/SKILL.md +45 -0
- package/skills/skills/compiler-eb1cf2b5/SKILL.md +45 -0
- package/skills/skills/compiler-ecb30d5b/SKILL.md +45 -0
- package/skills/skills/compiler-f8c8b24b/SKILL.md +45 -0
- package/skills/skills/compiler-f99fedbe/SKILL.md +45 -0
- package/skills/skills/compiler-fa8ff5f7/SKILL.md +45 -0
- package/skills/skills/compiler-fe1b058d/SKILL.md +45 -0
- package/skills/skills/designer-perspective/SKILL.md +157 -0
- package/skills/skills/designer-perspective/references/01-observation-position.md +66 -0
- package/skills/skills/designer-perspective/references/02-structure-recognition.md +62 -0
- package/skills/skills/designer-perspective/references/03-direction-judgment.md +55 -0
- package/skills/skills/designer-perspective/references/04-qualification-verdict.md +72 -0
- package/skills/skills/designer-perspective/references/05-condition-attribution.md +74 -0
- package/skills/skills/designer-perspective/scripts/__pycache__/designer.cpython-310.pyc +0 -0
- package/skills/skills/designer-perspective/scripts/designer.py +527 -0
- package/skills/skills/designer-perspective/tests/cases.jsonl +17 -0
- package/skills/skills/designer-perspective/tests/selftest.py +60 -0
- package/skills/skills/graph-04cd431b/SKILL.md +45 -0
- package/skills/skills/graph-06e2b1f2/SKILL.md +45 -0
- package/skills/skills/graph-0de12477/SKILL.md +45 -0
- package/skills/skills/graph-0e564e68/SKILL.md +45 -0
- package/skills/skills/graph-10d58a7b/SKILL.md +45 -0
- package/skills/skills/graph-12cd830a/SKILL.md +45 -0
- package/skills/skills/graph-185f2cd2/SKILL.md +45 -0
- package/skills/skills/graph-19a6a301/SKILL.md +45 -0
- package/skills/skills/graph-1b266557/SKILL.md +45 -0
- package/skills/skills/graph-1b707621/SKILL.md +45 -0
- package/skills/skills/graph-1d73b597/SKILL.md +45 -0
- package/skills/skills/graph-2041fa98/SKILL.md +45 -0
- package/skills/skills/graph-2461bc41/SKILL.md +45 -0
- package/skills/skills/graph-2465dff8/SKILL.md +45 -0
- package/skills/skills/graph-2508389f/SKILL.md +45 -0
- package/skills/skills/graph-276d554d/SKILL.md +45 -0
- package/skills/skills/graph-299f4a32/SKILL.md +45 -0
- package/skills/skills/graph-2d455cd8/SKILL.md +45 -0
- package/skills/skills/graph-2fddf701/SKILL.md +45 -0
- package/skills/skills/graph-33385442/SKILL.md +45 -0
- package/skills/skills/graph-34a1dba7/SKILL.md +45 -0
- package/skills/skills/graph-3721be1c/SKILL.md +45 -0
- package/skills/skills/graph-3755dbc9/SKILL.md +45 -0
- package/skills/skills/graph-37a45d4b/SKILL.md +45 -0
- package/skills/skills/graph-3a4a984c/SKILL.md +45 -0
- package/skills/skills/graph-3aa4c941/SKILL.md +45 -0
- package/skills/skills/graph-3b69a528/SKILL.md +45 -0
- package/skills/skills/graph-3bc2eb69/SKILL.md +45 -0
- package/skills/skills/graph-3d255ed4/SKILL.md +45 -0
- package/skills/skills/graph-3d34961d/SKILL.md +45 -0
- package/skills/skills/graph-3e18a380/SKILL.md +45 -0
- package/skills/skills/graph-3f920bf3/SKILL.md +45 -0
- package/skills/skills/graph-40b7bf61/SKILL.md +45 -0
- package/skills/skills/graph-42187d5d/SKILL.md +45 -0
- package/skills/skills/graph-4361c60e/SKILL.md +45 -0
- package/skills/skills/graph-44e56113/SKILL.md +45 -0
- package/skills/skills/graph-4b363727/SKILL.md +45 -0
- package/skills/skills/graph-52e6e216/SKILL.md +45 -0
- package/skills/skills/graph-53fbfef5/SKILL.md +45 -0
- package/skills/skills/graph-54ac2988/SKILL.md +45 -0
- package/skills/skills/graph-580dadcd/SKILL.md +45 -0
- package/skills/skills/graph-5ca34baa/SKILL.md +45 -0
- package/skills/skills/graph-5cb7fbdf/SKILL.md +45 -0
- package/skills/skills/graph-5f894c05/SKILL.md +45 -0
- package/skills/skills/graph-656e7bd4/SKILL.md +45 -0
- package/skills/skills/graph-6dc48231/SKILL.md +45 -0
- package/skills/skills/graph-7186924a/SKILL.md +45 -0
- package/skills/skills/graph-72ce5342/SKILL.md +45 -0
- package/skills/skills/graph-7376a24e/SKILL.md +45 -0
- package/skills/skills/graph-7412a7cb/SKILL.md +45 -0
- package/skills/skills/graph-7becedf0/SKILL.md +45 -0
- package/skills/skills/graph-7c38fbf3/SKILL.md +45 -0
- package/skills/skills/graph-7dc36de7/SKILL.md +45 -0
- package/skills/skills/graph-7fe49de7/SKILL.md +45 -0
- package/skills/skills/graph-80d82194/SKILL.md +45 -0
- package/skills/skills/graph-85bf101e/SKILL.md +45 -0
- package/skills/skills/graph-8650548b/SKILL.md +45 -0
- package/skills/skills/graph-86583b09/SKILL.md +45 -0
- package/skills/skills/graph-8727827c/SKILL.md +45 -0
- package/skills/skills/graph-873fb505/SKILL.md +45 -0
- package/skills/skills/graph-89b11de0/SKILL.md +45 -0
- package/skills/skills/graph-8d7b569b/SKILL.md +45 -0
- package/skills/skills/graph-8e920d5d/SKILL.md +45 -0
- package/skills/skills/graph-8eb38e3d/SKILL.md +45 -0
- package/skills/skills/graph-94582f69/SKILL.md +45 -0
- package/skills/skills/graph-947355f7/SKILL.md +45 -0
- package/skills/skills/graph-9507aff7/SKILL.md +45 -0
- package/skills/skills/graph-95b86a8b/SKILL.md +45 -0
- package/skills/skills/graph-96b85e1f/SKILL.md +45 -0
- package/skills/skills/graph-97b22f09/SKILL.md +45 -0
- package/skills/skills/graph-9833cfda/SKILL.md +45 -0
- package/skills/skills/graph-9aa8a3f4/SKILL.md +45 -0
- package/skills/skills/graph-9f6665c0/SKILL.md +45 -0
- package/skills/skills/graph-a125d282/SKILL.md +45 -0
- package/skills/skills/graph-a49ef4f0/SKILL.md +45 -0
- package/skills/skills/graph-a5cd04ae/SKILL.md +45 -0
- package/skills/skills/graph-add9a63b/SKILL.md +45 -0
- package/skills/skills/graph-b00e3dc7/SKILL.md +45 -0
- package/skills/skills/graph-b33a7662/SKILL.md +45 -0
- package/skills/skills/graph-b76d15ee/SKILL.md +45 -0
- package/skills/skills/graph-b77fa05a/SKILL.md +45 -0
- package/skills/skills/graph-b912fc3b/SKILL.md +45 -0
- package/skills/skills/graph-baf61b7c/SKILL.md +45 -0
- package/skills/skills/graph-c1d5687b/SKILL.md +45 -0
- package/skills/skills/graph-c407bbed/SKILL.md +45 -0
- package/skills/skills/graph-c4676460/SKILL.md +45 -0
- package/skills/skills/graph-c4a59d80/SKILL.md +45 -0
- package/skills/skills/graph-c5815621/SKILL.md +45 -0
- package/skills/skills/graph-ccad55f1/SKILL.md +45 -0
- package/skills/skills/graph-d0677ce1/SKILL.md +45 -0
- package/skills/skills/graph-d1289b39/SKILL.md +45 -0
- package/skills/skills/graph-d15f39b1/SKILL.md +45 -0
- package/skills/skills/graph-d40691ca/SKILL.md +45 -0
- package/skills/skills/graph-d43b387a/SKILL.md +45 -0
- package/skills/skills/graph-d4dd02f4/SKILL.md +45 -0
- package/skills/skills/graph-d724ea18/SKILL.md +45 -0
- package/skills/skills/graph-d74d36fd/SKILL.md +45 -0
- package/skills/skills/graph-d9d3934c/SKILL.md +45 -0
- package/skills/skills/graph-ddf563ff/SKILL.md +45 -0
- package/skills/skills/graph-de00894f/SKILL.md +45 -0
- package/skills/skills/graph-df1ebb63/SKILL.md +45 -0
- package/skills/skills/graph-e2905c20/SKILL.md +45 -0
- package/skills/skills/graph-e4f8cefd/SKILL.md +45 -0
- package/skills/skills/graph-ea3150e7/SKILL.md +45 -0
- package/skills/skills/graph-eb4ac7dd/SKILL.md +45 -0
- package/skills/skills/graph-ee9f6dfa/SKILL.md +45 -0
- package/skills/skills/graph-f055b2ea/SKILL.md +45 -0
- package/skills/skills/graph-f1891287/SKILL.md +45 -0
- package/skills/skills/graph-f1bb5aa1/SKILL.md +45 -0
- package/skills/skills/graph-f56fa220/SKILL.md +45 -0
- package/skills/skills/graph-f729034f/SKILL.md +45 -0
- package/skills/skills/graph-f748a63f/SKILL.md +45 -0
- package/skills/skills/graph-f8c4a59e/SKILL.md +45 -0
- package/skills/skills/graph-fca3d129/SKILL.md +45 -0
- package/skills/skills/graph-fd02d934/SKILL.md +45 -0
- package/skills/skills/graph-fd51ece9/SKILL.md +45 -0
- package/skills/skills/graph-fd6a81ab/SKILL.md +45 -0
- package/skills/skills/lex-chinese-program/SKILL.md +45 -0
- package/skills/skills/lex-dao-de-jing/SKILL.md +45 -0
- package/skills/skills/lex-nine-chapters/SKILL.md +45 -0
- package/skills/skills/net-02090d29/SKILL.md +45 -0
- package/skills/skills/net-05937712/SKILL.md +45 -0
- package/skills/skills/net-059d072f/SKILL.md +45 -0
- package/skills/skills/net-080f6012/SKILL.md +45 -0
- package/skills/skills/net-08a2fc88/SKILL.md +45 -0
- package/skills/skills/net-0935edf1/SKILL.md +45 -0
- package/skills/skills/net-0e7f91e4/SKILL.md +45 -0
- package/skills/skills/net-0f2850e0/SKILL.md +45 -0
- package/skills/skills/net-107ab486/SKILL.md +45 -0
- package/skills/skills/net-111e79b0/SKILL.md +45 -0
- package/skills/skills/net-126876c1/SKILL.md +45 -0
- package/skills/skills/net-13eeb575/SKILL.md +45 -0
- package/skills/skills/net-14102d54/SKILL.md +45 -0
- package/skills/skills/net-14e9ad0d/SKILL.md +45 -0
- package/skills/skills/net-184175d3/SKILL.md +45 -0
- package/skills/skills/net-1da1c695/SKILL.md +45 -0
- package/skills/skills/net-240a14ec/SKILL.md +45 -0
- package/skills/skills/net-2784f98b/SKILL.md +45 -0
- package/skills/skills/net-292ef917/SKILL.md +45 -0
- package/skills/skills/net-3434e92f/SKILL.md +45 -0
- package/skills/skills/net-35019e6b/SKILL.md +45 -0
- package/skills/skills/net-3bbc6afb/SKILL.md +45 -0
- package/skills/skills/net-3bdf9d9d/SKILL.md +45 -0
- package/skills/skills/net-3dcb84d3/SKILL.md +45 -0
- package/skills/skills/net-431cccf9/SKILL.md +45 -0
- package/skills/skills/net-435a9f7f/SKILL.md +45 -0
- package/skills/skills/net-4508101f/SKILL.md +45 -0
- package/skills/skills/net-4585c9e7/SKILL.md +45 -0
- package/skills/skills/net-479612a0/SKILL.md +45 -0
- package/skills/skills/net-47a19838/SKILL.md +45 -0
- package/skills/skills/net-4e36e1e3/SKILL.md +45 -0
- package/skills/skills/net-509b8001/SKILL.md +45 -0
- package/skills/skills/net-51930c5e/SKILL.md +45 -0
- package/skills/skills/net-56dbd63f/SKILL.md +45 -0
- package/skills/skills/net-57387462/SKILL.md +45 -0
- package/skills/skills/net-5c115606/SKILL.md +45 -0
- package/skills/skills/net-5d27f392/SKILL.md +45 -0
- package/skills/skills/net-5f69c938/SKILL.md +45 -0
- package/skills/skills/net-5fa6c13b/SKILL.md +45 -0
- package/skills/skills/net-61580202/SKILL.md +45 -0
- package/skills/skills/net-61926703/SKILL.md +45 -0
- package/skills/skills/net-61f64fbc/SKILL.md +45 -0
- package/skills/skills/net-6200f3b2/SKILL.md +45 -0
- package/skills/skills/net-63c3eda3/SKILL.md +45 -0
- package/skills/skills/net-66e6119b/SKILL.md +45 -0
- package/skills/skills/net-68643014/SKILL.md +45 -0
- package/skills/skills/net-686632aa/SKILL.md +45 -0
- package/skills/skills/net-6967ff14/SKILL.md +45 -0
- package/skills/skills/net-6996f499/SKILL.md +45 -0
- package/skills/skills/net-6c3b02c2/SKILL.md +45 -0
- package/skills/skills/net-6eb37f63/SKILL.md +45 -0
- package/skills/skills/net-6f96c190/SKILL.md +45 -0
- package/skills/skills/net-6fb27488/SKILL.md +45 -0
- package/skills/skills/net-703559d0/SKILL.md +45 -0
- package/skills/skills/net-706d2692/SKILL.md +45 -0
- package/skills/skills/net-70a20e04/SKILL.md +45 -0
- package/skills/skills/net-7376158c/SKILL.md +45 -0
- package/skills/skills/net-74d647cb/SKILL.md +45 -0
- package/skills/skills/net-74e8a576/SKILL.md +45 -0
- package/skills/skills/net-7801c2c0/SKILL.md +45 -0
- package/skills/skills/net-78cae54d/SKILL.md +45 -0
- package/skills/skills/net-78ec0324/SKILL.md +45 -0
- package/skills/skills/net-7998097c/SKILL.md +45 -0
- package/skills/skills/net-7d81ae06/SKILL.md +45 -0
- package/skills/skills/net-7eabbbc8/SKILL.md +45 -0
- package/skills/skills/net-7ed4f2c5/SKILL.md +45 -0
- package/skills/skills/net-80b56cd6/SKILL.md +45 -0
- package/skills/skills/net-83447546/SKILL.md +45 -0
- package/skills/skills/net-8361fe5b/SKILL.md +45 -0
- package/skills/skills/net-85e3996c/SKILL.md +45 -0
- package/skills/skills/net-8897d5cc/SKILL.md +45 -0
- package/skills/skills/net-88ad93a6/SKILL.md +45 -0
- package/skills/skills/net-8e6f359e/SKILL.md +45 -0
- package/skills/skills/net-8edc4cdb/SKILL.md +45 -0
- package/skills/skills/net-8f6169e9/SKILL.md +45 -0
- package/skills/skills/net-91e00638/SKILL.md +45 -0
- package/skills/skills/net-96c61a3c/SKILL.md +45 -0
- package/skills/skills/net-99076a29/SKILL.md +45 -0
- package/skills/skills/net-998f3641/SKILL.md +45 -0
- package/skills/skills/net-a1d7228a/SKILL.md +45 -0
- package/skills/skills/net-a74da501/SKILL.md +45 -0
- package/skills/skills/net-ac57deb7/SKILL.md +45 -0
- package/skills/skills/net-b22d2f2b/SKILL.md +45 -0
- package/skills/skills/net-b2b29d8d/SKILL.md +45 -0
- package/skills/skills/net-b2ddce5d/SKILL.md +45 -0
- package/skills/skills/net-b4151e9a/SKILL.md +45 -0
- package/skills/skills/net-b873d6f7/SKILL.md +45 -0
- package/skills/skills/net-bd3d2d55/SKILL.md +45 -0
- package/skills/skills/net-c2a3f019/SKILL.md +45 -0
- package/skills/skills/net-c685b788/SKILL.md +45 -0
- package/skills/skills/net-c6c1fd79/SKILL.md +45 -0
- package/skills/skills/net-c74a1b5d/SKILL.md +45 -0
- package/skills/skills/net-cdac702d/SKILL.md +45 -0
- package/skills/skills/net-d12dff5c/SKILL.md +45 -0
- package/skills/skills/net-d3747882/SKILL.md +45 -0
- package/skills/skills/net-d5fefa59/SKILL.md +45 -0
- package/skills/skills/net-d67ec725/SKILL.md +45 -0
- package/skills/skills/net-d80c1c4c/SKILL.md +45 -0
- package/skills/skills/net-d9cb43b0/SKILL.md +45 -0
- package/skills/skills/net-da559517/SKILL.md +45 -0
- package/skills/skills/net-db4f414e/SKILL.md +45 -0
- package/skills/skills/net-dc09d67c/SKILL.md +45 -0
- package/skills/skills/net-e2d185de/SKILL.md +45 -0
- package/skills/skills/net-e2fc73f8/SKILL.md +45 -0
- package/skills/skills/net-e33ef0c2/SKILL.md +45 -0
- package/skills/skills/net-e346863c/SKILL.md +45 -0
- package/skills/skills/net-e6b3389a/SKILL.md +45 -0
- package/skills/skills/net-e9758fc0/SKILL.md +45 -0
- package/skills/skills/net-e9a9747a/SKILL.md +45 -0
- package/skills/skills/net-ea14aab8/SKILL.md +45 -0
- package/skills/skills/net-eba92ac1/SKILL.md +45 -0
- package/skills/skills/net-f29d91d2/SKILL.md +45 -0
- package/skills/skills/net-f314dd0d/SKILL.md +45 -0
- package/skills/skills/net-f332b629/SKILL.md +45 -0
- package/skills/skills/net-f7df127c/SKILL.md +45 -0
- package/skills/skills/net-fb9d8f5d/SKILL.md +45 -0
- package/skills/skills/net-fdec2c86/SKILL.md +45 -0
- package/skills/skills/os-0205cf9b/SKILL.md +45 -0
- package/skills/skills/os-027dc9be/SKILL.md +45 -0
- package/skills/skills/os-03c0d7d6/SKILL.md +45 -0
- package/skills/skills/os-040b5505/SKILL.md +45 -0
- package/skills/skills/os-06fa98ed/SKILL.md +45 -0
- package/skills/skills/os-0854291c/SKILL.md +45 -0
- package/skills/skills/os-0c7f14cb/SKILL.md +45 -0
- package/skills/skills/os-0d855af2/SKILL.md +45 -0
- package/skills/skills/os-0e87e997/SKILL.md +45 -0
- package/skills/skills/os-0f8ed882/SKILL.md +45 -0
- package/skills/skills/os-111ce1de/SKILL.md +45 -0
- package/skills/skills/os-1234eb00/SKILL.md +45 -0
- package/skills/skills/os-128f3820/SKILL.md +45 -0
- package/skills/skills/os-15796db5/SKILL.md +45 -0
- package/skills/skills/os-1898928a/SKILL.md +45 -0
- package/skills/skills/os-192b8ca9/SKILL.md +45 -0
- package/skills/skills/os-1d3bcf28/SKILL.md +45 -0
- package/skills/skills/os-1f224514/SKILL.md +45 -0
- package/skills/skills/os-26a4f86a/SKILL.md +45 -0
- package/skills/skills/os-29c96147/SKILL.md +45 -0
- package/skills/skills/os-2ea9a5ff/SKILL.md +45 -0
- package/skills/skills/os-300ef22c/SKILL.md +45 -0
- package/skills/skills/os-310dda5b/SKILL.md +45 -0
- package/skills/skills/os-313ef4ed/SKILL.md +45 -0
- package/skills/skills/os-329a2147/SKILL.md +45 -0
- package/skills/skills/os-34ad4b62/SKILL.md +45 -0
- package/skills/skills/os-350bc623/SKILL.md +45 -0
- package/skills/skills/os-35ee1a30/SKILL.md +45 -0
- package/skills/skills/os-3cd28220/SKILL.md +45 -0
- package/skills/skills/os-3d84e0c9/SKILL.md +45 -0
- package/skills/skills/os-3db42aac/SKILL.md +45 -0
- package/skills/skills/os-3e0aff42/SKILL.md +45 -0
- package/skills/skills/os-3e9405d2/SKILL.md +45 -0
- package/skills/skills/os-41d14544/SKILL.md +45 -0
- package/skills/skills/os-462f3ed4/SKILL.md +45 -0
- package/skills/skills/os-485833fa/SKILL.md +45 -0
- package/skills/skills/os-4a1cf781/SKILL.md +45 -0
- package/skills/skills/os-4bf77933/SKILL.md +45 -0
- package/skills/skills/os-4c14cec2/SKILL.md +45 -0
- package/skills/skills/os-4f05d577/SKILL.md +45 -0
- package/skills/skills/os-4f50ad0b/SKILL.md +45 -0
- package/skills/skills/os-509a4596/SKILL.md +45 -0
- package/skills/skills/os-512b1b6c/SKILL.md +45 -0
- package/skills/skills/os-5192621b/SKILL.md +45 -0
- package/skills/skills/os-55672763/SKILL.md +45 -0
- package/skills/skills/os-5582bce6/SKILL.md +45 -0
- package/skills/skills/os-5a096a1f/SKILL.md +45 -0
- package/skills/skills/os-5ca15108/SKILL.md +45 -0
- package/skills/skills/os-601663e1/SKILL.md +45 -0
- package/skills/skills/os-607f1963/SKILL.md +45 -0
- package/skills/skills/os-6158581b/SKILL.md +45 -0
- package/skills/skills/os-62f9278b/SKILL.md +45 -0
- package/skills/skills/os-63797b86/SKILL.md +45 -0
- package/skills/skills/os-6a1fe224/SKILL.md +45 -0
- package/skills/skills/os-6b0a68bf/SKILL.md +45 -0
- package/skills/skills/os-6e5cee67/SKILL.md +45 -0
- package/skills/skills/os-6fb1ff58/SKILL.md +45 -0
- package/skills/skills/os-71389592/SKILL.md +45 -0
- package/skills/skills/os-72e879a3/SKILL.md +45 -0
- package/skills/skills/os-7598748a/SKILL.md +45 -0
- package/skills/skills/os-80cc3283/SKILL.md +45 -0
- package/skills/skills/os-819f3093/SKILL.md +45 -0
- package/skills/skills/os-83670c2b/SKILL.md +45 -0
- package/skills/skills/os-878c18b3/SKILL.md +45 -0
- package/skills/skills/os-89ed7af1/SKILL.md +45 -0
- package/skills/skills/os-8cb7279d/SKILL.md +45 -0
- package/skills/skills/os-92276145/SKILL.md +45 -0
- package/skills/skills/os-955c4d66/SKILL.md +45 -0
- package/skills/skills/os-97aacf40/SKILL.md +45 -0
- package/skills/skills/os-9b6ed02c/SKILL.md +45 -0
- package/skills/skills/os-9c86a7a2/SKILL.md +45 -0
- package/skills/skills/os-a13ce4aa/SKILL.md +45 -0
- package/skills/skills/os-a568affe/SKILL.md +45 -0
- package/skills/skills/os-abd48f17/SKILL.md +45 -0
- package/skills/skills/os-b0416edc/SKILL.md +45 -0
- package/skills/skills/os-b6509cac/SKILL.md +45 -0
- package/skills/skills/os-b718657b/SKILL.md +45 -0
- package/skills/skills/os-b776ade1/SKILL.md +45 -0
- package/skills/skills/os-ba24fa08/SKILL.md +45 -0
- package/skills/skills/os-bd1fc177/SKILL.md +45 -0
- package/skills/skills/os-bda92711/SKILL.md +45 -0
- package/skills/skills/os-c0fa71bd/SKILL.md +45 -0
- package/skills/skills/os-c3d5cd44/SKILL.md +45 -0
- package/skills/skills/os-c6b6a763/SKILL.md +45 -0
- package/skills/skills/os-c7661eb1/SKILL.md +45 -0
- package/skills/skills/os-c76b5a43/SKILL.md +45 -0
- package/skills/skills/os-c7d35a30/SKILL.md +45 -0
- package/skills/skills/os-c980a25d/SKILL.md +45 -0
- package/skills/skills/os-c9f8df6e/SKILL.md +45 -0
- package/skills/skills/os-cc49ef2f/SKILL.md +45 -0
- package/skills/skills/os-cd9e686a/SKILL.md +45 -0
- package/skills/skills/os-cfa66a1b/SKILL.md +45 -0
- package/skills/skills/os-d237e500/SKILL.md +45 -0
- package/skills/skills/os-d39ef086/SKILL.md +45 -0
- package/skills/skills/os-d4f9e813/SKILL.md +45 -0
- package/skills/skills/os-d97915c0/SKILL.md +45 -0
- package/skills/skills/os-da0aadde/SKILL.md +45 -0
- package/skills/skills/os-da482caf/SKILL.md +45 -0
- package/skills/skills/os-dd4ff45e/SKILL.md +45 -0
- package/skills/skills/os-de0556c5/SKILL.md +45 -0
- package/skills/skills/os-e0ad3364/SKILL.md +45 -0
- package/skills/skills/os-e7612c68/SKILL.md +45 -0
- package/skills/skills/os-ea444e45/SKILL.md +45 -0
- package/skills/skills/os-ea6e7e0b/SKILL.md +45 -0
- package/skills/skills/os-ebc34d83/SKILL.md +45 -0
- package/skills/skills/os-ecbebbe3/SKILL.md +45 -0
- package/skills/skills/os-ecfceae7/SKILL.md +45 -0
- package/skills/skills/os-ed8de3a3/SKILL.md +45 -0
- package/skills/skills/os-f69c0b08/SKILL.md +45 -0
- package/skills/skills/os-f6ae6205/SKILL.md +45 -0
- package/skills/skills/os-f9bf8dd4/SKILL.md +45 -0
- package/skills/skills/os-fcdd828d/SKILL.md +45 -0
- package/skills/skills/pylang-01b23f80/SKILL.md +45 -0
- package/skills/skills/pylang-074fd698/SKILL.md +45 -0
- package/skills/skills/pylang-0b490bb2/SKILL.md +45 -0
- package/skills/skills/pylang-0ca7f08b/SKILL.md +45 -0
- package/skills/skills/pylang-10ce3e91/SKILL.md +45 -0
- package/skills/skills/pylang-15f76c64/SKILL.md +45 -0
- package/skills/skills/pylang-1703046f/SKILL.md +45 -0
- package/skills/skills/pylang-1aa3e939/SKILL.md +45 -0
- package/skills/skills/pylang-1bed54cf/SKILL.md +45 -0
- package/skills/skills/pylang-1dd35612/SKILL.md +45 -0
- package/skills/skills/pylang-24273d7b/SKILL.md +45 -0
- package/skills/skills/pylang-2853f59f/SKILL.md +45 -0
- package/skills/skills/pylang-2a6bc16e/SKILL.md +45 -0
- package/skills/skills/pylang-2ae78997/SKILL.md +45 -0
- package/skills/skills/pylang-2bc88f4c/SKILL.md +45 -0
- package/skills/skills/pylang-31f5b8db/SKILL.md +45 -0
- package/skills/skills/pylang-36d178bc/SKILL.md +45 -0
- package/skills/skills/pylang-38600583/SKILL.md +45 -0
- package/skills/skills/pylang-38e8f9ff/SKILL.md +45 -0
- package/skills/skills/pylang-395085ca/SKILL.md +45 -0
- package/skills/skills/pylang-399b317e/SKILL.md +45 -0
- package/skills/skills/pylang-39c72c78/SKILL.md +45 -0
- package/skills/skills/pylang-3a659480/SKILL.md +45 -0
- package/skills/skills/pylang-482be62b/SKILL.md +45 -0
- package/skills/skills/pylang-486a1e94/SKILL.md +45 -0
- package/skills/skills/pylang-49026041/SKILL.md +45 -0
- package/skills/skills/pylang-4963b28a/SKILL.md +45 -0
- package/skills/skills/pylang-4af9140e/SKILL.md +45 -0
- package/skills/skills/pylang-4ca283f2/SKILL.md +45 -0
- package/skills/skills/pylang-4ddf31f3/SKILL.md +45 -0
- package/skills/skills/pylang-50614726/SKILL.md +45 -0
- package/skills/skills/pylang-5102c069/SKILL.md +45 -0
- package/skills/skills/pylang-521b1bf8/SKILL.md +45 -0
- package/skills/skills/pylang-5880b7a1/SKILL.md +45 -0
- package/skills/skills/pylang-61a9102d/SKILL.md +45 -0
- package/skills/skills/pylang-621123dd/SKILL.md +45 -0
- package/skills/skills/pylang-642cd625/SKILL.md +45 -0
- package/skills/skills/pylang-65ca79b7/SKILL.md +45 -0
- package/skills/skills/pylang-672df225/SKILL.md +45 -0
- package/skills/skills/pylang-67d3368e/SKILL.md +45 -0
- package/skills/skills/pylang-6be54340/SKILL.md +45 -0
- package/skills/skills/pylang-70b2006f/SKILL.md +45 -0
- package/skills/skills/pylang-70b215f1/SKILL.md +45 -0
- package/skills/skills/pylang-730c3fe4/SKILL.md +45 -0
- package/skills/skills/pylang-733c1286/SKILL.md +45 -0
- package/skills/skills/pylang-79845f4d/SKILL.md +45 -0
- package/skills/skills/pylang-7c4cc6f8/SKILL.md +45 -0
- package/skills/skills/pylang-7c7193ad/SKILL.md +45 -0
- package/skills/skills/pylang-7d86ab5d/SKILL.md +45 -0
- package/skills/skills/pylang-7df8ca78/SKILL.md +45 -0
- package/skills/skills/pylang-8182681d/SKILL.md +45 -0
- package/skills/skills/pylang-81ad40ee/SKILL.md +45 -0
- package/skills/skills/pylang-8283d7c0/SKILL.md +45 -0
- package/skills/skills/pylang-82b73f3d/SKILL.md +45 -0
- package/skills/skills/pylang-8404bbde/SKILL.md +45 -0
- package/skills/skills/pylang-8584040d/SKILL.md +45 -0
- package/skills/skills/pylang-85d8617b/SKILL.md +45 -0
- package/skills/skills/pylang-886935a3/SKILL.md +45 -0
- package/skills/skills/pylang-88ab2f96/SKILL.md +45 -0
- package/skills/skills/pylang-8b6f071e/SKILL.md +45 -0
- package/skills/skills/pylang-8d6ec58a/SKILL.md +45 -0
- package/skills/skills/pylang-8fe98252/SKILL.md +45 -0
- package/skills/skills/pylang-9018c39a/SKILL.md +45 -0
- package/skills/skills/pylang-91277748/SKILL.md +45 -0
- package/skills/skills/pylang-943b9dcb/SKILL.md +45 -0
- package/skills/skills/pylang-961e9e43/SKILL.md +45 -0
- package/skills/skills/pylang-962954d9/SKILL.md +45 -0
- package/skills/skills/pylang-9dbd8e2b/SKILL.md +45 -0
- package/skills/skills/pylang-a02eac31/SKILL.md +45 -0
- package/skills/skills/pylang-a4d3d7b1/SKILL.md +45 -0
- package/skills/skills/pylang-a7c3d0e2/SKILL.md +45 -0
- package/skills/skills/pylang-a88db70d/SKILL.md +45 -0
- package/skills/skills/pylang-ab7dddc2/SKILL.md +45 -0
- package/skills/skills/pylang-ac2a4b38/SKILL.md +45 -0
- package/skills/skills/pylang-afaf67c0/SKILL.md +45 -0
- package/skills/skills/pylang-b00660e6/SKILL.md +45 -0
- package/skills/skills/pylang-b4d7616d/SKILL.md +45 -0
- package/skills/skills/pylang-b67b1878/SKILL.md +45 -0
- package/skills/skills/pylang-b8040e1c/SKILL.md +45 -0
- package/skills/skills/pylang-b880c6c6/SKILL.md +45 -0
- package/skills/skills/pylang-b8d45f76/SKILL.md +45 -0
- package/skills/skills/pylang-ba956e52/SKILL.md +45 -0
- package/skills/skills/pylang-bb18b1f9/SKILL.md +45 -0
- package/skills/skills/pylang-bb46f3f2/SKILL.md +45 -0
- package/skills/skills/pylang-be55a094/SKILL.md +45 -0
- package/skills/skills/pylang-beb47b63/SKILL.md +45 -0
- package/skills/skills/pylang-c017681a/SKILL.md +45 -0
- package/skills/skills/pylang-c1317cd9/SKILL.md +45 -0
- package/skills/skills/pylang-c36fabf7/SKILL.md +45 -0
- package/skills/skills/pylang-c42465ec/SKILL.md +45 -0
- package/skills/skills/pylang-c5c76a12/SKILL.md +45 -0
- package/skills/skills/pylang-c910ad31/SKILL.md +45 -0
- package/skills/skills/pylang-ca9332cf/SKILL.md +45 -0
- package/skills/skills/pylang-cce90fa0/SKILL.md +45 -0
- package/skills/skills/pylang-cd4234a5/SKILL.md +45 -0
- package/skills/skills/pylang-cf0fca1c/SKILL.md +45 -0
- package/skills/skills/pylang-d2001e1f/SKILL.md +45 -0
- package/skills/skills/pylang-d616eb28/SKILL.md +45 -0
- package/skills/skills/pylang-d8962e66/SKILL.md +45 -0
- package/skills/skills/pylang-db6214cd/SKILL.md +45 -0
- package/skills/skills/pylang-dcde3040/SKILL.md +45 -0
- package/skills/skills/pylang-dfad3dba/SKILL.md +45 -0
- package/skills/skills/pylang-dfd5aac2/SKILL.md +45 -0
- package/skills/skills/pylang-e1aa3818/SKILL.md +45 -0
- package/skills/skills/pylang-e476915b/SKILL.md +45 -0
- package/skills/skills/pylang-e88e31fd/SKILL.md +45 -0
- package/skills/skills/pylang-ecd569d2/SKILL.md +45 -0
- package/skills/skills/pylang-ecf27e0c/SKILL.md +45 -0
- package/skills/skills/pylang-f124f0e6/SKILL.md +45 -0
- package/skills/skills/pylang-f127a8d1/SKILL.md +45 -0
- package/skills/skills/pylang-f2d6ec27/SKILL.md +45 -0
- package/skills/skills/pylang-f2f40090/SKILL.md +45 -0
- package/skills/skills/pylang-f4aa9e65/SKILL.md +45 -0
- package/skills/skills/pylang-f4f820d4/SKILL.md +45 -0
- package/skills/skills/pylang-f5b34833/SKILL.md +45 -0
- package/skills/skills/pylang-f6ebb66e/SKILL.md +45 -0
- package/skills/skills/pylang-f78bdcd7/SKILL.md +45 -0
- package/skills/skills/pylang-f92bc49b/SKILL.md +45 -0
- package/skills/skills/pylang-fd7595f0/SKILL.md +45 -0
- package/skills/skills/pylang-fda87aa1/SKILL.md +45 -0
- package/skills/skills/vm-arithmetic/SKILL.md +45 -0
- package/skills/skills/vm-array-ops/SKILL.md +45 -0
- package/skills/skills/vm-closure-call/SKILL.md +45 -0
- package/skills/skills/vm-closure-create/SKILL.md +45 -0
- package/skills/skills/vm-compare/SKILL.md +45 -0
- package/skills/skills/vm-cond-jump/SKILL.md +45 -0
- package/skills/skills/vm-cond-space/SKILL.md +45 -0
- package/skills/skills/vm-exception/SKILL.md +45 -0
- package/skills/skills/vm-func-call/SKILL.md +45 -0
- package/skills/skills/vm-loop-run/SKILL.md +45 -0
- package/skills/skills/vm-profiling/SKILL.md +45 -0
- package/skills/skills/vm-refcount/SKILL.md +45 -0
- package/skills/skills/vm-run-loop/SKILL.md +45 -0
- package/skills/skills/vm-short-circuit/SKILL.md +45 -0
- package/skills/skills/vm-stack-guard/SKILL.md +45 -0
- package/skills/skills/vm-stack-ops/SKILL.md +45 -0
- package/skills/skills/vm-trust-accum/SKILL.md +45 -0
- package/src/bridge.ts +7 -7
- package/src/hooks.ts +78 -27
- package/src/index.ts +246 -66
- package/src/lib/datapath.ts +112 -0
- package/src/lib/mdcg_client.ts +329 -0
- package/src/lib/roleplay_web.ts +932 -0
- package/src/{llm_adapter.ts → lib/whitebox_llm.ts} +13 -7
- package/src/tools.ts +41 -55
- /package/src/{mutual.ts → lib/mutual.ts} +0 -0
|
@@ -0,0 +1,3033 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
"""compiler_code_units.py · 编译器代码条件单元库(第六阶段·白箱自举写编译器)
|
|
3
|
+
中文编译器 C 线 = 白箱代码条件单元({任务 → 代码模式模板 + 验证样例})——
|
|
4
|
+
白箱 code_compose 机制生成代码,三层自校验(语法/样例/边界),外部校准语义。
|
|
5
|
+
单元设计对齐智能论语义:若则=条件跳转、德=信任累积、道/自然=条件空间、赋值=名实写入。
|
|
6
|
+
"""
|
|
7
|
+
import sys
|
|
8
|
+
sys.stdout.reconfigure(encoding='utf-8')
|
|
9
|
+
|
|
10
|
+
# 任务 → 代码模式 + 验证样例(白箱生成的自校验基准)
|
|
11
|
+
COMPILER_UNITS = {
|
|
12
|
+
"VM-条件跳转": {
|
|
13
|
+
"task": "条件跳转",
|
|
14
|
+
"pattern": (
|
|
15
|
+
"def exec_jump_if_false(stack, ip, target):\n"
|
|
16
|
+
" # 生效条件:参数 stack/ip/target 合法\n"
|
|
17
|
+
" # 子功能:① 条件判定 ② 结果处理\n"
|
|
18
|
+
" # 执行:顺序执行\n"
|
|
19
|
+
" # 不适用条件:stack 为空/非法时(隐式盲区:返回默认值 1 = 未知行为——不适用)\n"
|
|
20
|
+
" # 若…则…否则:栈顶为假则跳转(智能论条件语句的 VM 语义)\n"
|
|
21
|
+
" if not stack:\n"
|
|
22
|
+
" return ip + 1\n"
|
|
23
|
+
" v = stack.pop()\n"
|
|
24
|
+
" return target if (v is False or v is None or v == 0) else ip + 1\n"),
|
|
25
|
+
"cases": [(([False], 3, 9), 9), (([0], 3, 9), 9), (([True], 3, 9), 4),
|
|
26
|
+
(([1], 3, 9), 4), (([], 3, 9), 4)],
|
|
27
|
+
"params": [],
|
|
28
|
+
"calibration": "对照:若条件为假则跳过 then 执行 else(JUMP_IF_FALSE)",
|
|
29
|
+
},
|
|
30
|
+
"VM-信任累积": {
|
|
31
|
+
"task": "信任累积",
|
|
32
|
+
"pattern": (
|
|
33
|
+
"def accumulate_trust(trust, amount):\n"
|
|
34
|
+
" # 信任累积(德):德——信任值累积(信任引擎内建语义)\n"
|
|
35
|
+
" # 生效条件:trust/amount 为数值(信任值 0-1 区间)\n"
|
|
36
|
+
" # 子功能:① 信任值相加 ② 三位小数归整\n"
|
|
37
|
+
" # 执行:round(trust + amount, 3)\n"
|
|
38
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
39
|
+
" return round(trust + amount, 3)\n"),
|
|
40
|
+
"cases": [((0.0, 0.5), 0.5), ((0.3, 0.5), 0.8), ((0.7, 0.0), 0.7)],
|
|
41
|
+
"params": [],
|
|
42
|
+
"calibration": "对照:德指令 → accumulate_trust(v0.2 INSTRUCTION_MAP 同语义)",
|
|
43
|
+
},
|
|
44
|
+
"VM-条件空间": {
|
|
45
|
+
"task": "条件空间",
|
|
46
|
+
"pattern": (
|
|
47
|
+
"def condition_space_op(space_stack, op, name):\n"
|
|
48
|
+
" # 生效条件:op ∈ {自然, 道}\n"
|
|
49
|
+
" # 子功能:① op 分支处理\n"
|
|
50
|
+
" # 执行:按 op 分派;循环迭代;顺序调用\n"
|
|
51
|
+
" # 不适用条件:op 非 {自然, 道} 时(隐式盲区:返回默认值 [] = 未知行为——不适用)\n"
|
|
52
|
+
" # 道:创建协议路径(条件空间栈压入);自然:恢复默认(弹栈到根)\n"
|
|
53
|
+
" if op == '道':\n"
|
|
54
|
+
" space_stack.append({'name': name})\n"
|
|
55
|
+
" elif op == '自然':\n"
|
|
56
|
+
" while len(space_stack) > 1:\n"
|
|
57
|
+
" space_stack.pop()\n"
|
|
58
|
+
" return space_stack\n"),
|
|
59
|
+
"cases": [(([], "道", "路径甲"), [{"name": "路径甲"}]),
|
|
60
|
+
(([{"name": "根"}, {"name": "子"}], "自然", ""), [{"name": "根"}])],
|
|
61
|
+
"params": [],
|
|
62
|
+
"calibration": "对照:道=create_path(条件空间注册)、自然=restore_default",
|
|
63
|
+
},
|
|
64
|
+
"编译-若则": {
|
|
65
|
+
"task": "编译条件",
|
|
66
|
+
"pattern": (
|
|
67
|
+
"def compile_condition(cond_instrs, then_instrs, else_instrs):\n"
|
|
68
|
+
" # 条件跳转编译(若则编译·条件语句编译):若…则…否则 → JUMP_IF_FALSE + JUMP(跳转指令,AST→字节码)\n"
|
|
69
|
+
" # 生效条件:cond_instrs/then_instrs/else_instrs 为指令列表(条件/真分支/假分支字节码)\n"
|
|
70
|
+
" # 子功能:① 拼接条件指令 ② 假跳转至 else ③ 真分支尾跳至结束\n"
|
|
71
|
+
" # 执行:JUMP_IF_FALSE(条件假跳)+ JUMP(跳过 else)\n"
|
|
72
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
73
|
+
" code = []\n"
|
|
74
|
+
" code.extend(cond_instrs)\n"
|
|
75
|
+
" else_lbl = len(code) + 1 + len(then_instrs) + 1\n"
|
|
76
|
+
" code.append(('JUMP_IF_FALSE', else_lbl))\n"
|
|
77
|
+
" code.extend(then_instrs)\n"
|
|
78
|
+
" end_lbl = len(code) + 1 + len(else_instrs)\n"
|
|
79
|
+
" code.append(('JUMP', end_lbl))\n"
|
|
80
|
+
" code.extend(else_instrs)\n"
|
|
81
|
+
" return code\n"),
|
|
82
|
+
"cases": [(([("LOAD", "x")], [("DE", 0.5)], [("DE", 0.1)]),
|
|
83
|
+
# 外部校准(2026-03):JIF→4=假跳 else 起点;JUMP→5=then 结束越界
|
|
84
|
+
[("LOAD", "x"), ("JUMP_IF_FALSE", 4), ("DE", 0.5),
|
|
85
|
+
("JUMP", 5), ("DE", 0.1)])],
|
|
86
|
+
"params": [],
|
|
87
|
+
"calibration": "对照:若则=条件语句(v0.2 codegen if/else 的字节码形态)",
|
|
88
|
+
},
|
|
89
|
+
"编译-循环": {
|
|
90
|
+
"task": "循环编译",
|
|
91
|
+
"pattern": (
|
|
92
|
+
"def compile_loop(cond_instrs, body_instrs):\n"
|
|
93
|
+
" # 循环编译(while 编译):当…执行 → 条件 + JUMP_IF_FALSE 跳出 + 循环体 + JUMP 回条件\n"
|
|
94
|
+
" # 生效条件:cond_instrs/body_instrs 为指令列表(条件字节码/循环体字节码)\n"
|
|
95
|
+
" # 子功能:① 拼接条件指令 ② 假跳转至循环后 ③ 体尾回跳条件\n"
|
|
96
|
+
" # 执行:JUMP_IF_FALSE 跳出 + JUMP 回跳形成循环(while 语义)\n"
|
|
97
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
98
|
+
" # (while 语义:条件为假即退出,回跳形成循环)\n"
|
|
99
|
+
" code = []\n"
|
|
100
|
+
" code.extend(cond_instrs)\n"
|
|
101
|
+
" end_lbl = len(code) + 1 + len(body_instrs) + 1\n"
|
|
102
|
+
" code.append(('JUMP_IF_FALSE', end_lbl))\n"
|
|
103
|
+
" code.extend(body_instrs)\n"
|
|
104
|
+
" code.append(('JUMP', 0))\n"
|
|
105
|
+
" return code\n"),
|
|
106
|
+
"cases": [(([("LOAD", "i"), ("PUSH", 3), ("CMP_LT", None)],
|
|
107
|
+
[("DE", 0.1)]),
|
|
108
|
+
[("LOAD", "i"), ("PUSH", 3), ("CMP_LT", None),
|
|
109
|
+
("JUMP_IF_FALSE", 6), ("DE", 0.1), ("JUMP", 0)]),
|
|
110
|
+
(([("PUSH", False)], [("DE", 0.5), ("DE", 0.2)]),
|
|
111
|
+
[("PUSH", False), ("JUMP_IF_FALSE", 5),
|
|
112
|
+
("DE", 0.5), ("DE", 0.2), ("JUMP", 0)])],
|
|
113
|
+
"params": [],
|
|
114
|
+
"calibration": "对照:当…执行=while 语句(条件先判→体→回跳;假则跳出到循环后)",
|
|
115
|
+
},
|
|
116
|
+
"VM-循环执行": {
|
|
117
|
+
"task": "循环执行",
|
|
118
|
+
"pattern": (
|
|
119
|
+
"def vm_run_loop(code, symbols=None, max_steps=1000):\n"
|
|
120
|
+
" # 生效条件:op ∈ {ADD, CMP_LT, JUMP, JUMP_IF_FALSE, LOAD, PUSH, STORE, SUB}\n"
|
|
121
|
+
" # 子功能:① op 分支处理\n"
|
|
122
|
+
" # 执行:按 op 分派;循环迭代;顺序调用\n"
|
|
123
|
+
" # 不适用条件:op 非 {ADD, CMP_LT, JUMP, JUMP_IF_FALSE, LOAD, PUSH, STORE, SUB} 时\n"
|
|
124
|
+
" # 智能论 VM 循环执行:算术(ADD/SUB)+比较+回跳;步数上限防死循环\n"
|
|
125
|
+
" ip, stack = 0, []\n"
|
|
126
|
+
" symbols = dict(symbols or {})\n"
|
|
127
|
+
" steps = 0\n"
|
|
128
|
+
" while ip < len(code):\n"
|
|
129
|
+
" steps += 1\n"
|
|
130
|
+
" if steps > max_steps:\n"
|
|
131
|
+
" return {'error': '循环未终止(超出步数上限)',\n"
|
|
132
|
+
" 'symbols': symbols, 'stack': stack}\n"
|
|
133
|
+
" op, arg = code[ip]\n"
|
|
134
|
+
" ip += 1\n"
|
|
135
|
+
" if op == 'PUSH':\n"
|
|
136
|
+
" stack.append(arg)\n"
|
|
137
|
+
" elif op == 'STORE':\n"
|
|
138
|
+
" symbols[arg] = stack.pop()\n"
|
|
139
|
+
" elif op == 'LOAD':\n"
|
|
140
|
+
" if arg not in symbols:\n"
|
|
141
|
+
" return {'error': '名实不符:' + arg,\n"
|
|
142
|
+
" 'symbols': symbols, 'stack': stack}\n"
|
|
143
|
+
" stack.append(symbols[arg])\n"
|
|
144
|
+
" elif op == 'JUMP_IF_FALSE':\n"
|
|
145
|
+
" v = stack.pop() if stack else False\n"
|
|
146
|
+
" if v is False or v is None or v == 0:\n"
|
|
147
|
+
" ip = arg\n"
|
|
148
|
+
" elif op == 'JUMP':\n"
|
|
149
|
+
" ip = arg\n"
|
|
150
|
+
" elif op == 'CMP_LT':\n"
|
|
151
|
+
" b, a = stack.pop(), stack.pop()\n"
|
|
152
|
+
" stack.append(a < b)\n"
|
|
153
|
+
" elif op == 'ADD':\n"
|
|
154
|
+
" b, a = stack.pop(), stack.pop()\n"
|
|
155
|
+
" stack.append(a + b)\n"
|
|
156
|
+
" elif op == 'SUB':\n"
|
|
157
|
+
" b, a = stack.pop(), stack.pop()\n"
|
|
158
|
+
" stack.append(a - b)\n"
|
|
159
|
+
" return {'error': None, 'symbols': symbols, 'stack': stack}\n"),
|
|
160
|
+
"cases": [(([("LOAD", "i"), ("PUSH", 3), ("CMP_LT", None),
|
|
161
|
+
("JUMP_IF_FALSE", 13),
|
|
162
|
+
("LOAD", "s"), ("LOAD", "i"), ("ADD", None), ("STORE", "s"),
|
|
163
|
+
("LOAD", "i"), ("PUSH", 1), ("ADD", None), ("STORE", "i"),
|
|
164
|
+
("JUMP", 0)],
|
|
165
|
+
{"i": 1, "s": 0}),
|
|
166
|
+
{'error': None, 'symbols': {'i': 3, 's': 3},
|
|
167
|
+
'stack': []}),
|
|
168
|
+
(([("LOAD", "i"), ("PUSH", 3), ("CMP_LT", None),
|
|
169
|
+
("JUMP_IF_FALSE", 13),
|
|
170
|
+
("LOAD", "s"), ("LOAD", "i"), ("ADD", None), ("STORE", "s"),
|
|
171
|
+
("LOAD", "i"), ("PUSH", 1), ("ADD", None), ("STORE", "i"),
|
|
172
|
+
("JUMP", 0)],
|
|
173
|
+
{"i": 5, "s": 0}),
|
|
174
|
+
{'error': None, 'symbols': {'i': 5, 's': 0},
|
|
175
|
+
'stack': []}),
|
|
176
|
+
(([("JUMP", 0)], {}),
|
|
177
|
+
{'error': '循环未终止(超出步数上限)',
|
|
178
|
+
'symbols': {}, 'stack': []})],
|
|
179
|
+
"params": [],
|
|
180
|
+
"calibration": "对照:while 循环 VM 运行(i=1→3 累积 1+2=3 于 s;死循环被步数上限拦截)",
|
|
181
|
+
},
|
|
182
|
+
"编译-函数定义": {
|
|
183
|
+
"task": "函数定义",
|
|
184
|
+
"pattern": (
|
|
185
|
+
"def compile_func_def(name, params, body_instrs):\n"
|
|
186
|
+
" # 生效条件:参数 name/params/body_instrs 合法\n"
|
|
187
|
+
" # 子功能:① 调用 list\n"
|
|
188
|
+
" # 执行:顺序调用\n"
|
|
189
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
190
|
+
" # 定义 名(参数):语句 → 函数体后置 + RETURN(入口=函数体起点)\n"
|
|
191
|
+
" # 返回 (skip_jump, entry_ip, body):调用方拼接 JUMP 跳过 + 函数体\n"
|
|
192
|
+
" body = list(body_instrs)\n"
|
|
193
|
+
" body.append(('RETURN', None))\n"
|
|
194
|
+
" return {'name': name, 'params': params,\n"
|
|
195
|
+
" 'skip': ('JUMP', None), # 占位,拼接后回填\n"
|
|
196
|
+
" 'entry_ip': 0, 'body': body}\n"),
|
|
197
|
+
"cases": [(("阶乘", ["n"], [("LOAD", "n")]),
|
|
198
|
+
{'name': '阶乘', 'params': ['n'],
|
|
199
|
+
'skip': ('JUMP', None), 'entry_ip': 0,
|
|
200
|
+
'body': [('LOAD', 'n'), ('RETURN', None)]})], "params": [],
|
|
201
|
+
"calibration": "对照:protocol-compiler 函数定义(入口=函数体起点,体末 RETURN)",
|
|
202
|
+
},
|
|
203
|
+
"VM-函数调用": {
|
|
204
|
+
"task": "函数调用",
|
|
205
|
+
"pattern": (
|
|
206
|
+
"def call_func(call_stack, symbols, params, args, entry_ip, ret_ip):\n"
|
|
207
|
+
" # 生效条件:参数 call_stack/symbols/params/args/entry_ip/ret_ip 合法\n"
|
|
208
|
+
" # 子功能:① 调用 zip;② 调用 dict\n"
|
|
209
|
+
" # 执行:循环迭代;顺序调用\n"
|
|
210
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
211
|
+
" # CALL 语义:保存调用帧(返回地址+符号表) → 参数绑定(遮蔽全局) → 跳入口\n"
|
|
212
|
+
" call_stack.append((ret_ip, dict(symbols)))\n"
|
|
213
|
+
" for pname, pval in zip(params, args):\n"
|
|
214
|
+
" symbols[pname] = pval\n"
|
|
215
|
+
" return entry_ip\n"),
|
|
216
|
+
"cases": [(([], {'甲': 1}, ['x'], [5], 10, 3), 10)],
|
|
217
|
+
"params": [],
|
|
218
|
+
"calibration": "对照:protocol-compiler CALL(帧保存+参数绑定遮蔽全局,对齐 da997ef VM)",
|
|
219
|
+
},
|
|
220
|
+
"编译-递归": {
|
|
221
|
+
"task": "递归调用",
|
|
222
|
+
"pattern": (
|
|
223
|
+
"def compile_recursive(name, params, cond_instrs, then_ret, else_expr_instrs):\n"
|
|
224
|
+
" # 生效条件:参数 name/params/cond_instrs/then_ret/else_expr_instrs 合法\n"
|
|
225
|
+
" # 子功能:① 主体逻辑执行\n"
|
|
226
|
+
" # 执行:顺序执行\n"
|
|
227
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
228
|
+
" # 递归函数:若 基条件 则 返回 基值,否则 返回 表达式(含自身调用)\n"
|
|
229
|
+
" # 组装为函数体字节码(CALL 自身由调用方回填入口)\n"
|
|
230
|
+
" body = []\n"
|
|
231
|
+
" body.extend(cond_instrs)\n"
|
|
232
|
+
" body.append(('JUMP_IF_FALSE', 0)) # 占位\n"
|
|
233
|
+
" body.extend(then_ret)\n"
|
|
234
|
+
" body.append(('RETURN', None))\n"
|
|
235
|
+
" body.append(('JUMP', 0)) # 占位\n"
|
|
236
|
+
" body.extend(else_expr_instrs)\n"
|
|
237
|
+
" body.append(('RETURN', None))\n"
|
|
238
|
+
" return {'name': name, 'params': params, 'body': body}\n"),
|
|
239
|
+
"cases": [((("阶乘", ["n"], [("LOAD", "n"), ("PUSH", 2), ("CMP_LT", None)],
|
|
240
|
+
[("PUSH", 1)], [("LOAD", "n")])),
|
|
241
|
+
{'name': '阶乘', 'params': ['n'],
|
|
242
|
+
'body': [('LOAD', 'n'), ('PUSH', 2), ('CMP_LT', None),
|
|
243
|
+
('JUMP_IF_FALSE', 0), ('PUSH', 1), ('RETURN', None),
|
|
244
|
+
('JUMP', 0), ('LOAD', 'n'), ('RETURN', None)]})],
|
|
245
|
+
"params": [],
|
|
246
|
+
"calibration": "对照:protocol-compiler 递归函数(若则体内 RETURN,对齐阶乘 da997ef 语义)",
|
|
247
|
+
},
|
|
248
|
+
"编译-赋值": {
|
|
249
|
+
"task": "编译赋值",
|
|
250
|
+
"pattern": (
|
|
251
|
+
"def compile_assign(value_instrs, name):\n"
|
|
252
|
+
" # 赋值编译(名实写入):赋值 → 值指令 + STORE_NAME(以名举实:名实写入)\n"
|
|
253
|
+
" # 生效条件:value_instrs 为计算值的指令列表;name 为赋值目标名\n"
|
|
254
|
+
" # 子功能:① 拼接值指令 ② 追加名写入指令\n"
|
|
255
|
+
" # 执行:值指令 + STORE_NAME(名实绑定语义)\n"
|
|
256
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
257
|
+
" code = list(value_instrs)\n"
|
|
258
|
+
" code.append(('STORE_NAME', name))\n"
|
|
259
|
+
" return code\n"),
|
|
260
|
+
"cases": [(([("PUSH", 1)], "甲"), [("PUSH", 1), ("STORE_NAME", "甲")])],
|
|
261
|
+
"params": [],
|
|
262
|
+
"calibration": "对照:赋值 = target = expr(名实对应)",
|
|
263
|
+
},
|
|
264
|
+
"词法-道德经": {
|
|
265
|
+
"task": "道德经词法",
|
|
266
|
+
"pattern": (
|
|
267
|
+
"def instr_token(word):\n"
|
|
268
|
+
" # 道德经助记符(词法):道德经助记符 → 指令 Token(剥离尾部标点;未接入 VM 的指令诚实返回 None)\n"
|
|
269
|
+
" # 生效条件:word 为道德经助记符文本(道/德/自然/无为/止/知足)\n"
|
|
270
|
+
" # 子功能:① 剥离尾部标点 ② 助记符查映射表 ③ 未收录返回 None\n"
|
|
271
|
+
" # 执行:rstrip 标点 + dict.get,命中返指令码\n"
|
|
272
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
273
|
+
" m = {'道': 'DAO', '德': 'DE', '自然': 'ZIRAN', '无为': 'WUWEI',\n"
|
|
274
|
+
" '止': 'ZHI', '知足': 'ZHIZU'}\n"
|
|
275
|
+
" return m.get((word or '').rstrip('。;;,,'))\n"),
|
|
276
|
+
"cases": [("道", "DAO"), ("德", "DE"), ("止", "ZHI"), ("知足", "ZHIZU"),
|
|
277
|
+
("谷", None), ("随便", None)],
|
|
278
|
+
"params": [],
|
|
279
|
+
"calibration": "对照:TokenType 道德经助记符(道/德/自然/无为/谷/牝/柔/朴/止/知足)",
|
|
280
|
+
},
|
|
281
|
+
"词法-九章算术": {
|
|
282
|
+
"task": "九章算术",
|
|
283
|
+
"pattern": (
|
|
284
|
+
"def structure_token(text):\n"
|
|
285
|
+
" # 九章算术结构(词法):问曰/答曰/术曰 → (TokenType, 原文)\n"
|
|
286
|
+
" # 生效条件:text 以九章算术结构词(问曰/答曰/术曰)开头\n"
|
|
287
|
+
" # 子功能:① 结构词前缀匹配 ② 命中返回类型标记 ③ 未命中返 None\n"
|
|
288
|
+
" # 执行:顺序匹配三个结构词,命中即返 (词_STRUCT, 词)\n"
|
|
289
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
290
|
+
" for kw in ('问曰', '答曰', '术曰'):\n"
|
|
291
|
+
" if text.startswith(kw):\n"
|
|
292
|
+
" return (kw + '_STRUCT', kw)\n"
|
|
293
|
+
" return None\n"),
|
|
294
|
+
"cases": [("问曰:如何验证", ("问曰_STRUCT", "问曰")),
|
|
295
|
+
("术曰:", ("术曰_STRUCT", "术曰")),
|
|
296
|
+
("答曰:信任值", ("答曰_STRUCT", "答曰")),
|
|
297
|
+
("随便文本", None)],
|
|
298
|
+
"params": [],
|
|
299
|
+
"calibration": "对照:TokenType WENYUE/DAYUE/SHUYUE(九章算术结构)",
|
|
300
|
+
},
|
|
301
|
+
"校验-名实": {
|
|
302
|
+
"task": "名实校验",
|
|
303
|
+
"pattern": (
|
|
304
|
+
"def check_names(required, declared):\n"
|
|
305
|
+
" # 生效条件:参数 required/declared 合法\n"
|
|
306
|
+
" # 子功能:① 主体逻辑执行\n"
|
|
307
|
+
" # 执行:顺序执行\n"
|
|
308
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
309
|
+
" # 以名举实:要求的符号必须已声明(墨辩静态检查)\n"
|
|
310
|
+
" return [s for s in required if s not in declared]\n"),
|
|
311
|
+
"cases": [((["a"], {"a": 1, "b": 2}), []),
|
|
312
|
+
((["a", "b"], {"a": 1}), ["b"]),
|
|
313
|
+
(([], {}), [])],
|
|
314
|
+
"params": [],
|
|
315
|
+
"calibration": "对照:name_checker 以名举实(符号表→协议实体)",
|
|
316
|
+
},
|
|
317
|
+
"VM-执行循环": {
|
|
318
|
+
"task": "执行循环",
|
|
319
|
+
"pattern": (
|
|
320
|
+
"def vm_run(code, symbols=None, trust=0.0, cond_stack=None):\n"
|
|
321
|
+
" # 虚拟机(VM·智能论)执行循环:字节码指令 ip 顺序执行;止/无为 = 控制流信号;名实不符报错\n"
|
|
322
|
+
" # 生效条件:code 为指令列表;symbols 为符号表;trust 为初始信任值\n"
|
|
323
|
+
" # 子功能:① 按 ip 取指执行 ② 控制流信号处理 ③ 名实校验拦截\n"
|
|
324
|
+
" # 执行:循环取指分派,止/无为跳转,名实不符报错\n"
|
|
325
|
+
" # 不适用条件:op 非 {DAO, DE, JUMP, JUMP_IF_FALSE, LOAD, PUSH, STORE, WUWEI, ZHI, ZHIZU, ZIRAN} 时\n"
|
|
326
|
+
" ip, stack = 0, []\n"
|
|
327
|
+
" symbols = dict(symbols or {})\n"
|
|
328
|
+
" cond_stack = list(cond_stack or [])\n"
|
|
329
|
+
" result = {'trust': trust, 'symbols': symbols, 'cond': cond_stack,\n"
|
|
330
|
+
" 'stack': [], 'halt': None, 'error': None}\n"
|
|
331
|
+
" while ip < len(code):\n"
|
|
332
|
+
" op, arg = code[ip]\n"
|
|
333
|
+
" ip += 1\n"
|
|
334
|
+
" if op == 'PUSH':\n"
|
|
335
|
+
" stack.append(arg)\n"
|
|
336
|
+
" elif op == 'STORE':\n"
|
|
337
|
+
" symbols[arg] = stack.pop()\n"
|
|
338
|
+
" elif op == 'LOAD':\n"
|
|
339
|
+
" if arg not in symbols:\n"
|
|
340
|
+
" result['error'] = '名实不符:' + arg\n"
|
|
341
|
+
" break\n"
|
|
342
|
+
" stack.append(symbols[arg])\n"
|
|
343
|
+
" elif op == 'JUMP_IF_FALSE':\n"
|
|
344
|
+
" v = stack.pop() if stack else False\n"
|
|
345
|
+
" if v is False or v is None or v == 0:\n"
|
|
346
|
+
" ip = arg\n"
|
|
347
|
+
" elif op == 'JUMP':\n"
|
|
348
|
+
" ip = arg\n"
|
|
349
|
+
" elif op in ('CMP_GT', 'CMP_LT', 'CMP_EQ', 'CMP_NE', 'CMP_LE', 'CMP_GE'):\n"
|
|
350
|
+
" b, a = stack.pop(), stack.pop()\n"
|
|
351
|
+
" stack.append({'CMP_GT': a > b, 'CMP_LT': a < b, 'CMP_EQ': a == b,\n"
|
|
352
|
+
" 'CMP_NE': a != b, 'CMP_LE': a <= b,\n"
|
|
353
|
+
" 'CMP_GE': a >= b}[op])\n"
|
|
354
|
+
" elif op == 'DE':\n"
|
|
355
|
+
" trust = round(trust + arg, 3)\n"
|
|
356
|
+
" elif op == 'DAO':\n"
|
|
357
|
+
" cond_stack.append({'name': arg})\n"
|
|
358
|
+
" elif op == 'ZIRAN':\n"
|
|
359
|
+
" while len(cond_stack) > 1:\n"
|
|
360
|
+
" cond_stack.pop()\n"
|
|
361
|
+
" elif op == 'ZHIZU':\n"
|
|
362
|
+
" if trust >= arg[0]:\n"
|
|
363
|
+
" ip = arg[1]\n"
|
|
364
|
+
" elif op == 'ZHI':\n"
|
|
365
|
+
" result['halt'] = 'halt'\n"
|
|
366
|
+
" break\n"
|
|
367
|
+
" elif op == 'WUWEI':\n"
|
|
368
|
+
" result['halt'] = 'yield'\n"
|
|
369
|
+
" break\n"
|
|
370
|
+
" result['stack'] = list(stack)\n"
|
|
371
|
+
" result['trust'] = trust\n"
|
|
372
|
+
" return result\n"),
|
|
373
|
+
"cases": [(([("DE", 0.3), ("DE", 0.5)],), {"trust": 0.8}),
|
|
374
|
+
(([("PUSH", False), ("JUMP_IF_FALSE", 3), ("DE", 0.5),
|
|
375
|
+
("DE", 0.2)],), {"trust": 0.2}),
|
|
376
|
+
(([("DAO", "路径甲"), ("ZIRAN", None)],), {"cond": [{"name": "路径甲"}]}),
|
|
377
|
+
(([("ZHI", None)],), {"halt": "halt"}),
|
|
378
|
+
(([("WUWEI", None)],), {"halt": "yield"}),
|
|
379
|
+
(([("LOAD", "未声明")],), {"error": "名实不符:未声明"}),
|
|
380
|
+
(([("PUSH", 0.5), ("PUSH", 0.3), ("CMP_GT", None),
|
|
381
|
+
("DE", 0.2), ("ZHI", None)],), {"trust": 0.2}),
|
|
382
|
+
(([("PUSH", 0.1), ("PUSH", 0.3), ("CMP_GT", None),
|
|
383
|
+
("JUMP_IF_FALSE", 5), ("DE", 0.2), ("ZHI", None)],),
|
|
384
|
+
{"trust": 0.0})],
|
|
385
|
+
"params": [],
|
|
386
|
+
"calibration": "对照:condition_vm 执行循环(止=halt/无为=yield/名实不符=错误)",
|
|
387
|
+
},
|
|
388
|
+
"编译-指令": {
|
|
389
|
+
"task": "编译指令",
|
|
390
|
+
"pattern": (
|
|
391
|
+
"def compile_instr(kind, operand=None):\n"
|
|
392
|
+
" # 生效条件:kind ∈ {DAO, DE}\n"
|
|
393
|
+
" # 子功能:1 kind 分支处理\n"
|
|
394
|
+
" # 执行:按 op 分派;顺序调用\n"
|
|
395
|
+
" # 不适用条件:kind 非 {DAO, DE} 时\n"
|
|
396
|
+
" # 道德经指令 AST → VM 指令(未接入 VM 的指令诚实返回 None)\n"
|
|
397
|
+
" if kind == 'DAO':\n"
|
|
398
|
+
" return ('DAO', operand or '无名路径')\n"
|
|
399
|
+
" if kind == 'DE':\n"
|
|
400
|
+
" return ('DE', float(operand or 0))\n"
|
|
401
|
+
" if kind in ('ZIRAN', 'WUWEI', 'ZHI'):\n"
|
|
402
|
+
" return (kind, None)\n"
|
|
403
|
+
" return None\n"),
|
|
404
|
+
"cases": [(("DAO", "路径甲"), ("DAO", "路径甲")), (("DE", "0.5"), ("DE", 0.5)),
|
|
405
|
+
(("ZHI", None), ("ZHI", None)), (("谷", "x"), None)],
|
|
406
|
+
"params": [],
|
|
407
|
+
"calibration": "对照:INSTRUCTION_MAP(道→create_path 等;未接入指令诚实边界)",
|
|
408
|
+
},
|
|
409
|
+
"校验-条件空间符号类型": {
|
|
410
|
+
"task": "条件空间符号类型",
|
|
411
|
+
"pattern": (
|
|
412
|
+
"def check_condition_types(conditions, symbol_types):\n"
|
|
413
|
+
" # 生效条件:参数 conditions/symbol_types 合法\n"
|
|
414
|
+
" # 子功能:① 主体逻辑执行\n"
|
|
415
|
+
" # 执行:顺序执行\n"
|
|
416
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
417
|
+
" # 条件空间=类型系统:条件声明中的符号必须已定义类型(编译期静态检查)\n"
|
|
418
|
+
" # conditions: [{'space': '伴侣', 'symbol': '情感权重', 'type': '数值'}]\n"
|
|
419
|
+
" return [c for c in conditions\n"
|
|
420
|
+
" if c['symbol'] not in symbol_types]\n"),
|
|
421
|
+
"cases": [(([{"space": "伴侣", "symbol": "情感权重", "type": "数值"}],
|
|
422
|
+
{"情感权重": "数值", "信任值": "数值"}), []),
|
|
423
|
+
(([{"space": "伴侣", "symbol": "未定义量", "type": "数值"}],
|
|
424
|
+
{"情感权重": "数值"}), [{"space": "伴侣", "symbol": "未定义量",
|
|
425
|
+
"type": "数值"}]),
|
|
426
|
+
(([], {}), [])],
|
|
427
|
+
"params": [],
|
|
428
|
+
"calibration": "对照:C2 语义——条件空间=类型系统(若条件空间X则符号Y类型Z 编译期校验)",
|
|
429
|
+
},
|
|
430
|
+
"词法-中文程序": {
|
|
431
|
+
"task": "中文程序词法",
|
|
432
|
+
"pattern": (
|
|
433
|
+
"def lex_line(line):\n"
|
|
434
|
+
" # 中文程序词法(词法分析):中文程序行 → (kind, payload);九章算术结构/条件/指令/步骤识别\n"
|
|
435
|
+
" # 生效条件:line 为中文程序源码行\n"
|
|
436
|
+
" # 子功能:① 九章算术结构识别 ② 条件/指令/步骤分类 ③ 提取载荷\n"
|
|
437
|
+
" # 执行:前缀匹配 + 分类返回 (kind, payload)\n"
|
|
438
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
439
|
+
" line = line.strip()\n"
|
|
440
|
+
" if not line or line.startswith('#'):\n"
|
|
441
|
+
" return None\n"
|
|
442
|
+
" for kw in ('问曰', '答曰', '术曰'):\n"
|
|
443
|
+
" if line.startswith(kw):\n"
|
|
444
|
+
" return (kw + '_STRUCT', line[len(kw):].lstrip('::'))\n"
|
|
445
|
+
" m = None\n"
|
|
446
|
+
" import re as _re\n"
|
|
447
|
+
" m = _re.match(r'^(\\d+)。\\s*(.+?)[;;]?$', line)\n"
|
|
448
|
+
" if m:\n"
|
|
449
|
+
" num, content = int(m.group(1)), m.group(2)\n"
|
|
450
|
+
" if content.startswith('若'):\n"
|
|
451
|
+
" cm = _re.match(r'^若\\s*(.+?)\\s*[,,]?\\s*则\\s*(.+?)\\s*[。;;]?(?:否则\\s*(.+?))?[。;]?$', content)\n"
|
|
452
|
+
" if cm:\n"
|
|
453
|
+
" return ('COND', (cm.group(1), cm.group(2), cm.group(3)))\n"
|
|
454
|
+
" return ('STEP', (num, content))\n"
|
|
455
|
+
" m = _re.match(r'^若\\s*(.+?)\\s*[,,]?\\s*则\\s*(.+?)\\s*[。;;]?(?:否则\\s*(.+?))?[。;]?$', line)\n"
|
|
456
|
+
" if m:\n"
|
|
457
|
+
" return ('COND', (m.group(1), m.group(2), m.group(3)))\n"
|
|
458
|
+
" for kw in ('道', '德', '止', '知足', '自然', '无为'):\n"
|
|
459
|
+
" if line.startswith(kw):\n"
|
|
460
|
+
" rest = line[len(kw):].strip().rstrip('。;;')\n"
|
|
461
|
+
" return ('INSTR', (kw, rest or None))\n"
|
|
462
|
+
" return ('UNKNOWN', line)\n"),
|
|
463
|
+
"cases": [("术曰:", ("术曰_STRUCT", "")),
|
|
464
|
+
("1。道 新信任路径;", ("STEP", (1, "道 新信任路径"))),
|
|
465
|
+
("若 信任值 大于 0.3,则 德 0.5;", ("COND", ("信任值 大于 0.3",
|
|
466
|
+
"德 0.5", None))),
|
|
467
|
+
("德 0.5。", ("INSTR", ("德", "0.5"))),
|
|
468
|
+
("止。", ("INSTR", ("止", None))),
|
|
469
|
+
("# 注释", None),
|
|
470
|
+
("", None)],
|
|
471
|
+
"params": [],
|
|
472
|
+
"calibration": "对照:protocol-compiler lexer(九章算术结构/若则/道德经指令/步骤序号)",
|
|
473
|
+
},
|
|
474
|
+
"编译-程序": {
|
|
475
|
+
"task": "编译程序",
|
|
476
|
+
"pattern": (
|
|
477
|
+
"def compile_program(statements, compile_instr=None, compile_condition=None):\n"
|
|
478
|
+
" # 生效条件:kind ∈ {COND, INSTR, 术曰, 止};s.replace 可用\n"
|
|
479
|
+
" # 子功能:1 kind 分支处理\n"
|
|
480
|
+
" # 执行:按 op 分派;循环迭代;顺序调用\n"
|
|
481
|
+
" # 不适用条件:kind 非 {COND, INSTR, 术曰, 止} 时\n"
|
|
482
|
+
" # 程序语句列表 → 字节码(术曰=作用域;条件=跳转;指令=道德经;止=停止)\n"
|
|
483
|
+
" def _num(v):\n"
|
|
484
|
+
" if v is None:\n"
|
|
485
|
+
" return None\n"
|
|
486
|
+
" s = str(v)\n"
|
|
487
|
+
" return float(s) if s.replace('.', '', 1).isdigit() else v\n"
|
|
488
|
+
" ci = compile_instr or (lambda k, v=None: (k, _num(v)))\n"
|
|
489
|
+
" cc = compile_condition or (lambda c, t, e: c + [('JUMP_IF_FALSE', 0)] + t)\n"
|
|
490
|
+
" code = []\n"
|
|
491
|
+
" for stmt in statements:\n"
|
|
492
|
+
" kind = stmt[0]\n"
|
|
493
|
+
" if kind == '术曰':\n"
|
|
494
|
+
" code.append(('ENTER_SHUYUE', None))\n"
|
|
495
|
+
" elif kind == 'INSTR':\n"
|
|
496
|
+
" instr = ci(stmt[1], stmt[2])\n"
|
|
497
|
+
" if instr:\n"
|
|
498
|
+
" code.append(instr)\n"
|
|
499
|
+
" elif kind == 'COND':\n"
|
|
500
|
+
" cond, then_s, else_s = stmt[1], stmt[2], stmt[3]\n"
|
|
501
|
+
" then_i = [x for x in [ci(t[0], t[1]) for t in then_s] if x]\n"
|
|
502
|
+
" else_i = [x for x in [ci(t[0], t[1]) for t in else_s] if x]\n"
|
|
503
|
+
" base = len(code)\n"
|
|
504
|
+
" seg = cc([('PUSH', True)], then_i, else_i)\n"
|
|
505
|
+
" # 外部校准:段内相对跳转目标需加全局偏移(否则组合后跳到自己)\n"
|
|
506
|
+
" seg = [(op, arg + base) if op in ('JUMP', 'JUMP_IF_FALSE')\n"
|
|
507
|
+
" and isinstance(arg, int) else (op, arg) for op, arg in seg]\n"
|
|
508
|
+
" code.extend(seg)\n"
|
|
509
|
+
" elif kind == '止':\n"
|
|
510
|
+
" code.append(('ZHI', None))\n"
|
|
511
|
+
" return code\n"),
|
|
512
|
+
"cases": [(([("术曰", None), ("INSTR", "DAO", "路径甲"), ("止", None)],),
|
|
513
|
+
[("ENTER_SHUYUE", None), ("DAO", "路径甲"), ("ZHI", None)]),
|
|
514
|
+
(([("INSTR", "DE", "0.3"), ("止", None)],),
|
|
515
|
+
[("DE", 0.3), ("ZHI", None)])],
|
|
516
|
+
"params": [],
|
|
517
|
+
"calibration": "对照:C2 顶层编译——术曰作用域/道德经指令/止停止",
|
|
518
|
+
},
|
|
519
|
+
"校验-条件空间存在性": {
|
|
520
|
+
"task": "条件空间存在",
|
|
521
|
+
"pattern": (
|
|
522
|
+
"def check_condition_spaces(used_spaces, declared_spaces):\n"
|
|
523
|
+
" # 生效条件:参数 used_spaces/declared_spaces 合法\n"
|
|
524
|
+
" # 子功能:① 主体逻辑执行\n"
|
|
525
|
+
" # 执行:顺序执行\n"
|
|
526
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
527
|
+
" # 条件空间=类型系统:使用的条件空间必须已声明(编译期拦截未声明空间)\n"
|
|
528
|
+
" return [s for s in used_spaces if s not in declared_spaces]\n"),
|
|
529
|
+
"cases": [((["伴侣", "高原"], {"伴侣", "高原"}), []),
|
|
530
|
+
((["伴侣"], {"伴侣"}), []),
|
|
531
|
+
((["伴侣", "未知空间"], {"伴侣"}), ["未知空间"]),
|
|
532
|
+
(([], set()), [])],
|
|
533
|
+
"params": [],
|
|
534
|
+
"calibration": "对照:C2 语义——条件空间=类型系统(使用前必须声明,编译期拦截)",
|
|
535
|
+
},
|
|
536
|
+
"编译-管线静态检查": {
|
|
537
|
+
"task": "编译管线",
|
|
538
|
+
"pattern": (
|
|
539
|
+
"def compile_pipeline(statements, symbol_types, declared_spaces):\n"
|
|
540
|
+
" # 生效条件:kind ∈ {COND};_re.search 可用;m.group 可用\n"
|
|
541
|
+
" # 子功能:1 kind 分支处理\n"
|
|
542
|
+
" # 执行:按 op 分派;循环迭代;顺序调用\n"
|
|
543
|
+
" # 不适用条件:kind 非 {COND} 时\n"
|
|
544
|
+
" # 编译管线(C2 语义:静态检查→字节码)——名实 + 条件空间类型 + 存在性\n"
|
|
545
|
+
" errors = []\n"
|
|
546
|
+
" for st in statements:\n"
|
|
547
|
+
" kind = st[0]\n"
|
|
548
|
+
" if kind == 'INSTR' and st[1] == 'DE':\n"
|
|
549
|
+
" operand = st[2]\n"
|
|
550
|
+
" if operand is not None and not str(operand).replace('.', '', 1).isdigit():\n"
|
|
551
|
+
" errors.append('类型错误:德 操作数「' + str(operand) + '」非数值(条件空间类型)')\n"
|
|
552
|
+
" elif kind == 'COND':\n"
|
|
553
|
+
" import re as _re\n"
|
|
554
|
+
" m = _re.search(r'条件空间为(.+?)[,,。\\s]', st[1])\n"
|
|
555
|
+
" if m:\n"
|
|
556
|
+
" space = m.group(1).strip()\n"
|
|
557
|
+
" if space not in declared_spaces:\n"
|
|
558
|
+
" errors.append('条件空间未声明:「' + space + '」(编译期拦截)')\n"
|
|
559
|
+
" if errors:\n"
|
|
560
|
+
" return None, {'ok': False, 'errors': errors}\n"
|
|
561
|
+
" return [('COMPILED', len(statements))], {'ok': True}\n"),
|
|
562
|
+
"cases": [(([("INSTR", "DE", "0.5"), ("止", None)], {"信任值": "数值"},
|
|
563
|
+
{"伴侣"}), ([("COMPILED", 2)], {"ok": True})),
|
|
564
|
+
(([("INSTR", "DE", "高信任"), ("止", None)], {"信任值": "数值"},
|
|
565
|
+
{"伴侣"}), (None, {"ok": False,
|
|
566
|
+
"errors": ["类型错误:德 操作数「高信任」非数值(条件空间类型)"]})),
|
|
567
|
+
(([("COND", "条件空间为未知 则 德 0.5", [("DE", "0.5")], [])],
|
|
568
|
+
{"信任值": "数值"}, {"伴侣"}), (None, {"ok": False,
|
|
569
|
+
"errors": ["条件空间未声明:「未知」(编译期拦截)"]})),
|
|
570
|
+
(([("COND", "条件空间为伴侣 则 德 0.5", [("DE", "0.5")], [])],
|
|
571
|
+
{"信任值": "数值"}, {"伴侣"}), ([("COMPILED", 1)], {"ok": True}))],
|
|
572
|
+
"params": [],
|
|
573
|
+
"calibration": "对照:C2 语义——名实=静态检查、条件空间=类型系统(编译期拦截类型错误/未声明空间)",
|
|
574
|
+
},
|
|
575
|
+
"分析-类型推断": {
|
|
576
|
+
"task": "类型推断",
|
|
577
|
+
"pattern": (
|
|
578
|
+
"def infer_types(statements):\n"
|
|
579
|
+
" # 类型推断(编译期):从赋值推断符号类型,条件空间声明登记空间类型\n"
|
|
580
|
+
" # 生效条件:statements 为语句列表(assign/条件空间声明)\n"
|
|
581
|
+
" # 子功能:① 赋值推导类型 ② 条件空间登记 ③ 冲突标记混合类型\n"
|
|
582
|
+
" # 执行:逐语句分派,冲突赋值 → 类型标记'混合'(编译期拦截候选)\n"
|
|
583
|
+
" # 不适用条件:kind 非 {COND, assign} 时\n"
|
|
584
|
+
" # 冲突赋值 → 类型标记'混合'(编译期拦截候选)\n"
|
|
585
|
+
" import re as _re\n"
|
|
586
|
+
" types, spaces = {}, {}\n"
|
|
587
|
+
" for st in statements:\n"
|
|
588
|
+
" kind = st[0]\n"
|
|
589
|
+
" if kind == 'assign':\n"
|
|
590
|
+
" val = st[2]\n"
|
|
591
|
+
" if isinstance(val, bool):\n"
|
|
592
|
+
" t = '布尔'\n"
|
|
593
|
+
" elif isinstance(val, (int, float)):\n"
|
|
594
|
+
" t = '数值'\n"
|
|
595
|
+
" elif isinstance(val, str):\n"
|
|
596
|
+
" t = '文本'\n"
|
|
597
|
+
" else:\n"
|
|
598
|
+
" t = '未知'\n"
|
|
599
|
+
" if st[1] in types and types[st[1]] != t:\n"
|
|
600
|
+
" types[st[1]] = '混合'\n"
|
|
601
|
+
" else:\n"
|
|
602
|
+
" types.setdefault(st[1], t)\n"
|
|
603
|
+
" elif kind == 'COND':\n"
|
|
604
|
+
" m = _re.search(r'条件空间为(.+?)(?:[,,。\\s]|$)', st[1])\n"
|
|
605
|
+
" if m:\n"
|
|
606
|
+
" spaces[m.group(1).strip()] = '已声明'\n"
|
|
607
|
+
" return {'types': types, 'spaces': spaces}\n"),
|
|
608
|
+
"cases": [(([("assign", "甲", 3), ("assign", "乙", "x")],),
|
|
609
|
+
{"types": {"甲": "数值", "乙": "文本"}, "spaces": {}}),
|
|
610
|
+
(([("COND", "条件空间为伴侣 则 德 0.5", [], [])],),
|
|
611
|
+
{"types": {}, "spaces": {"伴侣": "已声明"}}),
|
|
612
|
+
(([("assign", "甲", 3), ("assign", "甲", "x")],),
|
|
613
|
+
{"types": {"甲": "混合"}, "spaces": {}}),
|
|
614
|
+
(([],), {"types": {}, "spaces": {}})],
|
|
615
|
+
"params": [],
|
|
616
|
+
"calibration": "对照:C2 语义深化——类型推断(赋值→数值/文本/布尔,冲突→混合)+ 条件空间声明登记(目标3 分析器完整化)",
|
|
617
|
+
},
|
|
618
|
+
"编译-类型检查": {
|
|
619
|
+
"task": "类型检查",
|
|
620
|
+
"pattern": (
|
|
621
|
+
"def compile_typed(statements, infer_fn=None):\n"
|
|
622
|
+
" # 生效条件:t ∈ {混合};_re.findall 可用\n"
|
|
623
|
+
" # 子功能:1 t 分支处理\n"
|
|
624
|
+
" # 执行:按 op 分派;循环迭代;顺序调用\n"
|
|
625
|
+
" # 不适用条件:t 非 {混合} 时\n"
|
|
626
|
+
" # 类型检查编译:先类型推断 → 未推断/混合类型符号使用 → 编译期拦截\n"
|
|
627
|
+
" # infer_fn 注入(组装白箱单元:分析-类型推断)\n"
|
|
628
|
+
" import re as _re\n"
|
|
629
|
+
" inf = infer_fn(statements) if infer_fn else {}\n"
|
|
630
|
+
" types = (inf or {}).get('types', {})\n"
|
|
631
|
+
" errors = []\n"
|
|
632
|
+
" skip = ('条件空间', '为', '则', '大于', '小于', '等于', '不等于',\n"
|
|
633
|
+
" '不小于', '不大于', '信任值', '德', '道', '止')\n"
|
|
634
|
+
" for st in statements:\n"
|
|
635
|
+
" if st[0] == 'COND':\n"
|
|
636
|
+
" for name in _re.findall(r'([\\u4e00-\\u9fffA-Za-z_]\\w*)', st[1]):\n"
|
|
637
|
+
" if name in skip:\n"
|
|
638
|
+
" continue\n"
|
|
639
|
+
" t = types.get(name)\n"
|
|
640
|
+
" if t is None:\n"
|
|
641
|
+
" errors.append('未推断类型:' + name)\n"
|
|
642
|
+
" elif t == '混合':\n"
|
|
643
|
+
" errors.append('类型冲突:' + name + '(混合类型)')\n"
|
|
644
|
+
" if errors:\n"
|
|
645
|
+
" return None, {'ok': False, 'errors': errors}\n"
|
|
646
|
+
" return [('TYPED_OK', len(statements))], {'ok': True}\n"),
|
|
647
|
+
"cases": [(([("assign", "甲", 3), ("COND", "甲 大于 2 则 德 0.5", [], [])],),
|
|
648
|
+
([("TYPED_OK", 2)], {"ok": True})),
|
|
649
|
+
(([("COND", "未知量 大于 2 则 德 0.5", [], [])],),
|
|
650
|
+
(None, {"ok": False, "errors": ["未推断类型:未知量"]})),
|
|
651
|
+
(([("assign", "甲", 3), ("assign", "甲", "x"),
|
|
652
|
+
("COND", "甲 大于 2 则 德 0.5", [], [])],),
|
|
653
|
+
(None, {"ok": False, "errors": ["类型冲突:甲(混合类型)"]}))],
|
|
654
|
+
"params": [],
|
|
655
|
+
"needs_inject": True,
|
|
656
|
+
"calibration": "对照:C2 语义深化——类型推断接入编译管线(未推断/混合类型符号使用→编译期拦截,目标3 分析器完整化)",
|
|
657
|
+
},
|
|
658
|
+
"编译-完整管线": {
|
|
659
|
+
"task": "完整编译",
|
|
660
|
+
"pattern": (
|
|
661
|
+
"def compile_full(source, declared_spaces=None):\n"
|
|
662
|
+
" # 生效条件:kw ∈ {知足};source.splitlines 可用;line.strip 可用\n"
|
|
663
|
+
" # 子功能:1 kw 分支处理\n"
|
|
664
|
+
" # 执行:按 op 分派;循环迭代;顺序调用\n"
|
|
665
|
+
" # 不适用条件:kw 非 {知足} 时\n"
|
|
666
|
+
" # 白箱版 pc compile 单入口:中文源码 → 字节码\n"
|
|
667
|
+
" # 流程:逐行词法 → 静态检查(条件空间存在性/类型)→ 编译指令\n"
|
|
668
|
+
" import re as _re\n"
|
|
669
|
+
" spaces = set(declared_spaces or [])\n"
|
|
670
|
+
" instr_map = {'道': 'DAO', '德': 'DE', '止': 'ZHI', '知足': 'ZHIZU',\n"
|
|
671
|
+
" '自然': 'ZIRAN', '无为': 'WUWEI'}\n"
|
|
672
|
+
" code, errors = [], []\n"
|
|
673
|
+
" pending_zhizu = []\n"
|
|
674
|
+
" for line in source.splitlines():\n"
|
|
675
|
+
" line = line.strip()\n"
|
|
676
|
+
" if not line or line.startswith('#'):\n"
|
|
677
|
+
" continue\n"
|
|
678
|
+
" m = _re.match(r'^(\\d+)。\\s*(.+?)[;;]?$', line)\n"
|
|
679
|
+
" if m:\n"
|
|
680
|
+
" line = m.group(2)\n"
|
|
681
|
+
" m = _re.match(r'^若\\s*(.+?)\\s*[,,]?\\s*则\\s*(.+?)\\s*[。;;]?$', line)\n"
|
|
682
|
+
" if m:\n"
|
|
683
|
+
" cond, then = m.group(1), m.group(2)\n"
|
|
684
|
+
" sm = _re.search(r'条件空间为(.+?)(?:[,,。\\s]|$)', cond)\n"
|
|
685
|
+
" if sm and sm.group(1).strip() not in spaces:\n"
|
|
686
|
+
" errors.append('条件空间未声明:' + sm.group(1).strip())\n"
|
|
687
|
+
" continue\n"
|
|
688
|
+
" t = then.split()\n"
|
|
689
|
+
" then_instr = (instr_map.get(t[0], t[0]),\n"
|
|
690
|
+
" float(t[1]) if len(t) > 1 and t[1].replace('.', '', 1).isdigit()\n"
|
|
691
|
+
" else (t[1] if len(t) > 1 else None))\n"
|
|
692
|
+
" # 条件真值编译:LOAD 左值 + PUSH 右值 + CMP + 假则跳过 then\n"
|
|
693
|
+
" cmp_map = {'大于': 'CMP_GT', '小于': 'CMP_LT', '等于': 'CMP_EQ',\n"
|
|
694
|
+
" '不等于': 'CMP_NE', '不小于': 'CMP_GE', '不大于': 'CMP_LE'}\n"
|
|
695
|
+
" cm = _re.search(r'(.+?)\\s*(大于|小于|等于|不等于|不小于|不大于)\\s*(.+?)\\s*$', cond)\n"
|
|
696
|
+
" if cm:\n"
|
|
697
|
+
" left, op, right = cm.group(1).strip(), cm.group(2), cm.group(3).strip()\n"
|
|
698
|
+
" code.append(('LOAD', left))\n"
|
|
699
|
+
" code.append(('PUSH', float(right) if right.replace('.', '', 1).isdigit() else right))\n"
|
|
700
|
+
" code.append((cmp_map[op], None))\n"
|
|
701
|
+
" jif = len(code)\n"
|
|
702
|
+
" code.append(('JUMP_IF_FALSE', 0))\n"
|
|
703
|
+
" code.append(then_instr)\n"
|
|
704
|
+
" code[jif] = ('JUMP_IF_FALSE', len(code))\n"
|
|
705
|
+
" else:\n"
|
|
706
|
+
" code.append(('PUSH', True))\n"
|
|
707
|
+
" code.append(('JUMP_IF_FALSE', 0))\n"
|
|
708
|
+
" code.append(then_instr)\n"
|
|
709
|
+
" continue\n"
|
|
710
|
+
" m = _re.match(r'^(.+?)\\s*[==]\\s*(.+?)\\s*[。;;]?$', line)\n"
|
|
711
|
+
" if m:\n"
|
|
712
|
+
" # 赋值:名 = 值 → PUSH/LOAD 值 + STORE_NAME(以名举实:名实动态绑定)\n"
|
|
713
|
+
" left = m.group(1).strip()\n"
|
|
714
|
+
" right = m.group(2).strip()\n"
|
|
715
|
+
" if right.replace('.', '', 1).isdigit():\n"
|
|
716
|
+
" code.append(('PUSH', float(right) if '.' in right else int(right)))\n"
|
|
717
|
+
" else:\n"
|
|
718
|
+
" code.append(('LOAD', right))\n"
|
|
719
|
+
" code.append(('STORE', left))\n"
|
|
720
|
+
" continue\n"
|
|
721
|
+
" for kw in ('道', '德', '止', '知足', '自然', '无为'):\n"
|
|
722
|
+
" if line.startswith(kw):\n"
|
|
723
|
+
" rest = line[len(kw):].strip().rstrip('。;;')\n"
|
|
724
|
+
" arg = None\n"
|
|
725
|
+
" if rest:\n"
|
|
726
|
+
" arg = float(rest) if rest.replace('.', '', 1).isdigit() else rest\n"
|
|
727
|
+
" if kw == '知足':\n"
|
|
728
|
+
" # 知足:信任达标跳转(达标→跳程序末尾=满足;目标末尾回填)\n"
|
|
729
|
+
" code.append(('ZHIZU', (float(rest), 0)))\n"
|
|
730
|
+
" pending_zhizu.append(len(code) - 1)\n"
|
|
731
|
+
" else:\n"
|
|
732
|
+
" code.append((instr_map[kw], arg))\n"
|
|
733
|
+
" break\n"
|
|
734
|
+
" else:\n"
|
|
735
|
+
" errors.append('无法识别:' + line)\n"
|
|
736
|
+
" for i in pending_zhizu:\n"
|
|
737
|
+
" code[i] = ('ZHIZU', (code[i][1][0], len(code)))\n"
|
|
738
|
+
" if errors:\n"
|
|
739
|
+
" return None, {'ok': False, 'errors': errors}\n"
|
|
740
|
+
" return code, {'ok': True}\n"),
|
|
741
|
+
"cases": [(("道 新信任路径\n德 0.3\n止。\n", {"伴侣"}),
|
|
742
|
+
([("DAO", "新信任路径"), ("DE", 0.3), ("ZHI", None)], {"ok": True})),
|
|
743
|
+
(("若 条件空间为未知 则 德 0.5\n止。\n", {"伴侣"}),
|
|
744
|
+
(None, {"ok": False, "errors": ["条件空间未声明:未知"]})),
|
|
745
|
+
(("若 信任值 大于 0.3,则 德 0.5\n止。\n", {"伴侣"}),
|
|
746
|
+
([("LOAD", "信任值"), ("PUSH", 0.3), ("CMP_GT", None),
|
|
747
|
+
("JUMP_IF_FALSE", 5), ("DE", 0.5), ("ZHI", None)], {"ok": True})),
|
|
748
|
+
(("甲 = 3\n止。\n", set()),
|
|
749
|
+
([("PUSH", 3), ("STORE", "甲"), ("ZHI", None)], {"ok": True})),
|
|
750
|
+
(("甲 = 3\n若 甲 大于 2,则 德 0.5\n止。\n", {"伴侣"}),
|
|
751
|
+
([("PUSH", 3), ("STORE", "甲"), ("LOAD", "甲"), ("PUSH", 2.0),
|
|
752
|
+
("CMP_GT", None), ("JUMP_IF_FALSE", 7), ("DE", 0.5),
|
|
753
|
+
("ZHI", None)], {"ok": True})),
|
|
754
|
+
(("德 0.3\n知足 0.7\n德 0.5\n止。\n", set()),
|
|
755
|
+
([("DE", 0.3), ("ZHIZU", (0.7, 4)), ("DE", 0.5),
|
|
756
|
+
("ZHI", None)], {"ok": True})),
|
|
757
|
+
(("随便文本\n", set()), (None, {"ok": False,
|
|
758
|
+
"errors": ["无法识别:随便文本"]}))],
|
|
759
|
+
"params": [],
|
|
760
|
+
"calibration": "对照:白箱版 pc compile 单入口(词法→静态检查→编译);若则真值计算由编译-若则单元深化",
|
|
761
|
+
},
|
|
762
|
+
"求值-条件表达式": {
|
|
763
|
+
"task": "条件求值",
|
|
764
|
+
"pattern": (
|
|
765
|
+
"def eval_condition(cond_text, symbols):\n"
|
|
766
|
+
" # 生效条件:right_s.strip 可用;left_s.strip 可用\n"
|
|
767
|
+
" # 子功能:① 调用 float\n"
|
|
768
|
+
" # 执行:循环迭代;顺序调用\n"
|
|
769
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
770
|
+
" # 中文条件表达式求值:左值 比较词 右值(比较词:大于/小于/等于/不等于/不小于/不大于)\n"
|
|
771
|
+
" ops = {'不小于': '>=', '不大于': '<=', '大于': '>', '小于': '<',\n"
|
|
772
|
+
" '等于': '==', '不等于': '!='}\n"
|
|
773
|
+
" for kw, op in ops.items():\n"
|
|
774
|
+
" if kw in cond_text:\n"
|
|
775
|
+
" left_s, right_s = cond_text.split(kw)\n"
|
|
776
|
+
" left = symbols.get(left_s.strip())\n"
|
|
777
|
+
" right_s = right_s.strip()\n"
|
|
778
|
+
" right = (float(right_s) if right_s.replace('.', '', 1).isdigit()\n"
|
|
779
|
+
" else symbols.get(right_s))\n"
|
|
780
|
+
" if left is None or right is None:\n"
|
|
781
|
+
" return None # 诚实:符号未定义\n"
|
|
782
|
+
" return {'>': left > right, '<': left < right, '==': left == right,\n"
|
|
783
|
+
" '!=': left != right, '>=': left >= right,\n"
|
|
784
|
+
" '<=': left <= right}[op]\n"
|
|
785
|
+
" return None\n"),
|
|
786
|
+
"cases": [(("信任值 大于 0.3", {"信任值": 0.5}), True),
|
|
787
|
+
(("信任值 大于 0.3", {"信任值": 0.2}), False),
|
|
788
|
+
(("信任值 不小于 0.7", {"信任值": 0.7}), True),
|
|
789
|
+
(("信任值 等于 0.5", {"信任值": 0.5}), True),
|
|
790
|
+
(("未知量 大于 0.3", {"信任值": 0.5}), None)],
|
|
791
|
+
"params": [],
|
|
792
|
+
"calibration": "对照:中文比较词(CHINESE_COMP_MAP:等于/大于/小于/不等于/不小于/不大于);未定义符号诚实返回 None",
|
|
793
|
+
},
|
|
794
|
+
"对接-协议词法": {
|
|
795
|
+
"task": "协议词法对接",
|
|
796
|
+
"pattern": (
|
|
797
|
+
"def bridge_token(token_name):\n"
|
|
798
|
+
" # 生效条件:参数 token_name 合法\n"
|
|
799
|
+
" # 子功能:① 主体逻辑执行\n"
|
|
800
|
+
" # 执行:顺序执行\n"
|
|
801
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
802
|
+
" # protocol-compiler TokenType → 白箱指令名(真实词法对接校准基准)\n"
|
|
803
|
+
" m = {'DAO': 'DAO', 'DE': 'DE', 'ZIRAN': 'ZIRAN', 'WUWEI': 'WUWEI',\n"
|
|
804
|
+
" 'ZHI': 'ZHI', 'ZHIZU': 'ZHIZU', 'RUO': 'COND_START',\n"
|
|
805
|
+
" 'ZE': 'COND_THEN', 'FOUZE': 'COND_ELSE',\n"
|
|
806
|
+
" 'WENYUE': 'STRUCT_问曰', 'DAYUE': 'STRUCT_答曰',\n"
|
|
807
|
+
" 'SHUYUE': 'STRUCT_术曰'}\n"
|
|
808
|
+
" return m.get(token_name)\n"),
|
|
809
|
+
"cases": [("DAO", "DAO"), ("DE", "DE"), ("ZHI", "ZHI"),
|
|
810
|
+
("RUO", "COND_START"), ("SHUYUE", "STRUCT_术曰"),
|
|
811
|
+
("UNKNOWN", None)],
|
|
812
|
+
"params": [],
|
|
813
|
+
"calibration": "对照:protocol-compiler TokenType 枚举(道德经助记符/若则/九章算术)",
|
|
814
|
+
},
|
|
815
|
+
"字节码-序列化": {
|
|
816
|
+
"task": "字节码序列化",
|
|
817
|
+
"pattern": (
|
|
818
|
+
"def serialize(code):\n"
|
|
819
|
+
" # 字节码序列化(.pbc 编码):指令列表 → .pbc 字节串(原生编译产物:op字符串+arg编码)\n"
|
|
820
|
+
" # 生效条件:code 为 (op, arg) 指令列表;arg 为 int/str/None\n"
|
|
821
|
+
" # 子功能:① op 定长前缀编码 ② arg 类型分派编码 ③ 拼装字节串\n"
|
|
822
|
+
" # 执行:struct.pack 前缀长度 + utf-8 op + arg 按类型编码\n"
|
|
823
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
824
|
+
" import struct\n"
|
|
825
|
+
" out = bytearray()\n"
|
|
826
|
+
" for op, arg in code:\n"
|
|
827
|
+
" b = op.encode('utf-8')\n"
|
|
828
|
+
" out.extend(struct.pack('H', len(b))); out.extend(b)\n"
|
|
829
|
+
" if arg is None:\n"
|
|
830
|
+
" out.append(0)\n"
|
|
831
|
+
" elif isinstance(arg, bool):\n"
|
|
832
|
+
" out.append(1); out.append(1 if arg else 0)\n"
|
|
833
|
+
" elif isinstance(arg, int):\n"
|
|
834
|
+
" out.append(2); out.extend(struct.pack('q', arg))\n"
|
|
835
|
+
" elif isinstance(arg, float):\n"
|
|
836
|
+
" out.append(3); out.extend(struct.pack('d', arg))\n"
|
|
837
|
+
" elif isinstance(arg, str):\n"
|
|
838
|
+
" s = arg.encode('utf-8')\n"
|
|
839
|
+
" out.append(4); out.extend(struct.pack('H', len(s))); out.extend(s)\n"
|
|
840
|
+
" elif isinstance(arg, tuple):\n"
|
|
841
|
+
" out.append(5); out.extend(struct.pack('d', arg[0]))\n"
|
|
842
|
+
" out.extend(struct.pack('q', arg[1]))\n"
|
|
843
|
+
" else:\n"
|
|
844
|
+
" raise ValueError('无法序列化参数 ' + repr(arg))\n"
|
|
845
|
+
" return bytes(out)\n"),
|
|
846
|
+
"cases": [(([("DE", 0.3), ("ZHI", None)],),
|
|
847
|
+
b'\x02\x00DE\x03333333\xd3?\x03\x00ZHI\x00')],
|
|
848
|
+
"params": [],
|
|
849
|
+
"calibration": "对照:C3 原生编译——字节码文件格式(op字符串+arg类型标记编码)",
|
|
850
|
+
},
|
|
851
|
+
"字节码-反序列化": {
|
|
852
|
+
"task": "字节码反序列化",
|
|
853
|
+
"pattern": (
|
|
854
|
+
"def deserialize(data):\n"
|
|
855
|
+
" # 生效条件:struct.unpack_from 可用\n"
|
|
856
|
+
" # 子功能:① 调用 len;② 调用 ValueError;③ 调用 str\n"
|
|
857
|
+
" # 执行:循环迭代;顺序调用\n"
|
|
858
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
859
|
+
" # .pbc 字节串 → 指令列表(原生编译加载)\n"
|
|
860
|
+
" import struct\n"
|
|
861
|
+
" code, i = [], 0\n"
|
|
862
|
+
" while i < len(data):\n"
|
|
863
|
+
" n = struct.unpack_from('H', data, i)[0]; i += 2\n"
|
|
864
|
+
" op = data[i:i + n].decode('utf-8'); i += n\n"
|
|
865
|
+
" tag = data[i]; i += 1\n"
|
|
866
|
+
" if tag == 0:\n"
|
|
867
|
+
" arg = None\n"
|
|
868
|
+
" elif tag == 1:\n"
|
|
869
|
+
" arg = data[i] == 1; i += 1\n"
|
|
870
|
+
" elif tag == 2:\n"
|
|
871
|
+
" arg = struct.unpack_from('q', data, i)[0]; i += 8\n"
|
|
872
|
+
" elif tag == 3:\n"
|
|
873
|
+
" arg = struct.unpack_from('d', data, i)[0]; i += 8\n"
|
|
874
|
+
" elif tag == 4:\n"
|
|
875
|
+
" m = struct.unpack_from('H', data, i)[0]; i += 2\n"
|
|
876
|
+
" arg = data[i:i + m].decode('utf-8'); i += m\n"
|
|
877
|
+
" elif tag == 5:\n"
|
|
878
|
+
" t = struct.unpack_from('d', data, i)[0]\n"
|
|
879
|
+
" a = struct.unpack_from('q', data, i + 8)[0]\n"
|
|
880
|
+
" arg = (t, a); i += 16\n"
|
|
881
|
+
" else:\n"
|
|
882
|
+
" raise ValueError('未知标签 ' + str(tag))\n"
|
|
883
|
+
" code.append((op, arg))\n"
|
|
884
|
+
" return code\n"),
|
|
885
|
+
"cases": [((b"",), []),
|
|
886
|
+
((bytes([0x03, 0x00]) + b"ZHI" + bytes([0x00])), [("ZHI", None)])],
|
|
887
|
+
"params": [],
|
|
888
|
+
"calibration": "对照:C3 原生编译——.pbc 加载(与序列化对称,往返一致性由校准⑫验证)",
|
|
889
|
+
},
|
|
890
|
+
"调试-单步": {
|
|
891
|
+
"task": "VM单步",
|
|
892
|
+
"pattern": (
|
|
893
|
+
"def step_exec(code, ip, stack=None, symbols=None, trust=0.0, cond=None):\n"
|
|
894
|
+
" # VM 单步(调试器单步):执行一条指令 → (next_ip, 新状态);止/无为返回 halt;越界返回 None\n"
|
|
895
|
+
" # 生效条件:code 为指令列表;ip 为当前指令指针\n"
|
|
896
|
+
" # 子功能:① 取当前指令 ② 分派执行 ③ 返回下一状态\n"
|
|
897
|
+
" # 执行:按 op 分派,止/无为→halt,越界→None\n"
|
|
898
|
+
" # 不适用条件:op 非 {DAO, DE, LOAD, PUSH, STORE, WUWEI, ZHI, ZHIZU, ZIRAN} 时\n"
|
|
899
|
+
" if ip >= len(code):\n"
|
|
900
|
+
" return None\n"
|
|
901
|
+
" op, arg = code[ip]\n"
|
|
902
|
+
" stack = list(stack or [])\n"
|
|
903
|
+
" symbols = dict(symbols or {})\n"
|
|
904
|
+
" cond = list(cond or [])\n"
|
|
905
|
+
" ip += 1\n"
|
|
906
|
+
" if op == 'PUSH':\n"
|
|
907
|
+
" stack.append(arg)\n"
|
|
908
|
+
" elif op == 'STORE':\n"
|
|
909
|
+
" symbols[arg] = stack.pop()\n"
|
|
910
|
+
" elif op == 'LOAD':\n"
|
|
911
|
+
" if arg not in symbols:\n"
|
|
912
|
+
" return None\n"
|
|
913
|
+
" stack.append(symbols[arg])\n"
|
|
914
|
+
" elif op == 'DE':\n"
|
|
915
|
+
" trust = round(trust + arg, 3)\n"
|
|
916
|
+
" elif op == 'DAO':\n"
|
|
917
|
+
" cond.append({'name': arg})\n"
|
|
918
|
+
" elif op == 'ZIRAN':\n"
|
|
919
|
+
" while len(cond) > 1:\n"
|
|
920
|
+
" cond.pop()\n"
|
|
921
|
+
" elif op == 'ZHIZU':\n"
|
|
922
|
+
" if trust >= arg[0]:\n"
|
|
923
|
+
" ip = arg[1]\n"
|
|
924
|
+
" elif op == 'ZHI':\n"
|
|
925
|
+
" return ('halt', {'trust': trust, 'symbols': symbols, 'cond': cond,\n"
|
|
926
|
+
" 'stack': stack})\n"
|
|
927
|
+
" elif op == 'WUWEI':\n"
|
|
928
|
+
" return ('yield', {'trust': trust, 'symbols': symbols, 'cond': cond,\n"
|
|
929
|
+
" 'stack': stack})\n"
|
|
930
|
+
" return (ip, {'trust': trust, 'symbols': symbols, 'cond': cond,\n"
|
|
931
|
+
" 'stack': stack})\n"),
|
|
932
|
+
"cases": [(([("DE", 0.3), ("DE", 0.5)], 0),
|
|
933
|
+
(1, {"trust": 0.3, "symbols": {}, "cond": [], "stack": []})),
|
|
934
|
+
(([("DAO", "路径甲")], 0),
|
|
935
|
+
(1, {"trust": 0.0, "symbols": {}, "cond": [{"name": "路径甲"}],
|
|
936
|
+
"stack": []})),
|
|
937
|
+
(([("ZHI", None)], 0),
|
|
938
|
+
("halt", {"trust": 0.0, "symbols": {}, "cond": [], "stack": []}))],
|
|
939
|
+
"params": [],
|
|
940
|
+
"calibration": "对照:C4 调试器单步(一条指令 → 新状态;止/无为=控制流信号)",
|
|
941
|
+
},
|
|
942
|
+
"分析-字节码转储": {
|
|
943
|
+
"task": "字节码转储",
|
|
944
|
+
"pattern": (
|
|
945
|
+
"def dump_bytecode(code):\n"
|
|
946
|
+
" # 字节码转储(可读转储):字节码 → 可读指令列表(地址+指令+参数——分析器输出)\n"
|
|
947
|
+
" # 生效条件:code 为指令列表(op, arg)\n"
|
|
948
|
+
" # 子功能:① 逐指令编号 ② 格式化指令行\n"
|
|
949
|
+
" # 执行:enumerate 生成 (地址, op, arg) 行\n"
|
|
950
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
951
|
+
" return [f'{i:4d} {op:14s} {arg}' for i, (op, arg) in enumerate(code)]\n"),
|
|
952
|
+
"cases": [(([("DE", 0.3), ("ZHI", None)],),
|
|
953
|
+
[' 0 DE 0.3', ' 1 ZHI None'])],
|
|
954
|
+
"params": [],
|
|
955
|
+
"calibration": "对照:C4 分析器字节码转储(可读调试输出)",
|
|
956
|
+
},
|
|
957
|
+
"词法-注释剥离": {
|
|
958
|
+
"task": "注释剥离",
|
|
959
|
+
"pattern": (
|
|
960
|
+
"def strip_comments(src):\n"
|
|
961
|
+
" # 生效条件:src.splitlines 可用;line.find 可用\n"
|
|
962
|
+
" # 子功能:① 条件判定 ② 结果处理\n"
|
|
963
|
+
" # 执行:循环迭代\n"
|
|
964
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
965
|
+
" # 注释剥离:# 行注释 / 井号中文注释(词法预处理)\n"
|
|
966
|
+
" lines = []\n"
|
|
967
|
+
" for line in src.splitlines():\n"
|
|
968
|
+
" idx = line.find('#')\n"
|
|
969
|
+
" lines.append(line[:idx] if idx >= 0 else line)\n"
|
|
970
|
+
" return '\\n'.join(lines)\n"),
|
|
971
|
+
"cases": [("a = 1 # 赋值", 'a = 1 '),
|
|
972
|
+
("# 注释\nb = 2", '\nb = 2'),
|
|
973
|
+
("无注释", '无注释')],
|
|
974
|
+
"params": [],
|
|
975
|
+
"calibration": "对照:词法预处理——注释剥离(# 行注释,中文注释同语义)",
|
|
976
|
+
},
|
|
977
|
+
"编译-逻辑表达式": {
|
|
978
|
+
"task": "逻辑表达式",
|
|
979
|
+
"pattern": (
|
|
980
|
+
"def compile_logic(left_instrs, op, right_instrs):\n"
|
|
981
|
+
" # 逻辑表达式编译(短路编译):且/或 → 短路跳转字节码(AND/OR 语义)\n"
|
|
982
|
+
" # 生效条件:op ∈ {且, 或};left/right 为指令列表\n"
|
|
983
|
+
" # 子功能:① 拼接左指令 ② 短路跳转 ③ 拼接右指令\n"
|
|
984
|
+
" # 执行:且→JUMP_IF_FALSE、或→JUMP_IF_TRUE(左短路)\n"
|
|
985
|
+
" # 不适用条件:op 非 {且} 时\n"
|
|
986
|
+
" code = list(left_instrs)\n"
|
|
987
|
+
" if op == '且':\n"
|
|
988
|
+
" code.append(('JUMP_IF_FALSE', 0)) # 左假短路\n"
|
|
989
|
+
" code.extend(right_instrs)\n"
|
|
990
|
+
" else: # 或\n"
|
|
991
|
+
" code.append(('JUMP_IF_TRUE', 0)) # 左真短路\n"
|
|
992
|
+
" code.extend(right_instrs)\n"
|
|
993
|
+
" return code\n"),
|
|
994
|
+
"cases": [(([("LOAD", "a")], '且', [("LOAD", "b")]),
|
|
995
|
+
[("LOAD", "a"), ("JUMP_IF_FALSE", 0), ("LOAD", "b")]),
|
|
996
|
+
(([("LOAD", "a")], '或', [("LOAD", "b")]),
|
|
997
|
+
[("LOAD", "a"), ("JUMP_IF_TRUE", 0), ("LOAD", "b")])],
|
|
998
|
+
"params": [],
|
|
999
|
+
"calibration": "对照:编译逻辑——且/或短路(左操作数决定是否求右——短路求值语义)",
|
|
1000
|
+
},
|
|
1001
|
+
"编译-链式比较": {
|
|
1002
|
+
"task": "链式比较",
|
|
1003
|
+
"pattern": (
|
|
1004
|
+
"def compile_chain(cmp1, cmp2):\n"
|
|
1005
|
+
" # 生效条件:参数 cmp1/cmp2 合法\n"
|
|
1006
|
+
" # 子功能:① 调用 list\n"
|
|
1007
|
+
" # 执行:顺序调用\n"
|
|
1008
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
1009
|
+
" # 链式比较:a < b < c → 比较1 且 比较2(AND 组合)\n"
|
|
1010
|
+
" code = list(cmp1)\n"
|
|
1011
|
+
" code.append(('JUMP_IF_FALSE', 0)) # 第一比较假 → 短路\n"
|
|
1012
|
+
" code.extend(cmp2)\n"
|
|
1013
|
+
" return code\n"),
|
|
1014
|
+
"cases": [(([("LOAD", "a"), ("LOAD", "b"), ("CMP_LT", None)],
|
|
1015
|
+
[("LOAD", "b"), ("LOAD", "c"), ("CMP_LT", None)]),
|
|
1016
|
+
[("LOAD", "a"), ("LOAD", "b"), ("CMP_LT", None),
|
|
1017
|
+
("JUMP_IF_FALSE", 0),
|
|
1018
|
+
("LOAD", "b"), ("LOAD", "c"), ("CMP_LT", None)])],
|
|
1019
|
+
"params": [],
|
|
1020
|
+
"calibration": "对照:编译链式比较——a<b<c = (a<b) 且 (b<c)(短路组合,Python 链式语义)",
|
|
1021
|
+
},
|
|
1022
|
+
"编译-常量折叠": {
|
|
1023
|
+
"task": "常量折叠",
|
|
1024
|
+
"pattern": (
|
|
1025
|
+
"def fold_constants(instrs):\n"
|
|
1026
|
+
" # 生效条件:参数 instrs 合法\n"
|
|
1027
|
+
" # 子功能:① 调用 len\n"
|
|
1028
|
+
" # 执行:循环迭代;顺序调用\n"
|
|
1029
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
1030
|
+
" # 常量折叠:PUSH 常量 + 算术 → 立即结果(编译期求值优化)\n"
|
|
1031
|
+
" out, i = [], 0\n"
|
|
1032
|
+
" while i < len(instrs):\n"
|
|
1033
|
+
" if (i + 2 < len(instrs) and instrs[i][0] == 'PUSH'\n"
|
|
1034
|
+
" and instrs[i + 1][0] == 'PUSH'\n"
|
|
1035
|
+
" and instrs[i + 2][0] in ('ADD', 'SUB', 'MUL', 'DIV')):\n"
|
|
1036
|
+
" a, b = instrs[i][1], instrs[i + 1][1]\n"
|
|
1037
|
+
" op = instrs[i + 2][0]\n"
|
|
1038
|
+
" val = {'ADD': a + b, 'SUB': a - b, 'MUL': a * b,\n"
|
|
1039
|
+
" 'DIV': a / b}[op]\n"
|
|
1040
|
+
" out.append(('PUSH', val))\n"
|
|
1041
|
+
" i += 3\n"
|
|
1042
|
+
" else:\n"
|
|
1043
|
+
" out.append(instrs[i])\n"
|
|
1044
|
+
" i += 1\n"
|
|
1045
|
+
" return out\n"),
|
|
1046
|
+
"cases": [(([("PUSH", 1), ("PUSH", 2), ("ADD", None), ("LOAD", "x")],),
|
|
1047
|
+
[("PUSH", 3), ("LOAD", "x")]),
|
|
1048
|
+
(([("PUSH", 10), ("PUSH", 4), ("MUL", None)],),
|
|
1049
|
+
[("PUSH", 40)])],
|
|
1050
|
+
"params": [],
|
|
1051
|
+
"calibration": "对照:编译优化——常量折叠(PUSH+PUSH+算术 → PUSH 结果,编译期求值)",
|
|
1052
|
+
},
|
|
1053
|
+
"编译-死代码消除": {
|
|
1054
|
+
"task": "死代码消除",
|
|
1055
|
+
"pattern": (
|
|
1056
|
+
"def dead_code_elim(code):\n"
|
|
1057
|
+
" # 生效条件:op ∈ {JUMP}\n"
|
|
1058
|
+
" # 子功能:① op 分支处理\n"
|
|
1059
|
+
" # 执行:按 op 分派;循环迭代\n"
|
|
1060
|
+
" # 不适用条件:op 非 {JUMP} 时\n"
|
|
1061
|
+
" # 死代码消除:不可达指令(无条件 JUMP 之后)删除\n"
|
|
1062
|
+
" live = []\n"
|
|
1063
|
+
" reachable = True\n"
|
|
1064
|
+
" for op, arg in code:\n"
|
|
1065
|
+
" if op == 'JUMP':\n"
|
|
1066
|
+
" live.append((op, arg))\n"
|
|
1067
|
+
" reachable = False\n"
|
|
1068
|
+
" elif reachable:\n"
|
|
1069
|
+
" live.append((op, arg))\n"
|
|
1070
|
+
" return live\n"),
|
|
1071
|
+
"cases": [(([("DE", 0.5), ("JUMP", 5), ("DE", 0.9), ("ZHI", None)],),
|
|
1072
|
+
[("DE", 0.5), ("JUMP", 5)]),
|
|
1073
|
+
(([("DE", 0.1)],), [("DE", 0.1)])],
|
|
1074
|
+
"params": [],
|
|
1075
|
+
"calibration": "对照:编译优化——死代码消除(JUMP 后不可达指令删除)",
|
|
1076
|
+
},
|
|
1077
|
+
"编译-寄存器分配": {
|
|
1078
|
+
"task": "寄存器分配",
|
|
1079
|
+
"pattern": (
|
|
1080
|
+
"def reg_alloc(vars_used):\n"
|
|
1081
|
+
" # 生效条件:参数 vars_used 合法\n"
|
|
1082
|
+
" # 子功能:① 调用 len;② 调用 str\n"
|
|
1083
|
+
" # 执行:循环迭代;顺序调用\n"
|
|
1084
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
1085
|
+
" # 寄存器分配:变量 → 寄存器(无冲突复用,溢出计数)\n"
|
|
1086
|
+
" regs = {}\n"
|
|
1087
|
+
" spills = 0\n"
|
|
1088
|
+
" for v in vars_used:\n"
|
|
1089
|
+
" if v not in regs:\n"
|
|
1090
|
+
" if len(regs) < 4:\n"
|
|
1091
|
+
" regs[v] = 'R' + str(len(regs))\n"
|
|
1092
|
+
" else:\n"
|
|
1093
|
+
" spills += 1\n"
|
|
1094
|
+
" regs[v] = 'mem'\n"
|
|
1095
|
+
" return regs, spills\n"),
|
|
1096
|
+
"cases": [((['a', 'b', 'c', 'd', 'e'],), ({'a': 'R0', 'b': 'R1',
|
|
1097
|
+
'c': 'R2', 'd': 'R3',
|
|
1098
|
+
'e': 'mem'}, 1)),
|
|
1099
|
+
(([],), ({}, 0))],
|
|
1100
|
+
"params": [],
|
|
1101
|
+
"calibration": "对照:编译优化——寄存器分配(4 寄存器,溢出到内存)",
|
|
1102
|
+
},
|
|
1103
|
+
"编译-闭包捕获分析": {
|
|
1104
|
+
"task": "闭包捕获分析",
|
|
1105
|
+
"pattern": (
|
|
1106
|
+
"def analyze_free_vars(func_refs, params, outer_vars):\n"
|
|
1107
|
+
" # 生效条件:参数 func_refs/params/outer_vars 合法\n"
|
|
1108
|
+
" # 子功能:① 主体逻辑执行\n"
|
|
1109
|
+
" # 执行:顺序执行\n"
|
|
1110
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
1111
|
+
" # 闭包捕获分析:函数体引用 且 非参数 且 外层可见 = 自由变量\n"
|
|
1112
|
+
" # (词法作用域:内层函数用到的外层名字 → 需捕获为 cell;保持源码引用顺序)\n"
|
|
1113
|
+
" return [r for r in func_refs\n"
|
|
1114
|
+
" if r not in params and r in outer_vars]\n"),
|
|
1115
|
+
"cases": [((['甲', '乙', '丙'], ['甲'], ['甲', '乙']), ['乙']),
|
|
1116
|
+
((['甲'], [], []), []),
|
|
1117
|
+
((['甲', '乙'], ['丙'], ['甲', '乙']), ['甲', '乙'])],
|
|
1118
|
+
"params": [],
|
|
1119
|
+
"calibration": "对照:闭包自由变量分析——引用∩外层-参数(CPython cell 捕获语义·词法作用域)",
|
|
1120
|
+
},
|
|
1121
|
+
"VM-闭包创建": {
|
|
1122
|
+
"task": "闭包创建",
|
|
1123
|
+
"pattern": (
|
|
1124
|
+
"def make_closure(func_body, free_names, captured_values):\n"
|
|
1125
|
+
" # 生效条件:参数 func_body/free_names/captured_values 合法\n"
|
|
1126
|
+
" # 子功能:① 调用 list\n"
|
|
1127
|
+
" # 执行:顺序调用\n"
|
|
1128
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
1129
|
+
" # 闭包创建:函数体 + 捕获映射(自由变量→当前值)→ 闭包对象\n"
|
|
1130
|
+
" # (知 + 所见环境;未捕获到的名字不入环境)\n"
|
|
1131
|
+
" return {'body': list(func_body),\n"
|
|
1132
|
+
" 'env': {n: captured_values[n] for n in free_names\n"
|
|
1133
|
+
" if n in captured_values}}\n"),
|
|
1134
|
+
"cases": [(([("LOAD", "甲"), ("DE", None)], ["甲"], {"甲": 3}),
|
|
1135
|
+
{"body": [("LOAD", "甲"), ("DE", None)], "env": {"甲": 3}}),
|
|
1136
|
+
(([], ["甲"], {}), {"body": [], "env": {}}),
|
|
1137
|
+
(([("DE", 0.5)], ["甲", "乙"], {"乙": 7}),
|
|
1138
|
+
{"body": [("DE", 0.5)], "env": {"乙": 7}})],
|
|
1139
|
+
"params": [],
|
|
1140
|
+
"calibration": "对照:闭包对象=函数体+捕获环境(MAKE_CLOSURE 指令语义;未捕获名字不入环境)",
|
|
1141
|
+
},
|
|
1142
|
+
"VM-闭包调用": {
|
|
1143
|
+
"task": "闭包调用",
|
|
1144
|
+
"pattern": (
|
|
1145
|
+
"def call_closure(closure, params, args):\n"
|
|
1146
|
+
" # 生效条件:参数 closure/params/args 合法\n"
|
|
1147
|
+
" # 子功能:① 调用 dict;② 调用 zip\n"
|
|
1148
|
+
" # 执行:循环迭代;顺序调用\n"
|
|
1149
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
1150
|
+
" # 闭包调用:捕获环境 + 参数绑定 → 执行环境\n"
|
|
1151
|
+
" # (词法父作用域可见 + 当前参数;参数遮蔽捕获变量)\n"
|
|
1152
|
+
" env = dict(closure['env'])\n"
|
|
1153
|
+
" for p, a in zip(params, args):\n"
|
|
1154
|
+
" env[p] = a\n"
|
|
1155
|
+
" return env\n"),
|
|
1156
|
+
"cases": [(({"body": [("DE", 0.5)], "env": {"甲": 3}}, ["乙"], [7]),
|
|
1157
|
+
{"甲": 3, "乙": 7}),
|
|
1158
|
+
(({"body": [], "env": {}}, [], []), {}),
|
|
1159
|
+
(({"body": [], "env": {"甲": 3}}, ["甲"], [9]), {"甲": 9})],
|
|
1160
|
+
"params": [],
|
|
1161
|
+
"calibration": "对照:闭包调用——词法父环境 + 参数遮蔽(CPython 闭包调用语义)",
|
|
1162
|
+
},
|
|
1163
|
+
"调试-断点": {
|
|
1164
|
+
"task": "断点",
|
|
1165
|
+
"pattern": (
|
|
1166
|
+
"def breakpoint_hit(breaks, ip, enable=None):\n"
|
|
1167
|
+
" # 生效条件:breaks.discard 可用\n"
|
|
1168
|
+
" # 子功能:① 条件判定 ② 结果处理\n"
|
|
1169
|
+
" # 执行:顺序执行\n"
|
|
1170
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
1171
|
+
" # 断点:enable=True 登记 / False 清除 / None 查询命中(调试器暂停点)\n"
|
|
1172
|
+
" if enable is True:\n"
|
|
1173
|
+
" breaks.add(ip)\n"
|
|
1174
|
+
" return 'set'\n"
|
|
1175
|
+
" if enable is False:\n"
|
|
1176
|
+
" breaks.discard(ip)\n"
|
|
1177
|
+
" return 'cleared'\n"
|
|
1178
|
+
" return ip in breaks\n"),
|
|
1179
|
+
"cases": [((set(), 5, True), 'set'),
|
|
1180
|
+
(({5}, 5, None), True),
|
|
1181
|
+
(({5}, 6, None), False),
|
|
1182
|
+
(({5}, 5, False), 'cleared'),
|
|
1183
|
+
((set(), 5, None), False)],
|
|
1184
|
+
"params": [],
|
|
1185
|
+
"calibration": "对照:C4 调试器断点(登记/清除/命中判定——调试器暂停点)",
|
|
1186
|
+
},
|
|
1187
|
+
"调试-调用栈回溯": {
|
|
1188
|
+
"task": "调用栈回溯",
|
|
1189
|
+
"pattern": (
|
|
1190
|
+
"def traceback_chain(call_stack, error_frame):\n"
|
|
1191
|
+
" # 生效条件:参数 call_stack/error_frame 合法\n"
|
|
1192
|
+
" # 子功能:① 调用 reversed\n"
|
|
1193
|
+
" # 执行:顺序调用\n"
|
|
1194
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
1195
|
+
" # 调用栈回溯:出错帧 + 调用链(最新→最旧)——调试器栈回溯语义\n"
|
|
1196
|
+
" chain = [error_frame]\n"
|
|
1197
|
+
" chain.extend(reversed(call_stack))\n"
|
|
1198
|
+
" return chain\n"),
|
|
1199
|
+
"cases": [(([], "f3"), ["f3"]),
|
|
1200
|
+
((["main", "f1", "f2"], "f3"), ["f3", "f2", "f1", "main"]),
|
|
1201
|
+
((["main"], "f1"), ["f1", "main"])],
|
|
1202
|
+
"params": [],
|
|
1203
|
+
"calibration": "对照:CPython traceback(异常处最内层,逐层向外到入口)",
|
|
1204
|
+
},
|
|
1205
|
+
"调试-变量监视": {
|
|
1206
|
+
"task": "变量监视",
|
|
1207
|
+
"pattern": (
|
|
1208
|
+
"def watch_eval(expr, symbols):\n"
|
|
1209
|
+
" # 生效条件:参数 expr/symbols 合法\n"
|
|
1210
|
+
" # 子功能:① 主体逻辑执行\n"
|
|
1211
|
+
" # 执行:顺序执行\n"
|
|
1212
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
1213
|
+
" # 变量监视:监视名在符号表求值(未知名 → None)——调试器监视窗\n"
|
|
1214
|
+
" return symbols.get(expr)\n"),
|
|
1215
|
+
"cases": [((("甲", {"甲": 3}), 3)),
|
|
1216
|
+
((("乙", {"甲": 3}), None)),
|
|
1217
|
+
((("甲", {}), None))],
|
|
1218
|
+
"params": [],
|
|
1219
|
+
"calibration": "对照:C4 调试器变量监视(watch 名 → 当前值,未知为 None)",
|
|
1220
|
+
},
|
|
1221
|
+
"编译-内联展开": {
|
|
1222
|
+
"task": "内联展开",
|
|
1223
|
+
"pattern": (
|
|
1224
|
+
"def inline_small(funcs, name, call_site):\n"
|
|
1225
|
+
" # 生效条件:参数 funcs/name/call_site 合法\n"
|
|
1226
|
+
" # 子功能:① 调用 list;② 调用 len\n"
|
|
1227
|
+
" # 执行:顺序调用\n"
|
|
1228
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
1229
|
+
" # 内联展开:小函数(指令数 ≤ 3)调用处直接展开(减少调用开销)\n"
|
|
1230
|
+
" body = funcs.get(name)\n"
|
|
1231
|
+
" if body is None or len(body) > 3:\n"
|
|
1232
|
+
" return call_site\n"
|
|
1233
|
+
" return list(body)\n"),
|
|
1234
|
+
"cases": [(({'f': [("DE", 0.1)]}, 'f', ('CALL', 'f')), [("DE", 0.1)]),
|
|
1235
|
+
(({'f': [("DE", 0.1), ("DE", 0.2), ("DE", 0.3),
|
|
1236
|
+
("DE", 0.4)]}, 'f', ('CALL', 'f')), ('CALL', 'f')),
|
|
1237
|
+
(({}, 'f', ('CALL', 'f')), ('CALL', 'f'))],
|
|
1238
|
+
"params": [],
|
|
1239
|
+
"calibration": "对照:编译优化——内联展开(小函数体复制到调用处,减少调用开销)",
|
|
1240
|
+
},
|
|
1241
|
+
"编译-循环展开": {
|
|
1242
|
+
"task": "循环展开",
|
|
1243
|
+
"pattern": (
|
|
1244
|
+
"def loop_unroll(body, times, max_unroll=3):\n"
|
|
1245
|
+
" # 生效条件:参数 body/times/max_unroll 合法\n"
|
|
1246
|
+
" # 子功能:① 调用 list\n"
|
|
1247
|
+
" # 执行:顺序调用\n"
|
|
1248
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
1249
|
+
" # 循环展开:循环体复制 times 次(减少回跳,阈值上限防代码膨胀)\n"
|
|
1250
|
+
" if times > max_unroll or times <= 0:\n"
|
|
1251
|
+
" return list(body)\n"
|
|
1252
|
+
" return list(body) * times\n"),
|
|
1253
|
+
"cases": [(([("DE", 0.1)], 3), [("DE", 0.1), ("DE", 0.1), ("DE", 0.1)]),
|
|
1254
|
+
(([("DE", 0.1)], 4), [("DE", 0.1)]),
|
|
1255
|
+
(([("DE", 0.1)], 0), [("DE", 0.1)]),
|
|
1256
|
+
(([], 2), [])],
|
|
1257
|
+
"params": [],
|
|
1258
|
+
"calibration": "对照:编译优化——循环展开(固定次数体复制,上限防膨胀)",
|
|
1259
|
+
},
|
|
1260
|
+
"编译-尾调用优化": {
|
|
1261
|
+
"task": "尾调用优化",
|
|
1262
|
+
"pattern": (
|
|
1263
|
+
"def tail_call_opt(body):\n"
|
|
1264
|
+
" # 生效条件:参数 body 合法\n"
|
|
1265
|
+
" # 子功能:① 调用 list\n"
|
|
1266
|
+
" # 执行:顺序调用\n"
|
|
1267
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
1268
|
+
" # 尾调用优化:末尾调用指令 → 跳转指令(尾递归转循环,栈安全)\n"
|
|
1269
|
+
" if body and body[-1][0] == 'CALL':\n"
|
|
1270
|
+
" return list(body[:-1]) + [('JUMP', body[-1][1])]\n"
|
|
1271
|
+
" return list(body)\n"),
|
|
1272
|
+
"cases": [(([("DE", 0.1), ("CALL", 'f')],),
|
|
1273
|
+
[("DE", 0.1), ("JUMP", 'f')]),
|
|
1274
|
+
(([("DE", 0.1)],), [("DE", 0.1)]),
|
|
1275
|
+
(([],), [])],
|
|
1276
|
+
"params": [],
|
|
1277
|
+
"calibration": "对照:编译优化——尾调用优化(CALL→JUMP,尾递归不增栈帧)",
|
|
1278
|
+
},
|
|
1279
|
+
"字节码-文件头校验": {
|
|
1280
|
+
"task": "文件头校验",
|
|
1281
|
+
"pattern": (
|
|
1282
|
+
"def pbc_header_check(header, version):\n"
|
|
1283
|
+
" # 生效条件:参数 header/version 合法\n"
|
|
1284
|
+
" # 子功能:① 条件判定 ② 结果处理\n"
|
|
1285
|
+
" # 执行:顺序执行\n"
|
|
1286
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
1287
|
+
" # .pbc 文件头:魔数 + 版本兼容(C3 原生编译文件格式)\n"
|
|
1288
|
+
" if header.get('magic') != 'PBC1':\n"
|
|
1289
|
+
" return 'bad_magic'\n"
|
|
1290
|
+
" if header.get('version') != version:\n"
|
|
1291
|
+
" return 'version_mismatch'\n"
|
|
1292
|
+
" return 'ok'\n"),
|
|
1293
|
+
"cases": [(({'magic': 'PBC1', 'version': 1}, 1), 'ok'),
|
|
1294
|
+
(({'magic': 'X', 'version': 1}, 1), 'bad_magic'),
|
|
1295
|
+
(({'magic': 'PBC1', 'version': 2}, 1), 'version_mismatch')],
|
|
1296
|
+
"params": [],
|
|
1297
|
+
"calibration": "对照:C3 .pbc 文件头——魔数+版本兼容(原生编译格式校验)",
|
|
1298
|
+
},
|
|
1299
|
+
"字节码-完整性校验": {
|
|
1300
|
+
"task": "完整性校验",
|
|
1301
|
+
"pattern": (
|
|
1302
|
+
"def pbc_checksum(data, expected):\n"
|
|
1303
|
+
" # 生效条件:参数 data/expected 合法\n"
|
|
1304
|
+
" # 子功能:① 条件判定 ② 结果处理\n"
|
|
1305
|
+
" # 执行:循环迭代\n"
|
|
1306
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
1307
|
+
" # .pbc 完整性:异或校验和验证(检测字节损坏)\n"
|
|
1308
|
+
" calc = 0\n"
|
|
1309
|
+
" for b in data:\n"
|
|
1310
|
+
" calc ^= b\n"
|
|
1311
|
+
" return 'ok' if calc == expected else 'corrupted'\n"),
|
|
1312
|
+
"cases": [((b'\x01\x02\x03', 0), 'ok'),
|
|
1313
|
+
((b'\x01\x02\x04', 0), 'corrupted'),
|
|
1314
|
+
((b'', 0), 'ok')],
|
|
1315
|
+
"params": [],
|
|
1316
|
+
"calibration": "对照:C3 .pbc 完整性——异或校验和(损坏检测)",
|
|
1317
|
+
},
|
|
1318
|
+
"字节码-紧凑编码": {
|
|
1319
|
+
"task": "紧凑编码",
|
|
1320
|
+
"pattern": (
|
|
1321
|
+
"def varint_codec(n_or_bytes, mode):\n"
|
|
1322
|
+
" # 生效条件:mode ∈ {decode, encode}\n"
|
|
1323
|
+
" # 子功能:1 mode 分支处理\n"
|
|
1324
|
+
" # 执行:按 op 分派;循环迭代;顺序调用\n"
|
|
1325
|
+
" # 不适用条件:b 越界(Lt)时;mode 非 {decode, encode} 时\n"
|
|
1326
|
+
" # 紧凑编码:encode 变长整数 / decode 还原(7 位一组,小整数省字节)\n"
|
|
1327
|
+
" if mode == 'encode':\n"
|
|
1328
|
+
" out = []\n"
|
|
1329
|
+
" n = n_or_bytes\n"
|
|
1330
|
+
" while n >= 128:\n"
|
|
1331
|
+
" out.append((n & 127) | 128)\n"
|
|
1332
|
+
" n >>= 7\n"
|
|
1333
|
+
" out.append(n)\n"
|
|
1334
|
+
" return bytes(out)\n"
|
|
1335
|
+
" if mode == 'decode':\n"
|
|
1336
|
+
" n, shift = 0, 0\n"
|
|
1337
|
+
" for b in n_or_bytes:\n"
|
|
1338
|
+
" n |= (b & 127) << shift\n"
|
|
1339
|
+
" if b < 128:\n"
|
|
1340
|
+
" return n\n"
|
|
1341
|
+
" shift += 7\n"
|
|
1342
|
+
" return n\n"
|
|
1343
|
+
" return None\n"),
|
|
1344
|
+
"cases": [((5, 'encode'), b'\x05'),
|
|
1345
|
+
((300, 'encode'), b'\xac\x02'),
|
|
1346
|
+
((b'\xac\x02', 'decode'), 300),
|
|
1347
|
+
((b'\x05', 'decode'), 5)],
|
|
1348
|
+
"params": [],
|
|
1349
|
+
"calibration": "对照:C3 .pbc 体积优化——varint 变长整数(小整数 1 字节)",
|
|
1350
|
+
},
|
|
1351
|
+
"分析-圈复杂度": {
|
|
1352
|
+
"task": "圈复杂度",
|
|
1353
|
+
"pattern": (
|
|
1354
|
+
"def cyclomatic_complexity(code):\n"
|
|
1355
|
+
" # 生效条件:参数 code 合法\n"
|
|
1356
|
+
" # 子功能:① 条件判定 ② 结果处理\n"
|
|
1357
|
+
" # 执行:循环迭代\n"
|
|
1358
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
1359
|
+
" # 圈复杂度:判定节点数 + 1(if/while 分支——代码复杂度度量)\n"
|
|
1360
|
+
" decisions = 0\n"
|
|
1361
|
+
" for op, _ in code:\n"
|
|
1362
|
+
" if op in ('JUMP_IF_FALSE', 'JUMP_IF_TRUE', 'CMP_LT', 'CMP_GT'):\n"
|
|
1363
|
+
" decisions += 1\n"
|
|
1364
|
+
" return decisions + 1\n"),
|
|
1365
|
+
"cases": [(([("DE", 0.1)],), 1),
|
|
1366
|
+
(([("JUMP_IF_FALSE", 3), ("DE", 0.1)],), 2),
|
|
1367
|
+
(([],), 1),
|
|
1368
|
+
(([("JUMP_IF_FALSE", 1), ("JUMP_IF_FALSE", 2),
|
|
1369
|
+
("DE", 0.1)],), 3)],
|
|
1370
|
+
"params": [],
|
|
1371
|
+
"calibration": "对照:圈复杂度——判定节点+1(代码复杂度度量,McCabe)",
|
|
1372
|
+
},
|
|
1373
|
+
"分析-活跃变量": {
|
|
1374
|
+
"task": "活跃变量",
|
|
1375
|
+
"pattern": (
|
|
1376
|
+
"def dead_var_detect(defs, uses):\n"
|
|
1377
|
+
" # 生效条件:参数 defs/uses 合法\n"
|
|
1378
|
+
" # 子功能:① 调用 any\n"
|
|
1379
|
+
" # 执行:循环迭代;顺序调用\n"
|
|
1380
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
1381
|
+
" # 活跃变量:定义后未被使用 → 死变量(死代码消除依据)\n"
|
|
1382
|
+
" dead = []\n"
|
|
1383
|
+
" for var, def_line in defs:\n"
|
|
1384
|
+
" if not any(u == var and u_line > def_line for u, u_line in uses):\n"
|
|
1385
|
+
" dead.append(var)\n"
|
|
1386
|
+
" return dead\n"),
|
|
1387
|
+
"cases": [(([('a', 1), ('b', 2)], [('b', 5)]), ['a']),
|
|
1388
|
+
(([('a', 1)], [('a', 3)]), []),
|
|
1389
|
+
(([], []), [])],
|
|
1390
|
+
"params": [],
|
|
1391
|
+
"calibration": "对照:活跃变量分析——定义后无使用=死变量(liveness)",
|
|
1392
|
+
},
|
|
1393
|
+
"分析-调用图": {
|
|
1394
|
+
"task": "调用图",
|
|
1395
|
+
"pattern": (
|
|
1396
|
+
"def call_graph(funcs):\n"
|
|
1397
|
+
" # 生效条件:参数 funcs 合法\n"
|
|
1398
|
+
" # 子功能:① 调用 sorted;② 调用 set\n"
|
|
1399
|
+
" # 执行:循环迭代;顺序调用\n"
|
|
1400
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
1401
|
+
" # 调用图:函数 → 被调函数集合(调用关系图构建)\n"
|
|
1402
|
+
" graph = {}\n"
|
|
1403
|
+
" for fn, calls in funcs:\n"
|
|
1404
|
+
" graph[fn] = sorted(set(calls))\n"
|
|
1405
|
+
" return graph\n"),
|
|
1406
|
+
"cases": [(([('main', ['f1', 'f2']), ('f1', ['f2'])],),
|
|
1407
|
+
{'main': ['f1', 'f2'], 'f1': ['f2']}),
|
|
1408
|
+
(([],), {}),
|
|
1409
|
+
(([('a', ['b', 'b'])],), {'a': ['b']})],
|
|
1410
|
+
"params": [],
|
|
1411
|
+
"calibration": "对照:调用图——函数调用关系(节点=函数,边=调用)",
|
|
1412
|
+
},
|
|
1413
|
+
"词法-字符串字面量": {
|
|
1414
|
+
"task": "字符串字面量",
|
|
1415
|
+
"pattern": (
|
|
1416
|
+
"def lex_string(src, i):\n"
|
|
1417
|
+
" # 生效条件:参数 src/i 合法\n"
|
|
1418
|
+
" # 子功能:① 调用 len\n"
|
|
1419
|
+
" # 执行:循环迭代;顺序调用\n"
|
|
1420
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
1421
|
+
" # 字符串字面量:引号内解析(支持反斜杠转义)→ (token, 新位置)\n"
|
|
1422
|
+
" if src[i] != '\"':\n"
|
|
1423
|
+
" return None, i\n"
|
|
1424
|
+
" j = i + 1\n"
|
|
1425
|
+
" buf = []\n"
|
|
1426
|
+
" while j < len(src) and src[j] != '\"':\n"
|
|
1427
|
+
" if src[j] == '\\\\' and j + 1 < len(src):\n"
|
|
1428
|
+
" buf.append(src[j + 1])\n"
|
|
1429
|
+
" j += 2\n"
|
|
1430
|
+
" else:\n"
|
|
1431
|
+
" buf.append(src[j])\n"
|
|
1432
|
+
" j += 1\n"
|
|
1433
|
+
" if j >= len(src):\n"
|
|
1434
|
+
" return ('STRING', ''.join(buf), 'unterminated'), j\n"
|
|
1435
|
+
" return ('STRING', ''.join(buf)), j + 1\n"),
|
|
1436
|
+
"cases": [(('\"abc\"', 0), (('STRING', 'abc'), 5)),
|
|
1437
|
+
(('"a\\"b"', 0), (('STRING', 'a"b'), 6)),
|
|
1438
|
+
(('\"x', 0), (('STRING', 'x', 'unterminated'), 2))],
|
|
1439
|
+
"params": [],
|
|
1440
|
+
"calibration": "对照:词法——字符串字面量(引号+转义解析,未闭合标记)",
|
|
1441
|
+
},
|
|
1442
|
+
"词法-数字字面量": {
|
|
1443
|
+
"task": "数字字面量",
|
|
1444
|
+
"pattern": (
|
|
1445
|
+
"def lex_number(src, i):\n"
|
|
1446
|
+
" # 生效条件:参数 src/i 合法\n"
|
|
1447
|
+
" # 子功能:① 调用 len;② 调用 int;③ 调用 float\n"
|
|
1448
|
+
" # 执行:循环迭代;顺序调用\n"
|
|
1449
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
1450
|
+
" # 数字字面量:整数/浮点/十六进制解析 → (token, 新位置)\n"
|
|
1451
|
+
" if src[i] == '0' and i + 1 < len(src) and src[i + 1] in 'xX':\n"
|
|
1452
|
+
" j = i + 2\n"
|
|
1453
|
+
" while j < len(src) and (src[j].isdigit() or src[j] in 'abcdefABCDEF'):\n"
|
|
1454
|
+
" j += 1\n"
|
|
1455
|
+
" return ('NUMBER', int(src[i + 2:j], 16)), j\n"
|
|
1456
|
+
" if src[i].isdigit():\n"
|
|
1457
|
+
" j = i\n"
|
|
1458
|
+
" while j < len(src) and (src[j].isdigit() or src[j] == '.'):\n"
|
|
1459
|
+
" j += 1\n"
|
|
1460
|
+
" text = src[i:j]\n"
|
|
1461
|
+
" return ('NUMBER', float(text) if '.' in text else int(text)), j\n"
|
|
1462
|
+
" return None, i\n"),
|
|
1463
|
+
"cases": [(('42', 0), (('NUMBER', 42), 2)),
|
|
1464
|
+
(('3.5', 0), (('NUMBER', 3.5), 3)),
|
|
1465
|
+
(('0xFF', 0), (('NUMBER', 255), 4))],
|
|
1466
|
+
"params": [],
|
|
1467
|
+
"calibration": "对照:词法——数字字面量(整数/浮点/十六进制)",
|
|
1468
|
+
},
|
|
1469
|
+
"语法-数组字面量": {
|
|
1470
|
+
"task": "数组字面量",
|
|
1471
|
+
"pattern": (
|
|
1472
|
+
"def parse_array(tokens, i):\n"
|
|
1473
|
+
" # 生效条件:参数 tokens/i 合法\n"
|
|
1474
|
+
" # 子功能:① 调用 len\n"
|
|
1475
|
+
" # 执行:循环迭代;顺序调用\n"
|
|
1476
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
1477
|
+
" # 数组字面量:'[' 元素列表 ']' 解析(逗号分隔)→ (list, 新位置)\n"
|
|
1478
|
+
" if tokens[i] != '[':\n"
|
|
1479
|
+
" return None, i\n"
|
|
1480
|
+
" items = []\n"
|
|
1481
|
+
" i += 1\n"
|
|
1482
|
+
" while i < len(tokens) and tokens[i] != ']':\n"
|
|
1483
|
+
" if tokens[i] != ',':\n"
|
|
1484
|
+
" items.append(tokens[i])\n"
|
|
1485
|
+
" i += 1\n"
|
|
1486
|
+
" return items, i + 1\n"),
|
|
1487
|
+
"cases": [((['[', 1, ',', 2, ']'], 0), ([1, 2], 5)),
|
|
1488
|
+
((['[', ']'], 0), ([], 2)),
|
|
1489
|
+
((['x'], 0), (None, 0))],
|
|
1490
|
+
"params": [],
|
|
1491
|
+
"calibration": "对照:语法——数组字面量(中括号元素列表,逗号分隔)",
|
|
1492
|
+
},
|
|
1493
|
+
"编译-作用域分析": {
|
|
1494
|
+
"task": "作用域分析",
|
|
1495
|
+
"pattern": (
|
|
1496
|
+
"def scope_lookup(scopes, name):\n"
|
|
1497
|
+
" # 生效条件:参数 scopes/name 合法\n"
|
|
1498
|
+
" # 子功能:① 调用 reversed\n"
|
|
1499
|
+
" # 执行:循环迭代;顺序调用\n"
|
|
1500
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
1501
|
+
" # 作用域分析:嵌套作用域由内向外查找(变量遮蔽语义)\n"
|
|
1502
|
+
" for scope in reversed(scopes):\n"
|
|
1503
|
+
" if name in scope:\n"
|
|
1504
|
+
" return scope[name]\n"
|
|
1505
|
+
" return None\n"),
|
|
1506
|
+
"cases": [(([{'甲': 1}, {'乙': 2}], '甲'), 1),
|
|
1507
|
+
(([{'甲': 1}, {'甲': 2}], '甲'), 2),
|
|
1508
|
+
(([{'甲': 1}], '乙'), None),
|
|
1509
|
+
(([], '甲'), None)],
|
|
1510
|
+
"params": [],
|
|
1511
|
+
"calibration": "对照:编译作用域——嵌套由内向外查找(内层遮蔽外层)",
|
|
1512
|
+
},
|
|
1513
|
+
"编译-常量传播": {
|
|
1514
|
+
"task": "常量传播",
|
|
1515
|
+
"pattern": (
|
|
1516
|
+
"def const_propagate(instrs, consts):\n"
|
|
1517
|
+
" # 生效条件:参数 instrs/consts 合法\n"
|
|
1518
|
+
" # 子功能:① 条件判定 ② 结果处理\n"
|
|
1519
|
+
" # 执行:循环迭代\n"
|
|
1520
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
1521
|
+
" # 常量传播:常量变量替换为字面量(编译期代入)\n"
|
|
1522
|
+
" out = []\n"
|
|
1523
|
+
" for op, arg in instrs:\n"
|
|
1524
|
+
" if op == 'LOAD' and arg in consts:\n"
|
|
1525
|
+
" out.append(('PUSH', consts[arg]))\n"
|
|
1526
|
+
" else:\n"
|
|
1527
|
+
" out.append((op, arg))\n"
|
|
1528
|
+
" return out\n"),
|
|
1529
|
+
"cases": [(([("LOAD", "甲"), ("DE", None)], {'甲': 3}),
|
|
1530
|
+
[("PUSH", 3), ("DE", None)]),
|
|
1531
|
+
(([("LOAD", "乙")], {'甲': 3}), [("LOAD", "乙")]),
|
|
1532
|
+
(([], {'甲': 3}), [])],
|
|
1533
|
+
"params": [],
|
|
1534
|
+
"calibration": "对照:编译优化——常量传播(常量变量→字面量代入)",
|
|
1535
|
+
},
|
|
1536
|
+
"编译-指令重排": {
|
|
1537
|
+
"task": "指令重排",
|
|
1538
|
+
"pattern": (
|
|
1539
|
+
"def reorder_instrs(instrs):\n"
|
|
1540
|
+
" # 生效条件:参数 instrs 合法\n"
|
|
1541
|
+
" # 子功能:① 主体逻辑执行\n"
|
|
1542
|
+
" # 执行:顺序执行\n"
|
|
1543
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
1544
|
+
" # 指令重排:PUSH 常量提前(无关指令乱序——减少停顿)\n"
|
|
1545
|
+
" pushes = [i for i in instrs if i[0] == 'PUSH']\n"
|
|
1546
|
+
" rest = [i for i in instrs if i[0] != 'PUSH']\n"
|
|
1547
|
+
" return pushes + rest\n"),
|
|
1548
|
+
"cases": [(([("DE", 0.1), ("PUSH", 3)],),
|
|
1549
|
+
[("PUSH", 3), ("DE", 0.1)]),
|
|
1550
|
+
(([("DE", 0.1)],), [("DE", 0.1)]),
|
|
1551
|
+
(([],), [])],
|
|
1552
|
+
"params": [],
|
|
1553
|
+
"calibration": "对照:编译优化——指令重排(无关指令乱序减少停顿)",
|
|
1554
|
+
},
|
|
1555
|
+
"VM-引用计数": {
|
|
1556
|
+
"task": "引用计数",
|
|
1557
|
+
"pattern": (
|
|
1558
|
+
"def refcount_ops(refs, op, obj=None):\n"
|
|
1559
|
+
" # 生效条件:op ∈ {dec, inc}\n"
|
|
1560
|
+
" # 子功能:① op 分支处理\n"
|
|
1561
|
+
" # 执行:按 op 分派\n"
|
|
1562
|
+
" # 不适用条件:op 非 {dec, inc} 时\n"
|
|
1563
|
+
" # 引用计数:inc/dec 增减引用,归零回收(GC 语义)\n"
|
|
1564
|
+
" if op == 'inc':\n"
|
|
1565
|
+
" refs[obj] = refs.get(obj, 0) + 1\n"
|
|
1566
|
+
" return refs[obj]\n"
|
|
1567
|
+
" if op == 'dec':\n"
|
|
1568
|
+
" refs[obj] = refs.get(obj, 0) - 1\n"
|
|
1569
|
+
" if refs[obj] <= 0:\n"
|
|
1570
|
+
" del refs[obj]\n"
|
|
1571
|
+
" return 'collected'\n"
|
|
1572
|
+
" return refs[obj]\n"
|
|
1573
|
+
" return None\n"),
|
|
1574
|
+
"cases": [(({}, 'inc', 'a'), 1),
|
|
1575
|
+
(({'a': 1}, 'inc', 'a'), 2),
|
|
1576
|
+
(({'a': 1}, 'dec', 'a'), 'collected'),
|
|
1577
|
+
(({'a': 2}, 'dec', 'a'), 1)],
|
|
1578
|
+
"params": [],
|
|
1579
|
+
"calibration": "对照:VM 垃圾回收——引用计数(归零回收)",
|
|
1580
|
+
},
|
|
1581
|
+
"VM-指令剖析": {
|
|
1582
|
+
"task": "指令剖析",
|
|
1583
|
+
"pattern": (
|
|
1584
|
+
"def instr_profile(code):\n"
|
|
1585
|
+
" # 生效条件:参数 code 合法\n"
|
|
1586
|
+
" # 子功能:① 主体逻辑执行\n"
|
|
1587
|
+
" # 执行:循环迭代\n"
|
|
1588
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
1589
|
+
" # 指令剖析:指令类型频次统计(profiling——热点定位)\n"
|
|
1590
|
+
" freq = {}\n"
|
|
1591
|
+
" for op, _ in code:\n"
|
|
1592
|
+
" freq[op] = freq.get(op, 0) + 1\n"
|
|
1593
|
+
" return freq\n"),
|
|
1594
|
+
"cases": [(([("DE", 0.1), ("DE", 0.2), ("LOAD", "甲")],),
|
|
1595
|
+
{'DE': 2, 'LOAD': 1}),
|
|
1596
|
+
(([],), {}),
|
|
1597
|
+
(([("PUSH", 1), ("PUSH", 2)],), {'PUSH': 2})],
|
|
1598
|
+
"params": [],
|
|
1599
|
+
"calibration": "对照:VM profiling——指令类型频次(热点定位)",
|
|
1600
|
+
},
|
|
1601
|
+
"VM-栈保护": {
|
|
1602
|
+
"task": "栈保护",
|
|
1603
|
+
"pattern": (
|
|
1604
|
+
"def stack_push_guard(stack, limit, value):\n"
|
|
1605
|
+
" # 生效条件:参数 stack/limit/value 合法\n"
|
|
1606
|
+
" # 子功能:① 调用 len\n"
|
|
1607
|
+
" # 执行:顺序调用\n"
|
|
1608
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
1609
|
+
" # 栈保护:压栈前检查深度(防栈溢出——递归深度控制)\n"
|
|
1610
|
+
" if len(stack) >= limit:\n"
|
|
1611
|
+
" return 'overflow'\n"
|
|
1612
|
+
" stack.append(value)\n"
|
|
1613
|
+
" return 'pushed'\n"),
|
|
1614
|
+
"cases": [(([], 2, 1), 'pushed'),
|
|
1615
|
+
(([1], 2, 2), 'pushed'),
|
|
1616
|
+
(([1, 2], 2, 3), 'overflow'),
|
|
1617
|
+
(([1, 2, 3], 2, 4), 'overflow')],
|
|
1618
|
+
"params": [],
|
|
1619
|
+
"calibration": "对照:VM 运行时——栈深度限制(防递归栈溢出)",
|
|
1620
|
+
},
|
|
1621
|
+
"校验-名实一致": {
|
|
1622
|
+
"task": "名实一致",
|
|
1623
|
+
"pattern": (
|
|
1624
|
+
"def ming_shi_check(refs, bindings):\n"
|
|
1625
|
+
" # 生效条件:参数 refs/bindings 合法\n"
|
|
1626
|
+
" # 子功能:① 主体逻辑执行\n"
|
|
1627
|
+
" # 执行:顺序执行\n"
|
|
1628
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
1629
|
+
" # 名实校验:名称引用须有绑定实体(以名举实——墨辩语义)\n"
|
|
1630
|
+
" return [r for r in refs if r not in bindings]\n"),
|
|
1631
|
+
"cases": [((['甲', '乙'], {'甲': 1, '乙': 2}), []),
|
|
1632
|
+
((['甲', '丙'], {'甲': 1}), ['丙']),
|
|
1633
|
+
((['甲'], {}), ['甲'])],
|
|
1634
|
+
"params": [],
|
|
1635
|
+
"calibration": "对照:名实校验——引用须绑定实体(以名举实,未绑定拦截)",
|
|
1636
|
+
},
|
|
1637
|
+
"编译-类型转换": {
|
|
1638
|
+
"task": "类型转换",
|
|
1639
|
+
"pattern": (
|
|
1640
|
+
"def type_convert(value, from_type, to_type, rules):\n"
|
|
1641
|
+
" # 生效条件:参数 value/from_type/to_type/rules 合法\n"
|
|
1642
|
+
" # 子功能:① 条件判定 ② 结果处理\n"
|
|
1643
|
+
" # 执行:顺序执行\n"
|
|
1644
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
1645
|
+
" # 类型转换:按规则隐式/显式转换(数值↔文本——转换规则表)\n"
|
|
1646
|
+
" if (from_type, to_type) in rules:\n"
|
|
1647
|
+
" return rules[(from_type, to_type)](value)\n"
|
|
1648
|
+
" return 'unsupported'\n"),
|
|
1649
|
+
"cases": [((5, '数值', '文本', {('数值', '文本'): str}), '5'),
|
|
1650
|
+
(('3', '文本', '数值', {('文本', '数值'): int}), 3),
|
|
1651
|
+
((5, '数值', '布尔', {}), 'unsupported')],
|
|
1652
|
+
"params": [],
|
|
1653
|
+
"calibration": "对照:类型系统——转换规则表(隐式/显式,无规则拒绝)",
|
|
1654
|
+
},
|
|
1655
|
+
"分析-数据流分析": {
|
|
1656
|
+
"task": "数据流分析",
|
|
1657
|
+
"pattern": (
|
|
1658
|
+
"def def_use_chain(defs, uses):\n"
|
|
1659
|
+
" # 生效条件:参数 defs/uses 合法\n"
|
|
1660
|
+
" # 子功能:① 条件判定 ② 结果处理\n"
|
|
1661
|
+
" # 执行:循环迭代\n"
|
|
1662
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
1663
|
+
" # 数据流分析:def-use 链(定义→使用点连接——数据流路径)\n"
|
|
1664
|
+
" chain = []\n"
|
|
1665
|
+
" for var, def_line in defs:\n"
|
|
1666
|
+
" for u, u_line in uses:\n"
|
|
1667
|
+
" if u == var and u_line > def_line:\n"
|
|
1668
|
+
" chain.append((var, def_line, u_line))\n"
|
|
1669
|
+
" return chain\n"),
|
|
1670
|
+
"cases": [(([('a', 1), ('b', 2)], [('a', 3), ('b', 4), ('a', 5)]),
|
|
1671
|
+
[('a', 1, 3), ('a', 1, 5), ('b', 2, 4)]),
|
|
1672
|
+
(([('a', 1)], []), []),
|
|
1673
|
+
(([], [('a', 3)]), [])],
|
|
1674
|
+
"params": [],
|
|
1675
|
+
"calibration": "对照:数据流分析——def-use 链(定义到使用的数据流)",
|
|
1676
|
+
},
|
|
1677
|
+
"语法-三元表达式": {
|
|
1678
|
+
"task": "三元表达式",
|
|
1679
|
+
"pattern": (
|
|
1680
|
+
"def ternary_compile(cond, then_expr, else_expr):\n"
|
|
1681
|
+
" # 生效条件:参数 cond/then_expr/else_expr 合法\n"
|
|
1682
|
+
" # 子功能:① 调用 list;② 调用 len\n"
|
|
1683
|
+
" # 执行:顺序调用\n"
|
|
1684
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
1685
|
+
" # 三元表达式:条件 ? 真值 : 假值 → 条件跳转字节码\n"
|
|
1686
|
+
" code = list(cond)\n"
|
|
1687
|
+
" else_lbl = len(code) + 1 + len(then_expr) + 1\n"
|
|
1688
|
+
" code.append(('JUMP_IF_FALSE', else_lbl))\n"
|
|
1689
|
+
" code.extend(then_expr)\n"
|
|
1690
|
+
" end_lbl = len(code) + 1 + len(else_expr)\n"
|
|
1691
|
+
" code.append(('JUMP', end_lbl))\n"
|
|
1692
|
+
" code.extend(else_expr)\n"
|
|
1693
|
+
" return code\n"),
|
|
1694
|
+
"cases": [(([("LOAD", "x")], [("PUSH", 1)], [("PUSH", 0)]),
|
|
1695
|
+
[("LOAD", "x"), ("JUMP_IF_FALSE", 4), ("PUSH", 1),
|
|
1696
|
+
("JUMP", 5), ("PUSH", 0)])],
|
|
1697
|
+
"params": [],
|
|
1698
|
+
"calibration": "对照:三元条件表达式——条件跳转选真/假分支",
|
|
1699
|
+
},
|
|
1700
|
+
"语法-复合赋值": {
|
|
1701
|
+
"task": "复合赋值",
|
|
1702
|
+
"pattern": (
|
|
1703
|
+
"def compound_assign(op, name, expr):\n"
|
|
1704
|
+
" # 生效条件:参数 op/name/expr 合法\n"
|
|
1705
|
+
" # 子功能:① 调用 list\n"
|
|
1706
|
+
" # 执行:顺序调用\n"
|
|
1707
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
1708
|
+
" # 复合赋值:甲 += 表达式 → LOAD 甲 + 表达式 + 运算 + STORE 甲\n"
|
|
1709
|
+
" ops = {'+=': 'ADD', '-=': 'SUB', '*=': 'MUL'}\n"
|
|
1710
|
+
" return [('LOAD', name)] + list(expr) + \\\n"
|
|
1711
|
+
" [(ops[op], None), ('STORE', name)]\n"),
|
|
1712
|
+
"cases": [(('+=', '甲', [("PUSH", 2)]),
|
|
1713
|
+
[("LOAD", "甲"), ("PUSH", 2), ("ADD", None),
|
|
1714
|
+
("STORE", "甲")]),
|
|
1715
|
+
(('*=', '乙', [("PUSH", 3)]),
|
|
1716
|
+
[("LOAD", "乙"), ("PUSH", 3), ("MUL", None),
|
|
1717
|
+
("STORE", "乙")])],
|
|
1718
|
+
"params": [],
|
|
1719
|
+
"calibration": "对照:复合赋值——+= 展开为 LOAD+运算+STORE",
|
|
1720
|
+
},
|
|
1721
|
+
"语法-位运算": {
|
|
1722
|
+
"task": "位运算",
|
|
1723
|
+
"pattern": (
|
|
1724
|
+
"def bitwise_op(a, b, op):\n"
|
|
1725
|
+
" # 生效条件:op ∈ {and, not, or, xor}\n"
|
|
1726
|
+
" # 子功能:① op 分支处理\n"
|
|
1727
|
+
" # 执行:按 op 分派\n"
|
|
1728
|
+
" # 不适用条件:op 非 {and, not, or, xor} 时\n"
|
|
1729
|
+
" # 位运算:按位与/或/异或/取反(bitwise 操作符)\n"
|
|
1730
|
+
" if op == 'and':\n"
|
|
1731
|
+
" return a & b\n"
|
|
1732
|
+
" if op == 'or':\n"
|
|
1733
|
+
" return a | b\n"
|
|
1734
|
+
" if op == 'xor':\n"
|
|
1735
|
+
" return a ^ b\n"
|
|
1736
|
+
" if op == 'not':\n"
|
|
1737
|
+
" return ~a\n"
|
|
1738
|
+
" return None\n"),
|
|
1739
|
+
"cases": [((5, 3, 'and'), 1),
|
|
1740
|
+
((5, 3, 'or'), 7),
|
|
1741
|
+
((5, 3, 'xor'), 6),
|
|
1742
|
+
((5, 0, 'not'), -6)],
|
|
1743
|
+
"params": [],
|
|
1744
|
+
"calibration": "对照:位运算——与/或/异或/取反(bitwise 语义)",
|
|
1745
|
+
},
|
|
1746
|
+
"词法-标识符解析": {
|
|
1747
|
+
"task": "标识符解析",
|
|
1748
|
+
"pattern": (
|
|
1749
|
+
"def lex_ident(src, i):\n"
|
|
1750
|
+
" # 生效条件:参数 src/i 合法\n"
|
|
1751
|
+
" # 子功能:① 调用 len\n"
|
|
1752
|
+
" # 执行:循环迭代;顺序调用\n"
|
|
1753
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
1754
|
+
" # 标识符解析:CJK/字母/下划线开头,后接字母数字下划线\n"
|
|
1755
|
+
" if not (src[i].isalpha() or src[i] == '_'):\n"
|
|
1756
|
+
" return None, i\n"
|
|
1757
|
+
" j = i\n"
|
|
1758
|
+
" while j < len(src) and (src[j].isalpha() or src[j].isdigit()\n"
|
|
1759
|
+
" or src[j] == '_'):\n"
|
|
1760
|
+
" j += 1\n"
|
|
1761
|
+
" return ('IDENT', src[i:j]), j\n"),
|
|
1762
|
+
"cases": [(('甲变量', 0), (('IDENT', '甲变量'), 3)),
|
|
1763
|
+
(('abc_1', 0), (('IDENT', 'abc_1'), 5)),
|
|
1764
|
+
(('1x', 0), (None, 0))],
|
|
1765
|
+
"params": [],
|
|
1766
|
+
"calibration": "对照:词法——标识符(CJK/字母数字下划线连续串)",
|
|
1767
|
+
},
|
|
1768
|
+
"词法-操作符解析": {
|
|
1769
|
+
"task": "操作符解析",
|
|
1770
|
+
"pattern": (
|
|
1771
|
+
"def lex_op(src, i):\n"
|
|
1772
|
+
" # 生效条件:参数 src/i 合法\n"
|
|
1773
|
+
" # 子功能:① 条件判定 ② 结果处理\n"
|
|
1774
|
+
" # 执行:顺序执行\n"
|
|
1775
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
1776
|
+
" # 操作符解析:多字符操作符优先(>= <= == != 先匹配双字符)\n"
|
|
1777
|
+
" two = src[i:i + 2]\n"
|
|
1778
|
+
" if two in ('>=', '<=', '==', '!='):\n"
|
|
1779
|
+
" return ('OP', two), i + 2\n"
|
|
1780
|
+
" if src[i] in '+-*/<>=':\n"
|
|
1781
|
+
" return ('OP', src[i]), i + 1\n"
|
|
1782
|
+
" return None, i\n"),
|
|
1783
|
+
"cases": [(('>=', 0), (('OP', '>='), 2)),
|
|
1784
|
+
(('!=', 0), (('OP', '!='), 2)),
|
|
1785
|
+
(('+', 0), (('OP', '+'), 1)),
|
|
1786
|
+
(('ab', 0), (None, 0))],
|
|
1787
|
+
"params": [],
|
|
1788
|
+
"calibration": "对照:词法——操作符(最长匹配:双字符优先)",
|
|
1789
|
+
},
|
|
1790
|
+
"语法-函数签名": {
|
|
1791
|
+
"task": "函数签名",
|
|
1792
|
+
"pattern": (
|
|
1793
|
+
"def parse_signature(params_str):\n"
|
|
1794
|
+
" # 生效条件:params_str.strip 可用\n"
|
|
1795
|
+
" # 子功能:① 条件判定 ② 结果处理\n"
|
|
1796
|
+
" # 执行:顺序执行\n"
|
|
1797
|
+
" # 不适用条件:params_str 为空/非法时\n"
|
|
1798
|
+
" # 函数签名解析:参数列表(逗号分隔,默认值剥离)→ 参数名列表\n"
|
|
1799
|
+
" params_str = params_str.strip()\n"
|
|
1800
|
+
" if not params_str:\n"
|
|
1801
|
+
" return []\n"
|
|
1802
|
+
" return [p.split('=')[0].strip() for p in params_str.split(',')]\n"),
|
|
1803
|
+
"cases": [(('甲, 乙',), ['甲', '乙']),
|
|
1804
|
+
(('甲=1, 乙',), ['甲', '乙']),
|
|
1805
|
+
(('',), [])],
|
|
1806
|
+
"params": [],
|
|
1807
|
+
"calibration": "对照:语法——函数签名参数列表(默认值剥离)",
|
|
1808
|
+
},
|
|
1809
|
+
"VM-栈操作": {
|
|
1810
|
+
"task": "栈操作",
|
|
1811
|
+
"pattern": (
|
|
1812
|
+
"def stack_ops(stack, op):\n"
|
|
1813
|
+
" # 生效条件:op ∈ {DUP, SWAP}\n"
|
|
1814
|
+
" # 子功能:① op 分支处理\n"
|
|
1815
|
+
" # 执行:按 op 分派;顺序调用\n"
|
|
1816
|
+
" # 不适用条件:stack 为空/非法时;op 非 {DUP, SWAP} 时\n"
|
|
1817
|
+
" # 栈操作:DUP 复制栈顶 / SWAP 交换栈顶两元素(栈指令)\n"
|
|
1818
|
+
" if op == 'DUP':\n"
|
|
1819
|
+
" if not stack:\n"
|
|
1820
|
+
" return None\n"
|
|
1821
|
+
" stack.append(stack[-1])\n"
|
|
1822
|
+
" return stack[-1]\n"
|
|
1823
|
+
" if op == 'SWAP':\n"
|
|
1824
|
+
" if len(stack) < 2:\n"
|
|
1825
|
+
" return None\n"
|
|
1826
|
+
" stack[-1], stack[-2] = stack[-2], stack[-1]\n"
|
|
1827
|
+
" return stack[-2]\n"
|
|
1828
|
+
" return None\n"),
|
|
1829
|
+
"cases": [(([1, 2], 'DUP'), 2),
|
|
1830
|
+
(([1], 'DUP'), 1),
|
|
1831
|
+
(([1, 2], 'SWAP'), 2),
|
|
1832
|
+
(([], 'DUP'), None)],
|
|
1833
|
+
"params": [],
|
|
1834
|
+
"calibration": "对照:VM 栈指令——DUP 复制/SWAP 交换(栈机操作)",
|
|
1835
|
+
},
|
|
1836
|
+
"VM-算术执行": {
|
|
1837
|
+
"task": "算术执行",
|
|
1838
|
+
"pattern": (
|
|
1839
|
+
"def arith_exec(stack, op):\n"
|
|
1840
|
+
" # 生效条件:op ∈ {ADD, DIV, MUL, SUB}\n"
|
|
1841
|
+
" # 子功能:① op 分支处理\n"
|
|
1842
|
+
" # 执行:按 op 分派;顺序调用\n"
|
|
1843
|
+
" # 不适用条件:op 非 {ADD, DIV, MUL, SUB} 时\n"
|
|
1844
|
+
" # 算术执行:弹出两操作数执行 ADD/SUB/MUL/DIV(栈机算术指令)\n"
|
|
1845
|
+
" if len(stack) < 2:\n"
|
|
1846
|
+
" return None\n"
|
|
1847
|
+
" b = stack.pop()\n"
|
|
1848
|
+
" a = stack.pop()\n"
|
|
1849
|
+
" if op == 'ADD':\n"
|
|
1850
|
+
" r = a + b\n"
|
|
1851
|
+
" elif op == 'SUB':\n"
|
|
1852
|
+
" r = a - b\n"
|
|
1853
|
+
" elif op == 'MUL':\n"
|
|
1854
|
+
" r = a * b\n"
|
|
1855
|
+
" elif op == 'DIV':\n"
|
|
1856
|
+
" r = a / b\n"
|
|
1857
|
+
" else:\n"
|
|
1858
|
+
" return None\n"
|
|
1859
|
+
" stack.append(r)\n"
|
|
1860
|
+
" return r\n"),
|
|
1861
|
+
"cases": [(([1, 2], 'ADD'), 3),
|
|
1862
|
+
(([5, 2], 'SUB'), 3),
|
|
1863
|
+
(([3, 4], 'MUL'), 12),
|
|
1864
|
+
(([8, 2], 'DIV'), 4.0)],
|
|
1865
|
+
"params": [],
|
|
1866
|
+
"calibration": "对照:VM 算术指令——ADD/SUB/MUL/DIV(栈机执行)",
|
|
1867
|
+
},
|
|
1868
|
+
"VM-比较执行": {
|
|
1869
|
+
"task": "比较执行",
|
|
1870
|
+
"pattern": (
|
|
1871
|
+
"def cmp_exec(stack, op):\n"
|
|
1872
|
+
" # 生效条件:op ∈ {EQ, GT, LT}\n"
|
|
1873
|
+
" # 子功能:① op 分支处理\n"
|
|
1874
|
+
" # 执行:按 op 分派;顺序调用\n"
|
|
1875
|
+
" # 不适用条件:op 非 {EQ, GT, LT} 时\n"
|
|
1876
|
+
" # 比较执行:弹出两操作数比较 LT/GT/EQ(栈机比较指令→布尔)\n"
|
|
1877
|
+
" if len(stack) < 2:\n"
|
|
1878
|
+
" return None\n"
|
|
1879
|
+
" b = stack.pop()\n"
|
|
1880
|
+
" a = stack.pop()\n"
|
|
1881
|
+
" if op == 'LT':\n"
|
|
1882
|
+
" r = a < b\n"
|
|
1883
|
+
" elif op == 'GT':\n"
|
|
1884
|
+
" r = a > b\n"
|
|
1885
|
+
" elif op == 'EQ':\n"
|
|
1886
|
+
" r = a == b\n"
|
|
1887
|
+
" else:\n"
|
|
1888
|
+
" return None\n"
|
|
1889
|
+
" stack.append(r)\n"
|
|
1890
|
+
" return r\n"),
|
|
1891
|
+
"cases": [(([1, 2], 'LT'), True),
|
|
1892
|
+
(([3, 2], 'GT'), True),
|
|
1893
|
+
(([2, 2], 'EQ'), True),
|
|
1894
|
+
(([3, 2], 'LT'), False)],
|
|
1895
|
+
"params": [],
|
|
1896
|
+
"calibration": "对照:VM 比较指令——LT/GT/EQ(栈机比较→布尔)",
|
|
1897
|
+
},
|
|
1898
|
+
"校验-信任检查": {
|
|
1899
|
+
"task": "信任检查",
|
|
1900
|
+
"pattern": (
|
|
1901
|
+
"def trust_check(trust, threshold):\n"
|
|
1902
|
+
" # 生效条件:参数 trust/threshold 合法\n"
|
|
1903
|
+
" # 子功能:① 条件判定 ② 结果处理\n"
|
|
1904
|
+
" # 执行:顺序执行\n"
|
|
1905
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
1906
|
+
" # 信任检查:信任值 ≥ 门槛 放行(智能论信任作为运行时语义)\n"
|
|
1907
|
+
" return 'pass' if trust >= threshold else 'fail'\n"),
|
|
1908
|
+
"cases": [((0.8, 0.7), 'pass'),
|
|
1909
|
+
((0.6, 0.7), 'fail'),
|
|
1910
|
+
((0.7, 0.7), 'pass')],
|
|
1911
|
+
"params": [],
|
|
1912
|
+
"calibration": "对照:智能论——信任门槛(运行时信任检查放行/拒绝)",
|
|
1913
|
+
},
|
|
1914
|
+
"分析-信息差追踪": {
|
|
1915
|
+
"task": "信息差追踪",
|
|
1916
|
+
"pattern": (
|
|
1917
|
+
"def info_gap_track(events, op, gap=None, node=None):\n"
|
|
1918
|
+
" # 生效条件:op ∈ {latest, max, record}\n"
|
|
1919
|
+
" # 子功能:① op 分支处理\n"
|
|
1920
|
+
" # 执行:按 op 分派;顺序调用\n"
|
|
1921
|
+
" # 不适用条件:events 为空/非法时;op 非 {latest, max, record} 时\n"
|
|
1922
|
+
" # 信息差追踪:record 记录节点信息差 / max 最大 / latest 最新\n"
|
|
1923
|
+
" if op == 'record':\n"
|
|
1924
|
+
" events.append({'node': node, 'gap': gap})\n"
|
|
1925
|
+
" return len(events)\n"
|
|
1926
|
+
" if op == 'max':\n"
|
|
1927
|
+
" if not events:\n"
|
|
1928
|
+
" return None\n"
|
|
1929
|
+
" return max(e['gap'] for e in events)\n"
|
|
1930
|
+
" if op == 'latest':\n"
|
|
1931
|
+
" return events[-1]['gap'] if events else None\n"
|
|
1932
|
+
" return None\n"),
|
|
1933
|
+
"cases": [(([], 'record', 0.8, 'a'), 1),
|
|
1934
|
+
(([{'node': 'a', 'gap': 0.8},
|
|
1935
|
+
{'node': 'b', 'gap': 0.3}], 'max'), 0.8),
|
|
1936
|
+
(([], 'max'), None),
|
|
1937
|
+
(([{'node': 'a', 'gap': 0.8}], 'latest'), 0.8)],
|
|
1938
|
+
"params": [],
|
|
1939
|
+
"calibration": "对照:智能论——信息差追踪(编译期信息差分析记录)",
|
|
1940
|
+
},
|
|
1941
|
+
"校验-条件空间类型": {
|
|
1942
|
+
"task": "条件空间类型",
|
|
1943
|
+
"pattern": (
|
|
1944
|
+
"def space_type_check(declared, used):\n"
|
|
1945
|
+
" # 生效条件:参数 declared/used 合法\n"
|
|
1946
|
+
" # 子功能:① 调用 sorted;② 调用 set\n"
|
|
1947
|
+
" # 执行:顺序调用\n"
|
|
1948
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
1949
|
+
" # 条件空间类型:使用须在已声明空间内(条件空间=类型系统语义)\n"
|
|
1950
|
+
" return ([] if set(used) <= set(declared)\n"
|
|
1951
|
+
" else sorted(set(used) - set(declared)))\n"),
|
|
1952
|
+
"cases": [((['伴侣', '工作'], ['伴侣']), []),
|
|
1953
|
+
((['伴侣'], ['伴侣', '未知']), ['未知']),
|
|
1954
|
+
((['伴侣'], ['未知']), ['未知'])],
|
|
1955
|
+
"params": [],
|
|
1956
|
+
"calibration": "对照:智能论——条件空间=类型系统(未声明空间拦截)",
|
|
1957
|
+
},
|
|
1958
|
+
"调试-条件断点": {
|
|
1959
|
+
"task": "条件断点",
|
|
1960
|
+
"pattern": (
|
|
1961
|
+
"def cond_breakpoint(breaks, op, addr=None, cond=None, env=None):\n"
|
|
1962
|
+
" # 生效条件:op ∈ {hit, set}\n"
|
|
1963
|
+
" # 子功能:① op 分支处理\n"
|
|
1964
|
+
" # 执行:按 op 分派;顺序调用\n"
|
|
1965
|
+
" # 不适用条件:op 非 {hit, set} 时\n"
|
|
1966
|
+
" # 条件断点:set 设置条件 / hit 命中(条件满足才停)\n"
|
|
1967
|
+
" if op == 'set':\n"
|
|
1968
|
+
" breaks[addr] = cond\n"
|
|
1969
|
+
" return addr\n"
|
|
1970
|
+
" if op == 'hit':\n"
|
|
1971
|
+
" if addr in breaks:\n"
|
|
1972
|
+
" c = breaks[addr]\n"
|
|
1973
|
+
" return c(env) if c else True\n"
|
|
1974
|
+
" return False\n"
|
|
1975
|
+
" return None\n"),
|
|
1976
|
+
"cases": [(({}, 'set', 5, lambda e: e.get('x') > 3), 5),
|
|
1977
|
+
(({5: lambda e: e.get('x') > 3}, 'hit', 5, None, {'x': 5}),
|
|
1978
|
+
True),
|
|
1979
|
+
(({5: lambda e: e.get('x') > 3}, 'hit', 5, None, {'x': 1}),
|
|
1980
|
+
False),
|
|
1981
|
+
(({}, 'hit', 5, None, {'x': 5}), False)],
|
|
1982
|
+
"params": [],
|
|
1983
|
+
"calibration": "对照:C4 调试器——条件断点(条件满足才暂停)",
|
|
1984
|
+
},
|
|
1985
|
+
"调试-调用计数": {
|
|
1986
|
+
"task": "调用计数",
|
|
1987
|
+
"pattern": (
|
|
1988
|
+
"def call_counter(stats, op, func=None):\n"
|
|
1989
|
+
" # 生效条件:op ∈ {count, report}\n"
|
|
1990
|
+
" # 子功能:① op 分支处理\n"
|
|
1991
|
+
" # 执行:按 op 分派;顺序调用\n"
|
|
1992
|
+
" # 不适用条件:op 非 {count, report} 时\n"
|
|
1993
|
+
" # 调用计数:count 记录调用 / report 报告(profiler 调用次数)\n"
|
|
1994
|
+
" if op == 'count':\n"
|
|
1995
|
+
" stats[func] = stats.get(func, 0) + 1\n"
|
|
1996
|
+
" return stats[func]\n"
|
|
1997
|
+
" if op == 'report':\n"
|
|
1998
|
+
" return dict(stats)\n"
|
|
1999
|
+
" return None\n"),
|
|
2000
|
+
"cases": [(({}, 'count', 'f1'), 1),
|
|
2001
|
+
(({'f1': 2}, 'count', 'f1'), 3),
|
|
2002
|
+
(({'f1': 2}, 'report'), {'f1': 2})],
|
|
2003
|
+
"params": [],
|
|
2004
|
+
"calibration": "对照:C4 profiler——函数调用次数统计",
|
|
2005
|
+
},
|
|
2006
|
+
"调试-覆盖率": {
|
|
2007
|
+
"task": "覆盖率",
|
|
2008
|
+
"pattern": (
|
|
2009
|
+
"def coverage_track(covered, op, addr=None, total=None):\n"
|
|
2010
|
+
" # 生效条件:op ∈ {mark, report}\n"
|
|
2011
|
+
" # 子功能:① op 分支处理\n"
|
|
2012
|
+
" # 执行:按 op 分派;顺序调用\n"
|
|
2013
|
+
" # 不适用条件:total 为空/非法时;op 非 {mark, report} 时\n"
|
|
2014
|
+
" # 覆盖率:mark 标记执行 / report 报告(指令覆盖百分比)\n"
|
|
2015
|
+
" if op == 'mark':\n"
|
|
2016
|
+
" covered.add(addr)\n"
|
|
2017
|
+
" return len(covered)\n"
|
|
2018
|
+
" if op == 'report':\n"
|
|
2019
|
+
" if not total:\n"
|
|
2020
|
+
" return 0.0\n"
|
|
2021
|
+
" return round(len(covered) / total, 3)\n"
|
|
2022
|
+
" return None\n"),
|
|
2023
|
+
"cases": [((set(), 'mark', 1), 1),
|
|
2024
|
+
(({1, 2}, 'mark', 3), 3),
|
|
2025
|
+
(({1, 2}, 'report', None, 4), 0.5)],
|
|
2026
|
+
"params": [],
|
|
2027
|
+
"calibration": "对照:C4 覆盖率——指令覆盖百分比(测试充分性)",
|
|
2028
|
+
},
|
|
2029
|
+
"编译-窥孔优化": {
|
|
2030
|
+
"task": "窥孔优化",
|
|
2031
|
+
"pattern": (
|
|
2032
|
+
"def peephole_opt(instrs):\n"
|
|
2033
|
+
" # 生效条件:参数 instrs 合法\n"
|
|
2034
|
+
" # 子功能:① 调用 len\n"
|
|
2035
|
+
" # 执行:循环迭代;顺序调用\n"
|
|
2036
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
2037
|
+
" # 窥孔优化:PUSH 0 + ADD → 弹出(冗余指令模式替换)\n"
|
|
2038
|
+
" out = []\n"
|
|
2039
|
+
" i = 0\n"
|
|
2040
|
+
" while i < len(instrs):\n"
|
|
2041
|
+
" if (i + 1 < len(instrs) and instrs[i] == ('PUSH', 0)\n"
|
|
2042
|
+
" and instrs[i + 1][0] == 'ADD'):\n"
|
|
2043
|
+
" i += 2\n"
|
|
2044
|
+
" continue\n"
|
|
2045
|
+
" out.append(instrs[i])\n"
|
|
2046
|
+
" i += 1\n"
|
|
2047
|
+
" return out\n"),
|
|
2048
|
+
"cases": [(([("PUSH", 0), ("ADD", None), ("DE", 0.1)],),
|
|
2049
|
+
[("DE", 0.1)]),
|
|
2050
|
+
(([("PUSH", 1), ("ADD", None)],),
|
|
2051
|
+
[("PUSH", 1), ("ADD", None)]),
|
|
2052
|
+
(([],), [])],
|
|
2053
|
+
"params": [],
|
|
2054
|
+
"calibration": "对照:编译优化——窥孔(PUSH 0+ADD 冗余消除)",
|
|
2055
|
+
},
|
|
2056
|
+
"编译-指令融合": {
|
|
2057
|
+
"task": "指令融合",
|
|
2058
|
+
"pattern": (
|
|
2059
|
+
"def fuse_load_store(instrs):\n"
|
|
2060
|
+
" # 生效条件:参数 instrs 合法\n"
|
|
2061
|
+
" # 子功能:① 调用 len\n"
|
|
2062
|
+
" # 执行:循环迭代;顺序调用\n"
|
|
2063
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
2064
|
+
" # 指令融合:LOAD x + STORE x → MOV(复制指令融合)\n"
|
|
2065
|
+
" out = []\n"
|
|
2066
|
+
" i = 0\n"
|
|
2067
|
+
" while i < len(instrs):\n"
|
|
2068
|
+
" if (i + 1 < len(instrs) and instrs[i][0] == 'LOAD'\n"
|
|
2069
|
+
" and instrs[i + 1][0] == 'STORE'):\n"
|
|
2070
|
+
" out.append(('MOV', instrs[i][1], instrs[i + 1][1]))\n"
|
|
2071
|
+
" i += 2\n"
|
|
2072
|
+
" continue\n"
|
|
2073
|
+
" out.append(instrs[i])\n"
|
|
2074
|
+
" i += 1\n"
|
|
2075
|
+
" return out\n"),
|
|
2076
|
+
"cases": [(([("LOAD", "甲"), ("STORE", "乙"), ("DE", 0.1)],),
|
|
2077
|
+
[("MOV", "甲", "乙"), ("DE", 0.1)]),
|
|
2078
|
+
(([("LOAD", "甲"), ("DE", 0.1)],),
|
|
2079
|
+
[("LOAD", "甲"), ("DE", 0.1)]),
|
|
2080
|
+
(([],), [])],
|
|
2081
|
+
"params": [],
|
|
2082
|
+
"calibration": "对照:编译优化——指令融合(LOAD+STORE→MOV)",
|
|
2083
|
+
},
|
|
2084
|
+
"编译-循环不变式": {
|
|
2085
|
+
"task": "循环不变式",
|
|
2086
|
+
"pattern": (
|
|
2087
|
+
"def loop_invariant(body, invariant_ops):\n"
|
|
2088
|
+
" # 生效条件:参数 body/invariant_ops 合法\n"
|
|
2089
|
+
" # 子功能:① 条件判定 ② 结果处理\n"
|
|
2090
|
+
" # 执行:循环迭代\n"
|
|
2091
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
2092
|
+
" # 循环不变式:不变指令外提(循环外计算一次)\n"
|
|
2093
|
+
" loop_part = []\n"
|
|
2094
|
+
" hoisted = []\n"
|
|
2095
|
+
" for ins in body:\n"
|
|
2096
|
+
" if ins[0] in invariant_ops and ins not in loop_part:\n"
|
|
2097
|
+
" hoisted.append(ins)\n"
|
|
2098
|
+
" else:\n"
|
|
2099
|
+
" loop_part.append(ins)\n"
|
|
2100
|
+
" return hoisted, loop_part\n"),
|
|
2101
|
+
"cases": [(([("PUSH", 3), ("DE", 0.1), ("LOAD", "i")], ('PUSH',)),
|
|
2102
|
+
([("PUSH", 3)], [("DE", 0.1), ("LOAD", "i")])),
|
|
2103
|
+
(([("DE", 0.1)], ('DE',)), ([("DE", 0.1)], [])),
|
|
2104
|
+
(([], ('PUSH',)), ([], []))],
|
|
2105
|
+
"params": [],
|
|
2106
|
+
"calibration": "对照:编译优化——循环不变式外提(循环外计算)",
|
|
2107
|
+
},
|
|
2108
|
+
"语法-字典字面量": {
|
|
2109
|
+
"task": "字典字面量",
|
|
2110
|
+
"pattern": (
|
|
2111
|
+
"def parse_dict(tokens, i):\n"
|
|
2112
|
+
" # 生效条件:参数 tokens/i 合法\n"
|
|
2113
|
+
" # 子功能:① 调用 len\n"
|
|
2114
|
+
" # 执行:循环迭代;顺序调用\n"
|
|
2115
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
2116
|
+
" # 字典字面量:'{' 键:值 '}' 解析(冒号分隔键值对)\n"
|
|
2117
|
+
" if tokens[i] != '{':\n"
|
|
2118
|
+
" return None, i\n"
|
|
2119
|
+
" d = {}\n"
|
|
2120
|
+
" i += 1\n"
|
|
2121
|
+
" while i < len(tokens) and tokens[i] != '}':\n"
|
|
2122
|
+
" k = tokens[i]\n"
|
|
2123
|
+
" i += 2\n"
|
|
2124
|
+
" v = tokens[i]\n"
|
|
2125
|
+
" d[k] = v\n"
|
|
2126
|
+
" i += 1\n"
|
|
2127
|
+
" if i < len(tokens) and tokens[i] == ',':\n"
|
|
2128
|
+
" i += 1\n"
|
|
2129
|
+
" return d, i + 1\n"),
|
|
2130
|
+
"cases": [((['{', '甲', ':', 1, '}'], 0), ({'甲': 1}, 5)),
|
|
2131
|
+
((['{', '}'], 0), ({}, 2)),
|
|
2132
|
+
((['x'], 0), (None, 0))],
|
|
2133
|
+
"params": [],
|
|
2134
|
+
"calibration": "对照:语法——字典字面量({键:值} 键值对解析)",
|
|
2135
|
+
},
|
|
2136
|
+
"语法-元组解析": {
|
|
2137
|
+
"task": "元组解析",
|
|
2138
|
+
"pattern": (
|
|
2139
|
+
"def parse_tuple(tokens, i):\n"
|
|
2140
|
+
" # 生效条件:参数 tokens/i 合法\n"
|
|
2141
|
+
" # 子功能:① 调用 tuple;② 调用 len\n"
|
|
2142
|
+
" # 执行:循环迭代;顺序调用\n"
|
|
2143
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
2144
|
+
" # 元组解析:'(' 元素 ')' 解析(逗号分隔——元组字面量)\n"
|
|
2145
|
+
" if tokens[i] != '(':\n"
|
|
2146
|
+
" return None, i\n"
|
|
2147
|
+
" items = []\n"
|
|
2148
|
+
" i += 1\n"
|
|
2149
|
+
" while i < len(tokens) and tokens[i] != ')':\n"
|
|
2150
|
+
" if tokens[i] != ',':\n"
|
|
2151
|
+
" items.append(tokens[i])\n"
|
|
2152
|
+
" i += 1\n"
|
|
2153
|
+
" return tuple(items), i + 1\n"),
|
|
2154
|
+
"cases": [((['(', 1, ',', 2, ')'], 0), ((1, 2), 5)),
|
|
2155
|
+
((['(', ')'], 0), ((), 2)),
|
|
2156
|
+
((['x'], 0), (None, 0))],
|
|
2157
|
+
"params": [],
|
|
2158
|
+
"calibration": "对照:语法——元组字面量((元素,元素) 解析)",
|
|
2159
|
+
},
|
|
2160
|
+
"词法-转义序列": {
|
|
2161
|
+
"task": "转义序列",
|
|
2162
|
+
"pattern": (
|
|
2163
|
+
"def unescape(text):\n"
|
|
2164
|
+
" # 生效条件:nxt ∈ {n, t}\n"
|
|
2165
|
+
" # 子功能:1 nxt 分支处理\n"
|
|
2166
|
+
" # 执行:按 op 分派;循环迭代;顺序调用\n"
|
|
2167
|
+
" # 不适用条件:nxt 非 {n, t} 时\n"
|
|
2168
|
+
" # 转义序列:反斜杠n 反斜杠t 反斜杠引号 解码(字符串转义处理)\n"
|
|
2169
|
+
" out = []\n"
|
|
2170
|
+
" i = 0\n"
|
|
2171
|
+
" while i < len(text):\n"
|
|
2172
|
+
" if text[i] == '\\\\' and i + 1 < len(text):\n"
|
|
2173
|
+
" nxt = text[i + 1]\n"
|
|
2174
|
+
" if nxt == 'n':\n"
|
|
2175
|
+
" out.append(chr(10))\n"
|
|
2176
|
+
" elif nxt == 't':\n"
|
|
2177
|
+
" out.append(chr(9))\n"
|
|
2178
|
+
" elif nxt == chr(34):\n"
|
|
2179
|
+
" out.append(chr(34))\n"
|
|
2180
|
+
" else:\n"
|
|
2181
|
+
" out.append(nxt)\n"
|
|
2182
|
+
" i += 2\n"
|
|
2183
|
+
" else:\n"
|
|
2184
|
+
" out.append(text[i])\n"
|
|
2185
|
+
" i += 1\n"
|
|
2186
|
+
" return ''.join(out)\n"),
|
|
2187
|
+
"cases": [
|
|
2188
|
+
(('a\\nb',), 'a' + chr(10) + 'b'),
|
|
2189
|
+
(('a\\"b',), 'a' + chr(34) + 'b'),
|
|
2190
|
+
(('abc',), 'abc')],
|
|
2191
|
+
"params": [],
|
|
2192
|
+
"calibration": "对照:词法——转义序列(反斜杠n反斜杠t反斜杠引号 解码)",
|
|
2193
|
+
},
|
|
2194
|
+
"语法-布尔字面量": {
|
|
2195
|
+
"task": "布尔字面量",
|
|
2196
|
+
"pattern": (
|
|
2197
|
+
"def parse_bool(token):\n"
|
|
2198
|
+
" # 生效条件:token ∈ {假, 真}\n"
|
|
2199
|
+
" # 子功能:1 token 分支处理\n"
|
|
2200
|
+
" # 执行:按 op 分派\n"
|
|
2201
|
+
" # 不适用条件:token 非 {假, 真} 时\n"
|
|
2202
|
+
" # 布尔字面量:真/假 → True/False(布尔值解析)\n"
|
|
2203
|
+
" if token == '真':\n"
|
|
2204
|
+
" return (True, 1)\n"
|
|
2205
|
+
" if token == '假':\n"
|
|
2206
|
+
" return (False, 1)\n"
|
|
2207
|
+
" return (None, 0)\n"),
|
|
2208
|
+
"cases": [(('真',), (True, 1)),
|
|
2209
|
+
(('假',), (False, 1)),
|
|
2210
|
+
(('x',), (None, 0))],
|
|
2211
|
+
"params": [],
|
|
2212
|
+
"calibration": "对照:词法——布尔字面量(真/假→True/False)",
|
|
2213
|
+
},
|
|
2214
|
+
"语法-空值字面量": {
|
|
2215
|
+
"task": "空值字面量",
|
|
2216
|
+
"pattern": (
|
|
2217
|
+
"def parse_null(token):\n"
|
|
2218
|
+
" # 生效条件:参数 token 合法\n"
|
|
2219
|
+
" # 子功能:① 条件判定 ② 结果处理\n"
|
|
2220
|
+
" # 执行:顺序执行\n"
|
|
2221
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
2222
|
+
" # 空值字面量:无/空 → None(空值解析)\n"
|
|
2223
|
+
" if token in ('无', '空'):\n"
|
|
2224
|
+
" return (None, 1)\n"
|
|
2225
|
+
" return (None, 0)\n"),
|
|
2226
|
+
"cases": [(('无',), (None, 1)),
|
|
2227
|
+
(('空',), (None, 1)),
|
|
2228
|
+
(('x',), (None, 0))],
|
|
2229
|
+
"params": [],
|
|
2230
|
+
"calibration": "对照:词法——空值字面量(无/空→None)",
|
|
2231
|
+
},
|
|
2232
|
+
"词法-行号跟踪": {
|
|
2233
|
+
"task": "行号跟踪",
|
|
2234
|
+
"pattern": (
|
|
2235
|
+
"def track_lines(src):\n"
|
|
2236
|
+
" # 生效条件:参数 src 合法\n"
|
|
2237
|
+
" # 子功能:① 调用 enumerate;② 调用 chr\n"
|
|
2238
|
+
" # 执行:循环迭代;顺序调用\n"
|
|
2239
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
2240
|
+
" # 行号跟踪:源码按行拆 token 并附行号(定位调试用)\n"
|
|
2241
|
+
" out = []\n"
|
|
2242
|
+
" for i, line in enumerate(src.split(chr(10)), 1):\n"
|
|
2243
|
+
" for tok in line.split():\n"
|
|
2244
|
+
" out.append((tok, i))\n"
|
|
2245
|
+
" return out\n"),
|
|
2246
|
+
"cases": [
|
|
2247
|
+
(('甲 乙\n丙',), [('甲', 1), ('乙', 1), ('丙', 2)]),
|
|
2248
|
+
(('',), []),
|
|
2249
|
+
(('单行',), [('单行', 1)])],
|
|
2250
|
+
"params": [],
|
|
2251
|
+
"calibration": "对照:词法——行号跟踪(token 附行号,调试定位)",
|
|
2252
|
+
},
|
|
2253
|
+
"词法-关键字识别": {
|
|
2254
|
+
"task": "关键字识别",
|
|
2255
|
+
"pattern": (
|
|
2256
|
+
"def keyword_check(word, keywords):\n"
|
|
2257
|
+
" # 生效条件:参数 word/keywords 合法\n"
|
|
2258
|
+
" # 子功能:① 条件判定 ② 结果处理\n"
|
|
2259
|
+
" # 执行:顺序执行\n"
|
|
2260
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
2261
|
+
" # 关键字识别:命中关键字表返回 (KW, 词) 否则 None(词法分类)\n"
|
|
2262
|
+
" if word in keywords:\n"
|
|
2263
|
+
" return ('KW', word)\n"
|
|
2264
|
+
" return None\n"),
|
|
2265
|
+
"cases": [
|
|
2266
|
+
(('若', ('若', '则', '否则')), ('KW', '若')),
|
|
2267
|
+
(('x', ('若', '则')), None),
|
|
2268
|
+
(('若', ()), None)],
|
|
2269
|
+
"params": [],
|
|
2270
|
+
"calibration": "对照:词法——关键字表命中分类(KW token)",
|
|
2271
|
+
},
|
|
2272
|
+
"编译-常量池": {
|
|
2273
|
+
"task": "常量池",
|
|
2274
|
+
"pattern": (
|
|
2275
|
+
"def literal_pool(pool, op, value=None):\n"
|
|
2276
|
+
" # 生效条件:op ∈ {add, get, size};pool.index 可用\n"
|
|
2277
|
+
" # 子功能:① op 分支处理\n"
|
|
2278
|
+
" # 执行:按 op 分派;顺序调用\n"
|
|
2279
|
+
" # 不适用条件:op 非 {add, get, size} 时\n"
|
|
2280
|
+
" # 常量池:add 去重登记 / get 取索引 / size 池大小(字面量去重)\n"
|
|
2281
|
+
" if op == 'add':\n"
|
|
2282
|
+
" if value not in pool:\n"
|
|
2283
|
+
" pool.append(value)\n"
|
|
2284
|
+
" return pool.index(value)\n"
|
|
2285
|
+
" if op == 'get':\n"
|
|
2286
|
+
" return pool[value] if 0 <= value < len(pool) else None\n"
|
|
2287
|
+
" if op == 'size':\n"
|
|
2288
|
+
" return len(pool)\n"
|
|
2289
|
+
" return None\n"),
|
|
2290
|
+
"cases": [
|
|
2291
|
+
(([], 'add', 42), 0),
|
|
2292
|
+
(([42], 'add', 42), 0),
|
|
2293
|
+
(([42, 7], 'get', 1), 7),
|
|
2294
|
+
(([42], 'size'), 1)],
|
|
2295
|
+
"params": [],
|
|
2296
|
+
"calibration": "对照:编译——常量池字面量去重(LDC 索引引用)",
|
|
2297
|
+
},
|
|
2298
|
+
"语法-语句分隔": {
|
|
2299
|
+
"task": "语句分隔",
|
|
2300
|
+
"pattern": (
|
|
2301
|
+
"def split_statements(src):\n"
|
|
2302
|
+
" # 生效条件:s.strip 可用\n"
|
|
2303
|
+
" # 子功能:① 主体逻辑执行\n"
|
|
2304
|
+
" # 执行:顺序执行\n"
|
|
2305
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
2306
|
+
" # 语句分隔:按分号拆分多语句(语句序列解析)\n"
|
|
2307
|
+
" return [s.strip() for s in src.split(';') if s.strip()]\n"),
|
|
2308
|
+
"cases": [
|
|
2309
|
+
(('甲 = 1;乙 = 2',), ['甲 = 1', '乙 = 2']),
|
|
2310
|
+
(('单语句',), ['单语句']),
|
|
2311
|
+
(('',), []),
|
|
2312
|
+
(('甲=1;;乙=2',), ['甲=1', '乙=2'])],
|
|
2313
|
+
"params": [],
|
|
2314
|
+
"calibration": "对照:语法——分号语句分隔(多语句序列)",
|
|
2315
|
+
},
|
|
2316
|
+
"VM-异常处理": {
|
|
2317
|
+
"task": "异常处理",
|
|
2318
|
+
"pattern": (
|
|
2319
|
+
"def vm_exception(state, op, etype=None):\n"
|
|
2320
|
+
" # 生效条件:op ∈ {clear, handler, raise}\n"
|
|
2321
|
+
" # 子功能:① op 分支处理\n"
|
|
2322
|
+
" # 执行:按 op 分派\n"
|
|
2323
|
+
" # 不适用条件:op 非 {clear, handler, raise} 时\n"
|
|
2324
|
+
" # VM 异常处理:raise 抛异常 / handler 查处理表 / clear 清除(异常跳转)\n"
|
|
2325
|
+
" if op == 'raise':\n"
|
|
2326
|
+
" state['exc'] = etype\n"
|
|
2327
|
+
" return etype\n"
|
|
2328
|
+
" if op == 'handler':\n"
|
|
2329
|
+
" table = state.get('table', {})\n"
|
|
2330
|
+
" return table.get(state.get('exc'), None)\n"
|
|
2331
|
+
" if op == 'clear':\n"
|
|
2332
|
+
" state['exc'] = None\n"
|
|
2333
|
+
" return None\n"
|
|
2334
|
+
" return None\n"),
|
|
2335
|
+
"cases": [
|
|
2336
|
+
(({}, 'raise', '除零'), '除零'),
|
|
2337
|
+
(({'exc': '除零', 'table': {'除零': 10}}, 'handler'), 10),
|
|
2338
|
+
(({'exc': '未知', 'table': {'除零': 10}}, 'handler'), None),
|
|
2339
|
+
(({'exc': '除零'}, 'clear'), None)],
|
|
2340
|
+
"params": [],
|
|
2341
|
+
"calibration": "对照:VM 异常——异常类型抛出与处理表跳转(try/except 语义)",
|
|
2342
|
+
},
|
|
2343
|
+
"编译-表达式树": {
|
|
2344
|
+
"task": "表达式树",
|
|
2345
|
+
"pattern": (
|
|
2346
|
+
"def build_expr_tree(tokens, pos=0):\n"
|
|
2347
|
+
" # 生效条件:tok ∈ {(, )}\n"
|
|
2348
|
+
" # 子功能:1 tok 分支处理\n"
|
|
2349
|
+
" # 执行:按 op 分派;循环迭代\n"
|
|
2350
|
+
" # 不适用条件:tok 非 {(, )} 时\n"
|
|
2351
|
+
" # 表达式树:中缀 token → 嵌套树(AST 节点构建)\n"
|
|
2352
|
+
" stack = []\n"
|
|
2353
|
+
" for tok in tokens:\n"
|
|
2354
|
+
" if tok == '(':\n"
|
|
2355
|
+
" continue\n"
|
|
2356
|
+
" if tok == ')':\n"
|
|
2357
|
+
" right = stack.pop()\n"
|
|
2358
|
+
" op = stack.pop()\n"
|
|
2359
|
+
" left = stack.pop()\n"
|
|
2360
|
+
" stack.append((op, left, right))\n"
|
|
2361
|
+
" else:\n"
|
|
2362
|
+
" stack.append(tok)\n"
|
|
2363
|
+
" return stack[0] if stack else None\n"),
|
|
2364
|
+
"cases": [
|
|
2365
|
+
((['(', 'a', '+', 'b', ')'],), ('+', 'a', 'b')),
|
|
2366
|
+
((['(', 'a', '+', '(', 'b', '*', 'c', ')', ')'],),
|
|
2367
|
+
('+', 'a', ('*', 'b', 'c'))),
|
|
2368
|
+
(([],), None)],
|
|
2369
|
+
"params": [],
|
|
2370
|
+
"calibration": "对照:语法——中缀表达式 → 嵌套树(AST 构建)",
|
|
2371
|
+
},
|
|
2372
|
+
"分析-栈深度分析": {
|
|
2373
|
+
"task": "栈深度分析",
|
|
2374
|
+
"pattern": (
|
|
2375
|
+
"def stack_depth(instrs):\n"
|
|
2376
|
+
" # 生效条件:参数 instrs 合法\n"
|
|
2377
|
+
" # 子功能:① 调用 max\n"
|
|
2378
|
+
" # 执行:循环迭代;顺序调用\n"
|
|
2379
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
2380
|
+
" # 栈深度分析:模拟指令流求最大栈深(编译期栈大小)\n"
|
|
2381
|
+
" depth = 0\n"
|
|
2382
|
+
" mx = 0\n"
|
|
2383
|
+
" for ins in instrs:\n"
|
|
2384
|
+
" if ins[0] == 'PUSH':\n"
|
|
2385
|
+
" depth += 1\n"
|
|
2386
|
+
" elif ins[0] in ('POP', 'STORE'):\n"
|
|
2387
|
+
" depth = max(0, depth - 1)\n"
|
|
2388
|
+
" mx = max(mx, depth)\n"
|
|
2389
|
+
" return mx\n"),
|
|
2390
|
+
"cases": [
|
|
2391
|
+
(([('PUSH', 1), ('PUSH', 2), ('ADD', None)],), 2),
|
|
2392
|
+
(([('PUSH', 1), ('POP', None)],), 1),
|
|
2393
|
+
(([],), 0)],
|
|
2394
|
+
"params": [],
|
|
2395
|
+
"calibration": "对照:编译期分析——指令流最大栈深度(VM 栈帧大小)",
|
|
2396
|
+
},
|
|
2397
|
+
"分析-基本块": {
|
|
2398
|
+
"task": "基本块",
|
|
2399
|
+
"pattern": (
|
|
2400
|
+
"def basic_blocks(instrs):\n"
|
|
2401
|
+
" # 生效条件:参数 instrs 合法\n"
|
|
2402
|
+
" # 子功能:① 条件判定 ② 结果处理\n"
|
|
2403
|
+
" # 执行:循环迭代\n"
|
|
2404
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
2405
|
+
" # 基本块:按跳转目标/跳转指令切分(控制流线性段)\n"
|
|
2406
|
+
" blocks = []\n"
|
|
2407
|
+
" cur = []\n"
|
|
2408
|
+
" for ins in instrs:\n"
|
|
2409
|
+
" cur.append(ins)\n"
|
|
2410
|
+
" if ins[0] in ('JUMP', 'JUMP_IF_FALSE', 'RETURN'):\n"
|
|
2411
|
+
" blocks.append(cur)\n"
|
|
2412
|
+
" cur = []\n"
|
|
2413
|
+
" if cur:\n"
|
|
2414
|
+
" blocks.append(cur)\n"
|
|
2415
|
+
" return blocks\n"),
|
|
2416
|
+
"cases": [
|
|
2417
|
+
(([('PUSH', 1), ('RETURN', None), ('PUSH', 2)],), [[('PUSH', 1), ('RETURN', None)], [('PUSH', 2)]]),
|
|
2418
|
+
(([('PUSH', 1)],), [[('PUSH', 1)]]),
|
|
2419
|
+
(([],), [])],
|
|
2420
|
+
"params": [],
|
|
2421
|
+
"calibration": "对照:CFG 分析——基本块划分(跳转为界)",
|
|
2422
|
+
},
|
|
2423
|
+
"编译-支配树": {
|
|
2424
|
+
"task": "支配树",
|
|
2425
|
+
"pattern": (
|
|
2426
|
+
"def dominator_tree(adj, entry):\n"
|
|
2427
|
+
" # 生效条件:set.intersection 可用\n"
|
|
2428
|
+
" # 子功能:① 调用 list;② 调用 set\n"
|
|
2429
|
+
" # 执行:循环迭代;顺序调用\n"
|
|
2430
|
+
" # 不适用条件:preds 为空/非法时\n"
|
|
2431
|
+
" # 支配树:入口可达必经节点(支配关系——必经点)\n"
|
|
2432
|
+
" nodes = list(adj)\n"
|
|
2433
|
+
" dom = {n: set(nodes) for n in nodes}\n"
|
|
2434
|
+
" dom[entry] = {entry}\n"
|
|
2435
|
+
" changed = True\n"
|
|
2436
|
+
" while changed:\n"
|
|
2437
|
+
" changed = False\n"
|
|
2438
|
+
" for n in nodes:\n"
|
|
2439
|
+
" if n == entry:\n"
|
|
2440
|
+
" continue\n"
|
|
2441
|
+
" preds = [p for p in nodes if n in adj.get(p, [])]\n"
|
|
2442
|
+
" if not preds:\n"
|
|
2443
|
+
" continue\n"
|
|
2444
|
+
" new = {n} | set.intersection(*(dom[p] for p in preds))\n"
|
|
2445
|
+
" if new != dom[n]:\n"
|
|
2446
|
+
" dom[n] = new\n"
|
|
2447
|
+
" changed = True\n"
|
|
2448
|
+
" return dom\n"),
|
|
2449
|
+
"cases": [
|
|
2450
|
+
(({0: [1, 2], 1: [3], 2: [3], 3: []}, 0),
|
|
2451
|
+
{0: {0}, 1: {0, 1}, 2: {0, 2}, 3: {0, 3}}),
|
|
2452
|
+
(({0: [1], 1: []}, 0), {0: {0}, 1: {0, 1}}),
|
|
2453
|
+
(({0: []}, 0), {0: {0}})],
|
|
2454
|
+
"params": [],
|
|
2455
|
+
"calibration": "对照:支配树——必经节点集合(迭代数据流)",
|
|
2456
|
+
},
|
|
2457
|
+
"编译-中间表示": {
|
|
2458
|
+
"task": "中间表示",
|
|
2459
|
+
"pattern": (
|
|
2460
|
+
"def to_ir(expr, op):\n"
|
|
2461
|
+
" # 生效条件:op ∈ {assign, binary}\n"
|
|
2462
|
+
" # 子功能:① op 分支处理\n"
|
|
2463
|
+
" # 执行:按 op 分派\n"
|
|
2464
|
+
" # 不适用条件:op 非 {assign, binary} 时\n"
|
|
2465
|
+
" # 中间表示:表达式 → 三地址码(IR 生成)\n"
|
|
2466
|
+
" if op == 'assign':\n"
|
|
2467
|
+
" return [('=', expr[0], expr[1], None)]\n"
|
|
2468
|
+
" if op == 'binary':\n"
|
|
2469
|
+
" a, b, o = expr\n"
|
|
2470
|
+
" return [('t1', '=', a, None), ('t2', '=', b, None),\n"
|
|
2471
|
+
" (o, 't1', 't2', 't3')]\n"
|
|
2472
|
+
" return None\n"),
|
|
2473
|
+
"cases": [
|
|
2474
|
+
((('x', 1), 'assign'), [('=', 'x', 1, None)]),
|
|
2475
|
+
((('a', 'b', '+'), 'binary'), [('t1', '=', 'a', None), ('t2', '=', 'b', None), ('+', 't1', 't2', 't3')]),
|
|
2476
|
+
((('x', 0), 'assign'), [('=', 'x', 0, None)])],
|
|
2477
|
+
"params": [],
|
|
2478
|
+
"calibration": "对照:三地址码——IR 中间表示(赋值/二元运算)",
|
|
2479
|
+
},
|
|
2480
|
+
"分析-循环检测": {
|
|
2481
|
+
"task": "循环检测",
|
|
2482
|
+
"pattern": (
|
|
2483
|
+
"def cycle_detect(adj):\n"
|
|
2484
|
+
" # 生效条件:参数 adj 合法\n"
|
|
2485
|
+
" # 子功能:① 调用 dfs\n"
|
|
2486
|
+
" # 执行:循环迭代;顺序调用\n"
|
|
2487
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
2488
|
+
" # 循环检测:DFS 三色标记(灰=在栈,回灰边即环)\n"
|
|
2489
|
+
" WHITE, GRAY, BLACK = 0, 1, 2\n"
|
|
2490
|
+
" color = {}\n"
|
|
2491
|
+
" def dfs(u):\n"
|
|
2492
|
+
" # 深度优先:标记灰后探邻接,遇灰回边判环\n"
|
|
2493
|
+
" color[u] = GRAY\n"
|
|
2494
|
+
" for v in adj.get(u, []):\n"
|
|
2495
|
+
" if color.get(v) == GRAY:\n"
|
|
2496
|
+
" return True\n"
|
|
2497
|
+
" if color.get(v, WHITE) == WHITE and dfs(v):\n"
|
|
2498
|
+
" return True\n"
|
|
2499
|
+
" color[u] = BLACK\n"
|
|
2500
|
+
" return False\n"
|
|
2501
|
+
" for u in adj:\n"
|
|
2502
|
+
" if color.get(u, WHITE) == WHITE and dfs(u):\n"
|
|
2503
|
+
" return True\n"
|
|
2504
|
+
" return False\n"),
|
|
2505
|
+
"cases": [
|
|
2506
|
+
(({0: [1], 1: [0]},), True),
|
|
2507
|
+
(({0: [1], 1: [2], 2: []},), False),
|
|
2508
|
+
(({0: [1], 1: [2], 2: [0]},), True)],
|
|
2509
|
+
"params": [],
|
|
2510
|
+
"calibration": "对照:图分析——DFS 三色循环检测(回灰边即环)",
|
|
2511
|
+
},
|
|
2512
|
+
"编译-指令调度": {
|
|
2513
|
+
"task": "指令调度",
|
|
2514
|
+
"pattern": (
|
|
2515
|
+
"def schedule_insn(instrs):\n"
|
|
2516
|
+
" # 生效条件:arg.startswith 可用\n"
|
|
2517
|
+
" # 子功能:① 调用 set;② 调用 isinstance;③ 调用 any\n"
|
|
2518
|
+
" # 执行:循环迭代;顺序调用\n"
|
|
2519
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
2520
|
+
" # 指令调度:无依赖指令前移(乱序发射——减少停顿)\n"
|
|
2521
|
+
" deps = set()\n"
|
|
2522
|
+
" for ins in instrs:\n"
|
|
2523
|
+
" for arg in ins[1:]:\n"
|
|
2524
|
+
" if isinstance(arg, str) and arg.startswith('t'):\n"
|
|
2525
|
+
" deps.add(arg)\n"
|
|
2526
|
+
" early = [i for i in instrs if not any(a in deps for a in i[1:] if isinstance(a, str))]\n"
|
|
2527
|
+
" rest = [i for i in instrs if i not in early]\n"
|
|
2528
|
+
" return early + rest\n"),
|
|
2529
|
+
"cases": [
|
|
2530
|
+
(([('t1', '=', 'a'), ('t2', '=', 'b'), ('+', 't1', 't2')],),
|
|
2531
|
+
[('t1', '=', 'a'), ('t2', '=', 'b'), ('+', 't1', 't2')]),
|
|
2532
|
+
(([('+', 't1', 't2'), ('t1', '=', 'a')],),
|
|
2533
|
+
[('t1', '=', 'a'), ('+', 't1', 't2')]),
|
|
2534
|
+
(([('t1', '=', 'a')],), [('t1', '=', 'a')])],
|
|
2535
|
+
"params": [],
|
|
2536
|
+
"calibration": "对照:编译优化——指令调度(依赖无关前移)",
|
|
2537
|
+
},
|
|
2538
|
+
"编译-寄存器溢出": {
|
|
2539
|
+
"task": "寄存器溢出",
|
|
2540
|
+
"pattern": (
|
|
2541
|
+
"def spill_regs(active, regs):\n"
|
|
2542
|
+
" # 生效条件:参数 active/regs 合法\n"
|
|
2543
|
+
" # 子功能:① 调用 len\n"
|
|
2544
|
+
" # 执行:顺序调用\n"
|
|
2545
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
2546
|
+
" # 寄存器溢出:活跃变量超寄存器数 → 溢出处(spill 内存)\n"
|
|
2547
|
+
" if len(active) <= regs:\n"
|
|
2548
|
+
" return []\n"
|
|
2549
|
+
" # 溢出最远使用(简化:溢出最后活跃者)\n"
|
|
2550
|
+
" return active[regs:]\n"),
|
|
2551
|
+
"cases": [
|
|
2552
|
+
((['a', 'b'], 2), []),
|
|
2553
|
+
((['a', 'b', 'c'], 2), ['c']),
|
|
2554
|
+
((['a'], 0), ['a']),
|
|
2555
|
+
(([], 2), [])],
|
|
2556
|
+
"params": [],
|
|
2557
|
+
"calibration": "对照:寄存器分配——活跃超限溢出处(spill)",
|
|
2558
|
+
},
|
|
2559
|
+
"VM-数组操作": {
|
|
2560
|
+
"task": "数组操作",
|
|
2561
|
+
"pattern": (
|
|
2562
|
+
"def array_ops(arr, op, idx=None, val=None):\n"
|
|
2563
|
+
" # 生效条件:op ∈ {aget, aset, size}\n"
|
|
2564
|
+
" # 子功能:① op 分支处理\n"
|
|
2565
|
+
" # 执行:按 op 分派;顺序调用\n"
|
|
2566
|
+
" # 不适用条件:op 非 {aget, aset, size} 时\n"
|
|
2567
|
+
" # 数组操作:aget 索引读 / aset 索引写 / size 长度(数组 VM 指令)\n"
|
|
2568
|
+
" if op == 'aget':\n"
|
|
2569
|
+
" if 0 <= idx < len(arr):\n"
|
|
2570
|
+
" return arr[idx]\n"
|
|
2571
|
+
" return None\n"
|
|
2572
|
+
" if op == 'aset':\n"
|
|
2573
|
+
" if 0 <= idx < len(arr):\n"
|
|
2574
|
+
" arr[idx] = val\n"
|
|
2575
|
+
" return True\n"
|
|
2576
|
+
" return False\n"
|
|
2577
|
+
" if op == 'size':\n"
|
|
2578
|
+
" return len(arr)\n"
|
|
2579
|
+
" return None\n"),
|
|
2580
|
+
"cases": [
|
|
2581
|
+
(([10, 20], 'aget', 1), 20),
|
|
2582
|
+
(([10, 20], 'aget', 5), None),
|
|
2583
|
+
(([10, 20], 'aset', 0, 99), True),
|
|
2584
|
+
(([10, 20], 'size'), 2)],
|
|
2585
|
+
"params": [],
|
|
2586
|
+
"calibration": "对照:VM 数组——索引读写与越界保护(AGET/ASET 指令)",
|
|
2587
|
+
},
|
|
2588
|
+
"分析-污点分析": {
|
|
2589
|
+
"task": "污点分析",
|
|
2590
|
+
"pattern": (
|
|
2591
|
+
"def taint_prop(state, op, var=None, source=None):\n"
|
|
2592
|
+
" # 生效条件:op ∈ {check, mark, propagate}\n"
|
|
2593
|
+
" # 子功能:① op 分支处理\n"
|
|
2594
|
+
" # 执行:按 op 分派;顺序调用\n"
|
|
2595
|
+
" # 不适用条件:op 非 {check, mark, propagate} 时\n"
|
|
2596
|
+
" # 污点分析:mark 标记污点 / propagate 传播 / check 查询(安全数据流)\n"
|
|
2597
|
+
" if op == 'mark':\n"
|
|
2598
|
+
" state.setdefault('taint', set()).add(var)\n"
|
|
2599
|
+
" return 'marked'\n"
|
|
2600
|
+
" if op == 'propagate':\n"
|
|
2601
|
+
" if source in state.get('taint', set()):\n"
|
|
2602
|
+
" state.setdefault('taint', set()).add(var)\n"
|
|
2603
|
+
" return 'tainted'\n"
|
|
2604
|
+
" return 'clean'\n"
|
|
2605
|
+
" if op == 'check':\n"
|
|
2606
|
+
" return var in state.get('taint', set())\n"
|
|
2607
|
+
" return None\n"),
|
|
2608
|
+
"cases": [
|
|
2609
|
+
(({}, 'mark', 'x'), 'marked'),
|
|
2610
|
+
(({'taint': {'x'}}, 'propagate', 'y', 'x'), 'tainted'),
|
|
2611
|
+
(({}, 'propagate', 'y', 'x'), 'clean'),
|
|
2612
|
+
(({'taint': {'x'}}, 'check', 'x'), True)],
|
|
2613
|
+
"params": [],
|
|
2614
|
+
"calibration": "对照:静态分析——污点传播(标记/传播/查询)",
|
|
2615
|
+
},
|
|
2616
|
+
"编译-边界检查消除": {
|
|
2617
|
+
"task": "边界检查消除",
|
|
2618
|
+
"pattern": (
|
|
2619
|
+
"def bounds_elim(loops, op, info=None):\n"
|
|
2620
|
+
" # 生效条件:op ∈ {eliminate, prove}\n"
|
|
2621
|
+
" # 子功能:① op 分支处理\n"
|
|
2622
|
+
" # 执行:按 op 分派\n"
|
|
2623
|
+
" # 不适用条件:op 非 {eliminate, prove} 时\n"
|
|
2624
|
+
" # 边界检查消除:prove 证明范围 / eliminate 消除检查 / keep 保留(循环不变边界)\n"
|
|
2625
|
+
" if op == 'prove':\n"
|
|
2626
|
+
" lo, hi, idx = info\n"
|
|
2627
|
+
" return lo <= idx < hi\n"
|
|
2628
|
+
" if op == 'eliminate':\n"
|
|
2629
|
+
" if info in loops.get('safe', []):\n"
|
|
2630
|
+
" return 'eliminated'\n"
|
|
2631
|
+
" return 'kept'\n"
|
|
2632
|
+
" return None\n"),
|
|
2633
|
+
"cases": [
|
|
2634
|
+
(({}, 'prove', (0, 10, 5)), True),
|
|
2635
|
+
(({}, 'prove', (0, 10, 15)), False),
|
|
2636
|
+
(({'safe': [('i', 0, 10)]}, 'eliminate', ('i', 0, 10)), 'eliminated'),
|
|
2637
|
+
(({'safe': []}, 'eliminate', ('i', 0, 10)), 'kept')],
|
|
2638
|
+
"params": [],
|
|
2639
|
+
"calibration": "对照:编译优化——边界检查消除(可证范围免检)",
|
|
2640
|
+
},
|
|
2641
|
+
"词法-字符类别": {
|
|
2642
|
+
"task": "字符类别",
|
|
2643
|
+
"pattern": (
|
|
2644
|
+
"def char_class(ch):\n"
|
|
2645
|
+
" # 生效条件:ch.isalpha 可用;ch.isdigit 可用\n"
|
|
2646
|
+
" # 子功能:① 条件判定 ② 结果处理\n"
|
|
2647
|
+
" # 执行:顺序执行\n"
|
|
2648
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
2649
|
+
" # 字符类别:字母/数字/空白/其他(词法分类基础)\n"
|
|
2650
|
+
" if ch.isalpha():\n"
|
|
2651
|
+
" return 'letter'\n"
|
|
2652
|
+
" if ch.isdigit():\n"
|
|
2653
|
+
" return 'digit'\n"
|
|
2654
|
+
" if ch.isspace():\n"
|
|
2655
|
+
" return 'space'\n"
|
|
2656
|
+
" return 'other'\n"),
|
|
2657
|
+
"cases": [
|
|
2658
|
+
((chr(97),), 'letter'),
|
|
2659
|
+
((chr(49),), 'digit'),
|
|
2660
|
+
((chr(32),), 'space'),
|
|
2661
|
+
((chr(43),), 'other')],
|
|
2662
|
+
"params": [],
|
|
2663
|
+
"calibration": "对照:词法——字符类别判定(字母/数字/空白/其他)",
|
|
2664
|
+
},
|
|
2665
|
+
"语法-括号匹配": {
|
|
2666
|
+
"task": "括号匹配",
|
|
2667
|
+
"pattern": (
|
|
2668
|
+
"def bracket_balance(text):\n"
|
|
2669
|
+
" # 生效条件:参数 text 合法\n"
|
|
2670
|
+
" # 子功能:① 调用 len\n"
|
|
2671
|
+
" # 执行:循环迭代;顺序调用\n"
|
|
2672
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
2673
|
+
" # 括号匹配:栈配对校验(()[]{} 嵌套平衡)\n"
|
|
2674
|
+
" pairs = {')': '(', ']': '[', '}': '{'}\n"
|
|
2675
|
+
" stack = []\n"
|
|
2676
|
+
" for ch in text:\n"
|
|
2677
|
+
" if ch in '([{':\n"
|
|
2678
|
+
" stack.append(ch)\n"
|
|
2679
|
+
" elif ch in ')]}':\n"
|
|
2680
|
+
" if not stack or stack.pop() != pairs[ch]:\n"
|
|
2681
|
+
" return False\n"
|
|
2682
|
+
" return len(stack) == 0\n"),
|
|
2683
|
+
"cases": [
|
|
2684
|
+
((chr(40) + chr(41),), True),
|
|
2685
|
+
((chr(40) + chr(91) + chr(93) + chr(41),), True),
|
|
2686
|
+
((chr(40) + chr(93),), False),
|
|
2687
|
+
((chr(40),), False)],
|
|
2688
|
+
"params": [],
|
|
2689
|
+
"calibration": "对照:语法——括号配对平衡(嵌套校验)",
|
|
2690
|
+
},
|
|
2691
|
+
"编译-指令选择": {
|
|
2692
|
+
"task": "指令选择",
|
|
2693
|
+
"pattern": (
|
|
2694
|
+
"def insn_select(ir):\n"
|
|
2695
|
+
" # 生效条件:参数 ir 合法\n"
|
|
2696
|
+
" # 子功能:① 主体逻辑执行\n"
|
|
2697
|
+
" # 执行:顺序执行\n"
|
|
2698
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
2699
|
+
" # 指令选择:IR 操作 → 目标指令(模式匹配翻译)\n"
|
|
2700
|
+
" table = {'+': 'ADD', '-': 'SUB', '*': 'MUL', '/': 'DIV', '=': 'MOV'}\n"
|
|
2701
|
+
" return [table.get(op, 'NOP') for op in ir]\n"),
|
|
2702
|
+
"cases": [
|
|
2703
|
+
((chr(43) + chr(45) + chr(42),), ['ADD', 'SUB', 'MUL']),
|
|
2704
|
+
((chr(61),), ['MOV']),
|
|
2705
|
+
((chr(37),), ['NOP'])],
|
|
2706
|
+
"params": [],
|
|
2707
|
+
"calibration": "对照:编译后端——IR 操作到目标指令映射(指令选择)",
|
|
2708
|
+
},
|
|
2709
|
+
"分析-循环开销": {
|
|
2710
|
+
"task": "循环开销",
|
|
2711
|
+
"pattern": (
|
|
2712
|
+
"def loop_cost(body, trips):\n"
|
|
2713
|
+
" # 生效条件:参数 body/trips 合法\n"
|
|
2714
|
+
" # 子功能:① 调用 len\n"
|
|
2715
|
+
" # 执行:顺序调用\n"
|
|
2716
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
2717
|
+
" # 循环开销:循环体指令数 × 迭代次数(热循环估算)\n"
|
|
2718
|
+
" return len(body) * trips\n"),
|
|
2719
|
+
"cases": [
|
|
2720
|
+
(([1, 2, 3], 10), 30),
|
|
2721
|
+
(([], 100), 0),
|
|
2722
|
+
(([1], 0), 0)],
|
|
2723
|
+
"params": [],
|
|
2724
|
+
"calibration": "对照:分析——循环代价估算(体长×趟数)",
|
|
2725
|
+
},
|
|
2726
|
+
"编译-字符串拼接": {
|
|
2727
|
+
"task": "字符串拼接",
|
|
2728
|
+
"pattern": (
|
|
2729
|
+
"def concat_fold(instrs):\n"
|
|
2730
|
+
" # 生效条件:参数 instrs 合法\n"
|
|
2731
|
+
" # 子功能:① 调用 len;② 调用 isinstance\n"
|
|
2732
|
+
" # 执行:循环迭代;顺序调用\n"
|
|
2733
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
2734
|
+
" # 字符串拼接优化:相邻常量串拼接折叠(concat 合并)\n"
|
|
2735
|
+
" out = []\n"
|
|
2736
|
+
" i = 0\n"
|
|
2737
|
+
" while i < len(instrs):\n"
|
|
2738
|
+
" if (i + 1 < len(instrs) and instrs[i][0] == 'PUSH'\n"
|
|
2739
|
+
" and isinstance(instrs[i][1], str)\n"
|
|
2740
|
+
" and instrs[i + 1] == ('CONCAT', None)):\n"
|
|
2741
|
+
" nxt = instrs[i + 2] if i + 2 < len(instrs) else None\n"
|
|
2742
|
+
" if nxt and nxt[0] == 'PUSH' and isinstance(nxt[1], str):\n"
|
|
2743
|
+
" out.append(('PUSH', instrs[i][1] + nxt[1]))\n"
|
|
2744
|
+
" i += 3\n"
|
|
2745
|
+
" continue\n"
|
|
2746
|
+
" out.append(instrs[i])\n"
|
|
2747
|
+
" i += 1\n"
|
|
2748
|
+
" return out\n"),
|
|
2749
|
+
"cases": [
|
|
2750
|
+
(([('PUSH', '甲'), ('CONCAT', None), ('PUSH', '乙')],),
|
|
2751
|
+
[('PUSH', '甲乙')]),
|
|
2752
|
+
(([('PUSH', '甲')],), [('PUSH', '甲')]),
|
|
2753
|
+
(([('PUSH', 1), ('CONCAT', None), ('PUSH', '乙')],),
|
|
2754
|
+
[('PUSH', 1), ('CONCAT', None), ('PUSH', '乙')])],
|
|
2755
|
+
"params": [],
|
|
2756
|
+
"calibration": "对照:编译优化——相邻常量串 CONCAT 折叠(拼接合并)",
|
|
2757
|
+
},
|
|
2758
|
+
"字节码-指令大小": {
|
|
2759
|
+
"task": "指令大小",
|
|
2760
|
+
"pattern": (
|
|
2761
|
+
"def insn_size(instrs):\n"
|
|
2762
|
+
" # 生效条件:参数 instrs 合法\n"
|
|
2763
|
+
" # 子功能:① 调用 sum\n"
|
|
2764
|
+
" # 执行:顺序调用\n"
|
|
2765
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
2766
|
+
" # 指令大小:每条指令编码字节数(紧凑字节码尺寸)\n"
|
|
2767
|
+
" sizes = {op: 1 for op in ('PUSH', 'STORE', 'LOAD', 'JUMP', 'ADD')}\n"
|
|
2768
|
+
" return sum(sizes.get(ins[0], 1) for ins in instrs)\n"),
|
|
2769
|
+
"cases": [
|
|
2770
|
+
(([('PUSH', 1), ('ADD', None)],), 2),
|
|
2771
|
+
(([],), 0),
|
|
2772
|
+
(([('NOP', None)],), 1)],
|
|
2773
|
+
"params": [],
|
|
2774
|
+
"calibration": "对照:字节码——指令编码尺寸(紧凑性度量)",
|
|
2775
|
+
},
|
|
2776
|
+
"分析-控制流图": {
|
|
2777
|
+
"task": "控制流图",
|
|
2778
|
+
"pattern": (
|
|
2779
|
+
"def build_cfg(blocks, jumps):\n"
|
|
2780
|
+
" # 生效条件:参数 blocks/jumps 合法\n"
|
|
2781
|
+
" # 子功能:① 主体逻辑执行\n"
|
|
2782
|
+
" # 执行:循环迭代\n"
|
|
2783
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
2784
|
+
" # 控制流图:基本块间跳转关系(CFG 边构建)\n"
|
|
2785
|
+
" cfg = {b: [] for b in blocks}\n"
|
|
2786
|
+
" for src, dst in jumps:\n"
|
|
2787
|
+
" cfg.setdefault(src, []).append(dst)\n"
|
|
2788
|
+
" return cfg\n"),
|
|
2789
|
+
"cases": [
|
|
2790
|
+
((['B0', 'B1'], [('B0', 'B1')]), {'B0': ['B1'], 'B1': []}),
|
|
2791
|
+
((['B0'], []), {'B0': []}),
|
|
2792
|
+
(([], []), {})],
|
|
2793
|
+
"params": [],
|
|
2794
|
+
"calibration": "对照:CFG——基本块跳转边构建(控制流图)",
|
|
2795
|
+
},
|
|
2796
|
+
"编译-内联缓存": {
|
|
2797
|
+
"task": "内联缓存",
|
|
2798
|
+
"pattern": (
|
|
2799
|
+
"def inline_cache(state, op, cls=None, target=None):\n"
|
|
2800
|
+
" # 生效条件:op ∈ {learn, lookup, miss}\n"
|
|
2801
|
+
" # 子功能:① op 分支处理\n"
|
|
2802
|
+
" # 执行:按 op 分派\n"
|
|
2803
|
+
" # 不适用条件:op 非 {learn, lookup, miss} 时\n"
|
|
2804
|
+
" # 内联缓存:learn 学习 / lookup 命中 / miss 未命中(多态内联缓存)\n"
|
|
2805
|
+
" if op == 'learn':\n"
|
|
2806
|
+
" state.setdefault('cache', {})[cls] = target\n"
|
|
2807
|
+
" return 'learned'\n"
|
|
2808
|
+
" if op == 'lookup':\n"
|
|
2809
|
+
" return state.get('cache', {}).get(cls)\n"
|
|
2810
|
+
" if op == 'miss':\n"
|
|
2811
|
+
" state['misses'] = state.get('misses', 0) + 1\n"
|
|
2812
|
+
" return state['misses']\n"
|
|
2813
|
+
" return None\n"),
|
|
2814
|
+
"cases": [
|
|
2815
|
+
(({}, 'learn', '甲', 'f'), 'learned'),
|
|
2816
|
+
(({'cache': {'甲': 'f'}}, 'lookup', '甲'), 'f'),
|
|
2817
|
+
(({}, 'lookup', '乙'), None),
|
|
2818
|
+
(({}, 'miss'), 1)],
|
|
2819
|
+
"params": [],
|
|
2820
|
+
"calibration": "对照:多态内联缓存——类→方法学习/命中/未命中",
|
|
2821
|
+
},
|
|
2822
|
+
"编译-寄存器着色": {
|
|
2823
|
+
"task": "寄存器着色",
|
|
2824
|
+
"pattern": (
|
|
2825
|
+
"def reg_color(intervals, regs):\n"
|
|
2826
|
+
" # 生效条件:参数 intervals/regs 合法\n"
|
|
2827
|
+
" # 子功能:① 条件判定 ② 结果处理\n"
|
|
2828
|
+
" # 执行:循环迭代\n"
|
|
2829
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
2830
|
+
" # 寄存器着色:活跃区间贪心分配(冲突图着色)\n"
|
|
2831
|
+
" assign = {}\n"
|
|
2832
|
+
" for var, (start, end) in intervals:\n"
|
|
2833
|
+
" used = {assign[v] for v, (s, e) in intervals\n"
|
|
2834
|
+
" if v in assign and not (e <= start or s >= end)}\n"
|
|
2835
|
+
" r = 0\n"
|
|
2836
|
+
" while r in used and r < regs:\n"
|
|
2837
|
+
" r += 1\n"
|
|
2838
|
+
" assign[var] = r if r < regs else None\n"
|
|
2839
|
+
" return assign\n"),
|
|
2840
|
+
"cases": [
|
|
2841
|
+
(((('a', (0, 2)), ('b', (1, 3))), 2), {'a': 0, 'b': 1}),
|
|
2842
|
+
(((('a', (0, 1)), ('b', (2, 3))), 2), {'a': 0, 'b': 0}),
|
|
2843
|
+
(((('a', (0, 2)), ('b', (1, 2))), 1), {'a': 0, 'b': None})],
|
|
2844
|
+
"params": [],
|
|
2845
|
+
"calibration": "对照:寄存器分配——活跃区间冲突着色(贪心)",
|
|
2846
|
+
},
|
|
2847
|
+
"词法-数字后缀": {
|
|
2848
|
+
"task": "数字后缀",
|
|
2849
|
+
"pattern": (
|
|
2850
|
+
"def num_suffix(text):\n"
|
|
2851
|
+
" # 生效条件:text.lower 可用;t.startswith 可用\n"
|
|
2852
|
+
" # 子功能:① 调用 int\n"
|
|
2853
|
+
" # 执行:顺序调用\n"
|
|
2854
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
2855
|
+
" # 数字后缀:解析 0x 十六进制/0b 二进制/后缀 k/m(字面量变体)\n"
|
|
2856
|
+
" t = text.lower()\n"
|
|
2857
|
+
" if t.startswith('0x'):\n"
|
|
2858
|
+
" return int(t[2:], 16)\n"
|
|
2859
|
+
" if t.startswith('0b'):\n"
|
|
2860
|
+
" return int(t[2:], 2)\n"
|
|
2861
|
+
" if t.endswith('k'):\n"
|
|
2862
|
+
" return int(t[:-1]) * 1024\n"
|
|
2863
|
+
" if t.endswith('m'):\n"
|
|
2864
|
+
" return int(t[:-1]) * 1024 * 1024\n"
|
|
2865
|
+
" return int(t)\n"),
|
|
2866
|
+
"cases": [
|
|
2867
|
+
((chr(48) + chr(120) + chr(102) + chr(102),), 255),
|
|
2868
|
+
((chr(48) + chr(98) + chr(49) + chr(48) + chr(49),), 5),
|
|
2869
|
+
((chr(50) + chr(107),), 2048),
|
|
2870
|
+
((chr(49) + chr(48),), 10)],
|
|
2871
|
+
"params": [],
|
|
2872
|
+
"calibration": "对照:词法——数字字面量后缀(0x/0b/k/m)",
|
|
2873
|
+
},
|
|
2874
|
+
"分析-逃逸分析": {
|
|
2875
|
+
"task": "逃逸分析",
|
|
2876
|
+
"pattern": (
|
|
2877
|
+
"def escape_analysis(alloc, ops):\n"
|
|
2878
|
+
" # 生效条件:参数 alloc/ops 合法\n"
|
|
2879
|
+
" # 子功能:① 条件判定 ② 结果处理\n"
|
|
2880
|
+
" # 执行:顺序执行\n"
|
|
2881
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
2882
|
+
" # 逃逸分析:对象是否逃逸函数(栈上分配可行性)\n"
|
|
2883
|
+
" if 'return' in ops or 'store' in ops:\n"
|
|
2884
|
+
" return 'escaped'\n"
|
|
2885
|
+
" return 'local'\n"),
|
|
2886
|
+
"cases": [
|
|
2887
|
+
((chr(97), ['use', 'return']), 'escaped'),
|
|
2888
|
+
((chr(97), ['use', 'store']), 'escaped'),
|
|
2889
|
+
((chr(97), ['use', 'pass']), 'local'),
|
|
2890
|
+
((chr(97), []), 'local')],
|
|
2891
|
+
"params": [],
|
|
2892
|
+
"calibration": "对照:逃逸分析——返回/存储即逃逸(栈分配优化)",
|
|
2893
|
+
},
|
|
2894
|
+
"编译-去虚拟化": {
|
|
2895
|
+
"task": "去虚拟化",
|
|
2896
|
+
"pattern": (
|
|
2897
|
+
"def devirt(dispatch, known):\n"
|
|
2898
|
+
" # 生效条件:参数 dispatch/known 合法\n"
|
|
2899
|
+
" # 子功能:① 调用 len\n"
|
|
2900
|
+
" # 执行:循环迭代;顺序调用\n"
|
|
2901
|
+
" # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
|
|
2902
|
+
" # 去虚拟化:已知单实现调用替换为直接调用(内联化前提)\n"
|
|
2903
|
+
" out = []\n"
|
|
2904
|
+
" for cls, method in dispatch:\n"
|
|
2905
|
+
" if cls in known and len(known[cls]) == 1:\n"
|
|
2906
|
+
" out.append(('DIRECT', known[cls][0]))\n"
|
|
2907
|
+
" else:\n"
|
|
2908
|
+
" out.append(('VIRTUAL', method))\n"
|
|
2909
|
+
" return out\n"),
|
|
2910
|
+
"cases": [
|
|
2911
|
+
(((('甲', 'f'),), {'甲': ['fa']}), [('DIRECT', 'fa')]),
|
|
2912
|
+
(((('甲', 'f'), ('乙', 'g')), {'甲': ['fa', 'fb'], '乙': ['gb']}),
|
|
2913
|
+
[('VIRTUAL', 'f'), ('DIRECT', 'gb')]),
|
|
2914
|
+
(((('甲', 'f'),), {}), [('VIRTUAL', 'f')])],
|
|
2915
|
+
"params": [],
|
|
2916
|
+
"calibration": "对照:去虚拟化——单实现类调用改直接调用",
|
|
2917
|
+
},
|
|
2918
|
+
"编译-名实绑定": {
|
|
2919
|
+
"task": "名实绑定",
|
|
2920
|
+
"pattern": (
|
|
2921
|
+
"def resolve_binding(scope_stack, name):\n"
|
|
2922
|
+
" # 名实绑定(以名举实):从内层到外层查找名的绑定(名实校验编译期版)\n"
|
|
2923
|
+
" # 生效条件:scope_stack 为作用域栈(内层在前);name 为待查符号名\n"
|
|
2924
|
+
" # 子功能:① 逆序遍历作用域 ② 命中即返回绑定 ③ 全未命中返回未绑定\n"
|
|
2925
|
+
" # 执行:reversed 逐层 dict 查键,内层遮蔽外层\n"
|
|
2926
|
+
" # 不适用条件:name 为空串时直接未绑定;本函数不修改作用域栈内容\n"
|
|
2927
|
+
" for scope in reversed(scope_stack):\n"
|
|
2928
|
+
" if name in scope:\n"
|
|
2929
|
+
" return (True, scope[name])\n"
|
|
2930
|
+
" return (False, None)\n"),
|
|
2931
|
+
"cases": [
|
|
2932
|
+
(([{"x": 1}], "x"), (True, 1)),
|
|
2933
|
+
(([{"x": 1}, {"y": 2}], "y"), (True, 2)),
|
|
2934
|
+
(([{"x": 1}, {"x": 2}], "x"), (True, 2)),
|
|
2935
|
+
(([{"x": 1}], "z"), (False, None)),
|
|
2936
|
+
(([], "a"), (False, None))],
|
|
2937
|
+
"params": [],
|
|
2938
|
+
"calibration": "对照:以名举实(v0.2 名实校验)编译期绑定——作用域链逐层查找,内层遮蔽外层;未绑定→(False, None)",
|
|
2939
|
+
},
|
|
2940
|
+
"编译-信任流分析": {
|
|
2941
|
+
"task": "信任流分析",
|
|
2942
|
+
"pattern": (
|
|
2943
|
+
"def trust_flow(expr, env):\n"
|
|
2944
|
+
" # 信任流分析(信任传播):德——编译期信任传播(与=取min,或=取max,非=1-t,名=查env,字面量=1.0)\n"
|
|
2945
|
+
" # 生效条件:expr 为表达式树(tuple 操作节点/字符串名/字面量);env 为名→信任值映射\n"
|
|
2946
|
+
" # 子功能:① 操作节点递归传播 ② 名称查 env ③ 字面量视为完全可信\n"
|
|
2947
|
+
" # 执行:AND=min / OR=max / NOT=1-t 递归归约\n"
|
|
2948
|
+
" # 不适用条件:env 中未收录的名称按不可信(0.0)处理;不修改 env 内容\n"
|
|
2949
|
+
" if isinstance(expr, tuple):\n"
|
|
2950
|
+
" op = expr[0]\n"
|
|
2951
|
+
" if op == \"AND\":\n"
|
|
2952
|
+
" return min(trust_flow(expr[1], env), trust_flow(expr[2], env))\n"
|
|
2953
|
+
" if op == \"OR\":\n"
|
|
2954
|
+
" return max(trust_flow(expr[1], env), trust_flow(expr[2], env))\n"
|
|
2955
|
+
" if op == \"NOT\":\n"
|
|
2956
|
+
" return round(1.0 - trust_flow(expr[1], env), 3)\n"
|
|
2957
|
+
" if isinstance(expr, str):\n"
|
|
2958
|
+
" return env.get(expr, 0.0)\n"
|
|
2959
|
+
" return 1.0\n"),
|
|
2960
|
+
"cases": [
|
|
2961
|
+
((("AND", "x", "y"), {"x": 0.8, "y": 0.6}), 0.6),
|
|
2962
|
+
((("OR", "x", "y"), {"x": 0.8, "y": 0.6}), 0.8),
|
|
2963
|
+
((("NOT", "x"), {"x": 0.8}), 0.2),
|
|
2964
|
+
(("z", {"z": 0.9}), 0.9),
|
|
2965
|
+
(("u", {"x": 0.8}), 0.0),
|
|
2966
|
+
((42, {}), 1.0),
|
|
2967
|
+
((("AND", ("NOT", "x"), "y"), {"x": 0.8, "y": 0.5}), 0.2)],
|
|
2968
|
+
"params": [],
|
|
2969
|
+
"calibration": "对照:德=信任累积(v0.2 信任语义)的编译期数据流——与取min、或取max、非取补;字面量完全可信、未收录名不可信",
|
|
2970
|
+
},
|
|
2971
|
+
"VM-短路求值": {
|
|
2972
|
+
"task": "短路求值",
|
|
2973
|
+
"pattern": (
|
|
2974
|
+
"def vm_short_circuit(left, op, right):\n"
|
|
2975
|
+
" # 短路求值(短路逻辑):与=左假不求右,或=左真不求右(VM 逻辑执行语义)\n"
|
|
2976
|
+
" # 生效条件:op ∈ {且, 或};left/right 为操作数值\n"
|
|
2977
|
+
" # 子功能:① 且/或短路判定 ② 需要时求右值 ③ 返回 (结果, 右是否求值)\n"
|
|
2978
|
+
" # 执行:且左假直返 False、或左真直返 True——右侧仅必要时求值\n"
|
|
2979
|
+
" # 不适用条件:left 为空/非法时;op 非 {且, 或} 时\n"
|
|
2980
|
+
" # 返回 (结果, 右操作数是否被求值)\n"
|
|
2981
|
+
" if op == '且':\n"
|
|
2982
|
+
" if not left:\n"
|
|
2983
|
+
" return (False, False)\n"
|
|
2984
|
+
" return (bool(right), True)\n"
|
|
2985
|
+
" if op == '或':\n"
|
|
2986
|
+
" if left:\n"
|
|
2987
|
+
" return (True, False)\n"
|
|
2988
|
+
" return (bool(right), True)\n"
|
|
2989
|
+
" return (None, False)\n"),
|
|
2990
|
+
"cases": [
|
|
2991
|
+
((0, '且', 5), (False, False)),
|
|
2992
|
+
((1, '且', 5), (True, True)),
|
|
2993
|
+
((1, '且', 0), (False, True)),
|
|
2994
|
+
((1, '或', 5), (True, False)),
|
|
2995
|
+
((0, '或', 5), (True, True)),
|
|
2996
|
+
((0, '或', 0), (False, True)),
|
|
2997
|
+
((1, '异或', 5), (None, False))],
|
|
2998
|
+
"params": [],
|
|
2999
|
+
"calibration": "对照:逻辑表达式(v0.2 短路跳转字节码)的 VM 执行端——与/或短路,右侧仅必要时求值",
|
|
3000
|
+
},
|
|
3001
|
+
}
|
|
3002
|
+
|
|
3003
|
+
|
|
3004
|
+
def route_compiler_unit(question):
|
|
3005
|
+
"""任务识别(问题 → 编译器单元,最长关键词优先)
|
|
3006
|
+
检索面:task/uid + KCCS v0.2 触发词索引(trigger_words_index.json,白箱回写)
|
|
3007
|
+
——触发词是条件路由图检索面的第一入口(对齐 lingshu-skills/Agent Skills description)。"""
|
|
3008
|
+
import os, json
|
|
3009
|
+
best, best_len = None, 0
|
|
3010
|
+
for uid, u in COMPILER_UNITS.items():
|
|
3011
|
+
for kw in (u["task"], uid):
|
|
3012
|
+
if kw in question and len(kw) > best_len:
|
|
3013
|
+
best, best_len = uid, len(kw)
|
|
3014
|
+
# 触发词索引扩展(存在则加载;缺失回退原逻辑不退化)
|
|
3015
|
+
try:
|
|
3016
|
+
_idx_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "trigger_words_index.json")
|
|
3017
|
+
_idx = json.load(open(_idx_path, encoding="utf-8")).get("compiler", {})
|
|
3018
|
+
for uid, trigs in _idx.items():
|
|
3019
|
+
for t in trigs:
|
|
3020
|
+
if t and t in question and len(t) > best_len:
|
|
3021
|
+
best, best_len = uid, len(t)
|
|
3022
|
+
except Exception:
|
|
3023
|
+
pass
|
|
3024
|
+
return best
|
|
3025
|
+
|
|
3026
|
+
|
|
3027
|
+
if __name__ == "__main__":
|
|
3028
|
+
print("=== 编译器代码条件单元库(白箱自举写编译器 · 校准参考)===\n")
|
|
3029
|
+
for uid, u in COMPILER_UNITS.items():
|
|
3030
|
+
print(f"[{uid}] 任务={u['task']} 样例数={len(u['cases'])}")
|
|
3031
|
+
print(f" 校准: {u['calibration']}")
|
|
3032
|
+
print(f"\n=== 判定 ===\n编译器单元库: "
|
|
3033
|
+
f"{'✔ 5 单元就绪(每单元含模式+样例+校准基准)' if len(COMPILER_UNITS) >= 4 else '✘'}")
|