Bladeren bron

feat(v3-m5a): walk_policy 拍板 gemini_calls_per_run_cap=200 + gemini_max_workers=4

最后一个 TBD_V3 收口(2026-06-12 拍板):单 run Gemini 上限 200(约$4.4,M7 真负标定);
判定批并发度 4(IO 密集不经 crawapi 限流,M7 实测调)。平铺纯值,loader _unwrap 零特例。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sam Lee 2 dagen geleden
bovenliggende
commit
e27f0af84f
2 gewijzigde bestanden met toevoegingen van 9 en 1 verwijderingen
  1. 2 1
      tech_documents/数据接口与来源/walk_policy.json
  2. 7 0
      tests/test_walk_graph_config.py

+ 2 - 1
tech_documents/数据接口与来源/walk_policy.json

@@ -7,7 +7,8 @@
     "max_total_actions_per_run": { "value": 60, "provenance": "拍板 2026-06-11:沿用 v1 各边合计上限 60 作全局闸", "tbd": false },
     "max_depth": { "value": 3, "provenance": "v1 各边 max_depth=3", "tbd": false },
     "max_reseed_rounds": { "value": 1, "provenance": "拍板 2026-06-11:单层回灌(tag→query 不二次回灌),v1 等价", "tbd": false },
-    "gemini_calls_per_run_cap": { "value": null, "provenance": "TBD_V3:Gemini $0.022/条,需按需求规模定单 run 调用上限(归 M5)", "tbd": true }
+    "gemini_calls_per_run_cap": { "value": 200, "provenance": "拍板 2026-06-12:单 run 上限约 $4.4(@$0.022/条),远高于典型 N≈20-40,封顶失控;M7 真负标定", "tbd": false },
+    "gemini_max_workers": { "value": 4, "provenance": "拍板 2026-06-12:判定批并发度(IO 密集,不经 crawapi 限流);M7 实测调", "tbd": false }
   },
   "edge_budgets": [
     { "edge_id": "query_next_page",  "max_total_actions": 3,  "max_per_query": 1,    "max_pages": null, "provenance": "对齐 v1 实际硬限:rows[:3] 每 run ≤3 条翻页 query,每 query 仅 page_002 一跳;原理想值(30/2/3)留 M7 标定" },

+ 7 - 0
tests/test_walk_graph_config.py

@@ -31,6 +31,13 @@ def test_policy_unwraps_pinned_values():
     assert low_budget(10) == 5
 
 
+def test_policy_pins_gemini_cap_and_workers():
+    # 2026-06-12 拍板(M5):单 run Gemini 调用上限 200、判定并发度 4。
+    policy_global = WalkGraphStore().load_policy()["global"]
+    assert policy_global["gemini_calls_per_run_cap"] == 200
+    assert policy_global["gemini_max_workers"] == 4
+
+
 def test_policy_edge_budgets_match_v1_hard_limits():
     # 行为等价:翻页≤3、作者≤2、作品≤3、tag≤1(walk_engine v1 实际硬限)。
     budgets = WalkGraphStore().load_policy()["edge_budgets_by_id"]