环境变量清单

ai-lubricant 启动依赖配置项的唯一总表。数据服务(python main.py)读取 bootstrap_config.py,节点控制服务(python -m node_server)独立解析 node_server/config.py,不 import bootstrap_config。本页把散落在 部署文档各小节的字段集中成一份,便于一次性核对。

1. 解析优先级与约定

启动依赖统一按“环境变量优先 → .env → 内置默认值”解析。渠道、模型、API Key、重试和治理策略等业务配置存放在 PostgreSQL/Redis,不属于 .env。本地启动 python main.py / python -m node_server 会自动加载项目根 .env;外部环境变量优先于 .env

不要提交 .env其中包含数据库密码、内部 token、引导管理员密码和节点凭据加密密钥。.env 已被 .gitignore 排除;从 .env.example 复制模板后填入真实值。生产环境应通过 Secret 管理系统或环境变量注入敏感值。
  • 布尔值在 .env 中使用 true/false;环境变量还接受 1/0yes/noon/off
  • 「进程」列:数据 = 数据服务(main.py)读取,控制 = 节点控制服务(node_server)读取, = 两者都读。
  • 「必需」列指:当无环境变量、无 ini 值、无默认值时启动是否报 ConfigurationError
  • 所有配置均以 .env 变量为准,表中不再存在仅 INI 的字段。

2. [server] 数据服务监听

ini 字段环境变量进程必需/默认说明
host数据固定 0.0.0.0main.py 末尾硬编码 uvicorn.run(app, host="0.0.0.0", port=8001),ini 段实际未被 bootstrap_config 读取。
port数据固定 8001同上;需要其他地址或端口时用 uvicorn main:app --host ... --port ... 启动,不要只改 ini。

3. [postgres] 业务数据库(两进程共享)

ini 字段环境变量进程必需/默认说明
hostPOSTGRES_HOST必需PostgreSQL 主机。
portPOSTGRES_PORT必需,1–65535PostgreSQL 端口。
userPOSTGRES_USER必需数据库用户。
passwordPOSTGRES_PASSWORD必需数据库密码。
databasePOSTGRES_DATABASE,兼容 POSTGRES_DB必需主数据库名。
pool_min_sizePOSTGRES_POOL_MIN_SIZE数据默认 1单进程连接池最小连接数,至少为 1。
pool_max_sizePOSTGRES_POOL_MAX_SIZE数据默认 10单进程连接池上限,不能小于 pool_min_size。

4. [redis] 运行态真相源(两进程共享)

ini 字段环境变量进程必需/默认说明
hostREDIS_HOST必需Redis 主机。
portREDIS_PORT必需,1–65535Redis 端口。
dbREDIS_DB必需,≥0Redis 逻辑库。
prefix_key必需Redis key 命名空间;多套环境共用 Redis 时必须互不相同。
decode_responses必需必须是布尔值;示例配置为 true
max_connectionsREDIS_MAX_CONNECTIONS必需,示例 500单进程连接池上限;按进程数、Redis maxclients 和文件描述符容量规划。
stream_timeoutREDIS_STREAM_TIMEOUT数据默认 10 秒已取得连接后等待单条命令回包的最长时间;超时自愈重连,不影响 pubsub。
pool_timeoutREDIS_POOL_TIMEOUT数据默认 10 秒从连接池等待可用连接的最长时间。

5. [outbound] 出站上游连接池

数据服务转发到上游 LLM 的 aiohttp 连接池参数。每个出站模式实例(direct / url_prefix / network / node)独立持有连接池,环境变量对每个实例独立生效。无 ini 对应字段。

OUTBOUND_CONNECTOR_LIMIT_PER_HOST 是更细的脖子。到同一上游域名(如 api.openai.com)的连接再多账号也共用此额度;高并发打到单一上游时必须同时调大,只调 OUTBOUND_CONNECTOR_LIMIT 无效。
ini 字段环境变量进程必需/默认说明
OUTBOUND_CONNECTOR_LIMIT数据默认 100单出站模式实例的并发连接总数上限。1000 并发起步建议 ≥ 2000。
OUTBOUND_CONNECTOR_LIMIT_PER_HOST数据默认 32到同一上游域名的并发连接上限。集中打单一上游时按目标并发设;分散多上游可较小。

