私有仓库必须在项目根目录composer.json中显式声明repositories字段,类型为"vcs",url需为可git clone的ssh或https地址,包名须与私有库composer.json中name字段完全一致,且依赖版本仅识别git tag(如v1.0.0)。

私有仓库不会被自动识别,必须在项目根目录的 composer.json 里显式声明 repositories,否则 composer require vendor/name 一定报 Could not find package。
repositories 字段必须写在项目 composer.json 里
这是最常被忽略的前提——不是改私有包自己的 composer.json,也不是配全局 ~/.composer/config.json,而是你当前项目的根目录 composer.json。
- Composer 查包时只看当前项目
composer.json的repositories数组,顺序从上到下匹配,找到第一个就停 - 如果没加这一项,哪怕 Git 地址能
git clone成功,composer require也会直接失败 - 错误示例:只在私有库的
composer.json里写了"name": "myorg/utils",却忘了在业务项目里声明源
vcs 类型必须配对 Git 可克隆地址
用 "type": "vcs" 接入私有 Git 仓库时,url 必须是能被本地 shell 直接 git clone 的地址,且认证已就绪。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- 推荐用 SSH 协议:
"url": "git@gitlab.example.com:myorg/utils.git";确认方式:git ls-remote git@gitlab.example.com:myorg/utils.git能返回 ref 列表 - HTTPS 方式需提前配置凭据,不能把密码塞进 URL(现代 Git 会拒绝),应通过
git config --global url."https://oauth2:TOKEN@...".insteadOf或auth.json - 绝对不要写
"type": "git"——正确类型只有"vcs";写错类型会导致静默失败或Could not find package
包名必须与私有库 composer.json 的 name 完全一致
Composer 不按 Git 地址找包,而是靠 name 字段做精确匹配,大小写、斜杠、vendor 名都必须一字不差。
- 私有库根目录
composer.json中必须有"name": "myorg/utils",且不能是"MyOrg/Utils"或"myorg-utils" - 你在业务项目中
require的字符串必须和这个值完全相同,包括连字符、下划线、大小写 - 运行
composer show --all | grep myorg可验证是否被识别;若无输出,说明 name 不匹配或源未生效
版本依赖必须靠 Git tag,不是 composer.json 里的 version
对于 vcs 类型源,Composer 忽略私有库 composer.json 中的 version 字段,只认 Git tag。
- 必须打符合语义化格式的 tag,如
v1.0.0、1.2.3;v1.0或1.0不会被识别为有效版本 - 没打 tag 时,只能用
dev-main、dev-master这类分支别名,且需确保"minimum-stability": "dev"已设 - 执行
git tag -l确认 tag 已推送到远端;composer update --lock后检查composer.lock是否写入了该包的source和reference
真正卡住的地方往往不是配置语法,而是 Git 认证没通、tag 没推、name 大小写不一致这三处——它们不会报具体错误,只会统一表现为 Could not find package。










