环境变量详解
环境变量用于给容器内的 CLI 工具传递配置信息,如 BASE_URL、AUTH_TOKEN 等敏感信息。
设置方式
MANYOYO 支持两种方式设置环境变量:
1. 字符串形式(命令行)
使用 -e 参数直接在命令行中指定环境变量:
bash
manyoyo run -e "ANTHROPIC_BASE_URL=https://xxxx" -e "ANTHROPIC_AUTH_TOKEN=your-key" -x claude特点:
- 适合临时使用或测试
- 支持多次使用
-e参数 - 不适合包含敏感信息(会在命令历史中保留)
2. 文件形式(推荐)
使用 --ef 参数从文件加载环境变量:
bash
manyoyo run --ef /abs/path/anthropic_claudecode.env -x claude特点:
- 适合长期使用和团队协作
- 敏感信息不会出现在命令历史中
- 支持版本控制(排除
.env文件) - 支持注释和更好的组织
环境文件格式
环境文件使用 .env 格式,支持以下语法:
bash
# 这是注释,会被忽略
# 标准格式(推荐)
export ANTHROPIC_BASE_URL="https://api.anthropic.com"
export ANTHROPIC_AUTH_TOKEN="sk-xxxxxxxx"
# 简化格式(也支持)
API_TIMEOUT_MS=3000000
ANTHROPIC_MODEL="claude-sonnet-4-5"
# 单引号和双引号都支持
TESTPATH='/usr/local/bin'
MESSAGE="Hello World"
# 注释可以放在任何位置
# export DISABLED_VAR="不会生效"注意事项:
- 以
#开头的行会被忽略 - 支持
KEY=VALUE和export KEY=VALUE两种格式 - 值可以用单引号、双引号或不加引号
- 空行会被忽略
环境文件路径规则
--ef 仅支持绝对路径:
bash
manyoyo run --ef /abs/path/myconfig.env
# 加载:指定绝对路径文件常用示例
Claude Code 环境配置
创建环境文件:
bash
# 创建环境文件目录(绝对路径)
mkdir -p $HOME/.manyoyo/env/
# 创建 Claude Code 环境文件
cat > $HOME/.manyoyo/env/anthropic_[claudecode]_claudecode.env << 'EOF'
export ANTHROPIC_BASE_URL="https://api.anthropic.com"
# export CLAUDE_CODE_OAUTH_TOKEN="sk-xxxxxxxx" # OAuth 方式
export ANTHROPIC_AUTH_TOKEN="sk-xxxxxxxx" # API Key 方式
export API_TIMEOUT_MS=3000000
export ANTHROPIC_MODEL="claude-sonnet-4-5"
export ANTHROPIC_DEFAULT_OPUS_MODEL="claude-opus-4-5"
export ANTHROPIC_DEFAULT_SONNET_MODEL="claude-sonnet-4-5"
export ANTHROPIC_DEFAULT_HAIKU_MODEL="claude-haiku-4-5"
export CLAUDE_CODE_SUBAGENT_MODEL="claude-sonnet-4-5"
EOF使用环境文件:
bash
# 在任意目录下使用(绝对路径)
manyoyo run --ef $HOME/.manyoyo/env/anthropic_[claudecode]_claudecode.env -x claude
# 或结合 runs 配置使用
manyoyo run -r claude # ~/.manyoyo/manyoyo.json 的 runs.claude 中指定 envFileCodex 环境配置
创建环境文件:
bash
# 创建环境文件目录(绝对路径)
mkdir -p $HOME/.manyoyo/env/
# 创建 Codex 环境文件
cat > $HOME/.manyoyo/env/openai_[gpt]_codex.env << 'EOF'
export OPENAI_BASE_URL=https://chatgpt.com/backend-api/codex
EOF使用环境文件:
bash
# 在任意目录下使用(绝对路径)
manyoyo run --ef $HOME/.manyoyo/env/openai_[gpt]_codex.env -x codex
# 或结合 runs 配置使用
manyoyo run -r codex # ~/.manyoyo/manyoyo.json 的 runs.codex 中指定 envFileGemini 环境配置
创建环境文件:
bash
# 创建 Gemini 环境文件
cat > $HOME/.manyoyo/env/gemini.env << 'EOF'
export GEMINI_API_KEY="your-api-key"
export GEMINI_MODEL="gemini-2.0-flash-exp"
EOF使用环境文件:
bash
manyoyo run --ef $HOME/.manyoyo/env/gemini.env -x geminiOpenCode 环境配置
创建环境文件:
bash
# 创建 OpenCode 环境文件
cat > $HOME/.manyoyo/env/opencode.env << 'EOF'
export OPENAI_API_KEY="your-api-key"
export OPENAI_BASE_URL="https://api.openai.com/v1"
EOF使用环境文件:
bash
manyoyo run --ef $HOME/.manyoyo/env/opencode.env -x opencode环境变量优先级
当使用配置文件时,环境变量的加载顺序为:
- 全局配置中的
envFile数组 runs.<name>中的envFile数组- 命令行
--ef参数 - 全局配置中的
env对象 runs.<name>中的env对象- 命令行
-e参数
注意:后加载的环境变量会覆盖先加载的同名变量。
示例:
bash
# 全局配置:envFile: ["/abs/path/base.env"]
# runs.claude:envFile: ["/abs/path/override.env"]
# 命令行:--ef /abs/path/custom.env -e "VAR=value"
#
# 加载顺序:
# 1. /abs/path/base.env
# 2. /abs/path/override.env
# 3. /abs/path/custom.env
# 4. 全局配置的 env 对象
# 5. runs.claude 的 env 对象
# 6. 命令行的 VAR=valueMANYOYO 自身环境变量
除传入容器的 env / envFile 外,MANYOYO 还支持用于网页认证的自身环境变量:
MANYOYO_SERVER_USERMANYOYO_SERVER_PASS
这两个变量用于 serve 模式认证,不会注入到容器内业务进程。优先级详见:
最佳实践
1. 使用命名规范
建议使用描述性的文件名:
bash
/abs/path/env/
├── anthropic_[claudecode]_claudecode.env
├── openai_[gpt]_codex.env
├── gemini_production.env
└── opencode_dev.env2. 分离敏感信息
将敏感信息(如 API Key)单独存储:
bash
# base.env - 非敏感配置
export ANTHROPIC_BASE_URL="https://api.anthropic.com"
export API_TIMEOUT_MS=3000000
# secrets.env - 敏感信息(不提交到版本控制)
export ANTHROPIC_AUTH_TOKEN="sk-xxxxxxxx"3. 使用配置文件管理
将环境文件配置到 manyoyo.json 的 runs 中,避免重复输入:
json5
// ~/.manyoyo/manyoyo.json(片段)
{
"runs": {
"claude": {
"envFile": [
"/abs/path/anthropic_base.env",
"/abs/path/anthropic_secrets.env"
]
}
}
}4. 验证环境变量
使用调试命令验证环境变量是否正确加载:
bash
# 查看最终配置
manyoyo config show -r claude
# 在容器中验证
manyoyo run -r claude -x env | grep ANTHROPIC故障排查
环境变量未生效
症状:CLI 工具报告缺少必需的环境变量
解决方案:
- 检查文件格式(必须是
.env格式) - 确认文件路径正确
- 使用
config show查看配置 - 在容器中运行
env命令检查
bash
# 检查配置
manyoyo config show --ef /abs/path/myconfig.env
# 在容器中检查环境变量
manyoyo run --ef /abs/path/myconfig.env -x env环境变量值错误
症状:环境变量值不是预期的
解决方案:
- 检查是否有多个配置源设置了同名变量
- 确认优先级顺序
- 检查文件中是否有重复定义
bash
# 查看所有生效的环境变量
manyoyo run --ef /abs/path/myconfig.env -x 'env | sort'