跳到主要内容

环境变量

Anyy 通过两种方式使用环境变量:影响 Anyy 自身的 runtime selection variables, 以及解析 provider、channel、MCP 或 media credentials 的 env: secret references。持久 secret 优先使用 profile-local secret: refs;当周围的 service manager 已负责注入凭据时再使用 env:

值应该放在哪里

值类型推荐位置
一次性的 profile/home 选择--home--profile 等 CLI flags。
持久 provider 或 channel credentialsProfile-local secret: refs。
Service-manager 注入的 credentialsenv:NAME refs。
MCP stdio server environmentmcp.client.servers.<id>.env
非 secret runtime defaultsconfig.yaml

env: refs 会在 Anyy 需要该值时解析。未设置或空变量会被视为 missing secret。

Home 与 Profile

变量使用者含义
ANYY_HOMECLI、workspace paths、service scripts、installer显式 Anyy home directory。
ANYY_DEFAULT_HOMEProfile manager、dashboard tests、profile-aware commands默认 base home/profile root override。
HOMEInstaller fallbackANYY_HOME 未设置时供 install scripts 使用。
NO_COLORCLI renderer设置后禁用彩色输出。
TERM=dumbCLI renderer为 dumb terminals 禁用 terminal styling。

多数命令也接受 --home PATH;运行一次性诊断时,它通常比依赖环境变量更清晰。

Provider Credentials

Provider credentials 通常从 config.yaml 引用:

providers:
- id: openai-compatible
api_key_ref: env:OPENAI_API_KEY

示例 config 中常见变量包括:

变量典型用途
OPENAI_API_KEYOpenAI-compatible 或 OpenAI Responses provider 示例。
ANTHROPIC_API_KEYAnthropic Messages provider 示例。
DEEPSEEK_API_KEYDeepSeek-compatible 示例。
GEMINI_API_KEYGoogle Gemini provider 示例。

这些名称不是每个 provider 的硬编码要求。任何 api_key_ref: env:NAMEcredential_ref: env:NAME 都会读取 NAME

Channel Credentials

Channel setup 可以把 credentials 存为 profile-local secret: refs,这是 long-running services 的推荐方式。Channel doctor 和 live smoke 也会使用环境变量执行 operator-run tests。

Live smoke 总开关:

变量含义
ANYY_LIVE_CHANNEL_TESTS=1允许 live channel smoke tests 联系外部平台。

Channel-specific live-smoke variables:

ChannelVariables
TelegramANYY_TELEGRAM_TEST_TOKEN, ANYY_TELEGRAM_TEST_CHAT_ID
SlackANYY_SLACK_TEST_BOT_TOKEN, ANYY_SLACK_TEST_CHANNEL_ID
DiscordANYY_DISCORD_TEST_BOT_TOKEN, ANYY_DISCORD_TEST_CHANNEL_ID
FeishuANYY_FEISHU_TEST_RECEIVE_ID plus either ANYY_FEISHU_TEST_TENANT_ACCESS_TOKEN or both ANYY_FEISHU_TEST_APP_ID and ANYY_FEISHU_TEST_APP_SECRET
DingTalkANYY_DINGTALK_TEST_SESSION_WEBHOOK
QQ BotANYY_QQBOT_TEST_APP_ID, ANYY_QQBOT_TEST_CLIENT_SECRET, ANYY_QQBOT_TEST_TARGET_ID
Facebook MessengerANYY_FACEBOOK_TEST_PAGE_ID, ANYY_FACEBOOK_TEST_PAGE_ACCESS_TOKEN, ANYY_FACEBOOK_TEST_RECIPIENT_ID
EmailANYY_EMAIL_TEST_ADDRESS, ANYY_EMAIL_TEST_PASSWORD, ANYY_EMAIL_TEST_IMAP_HOST, ANYY_EMAIL_TEST_SMTP_HOST
IRCANYY_IRC_TEST_HOST, ANYY_IRC_TEST_NICK
SMSANYY_SMS_TEST_ACCOUNT_SID, ANYY_SMS_TEST_AUTH_TOKEN, ANYY_SMS_TEST_FROM_NUMBER, ANYY_SMS_TEST_TO_NUMBER
LINEANYY_LINE_TEST_CHANNEL_ACCESS_TOKEN, ANYY_LINE_TEST_CHANNEL_SECRET, ANYY_LINE_TEST_TARGET_ID
WhatsAppANYY_WHATSAPP_TEST_BRIDGE_URL, ANYY_WHATSAPP_TEST_CHAT_ID

Live smoke commands 是 operator tests;普通 anyy channels doctor 不会因为这些变量存在 就联系外部平台。

MCP Credentials

MCP server environment 按 server 配置:

mcp:
client:
servers:
github:
transport: stdio
command: npx
env:
GITHUB_TOKEN: secret:mcp/github/token

mcp.client.servers.<id>.env 下的值可以是 literal strings,也可以是 secret:mcp/github/tokenenv:GITHUB_TOKEN 这样的 secret refs。Stdio transport 默认不会继承任意 Anyy environment;只传 server 需要的变量。

这是有意设计。除非你显式暴露,否则 provider keys、channel tokens 和无关 shell state 不会进入 MCP subprocesses。

Voice 与 Media

Voice 和 media provider credentials 使用同一套 env:secret: ref scheme:

tts:
openai:
api_key_ref: env:OPENAI_API_KEY
media_understanding:
audio:
providers:
transcriber:
credential_ref: secret:media/transcriber/token

配置 credentials 本身不会启用功能。相关的 enabled、provider、model 和 capability 字段仍然 控制 runtime use。

Debugging

Installer 和 operator variables:

变量含义
ANYY_RELEASE_BASE_URL覆盖 scripts/install.sh 使用的 release base URL。
ANYY_LATEST_URL覆盖返回 latest release version 的 endpoint。
ANYY_INSTALL_COMPACT=1要求 installer 使用 compact install behavior。
ANYY_QUIET=1支持时减少 installer output。

调试规则:

  • 优先使用 anyy status --jsonanyy doctor --json,不要打印原始 environment。
  • 不要把 provider keys、channel tokens、OAuth credentials 或 live-smoke secrets 粘贴到 issue reports。
  • 当变量通过 env:NAME 使用时,未设置或空值会被视为 missing secret。