跳转至

环境变量全集

覆盖范围: TypeScript 代理(10 文件) + Electron 桌面壳 + Python MVP 总计: 30+ 个环境变量,5 个分类

1. 代理配置 (proxy/src/)

变量 必需 默认值 使用文件 说明
MONKEYCODE_BASE_URL https://monkeycode-ai.com auth.ts, task-runner.ts, server.ts 后端地址
PROXY_PORT 9090 server.ts:24 代理监听端口
ACCOUNT_POOL_FILE server.ts:37 号池 JSON 文件路径

代码示例: 代理环境变量如何加载

// server.ts: 环境变量解析
const PORT = parseInt(process.env.PROXY_PORT || "9090", 10)
const poolFile = process.env.ACCOUNT_POOL_FILE || ""

// task-runner.ts: 任务默认配置
const TASK_TIMEOUT_MS = parseInt(process.env.MONKEYCODE_TASK_TIMEOUT_MS || "3600000", 10)
const DEFAULT_HOST_ID = process.env.MONKEYCODE_HOST_ID || "public_host"
const DEFAULT_IMAGE_ID = process.env.MONKEYCODE_IMAGE_ID || ""

2. 认证变量 (proxy/src/auth.ts)

变量 必需 默认值 说明
MONKEYCODE_EMAIL 条件 登录邮箱(与 PASSWORD 配对)
MONKEYCODE_USERNAME EMAIL 的别名
MONKEYCODE_PASSWORD 条件 明文密码
MONKEYCODE_PASSWORD_HASH 密码哈希值(备用)
MONKEYCODE_CAPTCHA_TOKEN go-cap 验证码 token
MONKEYCODE_LOGIN_MODE "user" 登录模式: "user" / "team"
MONKEYCODE_SESSION_COOKIE 条件 从浏览器提取的 Session Cookie

认证优先级链

// auth.ts 构造函数 — 5 层回退
constructor() {
  // 1. 构造函数参数(最高优先级)
  // 2. ENV: MONKEYCODE_SESSION_COOKIE
  // 3. ENV: MONKEYCODE_EMAIL + MONKEYCODE_PASSWORD
  // 4. ENV: MONKEYCODE_USERNAME + MONKEYCODE_PASSWORD_HASH
  // 5. 报错(无凭据)
  this.email = process.env.MONKEYCODE_EMAIL || process.env.MONKEYCODE_USERNAME || ""
  this.passwordHash = process.env.MONKEYCODE_PASSWORD_HASH || ""
  this.captchaToken = process.env.MONKEYCODE_CAPTCHA_TOKEN || ""
  const plainPassword = process.env.MONKEYCODE_PASSWORD || ""
  if (plainPassword && !this.passwordHash) {
    this.passwordHash = plainPassword.trim()
  }
  const existingCookie = process.env.MONKEYCODE_SESSION_COOKIE || ""
  if (existingCookie) {
    this.sessionCookie = existingCookie
    this.lastAuthTime = Date.now()
  }
}

3. 任务与 VM 变量 (proxy/src/task-runner.ts)

变量 必需 默认值 说明
MONKEYCODE_IMAGE_ID VM 镜像 UUID(任务创建必需)
MONKEYCODE_HOST_ID public_host VM 宿主机 ID
MONKEYCODE_TASK_TIMEOUT_MS 3600000 (1h) 任务最大运行时间(ms)

IMAGE_ID 发现流程

// admin-login.ts — 自动从已有任务中发现 image_id
export async function discoverImageId(sessionCookie: string) {
  const resp = await fetch(
    `${BASE_URL}/api/v1/users/tasks?page=1&size=5`,
    { headers: { Cookie: `monkeycode_ai_session=${sessionCookie}` } }
  )
  const data = await resp.json()
  for (const task of data.data?.tasks || []) {
    if (task.image?.id) {
      return { imageId: task.image.id, imageName: task.image.name }
    }
  }
  return null
}

4. Electron 桌面壳变量

变量 默认值 使用位置 说明
MONKEYCODE_DESKTOP_URL https://monkeycode-ai.com main.cjs:102 桌面壳加载地址
MONKEYCODE_DESKTOP_START_PATH /console/ main.cjs:9 登录后的默认路径
MONKEYCODE_LOAD_LOCAL_DIST main.cjs:90 加载本地前端构建
VITE_DEV_SERVER_URL http://localhost:11180 main.cjs:87 开发模式 Vite 地址
// Electron main.cjs — 4 种加载模式
// 1. 开发模式
if (isDev) {
  win.loadURL(desktopEntryUrl(process.env.VITE_DEV_SERVER_URL || "http://localhost:11180"))
}
// 2. 本地构建
else if (process.env.MONKEYCODE_LOAD_LOCAL_DIST === "1") {
  win.loadFile(localDistIndexHtml())
}
// 3. 生产模式(默认)
else {
  win.loadURL(desktopEntryUrl(process.env.MONKEYCODE_DESKTOP_URL))
}
// 4. 自定义路径
const START_PATH = process.env.MONKEYCODE_DESKTOP_START_PATH || "/console/"

5. Go 后端变量

变量 默认值 说明
MONKEYCODE_REDIS_ADDR localhost:6379 Redis 地址
MONKEYCODE_REDIS_PASSWORD Redis 密码
MONKEYCODE_DB_DSN PostgreSQL 连接串
MONKEYCODE_SERVER_PORT 8080 后端监听端口
MONKEYCODE_STRIPE_KEY Stripe API Key(生产版)
MONKEYCODE_WECHAT_* 微信支付配置(生产版)

6. Python MVP 变量

变量 默认值 说明
MONKEYCODE_BASE_URL https://monkeycode-ai.com 同 TS 代理
MONKEYCODE_SESSION_COOKIE 同 TS 代理
MONKEYCODE_USERNAME 同 TS 代理
MONKEYCODE_PASSWORD 同 TS 代理
MONKEYCODE_IMAGE_ID 同 TS 代理
PROXY_REAL_PORT 9091 Python 代理端口(与 TS 代理 9090 区分)
MONKEYCODE_TASK_TIMEOUT_MS 3600000 任务超时(ms)

7. 完整 .env 示例

# === MonkeyCode 代理配置 ===
MONKEYCODE_BASE_URL=https://monkeycode-ai.com
PROXY_PORT=9090

# === 认证(二选一) ===
# 方式 1: Session Cookie(推荐)
MONKEYCODE_SESSION_COOKIE=your_session_cookie_here

# 方式 2: 密码登录
# MONKEYCODE_EMAIL=user@example.com
# MONKEYCODE_PASSWORD=your_password

# === 号池(可选)===
ACCOUNT_POOL_FILE=./accounts.json

# === 任务配置 ===
MONKEYCODE_IMAGE_ID=uuid_from_discover
MONKEYCODE_HOST_ID=public_host
MONKEYCODE_TASK_TIMEOUT_MS=3600000

# === 调试 ===
# NODE_TLS_REJECT_UNAUTHORIZED=0  # ⚠️ 仅测试用

相关章节