Composer 的 bearer 配置仅用于非 GitHub 私有仓库,必须按 host 精确匹配(如 repo.mycompany.com),且需在 composer.json 中明确定义对应 repository,否则 install 时不会发送 Authorization: Bearer 头。

Composer 本身不直接支持标准的 Bearer 认证(即 Authorization: Bearer xxx),但它提供了 bearer 类型的配置项,专用于向**非 GitHub 的私有仓库**(如自建 Packagist、GitLab、Nexus 等)发送带 Authorization: Bearer 头的请求。
composer config bearer.host.example.org 是唯一正确写法
Composer 的 bearer 配置必须按 host 精确匹配,且不能带协议或路径。比如你的私有包源是 https://repo.mycompany.com,那 host 就是 repo.mycompany.com,不是 https://repo.mycompany.com 或 api.repo.mycompany.com。
- 正确命令:
composer config --global bearer.repo.mycompany.com ghp_abc123... - 错误写法:
composer config --global bearer.https://repo.mycompany.com ...(会静默失败) - 错误写法:
composer config --global bearer.api.repo.mycompany.com ...(host 不匹配,请求时不会加头) - 该配置会写入
~/.composer/auth.json的"bearer"字段下,格式为:{ "bearer": { "repo.mycompany.com": "ghp_abc123..." } }
为什么 composer install 不触发 Bearer 头?检查这三点
配完没效果,大概率是 Composer 根本没走到这个认证分支——它只在访问你明确配置为 repository 的源时才用 bearer,而不是所有 HTTPS 请求都加。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- 确认
composer.json中定义了对应源:"repositories": [{ "type": "composer", "url": "https://repo.mycompany.com" }] - 确认包的
composer.json里dist.url或source.url域名与bearer配置的 host 完全一致(含子域) - 运行
composer install -v,看日志是否出现Using bearer token for repo.mycompany.com;没出现就说明没命中
GitHub 不走 bearer 配置,别混用
GitHub 官方不接受 Bearer 认证方式,它只认 github-oauth(本质是 Authorization: Basic 编码后的 token)。如果你对 github.com 配了 bearer,它完全无效,也不会报错,只是被忽略。
- GitHub 必须用:
composer config --global github-oauth.github.com your_token_here - GitLab 私有实例可选两种:OAuth token(
gitlab-oauth)或 Bearer Token(bearer.gitlab.mycompany.com),看后端 API 实现 - 若服务返回
401 Unauthorized且响应头含WWW-Authenticate: Bearer,才说明它期望bearer配置
权限与安全:token 别多给,文件权限别忽略
bearer token 通常由私有仓库服务颁发,权限模型各异,但原则一样:最小够用。
- 避免使用管理员 token;只要求
read_package或api_read类权限 - Linux/macOS 下确保
~/.composer/auth.json权限为600:chmod 600 ~/.composer/auth.json,否则 Composer 会跳过整个文件 - Windows 用户注意:PowerShell 会解析
$符号,建议用 CMD 运行composer config命令,或把 token 用单引号包住:composer config --global bearer.repo.mycompany.com '$TOKEN'
真正容易被忽略的是 host 匹配粒度和 verbose 日志验证——不看 -v 输出,你永远不知道 Composer 到底有没有用上你配的 token。

















