已合并
feat: diagnose configured sources and offline download URLs #43
KarliosQu创建于 13 天前
feat: diagnose configured sources and offline download URLs #43
已合并
KarliosQu创建于 13 天前
KarliosQu成员
13 天前

变更说明

doctor 原先只检查固定的 GitHub DNS/TLS 入口,无法反映自定义配置里的镜像和离线文件下载地址。本 PR 让 doctor --config 读取配置并自动发现源地址;个别内容无法解析时提醒具体位置和内容,继续检测其余地址。

变更内容

  • 扫描配置中的源定义、组件安装配方、平台变体、镜像环境变量及 Cargo 配置片段,检查 HTTP(S) 地址;读取用户 Cargo 配置中的源和 registry 信息。
  • 自动提取归档、MSVC 离线包、证书和 Shell 字面下载 URL,支持静态解码生成器使用的 PowerShell -EncodedCommand,不执行配置命令。
  • 无法解析的变量、占位符、无效编码或非 HTTP 来源作为单独警告,显示配置路径、内容片段和原因,仅跳过该项;已解析地址继续检测。
  • URL 去重并保留来源位置,6 路并发、单次请求超时 5 秒;HEAD 返回 405/501 时回退为 Range GET,不读取完整安装包,不做 SHA-256 或完整安装能力验证。
  • 终端结果沿用 Document/status_item/hint 和 ui::try_print,检查期间使用现有 ActivityStatus;JSON 沿用 DiagnosticCheck 数组和原字段,输出经过脱敏。
  • 更新 doctor 命令帮助;--config 已有参数现在用于配置源检测,无需额外设置文件。
  • 同步最新 main 中 BotGate 1.3.3、BotMetric 1.2.3 对应的既有 catalog 测试断言;未改变这两个工具的生产配置。
  • 未修改文档、组件安装流程或用户持久环境设置。

使用示例:

bot-forge doctor --config ./bot-forge.toml
bot-forge doctor --config ./bot-forge.toml --format json

关联 Issue

无。

测试计划

  • Windows cargo test --locked --all-targets --all-features:352 通过,1 项真实离线包测试忽略。
  • cargo clippy --locked --all-targets --all-features -- -D warnings、rustfmt 和 git diff --check:通过。
  • 7 项源检测测试覆盖编码 PowerShell、镜像环境变量、模板展开、重复 URL、占位符及动态变量、HTTP 404、HEAD 回退、大文件不读取及凭据隐藏。
  • 本地 HTTP 服务的完整 CLI 测试覆盖 --config、Cargo/pip/uv 镜像、原生 MSVC 包和证书、编码 Shell 下载地址;检查没有执行命令或改写配置。
  • 混合有效 URL 与两个无法解析下载项,验证提醒后仍完成有效 URL 的 HTTP 200 检测,doctor 正常返回。
  • 输出边界测试通过,实际核对终端格式和纯 JSON 输出,无 ANSI 控制符混入 JSON。
  • 检测只证明地址响应,不执行安装、证书导入或完整包下载;运行时动态拼接和非 HTTP 来源需单独检查。未进行 Linux/macOS 实机测试。
likedislike
Pull Request已成功合入, 合并人@VaynNecol
(感谢 KarliosQu 的贡献)
VVaynNecol成员
4 天前 将 VaynNecol 设为合并人
VVaynNecol成员
4 天前 将VaynNecol设为审查人
VVaynNecol成员
4 天前 将VaynNecol设为测试人
VVaynNecol成员
4 天前 将VaynNecol设为评审人
VVaynNecol成员
4 天前 添加了 squash commit 备注:feat: diagnose configured sources and offline download URLs
VVaynNecol成员
4 天前 合入了pull request,合并节点 SHA:4ae8160ff25ea7631bfee200b74df8b16da97c10
VVaynNecol成员
3 天前 关联了issue:[Track] [bot-forge v1.1.3] 配置源诊断、Python 3.10 兼容与快速配置识别