llama.cpp b11699:HTTP客户端开始遵循代理环境变量,并默认绕过本地回环地址
该版本让common_http_client() 读取HTTP_PROXY/HTTPS_PROXY/NO_PROXY,修复 -hf等下载在代理环境下静默失败的问题;同时强制localhost、127.0.0.0/8、::1 等回环目标直连,避免健康检查卡在“Loading model...”。
AI解读:llama.cpp发布b11699,合并PR #21752,修改common_http_client() 的代理处理逻辑。此前该函数忽略标准代理环境变量,导致在HTTP代理环境(企业网络、隔离基础设施等)中使用 -hf等参数下载会静默失败。
新逻辑按URL协议选择变量:https:// 优先读HTTPS_PROXY/https_proxy,http:// 优先读HTTP_PROXY/http_proxy;若代理URL可解析,则传给httplib的set_proxy() 和set_proxy_basic_auth()。格式错误的代理URL会被忽略并给出警告,以不影响原有调用方。
版本还加入NO_PROXY支持,并固定绕过回环目标:localhost、*.localhost、127.0.0.0/8、::1 和 0.0.0.0。原因是llama cli通过common_http_client访问自己启动在 127.0.0.1 的服务,若设置了HTTP_PROXY且无NO_PROXY,健康轮询会被发到企业代理,代理拒绝回环地址,等待循环永不退出,界面一直停在“Loading model...”。
据提交信息,代理处理对下载和远程 --server-base端点没有改变。文档方面,代理使用说明从顶层README移到了server文档的Usage部分,以保持README精简。
llama.cpp发布b11699,合入PR #21752,让common_http_client() 遵循标准HTTP代理环境变量,并强制回环地址直连。
代理环境变量如何被读取
该PR的问题背景是common_http_client() 此前忽略标准代理环境变量,使通过 -hf等参数发起的下载在HTTP代理环境中静默失败,来源列举的场景包括企业网络和隔离基础设施。
新逻辑按URL协议选择变量:对于https:// URL检查HTTPS_PROXY/https_proxy,对于http:// URL检查HTTP_PROXY/http_proxy,顺序如所述。若代理URL已设置且可解析,则按情况传给httplib的set_proxy() 与set_proxy_basic_auth()。格式错误的代理URL会被忽略,并在后续改动中改为发出警告,以免影响既有调用方。
该PR还加入NO_PROXY支持,并注明对下载和远程 --server-base端点的代理处理没有改变。
回环地址直连修复启动挂起
提交信息描述了llama cli与代理冲突的具体表现:cli通过common_http_client访问自己启动在 127.0.0.1 的服务;当HTTP_PROXY已设置而没有NO_PROXY时,健康轮询会发往企业代理,代理拒绝回环目标,等待循环无法退出,界面停留在“Loading model...”不返回。
因此这些目标现在始终直连,且在查询NO_PROXY之前先处理:localhost、*.localhost、127.0.0.0/8、::1 和 0.0.0.0。提交说明称这一做法与Go的net/http类似。
代理使用说明已按评审意见从顶层README移到server文档的Usage部分,顶层README保持精简。b11699同时提供多平台预编译包,包括macOS、Linux、Android、Windows及多种后端变体。