必须同步清理三处:先执行 composer clear-cache,再删除 ~/.composer/cache/repo/https---packagist.org/(或 windows 对应路径),接着删 vendor/composer/installed.json,最后删 composer.lock。

清理 Composer update 残留缓存,关键不是“多删几个目录”,而是精准击中三处真正锁死版本的元数据与状态快照——否则 composer update 会照旧拉旧包、跳过新版本,甚至不发任何 HTTP 请求。
为什么 composer clear-cache 单独执行基本没用
它只清 ~/.composer/cache/files/(ZIP 包)和 vcs/(Git 克隆),但完全不碰决定“该不该更新”的核心三处:~/.composer/cache/repo/https---packagist.org/(远程索引快照)、vendor/composer/installed.json(本地已装版本记录)、composer.lock(硬编码版本+哈希)。这三者只要剩一个,update 就认为“一切正常”,根本不会去远端查新版本。
必须同步清理的三个位置(顺序不能错)
缺一不可,且顺序影响结果:
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- 先运行
composer clear-cache:清掉可能损坏的 ZIP 和干扰项 - 再删元数据目录:
rm -rf $(composer config --global cache-dir)/repo/https---packagist.org/(Linux/macOS)或Remove-Item -Recurse -Force "$env:APPDATA\Composer\Cache\repo\https---packagist.org"(PowerShell) - 删本地安装快照:
rm -f vendor/composer/installed.json - 删锁文件:
rm -f composer.lock
Windows 用户注意:$(composer config --global cache-dir) 在 PowerShell 中需加 .Trim() 或直接用完整路径;CMD 下用双引号包裹路径避免空格报错。
验证是否真刷新了 metadata
别信命令返回 “Cache cleared”,要看实际网络行为:
- 运行
composer update --dry-run -v - 紧盯输出里有没有
Downloading https://packagist.org/packages.json - 如果只有
Reading /path/to/cache/packages.json,说明https---packagist.org/目录没删干净,重来 - 若看到
Failed to download或404,检查是否项目设了"minimum-stability": "stable"—— 这是约束过滤,不是缓存问题
最易被忽略的其实是 composer.lock
很多人删光缓存、清掉 installed.json,却留着 composer.lock。Composer 会严格按它里面的 dist.sha256 和 source.reference 还原旧版本,连远端索引都不去读。它不是“缓存”,但行为上就是最强力的版本锚点——想让 update 真动起来,必须删它。










