|
|
@@ -50,6 +50,13 @@ M8A 做完后,M8C/M8D 可以直接 `policy["global"]["max_depth"]` / `policy["ed
|
|
|
| 全 run 总闸 | walk_policy.json | `global.max_total_actions_per_run` | 10(真生效,向外游走计数) |
|
|
|
| 回灌轮数 | walk_policy.json | `global.max_reseed_rounds` | 删除 |
|
|
|
|
|
|
+> 现值更新(2026-06-19,以 walk_policy.json 字段为准):标签 20 / 作者 20 / 每作者作品 5 / 深度 5 / 全 run 总闸 30。M8 冻结值(5/5/10)是历史口径。
|
|
|
+
|
|
|
+## 预算消费语义(2026-06-22 更新)
|
|
|
+- `consume(edge_id)`(`walk_engine._FrontierContext`)**只在成功向外游走一次时调用**,同时扣该边预算 `remaining_budget[edge]` **和**全 run 总闸 `global_walk_action_count`。
|
|
|
+- **失败的游走 query 不消耗预算**:标签搜索失败(`walk_ctx.query_failures` 增加)→ 不 `consume`;作者作品拉取异常 → 不 `consume`(作者已加入 `seen_author_ids`,不会重试)。
|
|
|
+- 含义:预算 = **成功游走次数**,失败的尝试不白吃额度。落痕仍写 `walk_status="failed"` 的 walk_action,只是不扣数。回归:`tests/test_walk_failed_no_budget.py`(fail_tag → 标签预算仍满额)。
|
|
|
+
|
|
|
## 实施步骤
|
|
|
1. 改 `walk_policy.json` 上述数值,删 `max_reseed_rounds` 行,更新 provenance。
|
|
|
2. 确认 `_unwrap_policy` 解包后 `policy["global"]["max_depth"]==5`、`["max_total_actions_per_run"]==10` 为纯 int(`tbd`/`value` 包装被剥)。
|