应执行 composer config -g repo.packagist composer https://packagist.org/ 切回官方源;因 composer 2.x 仅识别 repo.packagist(单数),删错复数字段 repos.packagist 无效,且需清缓存并验证日志中下载域名为 repo.packagist.org。

直接执行 composer config -g repo.packagist composer https://packagist.org 就能可靠切回官方源;删配置(--unset)反而容易因字段名、版本差异或残留干扰失效。
为什么 composer config -g --unset repos.packagist 常常不生效
这不是命令没运行,是 Composer 2.x 实际只认 repo.packagist(单数、无 s),而很多教程教删的 repos.packagist(复数)根本不是它读的字段——删错字段,原镜像照常走。
- 执行
composer config -g repos.packagist返回 “Key does not exist” 并不能说明已还原,得查repo.packagist - 旧脚手架或手动编辑可能同时存着
repo.packagist和repos.packagist,得两个都删:composer config -g --unset repo.packagist和composer config -g --unset repos.packagist - 漏掉
-g参数,只删了当前项目composer.json里的repositories,对全局无效 - 某些老版 Laravel 安装器写的是
"repositories": {"packagist.org": false},删repo.packagist完全没用,得手动删整个repositories块
更稳的方式:用 config 覆盖,而不是删
覆盖操作绕过所有 fallback 判断逻辑,兼容 Composer 2.0–2.7 所有主流版本,且不会因字段缺失引发解析错误(比如某些 2.2–2.4 版本删完后卡在 Could not parse version constraint)。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- 全局切回官方源:
composer config -g repo.packagist composer https://packagist.org - 仅当前项目临时切回:
composer config repo.packagist composer https://packagist.org(不加-g) - 注意 URL 必须以
/结尾:https://packagist.org/✅,https://packagist.org❌(否则路径拼接出错) - 命令末尾的
composer是 type 值,不是注释,漏掉会导致静默 fallback 到默认源
换完必须清缓存,否则请求地址还是旧镜像
Composer 缓存里存着旧镜像返回的 packages.json 快照,不清缓存,composer update 会继续读错版本、锁文件更新失败、甚至找不到新包。
- 清缓存命令:
composer clear-cache - 验证是否真走官方源:
composer require monolog/monolog --no-install -vvv,滚动日志中找Downloading https://行——正确应为https://repo.packagist.org,不是mirrors.aliyun.com等 - 如果仍见镜像域名,说明某层配置还在生效:优先检查环境变量
$COMPOSER_REPO_PACKAGIST(Linux/macOS)或%COMPOSER_REPO_PACKAGIST%(Windows),再查项目级composer.json中的repositories
最易被忽略的一点:Composer 查源顺序是「环境变量 > 当前项目 composer.json > 全局配置」。哪怕你全局改对了、缓存也清了,只要项目里还留着 "repositories",它就永远优先生效——别只盯着全局配置看。










