必须用path类型仓库、以./或../开头的相对路径、本地包含合法composer.json,否则composer静默跳过;name须与require逐字一致,symlink需在本地包composer.json中声明"options":{"symlink":true},autoload更新须执行composer dump-autoload -o。

必须用 path 类型仓库 + 正确相对路径 + 本地包含合法 composer.json,否则 Composer 静默跳过,不报错也不装包。
path 仓库的 url 必须以 ./ 或 ../ 开头
Composer 只认以 ./ 或 ../ 开头的相对路径,不解析 ~、$HOME、绝对路径或 file://。写错就等于没配。
-
"url": "packages/my-utils"❌ 缺./前缀,被忽略 -
"url": "/home/user/pkg"❌ 绝对路径,静默跳过 -
"url": "~/pkg"❌ 波浪号不展开,无效 -
"url": "../my-local-package"✅ 上级目录,合法 -
"url": "./packages/utils"✅ 同级子目录,合法
Windows 下同样适用,不用盘符,"url": "../my-lib" 就行。
本地包的 composer.json 必须满足三项硬性条件
主项目能识别本地包,前提是本地包自己“够格”——不是放个文件夹就行。
-
name字段必须和你在主项目require中写的**逐字一致**:大小写、分隔符(只允许短横线-)、vendor 名全部匹配,比如"acme/utils"≠"acme/utils-dev" - 根目录下必须有语法合法的
composer.json(无尾逗号、全双引号、JSON 有效) - 目录需已执行
git init并至少有一个 commit;没有 git 仓库,Composer 直接拒绝识别
常见现象:Could not find package acme/utils,但 composer show --all 里压根没它——八成是 name 不一致或本地包没 git init。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
symlink 没生效?问题大概率出在本地包自己的 composer.json
path 仓库默认尝试创建符号链接,失败则静默 fallback 到复制(copy),结果你改源码,vendor/ 里还是旧副本。
- 关键配置不在主项目,而在**本地包自己的
composer.json中**:"options": {"symlink": true} - Windows 用户必须以管理员身份运行终端,否则 symlink 创建失败且无提示
- Docker 场景需加
--cap-add=SYS_ADMIN,并确保挂载方式支持 symlink - 验证是否真用了 symlink:
ls -la vendor/acme/utils(Linux/macOS)看到箭头,或dir vendor\acme\utils(Windows)看到JUNCTION才算成功
如果显示为普通文件夹,说明 fallback 成 copy,立刻检查本地包有没有漏掉 options 段。
autoload 不生效?不是没装,是映射没刷进去
即使 path 仓库成功加载了包,类仍可能 Class not found——因为自动加载规则没进 vendor 的 autoload 文件。
- 本地包的
autoload(如psr-4)只定义映射关系,不会自动注入到主项目的 autoloader - 必须在主项目执行:
composer dump-autoload -o(优化模式)或composer dump-autoload --optimize - 仅
composer dump-autoload不处理 autoload 规则,必须带-o或--dev(视 autoload-dev 是否启用) - 验证方法:打开
vendor/composer/autoload_psr4.php,搜索你的命名空间,看是否存在对应路径映射
最容易被忽略的是:改完本地包的 composer.json 后,既没重装也没 dump-autoload,就直接跑代码——此时 autoload 映射还是旧的,必然报错。










