# ─── 必填 ─────────────────────────────────────────────────────────────────── DATABASE_URL=postgresql://postgres:password@localhost:5432/mirrai # 生产环境必填。生成随机密钥:node -e "console.log(require('crypto').randomBytes(32).toString('hex'))" JWT_SECRET= # ─── AI 提供商(至少配置一个)───────────────────────────────────────────────── DEFAULT_LLM_PROVIDER=openai # OpenAI OPENAI_API_KEY= OPENAI_BASE_URL=https://api.openai.com/v1 OPENAI_MODEL=gpt-4o # Atlas Cloud (OpenAI-compatible; requests are submitted once without automatic retries) ATLASCLOUD_API_KEY= ATLAS_BASE_URL=https://api.atlascloud.ai/v1 ATLAS_MODEL=google/gemini-3-flash-preview # Cheaper Inference (OpenAI-compatible) CHEAPER_INFERENCE_API_KEY= CHEAPER_INFERENCE_BASE_URL=https://api.cheaperinference.com/v1 CHEAPER_INFERENCE_MODEL=gpt-5.4-mini # DeepSeek DEEPSEEK_API_KEY= DEEPSEEK_BASE_URL=https://api.deepseek.com/v1 DEEPSEEK_MODEL=deepseek-chat # Kimi (Moonshot) KIMI_API_KEY= KIMI_BASE_URL=https://api.moonshot.cn/v1 KIMI_MODEL=moonshot-v1-8k # Claude CLAUDE_API_KEY= CLAUDE_MODEL=claude-sonnet-4-6 CLAUDE_BASE_URL=https://api.anthropic.com # Ollama (本地) OLLAMA_URL=http://localhost:11434 OLLAMA_MODEL=llama3 # Dify DIFY_API_KEY= DIFY_URL= # 讯飞星火 XUNFEI_APP_ID= XUNFEI_API_KEY= XUNFEI_API_SECRET= XUNFEI_MODEL_VERSION=v3.5 # 通义千问 TONGYI_API_KEY= TONGYI_URL= TONGYI_MODEL=qwen-turbo # 豆包 DOUBAO_API_KEY= DOUBAO_BASE_URL= DOUBAO_MODEL= # 302AI _302AI_API_KEY= # ─── 微信机器人(可选)────────────────────────────────────────────────────── # 微信官方 ClawBot 通道(腾讯 iLink 协议)。需微信 8.0.70+ 且「我→设置→插件」中有「微信 ClawBot」入口。 WECHAT_ENABLED=false # 扫码登录使用的 bot_type(对齐官方插件默认值) WECHAT_BOT_TYPE=3 # 腾讯 iLink API 地址(一般无需修改) WECHAT_ILINK_BASE_URL=https://ilinkai.weixin.qq.com WECHAT_ILINK_CDN_URL=https://novac2c.cdn.weixin.qq.com/c2c # iLink 应用标识 WECHAT_ILINK_APP_ID=bot # 可选的部署路由标签 WECHAT_ROUTE_TAG= # 应用版本号,会作为 channel_version 上报给 iLink 后端 # 留空则使用 package.json 里的版本号——那里才是版本号唯一被写下来的地方 APP_VERSION= # ─── 其他 ─────────────────────────────────────────────────────────────────── UPLOAD_DIR=./uploads PYTHON_PATH=python3 SKILL_ENGINE_DIR=./skill-engine PORT=3000 # AI 身份透明:true(默认)= 被认真询问时承认是 AI;false = 完全沉浸模式 PERSONA_AI_TRANSPARENCY=true # 情绪判定引擎:llm(默认,模型阅读对话后判断情绪)/ heuristic(纯关键词规则,零额外 LLM 调用) EMOTION_ENGINE=llm # ─── 安全 ─────────────────────────────────────────────────────────────────── # 允许发起写操作的其他来源(逗号分隔)。同源始终允许;仅在把 Mirrai 嵌入到 # 另一个站点时才需要填写。 # The proxies whose X-Forwarded-For header may be believed. # # Empty by default. Put the app behind nginx and set this to the proxy's # address (127.0.0.1, or the Docker network's) and the real client # address is read from the header again. While it is empty the address # of the connection is used, which cannot be forged. TRUSTED_PROXIES= ALLOWED_ORIGINS= # 会话 Cookie 的 SameSite 策略:lax(默认,推荐)/ none / strict。 # "none" 需要 HTTPS,且必须配合上面的 Origin 校验使用。 COOKIE_SAMESITE=lax # 首次运行时自动创建本地管理员:auto(默认)/ manual(改为走注册流程) MIRRAI_BOOTSTRAP_ADMIN=auto # 首次运行凭据与数据文件的存放目录。桌面版会自动设置;留空则使用 UPLOAD_DIR 的上级目录。 MIRRAI_DATA_ROOT= # 危机支持资源清单的覆盖文件(JSON)。留空则使用内置清单。 SAFETY_RESOURCES_FILE= # ─── 主动提醒 ─────────────────────────────────────────────────────────────── # 免打扰时段,格式 "HH:MM-HH:MM"。跨越午夜时会覆盖夜里和清晨。 REMINDER_QUIET_HOURS=23:00-08:00 # ─── 朗读 ──────────────────────────────────────────────────────────────────── # 「朗读」用的是微软的在线语音服务:回复的文字会发给他们,音频再传回来。 # 这是唯一一处内容会离开这台机器的地方。设为 false 就完全关掉, # 界面上也不会再出现朗读按钮。 TTS_ENABLED=true # ─── Redis(可选,开箱即用)──────────────────────────────────────────────── # Redis 只在「跑着不止一份 Mirrai」的时候才有意义:限流额度记在共享的桶里, # 调度器的锁保证同一封提醒不会被送两遍。 # # 什么都不用填。应用会按这个顺序找 Redis: # 1. 下面这个 REDIS_URL(如果填了) # 2. 已经在默认端口上跑着的 Redis # 3. 跟着应用一起装的那一个(macOS/Windows/Docker 的安装包里都带着) # 4. 应用自己起的一个(和这台机器上别的 Mirrai 共享) # # 机器上没有 redis-server 也不影响使用——限流退回进程内计数,日志里会写明。 # 从源码跑的时候想装一个:pnpm setup:redis REDIS_URL= # auto(默认)/ managed(强制自己起一个)/ off(完全不用 Redis) MIRRAI_REDIS=auto