composer clear-cache只删全局缓存目录下的files/、repo/、vcs/和archives/子目录,不删vendor/、composer.lock、composer.json、auth.json或config.json。

composer clear-cache 到底清哪些目录
composer clear-cache 会删掉全局缓存目录下的 files/(下载的 .zip/.tar.gz)、repo/(包元数据快照,如 packages.json)、vcs/(Git 克隆的裸仓库)和 archives/(解压中临时归档)。它**不碰**你的项目 vendor/、composer.lock、composer.json,也不动 auth.json 或 config.json。
常见误判是以为运行后 vendor/ 会变小——不会。真正占空间的大头是已安装包的源码,缓存通常只占几百 MB,但长期不用可能累积到 2–5 GB。
关键点:clear-cache 是幂等、安全的操作,但只作用于 composer config --global cache-dir 指向的那个路径,不会遍历其他位置(比如你改过 COMPOSER_CACHE_DIR 环境变量,它也不会去清默认路径)。
为什么清完还报 “No space left on device”
磁盘满的真正元凶,往往不是 cache/ 目录本身,而是系统临时目录——PHP 的 sys_get_temp_dir() 返回的位置。
这个目录在 Windows 上通常是 C:\Users\用户名\AppData\Local\Temp,Linux/macOS 是 /tmp 或 $TMPDIR。Composer 解压 ZIP、生成 autoloader、运行脚本时重度使用它,容易堆积大量 composer_*.zip、php*.phar 等未清理文件。
尤其要注意 inodes 耗尽:用 df -i(Linux/macOS)或 PowerShell 中 Get-PSDrive C | Select-Object Used,Free(Windows)检查。如果 inodes Use% 接近 100%,哪怕磁盘还有空间也会失败;clear-cache 对释放 inodes 效果明显,因为 vcs/ 下每个 Git 仓库就是成百上千个小文件。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
排查顺序建议:
- 先确认
composer config --global cache-dir路径是否落在小容量分区(比如 C 盘) - 再查
sys_get_temp_dir()返回的路径,手动进资源管理器或终端看有没有大量composer_*.zip - 最后检查
df -i或 Windows 的 inodes 等效指标
怎么换缓存位置或禁用高开销部分
缓存位置可以迁走,避免反复挤爆 C 盘或根分区:
- 运行
composer config --global cache-dir "D:\composer-cache"(Windows)或composer config --global cache-dir "/mnt/data/composer-cache"(Linux/macOS) - 禁用
vcs/缓存(省最多空间且最安全):composer config --global cache.vcs false,后续所有 Git 包强制走--prefer-dist - 禁用
dist缓存(慎用):composer config --global cache.dist false,会增加重复下载次数
注意:cache.vcs false 后,vcs/ 目录不再写入,但已存在的内容不会自动删,需手动执行 rm -rf ~/.composer/cache/vcs/*(Linux/macOS)或 rd /s /q "%APPDATA%\Composer\Cache\vcs"(Windows)。
手动删缓存前必须避开的坑
手动删比 clear-cache 快,但也更容易出错:
- 别直接删整个
~/.composer/cache目录——可能误删repo/packagist.org/,导致首次composer update卡很久 - 别在 Composer 进程还在运行时删,否则可能触发
Corrupted cache file报错 - 想精准删旧版 zip?用
find ~/.composer/cache/files -name "*.zip" -mtime +90 -delete(Linux/macOS),Windows 可用forfiles /p "%APPDATA%\Composer\Cache\files" /s /d -90 /c "cmd /c del @path" - 删之前先停掉 IDE(如 PHPStorm)对缓存目录的扫描,否则可能报
Could not delete ... packages.json: Permission denied
最常被忽略的一点:clear-cache 不解决网络或镜像配置问题。如果刚切了阿里云镜像却还报 404,先确认 composer config repo.packagist 输出是否为预期地址,而不是盲目清缓存。










