From ba96a4fc94a43475797933b611edf4a16dc3b64b Mon Sep 17 00:00:00 2001 From: AskaEth Date: Mon, 9 Nov 2026 09:49:36 +0800 Subject: [PATCH] =?UTF-8?q?docs(presenter):=20=E6=9B=B4=E6=AD=A3=20ATTEMPT?= =?UTF-8?q?S=20=E6=B3=A8=E9=87=8A=E9=87=8C=E3=80=8C=E6=8B=BF=E4=B8=8D?= =?UTF-8?q?=E5=88=B0=E5=AE=BF=E4=B8=BB=E8=AE=BE=E7=BD=AE=E3=80=8D=E7=9A=84?= =?UTF-8?q?=E5=81=87=E8=AF=9D=EF=BC=88=E5=A4=8D=E5=AE=A1=20P1=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 原文把「没读设置」写成了物理限制。事实:get_with_headers 手里就有 env,第一句 engine(env) 已经走过 apply_tuning(host/settings/download.rs → core/download/shared.rs),用户当前值就在 engine.config().max_attempts_per_source。这条路径之所以恒为出厂默认,只是因为它没读那个字段。 只改注释,行为不变(仍是编译期 const)。同时把不对称写清:另一条无 header 的路径走引擎, 本来就跟随 download.retry_limit(源冷却中时引擎给 1 次,那是恢复探测)。 --- crates/presenter/src/host/addon/http.rs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/crates/presenter/src/host/addon/http.rs b/crates/presenter/src/host/addon/http.rs index 1655028..9e508cb 100644 --- a/crates/presenter/src/host/addon/http.rs +++ b/crates/presenter/src/host/addon/http.rs @@ -32,9 +32,14 @@ pub(super) const USER_AGENT: &str = /// 最多重试次数(含首次)。 /// /// **不在这里写数字**:取值就是下载引擎的出厂默认 -/// (`core::download::config::DEFAULT_MAX_ATTEMPTS_PER_SOURCE`,同一份 schema 默认值 -/// `download.retry_limit`)。这条带 header 的路径拿不到宿主设置,所以只吃出厂默认—— -/// 数字本身只有一处来源,改工厂默认时这里跟着走。 +/// (`core::download::config::DEFAULT_MAX_ATTEMPTS_PER_SOURCE`,`download.retry_limit` 的 schema +/// 默认值同源),改工厂默认时这里跟着走。 +/// +/// 边界说清:这条路径**没读**宿主设置(次数是编译期常量),所以固定吃出厂默认——**不是拿不到**。 +/// `env` 就在手上(`get_with_headers` 第一句 `engine(env)` 已经灌过调优),用户当前值就在 +/// `engine.config().max_attempts_per_source`;要让它跟随 `download.retry_limit`,读那个字段即可, +/// 不需要新拉一条参数链。另一条无 header 的路径([`get_via_engine`])走引擎,本来就跟随设置 +/// (源冷却中时引擎只给 1 次,那是恢复探测,见 `DownloadEngine::attempts_for`)。 const ATTEMPTS: u32 = DEFAULT_MAX_ATTEMPTS_PER_SOURCE; /// 取一段文本(JSON 原文)。