跳转至

环境变量参考

本文列出 daemon (futu-opend) / CLI (futucli / futu-mcp) 支持的全部 FUTU_* 环境变量, 用途, 默认值, 与配套 CLI flag.


凭据 (Credentials)

Env var 用途 默认 配套 CLI flag
FUTU_ACCOUNT 登录账号 hint。futucli unlock-trade / futu-mcp 未传 --trade-pwd-account 时可用它选择账号级交易密码;部分 helper 脚本也用它启动 daemon (按需) daemon 请优先用 --login-account <ACCOUNT>
FUTU_PWD 登录密码 (明文 / 32-hex MD5 自动判别) (必填或用 CLI flag) --login-pwd <PWD>
FUTU_TRADE_PWD 交易解锁密码 (futucli unlock / MCP unlock) (按需) --trade-pwd <PWD>
FUTU_TRADE_PWD_ACCOUNT 账号级交易密码 keychain lookup 的账号 hint (按需) --trade-pwd-account <ACCOUNT>
FUTU_API_KEY futucli stock-note-labels / stock-notes / set-stock-note 转发到 OpenD REST 时使用的 Bearer token;只作为这些命令 --api-key 的环境变量入口 (安全 KeyStore 模式按需) futucli ... --api-key <KEY>
FUTU_MCP_API_KEY futu-mcp --keys-file stdio scope 模式的进程级默认 API key;HTTP scope 模式不使用该值兜底,每个 /mcp 请求必须自带有效 Authorization: Bearer (stdio scope 模式必填;HTTP 不适用) futu-mcp --api-key <KEY>
FUTU_MCP_OPEND_REST_URL futu-mcp 受保护真实资金写工具(组订单 / 算法单 / 仓位复合动作)在 daemon 关闭裸 TCP(安全 KeyStore 模式)时转发到的 OpenD REST base URL;未设置时这些写工具拒绝执行 (按需;仅安全部署) futu-mcp --opend-rest-url <URL>

安全提示: 推荐用 systemd EnvironmentFile=/etc/futu-opend.env (mode 0600) 传, 不在 shell history / ps aux 暴露明文.


连接地址 (Connection)

Env var 用途 默认
FUTU_GATEWAY MCP / futucli 连 daemon 的 gRPC 地址 127.0.0.1:11111
FUTU_REST_URL futucli 连 daemon 的 REST URL http://127.0.0.1:11112
FUTU_ADDR examples/live_test 用的 daemon 地址 127.0.0.1:11111

浏览器入口 / Metrics 安全

Env var 用途 默认
FUTU_REST_ALLOWED_ORIGINS REST CORS Origin allowlist, 逗号分隔;* / any / all 表示开发用 wildcard 已配置 REST key 时只允许 loopback;legacy unauth 模式保持 wildcard 兼容
FUTU_WS_ALLOWED_ORIGINS WebSocket handshake Origin allowlist, 逗号分隔 未设置时只允许 loopback Origin;非浏览器客户端无 Origin 时不走此检查
FUTU_METRICS_PUBLIC=1 /metrics 回退为公开访问并保留明文 key_id label 默认按 auth posture 保护 /metrics,且 metrics 中 key_id redacted

生产建议:

  • Browser UI 场景显式配置 exact origin,例如 https://app.example.com
  • FUTU_METRICS_PUBLIC=1 只建议在 metrics 端口由防火墙 / sidecar 严格保护时使用。

长跑 daemon 加固 (Long-running hardening, v1.4.103+)

兼容 env opt-in, default OFF。也可以用 futu-opend --client-sig-proactive-refresh / --client-sig-reactive-refresh 或 TOML client_sig_proactive_refresh = true / client_sig_reactive_refresh = true 打开。详细见 长跑 daemon 部署指南.

Env var 用途 默认 风险
FUTU_CLIENT_SIG_PROACTIVE_REFRESH=1 client_sig 失效前 1h 主动调 refresh OFF 低 — 单次 refresh 行为;请先用非关键账户验证服务端接受度
FUTU_CLIENT_SIG_REACTIVE_REFRESH=1 tcp_login 持续失败 (≥3 次) 时反应式 refresh OFF 中 — ret_type=15 含义不止 client_sig 失效 (含反刷限流 / 风控), 多账号 daemon 误 refresh 可能影响其他账号; 单账号场景安全
FUTU_QOT_RELOGIN_BACKOFF_MS QOT login health 自愈 ladder, 4 个毫秒值: fail0,fail1,fail2,fail3+ 60000,120000,240000,600000 中 — 只给真机验证 / 长跑排障调短;生产不建议频繁 relogin
FUTU_WEBSIG_REFRESH WebSig 主动刷新总开关;只在紧急回滚时设为 0 / false / no / off,改动后重启 daemon ON 高 — 关闭后 WebSig 过期只能依赖失败后的重连/换票恢复
FUTU_SESSION_KEY_REFRESH 控制 C++ 对齐的 TCP session-key 周期刷新 actor;刷新失败会使当前连接失效并进入统一重连 ON;仅 0 / false / no / off 关闭 低 — 紧急停用阀,正常运行无需设置
FUTU_WEBTCP_SITE_CONFIG_REFRESH 启用 WebTCP site-config 的周期刷新 timer;关闭时仍会首拉,并在 commconfig 目标变化后重拉 OFF,仅 1 / true / yes / on 开启 低 — last-good 会继续保留

