要确认当前生效的自定义源位置,需分别检查项目级 composer.json 和全局 ~/.composer/config.json;项目级优先级高于全局级,须两者都查才能避免遗漏。

如何确认当前生效的自定义源位置
Composer 没有“镜像”概念,所谓镜像其实是你手动配置的 repositories。要删源,得先搞清它写在哪:项目级 composer.json 还是全局 ~/.composer/config.json?两者优先级不同,项目级 > 全局级,只查一处容易漏掉。
在项目根目录下运行:composer config repos —— 查项目私有源composer config -g repos —— 查全局源
若两个命令都返回空,说明没手动加过源,走的是默认 https://packagist.org。
删除项目级自定义源(最常见)
项目级源直接写在 composer.json 的 repositories 字段里。删法有两种:
- 用命令行移除(推荐):
composer config --unset repositories.packagist(如果替换了 packagist)或composer config --unset repositories.0(如果第一个自定义源是数组索引 0) - 手动编辑
composer.json,删掉整个"repositories": [...]块或其中某一项,注意逗号语法别出错
改完后建议立刻执行:composer config repos 验证是否已清空,再跑一次 composer update --no-interaction 确保锁文件和 vendor 行为回归默认源逻辑。
删除全局自定义源(易忽略)
全局源藏在 ~/.composer/config.json 里,不清理它,新建项目仍会继承该源。执行:composer config -g --unset repositories.packagist
或更彻底地清空整个 repositories 字段:composer config -g --unset repositories
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
⚠️ 注意:composer config -g repos 返回空,不代表没源——可能你用的是 composer config -g repo.packagist 这类旧写法(v1 风格),得手动检查 ~/.composer/config.json 文件内容。
删完验证:cat ~/.composer/config.json | grep repositories 应无输出;再新建一个空目录,composer init -n && composer config repos,确认返回空。
还原后仍走国内源?检查缓存与环境变量
即使删了所有 repositories,有时 composer install 还是走阿里云/腾讯云,原因通常是:
- 系统环境变量干扰:
COMPOSER_REPO_PACKAGIST或COMPOSER_HOME指向了带源配置的路径 - Composer 缓存残留:
composer clear-cache后重试 - 某些 CI/CD 脚本或 Dockerfile 中硬编码了源(比如
RUN composer config -g repos.packagist ...),需同步清理
最终验证方式:在干净目录执行 composer create-project laravel/laravel test,观察下载域名是否为 packagist.org,而不是 mirrors.aliyun.com —— 这才是真正的还原到位。