两值非正整数时回退默认。未设置时行为与历史版本一致(100 / 32),不影响现有部署。连接池上限还需与 POSTGRES_POOL_MAX_SIZEREDIS_MAX_CONNECTIONS、账号 concurrent_limit 之和、文件描述符上限一起规划,任一短板都成瓶颈。

6. [monkeycode] 兼容层与节点控制面

ini 字段环境变量进程必需/默认说明
compat_enabledMONKEYCODE_COMPAT_ENABLED数据false启用用户门户、多用户、项目、编辑器与节点适配 API;完整 Web 平台必须开启。
database_urlMONKEYCODE_DATABASE_URL控制复用主 PostgreSQL可选独立 asyncpg DSN;留空时 mc_* 表写入主库。
user_adapter_enabledMONKEYCODE_USER_ADAPTER_ENABLED数据false启用系统用户适配;开启时使用下面三个 system_user_* 字段。
system_user_idMONKEYCODE_SYSTEM_USER_ID数据见 .env.example系统用户身份;不要随意更换已经投入使用的 ID。
system_user_nameMONKEYCODE_SYSTEM_USER_NAME数据见 .env.example系统用户名。
system_user_emailMONKEYCODE_SYSTEM_USER_EMAIL数据见 .env.example系统用户邮箱。
bootstrap_admin_emailMONKEYCODE_BOOTSTRAP_ADMIN_EMAIL数据首次启动幂等创建平台管理员;email 为空时不创建。创建后应从 Secret 注入中移除明文密码。
bootstrap_admin_passwordMONKEYCODE_BOOTSTRAP_ADMIN_PASSWORD数据同上管理员密码。
bootstrap_admin_nameMONKEYCODE_BOOTSTRAP_ADMIN_NAME数据admin管理员显示名。
captcha_requiredMONKEYCODE_CAPTCHA_REQUIRED数据true登录/注册是否强制 cap.js 验证;关闭仅作为 CAPTCHA/Redis 故障逃生开关。
session_cookie_samesiteMONKEYCODE_SESSION_SAMESITE数据lax同源部署保持 lax;跨站浏览器前端需设 none。
session_cookie_secureMONKEYCODE_SESSION_SECURE数据falseHTTPS 生产环境建议 true;SameSite=None 时必须 true。
agent_compose_base_urlAGENT_COMPOSE_BASE_URL数据数据服务访问独立节点控制服务的内部地址,例如 http://127.0.0.1:8003
agent_compose_timeoutAGENT_COMPOSE_TIMEOUT数据30 秒数据服务调用节点控制服务的超时。
review_project_max_concurrency数据2每项目 review 任务池最大并发;全局默认,整主机统一调。
node_control_tokenNODE_CONTROL_TOKEN(兼容 AGENT_COMPOSE_NODE_API_TOKEN缺失时控制服务生成数据服务→控制服务内部 Bearer token;两个进程必须完全一致。旧名仅兼容读取,新部署使用此名称。
node_credential_encryption_keyNODE_CREDENTIAL_ENCRYPTION_KEY(兼容 AGENT_COMPOSE_NODE_MASTER_KEY控制缺失时控制服务生成AES-256 凭据加密密钥,接受 64 位 hex 或解码后 32 字节的 Base64;生成后不可轮换,否则已加密节点凭据全部失效。
node_server_public_urlAGENT_COMPOSE_NODE_SERVER_PUBLIC_URL控制Go 节点实际拨号地址;留空时部分引导链接会从当前请求 origin 推导。
node_server_enabledAGENT_COMPOSE_NODE_SERVER_ENABLED控制true节点功能紧急停用开关;不等于进程角色选择。
node_control_hostNODE_CONTROL_HOST控制0.0.0.0Hypercorn 监听地址。
node_control_portNODE_CONTROL_PORT控制8003Hypercorn 监听端口。
agent_compose_agent_imageAGENT_COMPOSE_AGENT_IMAGE控制docker/docker-compose 节点引导脚本使用的镜像。
agent_compose_node_bin_dirAGENT_COMPOSE_NODE_BIN_DIR控制自动探测 nodes/dist提供节点安装包下载的二进制目录。
node_default_session_cpuNODE_DEFAULT_SESSION_CPU控制1.0 核每个节点会话的全局 CPU 计费量;0 表示不按该维度准入。
node_default_session_memoryNODE_DEFAULT_SESSION_MEMORY控制1073741824 字节每个节点会话的全局内存计费量;0 表示不按该维度准入。
node_terminal_max_active_per_nodeNODE_TERMINAL_MAX_ACTIVE_PER_NODE控制10单节点最大活跃终端数,至少为 1。
node_terminal_detached_ttl_secondsNODE_TERMINAL_DETACHED_TTL_SECONDS控制1800 秒无浏览器挂载终端的存活秒数,至少 60。
.env 必须可写且持久化控制服务在缺少 token 或凭据加密密钥时会生成并回写 .env;写入失败会拒绝启动。在容器中必须挂载持久化配置,不能只把 .env 烘焙进一次性镜像。多副本控制服务也不能依赖各副本各自生成密钥。

7. [clickhouse] 请求 payload 双写(可选,默认关闭)

ini 字段环境变量进程必需/默认说明
request_payload_enabledCLICKHOUSE_REQUEST_PAYLOAD_ENABLED数据false启用 ClickHouse 数据源、payload 双写和对话存储。
request_payload_capture_enabledCLICKHOUSE_REQUEST_PAYLOAD_CAPTURE_ENABLED数据false是否捕获请求正文,开启前必须完成隐私评估。
addrCLICKHOUSE_ADDR数据ClickHouse 地址 host:port
databaseCLICKHOUSE_DATABASE数据ai_lubricant_logsClickHouse 库名。
usernameCLICKHOUSE_USERNAME数据ClickHouse 用户。
passwordCLICKHOUSE_PASSWORD数据ClickHouse 密码。
request_payload_ttl_daysCLICKHOUSE_REQUEST_PAYLOAD_TTL_DAYS数据30 天payload 保留天数。
max_payload_bytesCLICKHOUSE_MAX_PAYLOAD_BYTES数据262144 字节单条 payload 上限。

关闭 ClickHouse 时,模型代理主链路仍可工作;请求大字段双写和依赖 ClickHouse 的对话存储不可用。不要在未完成隐私、访问控制和 TTL 评估前捕获生产请求正文。

8. [marketplace] / [marketplace.consumer] 资源市场(可选)

两级开关:只填 repo_url 即「可看不可管」;再补 github_token 才出现 /manager/marketplace-admin 管理页。详细含义、获取方式与验证见 部署文档第 6 章

ini 字段环境变量section说明
repo_urlMARKETPLACE_REPO_URLmarketplace市场仓库地址(唯一必填)。owner/repo 由它解析。
github_branchMARKETPLACE_GITHUB_BRANCHmarketplace可选。留空用 main;地址里带 /tree/<分支> 时取那个分支。
github_tokenMARKETPLACE_GITHUB_TOKENmarketplacefine-grained token,仅「管市场」需要。仅服务端内存使用,从不传输给前端。
modulesMARKETPLACE_MODULESmarketplace模块白名单,逗号分隔,默认 mcp,plugins,skills,channels,prompts,node-versions
index_nameMARKETPLACE_INDEX_NAMEmarketplace每个模块的索引文件名,默认 index.json
repo_url / github_branch / modules / index_name同名 MARKETPLACE_*marketplace.consumer消费侧只读公开 raw;留空时回退到 [marketplace] 对应字段。
兼容旧写法早期版本要求分别填 github_ownergithub_repo,这两个字段仍然可用:填了 repo_url 以它为准,没填才回落到拆字段写法,已有部署升级后无需改配置。

9. 进程级环境变量(无 ini 对应)

环境变量进程默认说明
TZ系统时区;compose 内设为 Asia/Shanghai
DEBUG数据false进程调试标志;生产显式设为 false。
APP_VERSION数据dev用户门户公开的当前版本号。
EDITOR_SESSION_REAPER_INTERVAL数据300 秒编辑器会话回收扫描间隔,最小 60 秒。
EDITOR_SESSION_PENDING_TIMEOUT数据1800 秒pending 会话超时,最小 60 秒。
EDITOR_SESSION_IDLE_TIMEOUT数据86400 秒空闲会话超时,最小 300 秒。
NODE_BINDING_RECONCILE_INTERVAL数据300 秒节点授权关系对账间隔,最小 60 秒。