何时将两个 client-sig 开关切为 default ON:需要足够的真实部署样本证明 FUTU_CLIENT_SIG_PROACTIVE_REFRESHFUTU_CLIENT_SIG_REACTIVE_REFRESH 不会触发额外限流或风控。这两个开关当前 仍是 experimental opt-in;本段不适用于表中已经默认开启的 WebSig 和 session-key 刷新。


客户端 (CLI / SDK / MCP)

Env var 用途 默认
FUTU_CLI_AUTO_IDEM=1 futucli 自动派生 idempotency_key (基于参数 hash) — place-order/modify/cancel OFF
FUTU_UPDATE_CHECK_URL futucli version --check / futucli doctor 更新检查的 version.json URL 覆盖 未设置时用 https://futuapi.com/version.json;入口不可用、非 2xx 或 schema 不兼容时 fail closed

启动与本地缓存

Env var 用途 默认
FUTU_STOCK_LIST_STARTUP_WAIT_SECS 本地股票列表为空时,ready 前等待首轮 stock-list sync 的秒数;超时后后台继续同步 30 表示不等待
FUTU_LANGUAGE_PACK_CACHE_DIR 语言包 manifest / last-good cache 根目录 OS cache dir 下的 futu-opend-rs/language-packs

行情配额调试

Env var 用途 默认
FUTU_HISTORY_KLINE_CLOUD_SYNC 是否与官方 OpenD/App 同步历史 K 线已使用额度;仅接受 true / false true;可用 --history-kline-cloud-sync false 或配置项 history_kline_cloud_sync = false 进入只使用本地额度的兼容模式
FUTU_HISTORY_KL_QUOTA_MAX 覆盖本进程历史 K 线 quota 周期内可请求的唯一 stock 数上限;未设置时跟随账号动态额度 未设置(冷启动回退 100
FUTU_HISTORY_KL_QUOTA_PERIOD_SECS 历史 K 线 quota 周期长度 (秒) 604800 (7 天)

说明:历史 K 线总额度优先使用登录后 CMD6024 返回的账号动态额度(例如官方 OpenD UI 展示的历史 K 线额度)。FUTU_HISTORY_KL_QUOTA_MAX 只用于显式覆盖 / 压测 / 调试;冷启动且尚未拿到动态额度时会先按 C++ 默认值 100 fail-closed。


交易诊断

Env var 用途 默认
FUTU_HISTORY_ORDER_AUDIT=1 打开 history-orders backend row 过滤 / 投影审计日志,用于排查 Rust 与官方 C++ history order 数量或字段差异 OFF

测试 / Chaos engineering

Env var 用途 默认
FUTU_E2E_SIM_ACC E2E 测试用 sim 账号 (test-only)
FUTU_E2E_SIM_PWD E2E 测试用 sim 密码 (test-only)
FUTU_E2E_SIM_PLATFORM E2E 测试 platform (futunn / moomoo) futunn
FUTU_CHAOS_ENABLE=1 chaos test 故障注入开关 OFF
FUTU_MULTI_VERSION_GUARD_STRICT=1 multi_version_smoke.sh 严格模式 (binary fingerprint diff 命中 → exit 1) (ship.sh A9 自动设)

Release tooling

Env var 用途
FUTU_MULTI_VERSION_GUARD_STRICT=1 A9 stage 强设, ship-blocker fail 阻塞发版
FUTU_MV_CACHE_DIR scripts/multi_version_smoke.sh 下载历史二进制的缓存目录

Build metadata

Env var 用途 默认
FUTU_OPEND_RS_GIT_SHA 覆盖编译进 device_alias / 版本诊断里的 git SHA build script 自动读取 git rev-parse --short HEAD

命名约定

FUTU_<SUBSYSTEM>_<FEATURE>_<ACTION>=<VALUE>:

  • FUTU_ prefix — 所有 daemon / CLI / SDK 共享 namespace
  • subsystem: CLIENT_SIG / TRADE / CLI / E2E / CHAOS
  • feature/action: 描述功能本身, 不暴露内部编号 (例如不用 INTERNAL_123, 而用 PROACTIVE_REFRESH 描述行为)
  • value: 一律 1 = enable, 其他 / unset = disable

与 CLI flag 的关系

一般优先级为 CLI flag > env var > 配置文件 > 内置默认;具体功能如有兼容性约束, 以对应条目为准。FUTU_HISTORY_KLINE_CLOUD_SYNC 的优先级是 CLI > 配置文件 > env > 默认 true

例: FUTU_PWD=foo futu-opend --login-pwd bar → 用 bar (CLI flag).