Local branch had diverged from origin/master (sibling commits on the same base). Rewrote local history linearly on top of origin/master, folding in all local content: exa/hot-platform discovery hunters, leaks ledger, nightly sweep orchestrator, updated .gitignore and skill docs, plus the latest hunt output and vault state. Remote-only files (vault keys, channel scripts) were restored rather than dropped, so the resulting tree is a full union of both sides.
1 line
501 KiB
JSON
1 line
501 KiB
JSON
{"repo": "caomeiyouren/momei", "files": {"docs/design/governance/opencode-codespaces-provider-integration-plan.md": {"9a797673716991b7e3b4b1192ad186ca39e64a6b": {"t": 1785595243.6923313, "n": 6306, "h": "69906f4eb51e367c", "c": "# OpenCode + GitHub Codespaces 提供商收敛集成方案(opencode-go / deepseek / xiaomi)\n\n## 1. 概述 (Overview)\n\n本文档用于把“Hermes + OpenCode + GitHub Codespaces 集成方案”落地为可执行的仓库改动清单,并明确当前模型提供商收敛策略:\n\n- 保留 `opencode-go`、`deepseek`、`xiaomi` 三类模型提供商。\n- 以 `.opencode/configs/` 作为 OpenCode 模型配置的事实源。\n- `opencode.json` 仅作为当前激活配置的派生结果。\n\n该方案聚焦“配置与流程收敛”,不直接包含功能代码实现。\n\n## 2. 准入结论 (Intake Decision)\n\n- 结论:允许作为专项设计文档先落盘,执行时按独立基础设施任务推进。\n- 原因:当前 `todo.md` 主线是缓存架构与治理深化,本事项属于开发工具链集成与运行环境治理,不宜静默插入当前功能主线。\n- 执行建议:以“专项任务”方式推进,先完成最小可运行闭环,再逐步收敛策略。\n\n## 3. 现状基线 (Current Baseline)\n\n当前仓库已具备以下基础:\n\n1. OpenCode 主配置已存在:[opencode.json](../../../opencode.json)\n2. 多个 OpenCode 预设已存在:[.opencode/configs/](../../../.opencode/configs)\n3. 模型切换脚本已存在:[scripts/setup/switch-models.mjs](../../../scripts/setup/switch-models.mjs)\n4. AI 工作树软链接脚本已存在:[scripts/setup/setup-ai.mjs](../../../scripts/setup/setup-ai.mjs)\n5. Codespaces 容器配置存在但位于根目录:[devcontainer.json](../../../devcontainer.json)\n\n已识别差异:\n\n1. 容器镜像版本为 Node 18,而项目 `engines.node` 要求 `>=20`。\n2. `opencode.opencode-go.json` 仍包含 `glm`、`qwen` 等非目标模型,与当前收敛目标不一致。\n3. 尚无“提供商白名单”层面的显式治理规则,切换脚本仍可面向全部预设。\n\n### 3.1 Node 24 镜像可用性核实\n\n核实结论:Node 24 的官方 devcontainer 镜像标签可用,后续可按 Node 24 作为容器默认目标版本。\n\n已核实的公开标签(MCR):\n\n1. `mcr.microsoft.com/devcontainers/typescript-node:24-bookworm`\n2. `mcr.microsoft.com/devcontainers/typescript-node:24`\n3. `mcr.microsoft.com/devcontainers/javascript-node:24-bookworm`\n\n核实方式:通过带超时的 HTTP 请求抓取 MCR 标签列表(`TimeoutSec=15`),避免网络异常导致探测流程长时间阻塞。\n\n## 4. 目标状态 (Target State)\n\n### 4.1 提供商策略\n\n运行链路只允许以下两类提供商:\n\n1. `opencode-go/*`\n2. `deepseek/*`\n3. `xiaomi/*`\n\n### 4.2 执行原则\n\n1. 复用仓库内现有 OpenCode 配置,不在 Codespace 内维护平行的私有配置源。\n2. `.opencode/configs/` 是唯一预设事实源;`opencode.json` 由切换脚本写入。\n3. 统一通过仓库脚本完成模型切换与治理,不依赖人工手改 JSON。\n4. 以最小改动优先,先完成可运行,再做收紧。\n\n### 4.3 Codespaces 手动设置 vs OpenCode 配置文件\n\n当前有两条可行路径:\n\n1. 在 GitHub Codespaces 中手动执行 `/connect`、`/model`,逐个设置提供商与模型。\n2. 在仓库配置(`.opencode/configs/*.json` + `opencode.json`)中声明提供商与模型,通过脚本切换激活态。\n\n对比结论如下:\n\n| 维度 | Codespaces 手动设置 | OpenCode 配置文件声明 |\n| :--- | :--- | :--- |\n| 可复现性 | 低:依赖个人操作顺序与习惯 | 高:配置与脚本可审计、可复用 |\n| 团队一致性 | 低:多人环境容易漂移 | 高:同一分支默认一致 |\n| 治理成本 | 高:需要反复口头同步 | 低:规则集中在仓库文件 |\n| 首次上手速度 | 中:单人试用快 | 中:首次需要理解预设与切换脚本 |\n| 临时调试灵活性 | 高:可即时切换 | 中:推荐通过脚本切换而非手改 |\n\n建议:本项目采用“配置文件优先、手动设置兜底”的策略。\n\n1. 日常开发与协作:以 `.opencode/configs/` 为事实源。\n2. 紧急排障或临时试验:允许在 Codespace 手动切换,但任务结束后必须回到仓库预设并记录原因。\n\n### 4.4 OpenCode Go 为内置提供商时,写入配置会发生什么\n\nOpenCode Go 是 OpenCode 内置 provider。将模型写入配置后,行为是“显式选择内置 provider”,不是“新增自定义 provider”。\n\n1. 当模型写为 `opencode-go/<model-id>`(例如 `opencode-go/deepseek-v4-pro`)时,OpenCode 会按内置 OpenCode Go 路由请求。\n2. 这不会破坏 `/connect` 流程;`/connect` 仍可用于交互式录入凭据。\n3. 在自动化场景(Codespaces / CI)中,推荐通过配置映射环境变量到 `provider.options.apiKey`,避免依赖交互式录入。\n\n补充说明:官方文档明确支持 `{env:VARIABLE}` 通用变量替换机制,但未强制规定 OpenCode Go 必须使用某个固定环境变量名。因此 `OPENCODE_GO_API_KEY` 可作为本仓库约定命名,而非官方硬编码键名。\n\n## 5. 具体改动方案 (File-level Change Plan)\n\n### 5.1 P0:必须改动\n\n| 文件 | 改动类型 | 具体改动 |\n| :--- | :--- | :--- |\n| [devcontainer.json](../../../devcontainer.json) | Update | 基础镜像升级到 Node 24(推荐 `mcr.microsoft.com/devcontainers/typescript-node:24-bookworm`);`postCreateCommand` 中保留 `pnpm install`,并新增 OpenCode 可用性检查(安装或版本检测)。 |\n| [opencode.json](../../../opencode.json) | Update | 默认模型收敛到三提供商之一(`opencode-go/deepseek-v4-pro`、`deepseek/deepseek-v4-pro`、`xiaomi/mimo-v2.5-pro`);`instructions` 继续指向 `AGENTS.md`。 |\n| [.opencode/configs/opencode.opencode-go.json](../../../.opencode/configs/opencode.opencode-go.json) | Update | 所有 agent 模型统一为 `opencode-go/deepseek-v4-pro` 或 `opencode-go/deepseek-v4-flash`,移除 `opencode-go/glm-*` 与 `opencode-go/qwen*`。 |\n| [.opencode/configs/opencode.deepseek.json](../../../.opencode/configs/opencode.deepseek.json) | Verify | 校验所有 agent 仅使用 `deepseek/*`,保持与目标策略一致。 |\n| [.opencode/configs/opencode.xiaomi.json](../../../.opencode/configs/opencode.xiaomi.json) | Verify | 保持 xiaomi 预设可用,并校验模型字段只落在 `xiaomi/*`。 |\n| [scripts/setup/switch-models.mjs](../../../scripts/setup/switch-models.mjs) | Update | 增加 provider allowlist 校验(仅允许 opencode-go / deepseek / xiaomi);保留 `--list`、`--current`。 |\n\n### 5.2 P1:建议改动\n\n| 文件 | 改动类型 | 具体改动 |\n| :--- | :--- | :--- |\n| [scripts/README.md](../../../scripts/README.md) | Update | 在 `setup` 章节新增“模型提供商白名单”说明与标准切换命令。 |\n| [docs/guide/ai-development.md](../../../docs/guide/ai-development.md) | Update | 增补 Codespaces + OpenCode 最小使用流程,强调“.opencode/configs 为事实源,opencode.json 为激活态”。 |\n\n## 6. 预设与映射建议 (Preset Mapping)\n\n### 6.1 推荐保留预设\n\n1. `opencode-go`(执行主力)\n2. `deepseek`(降级与兜底)\n3. `xiaomi`(保留为专项任务备用预设)\n\n### 6.2 推荐默认预设\n\n建议将默认预设设为 `opencode-go`,原因:\n\n1. 与“供应商策略”一致。\n2. 能保持与现有 `opencode-go/deepseek-v4-pro` 配置连续性。\n3. 当 `opencode-go` 不可用时,可快速切换到 `deepseek` 或 `xiaomi` 预设。\n\n## 7. Secrets 与环境变量方案 (Secrets & Env)\n\nGitHub Codespaces Secrets 最小集合:\n\n1. `OPENCODE_GO_API_KEY`(推荐命名;用于 OpenCode Go)\n2. `DEEPSEEK_API_KEY`(若直连 DeepSeek)\n3. `OPENROUTER_API_KEY`(若通过 OpenRouter 调度)\n4. `GITHUB_TOKEN` 或等效 PAT(用于仓库操作与 API 调用)\n\n约束:\n\n1. 不在仓库内提交任何明文密钥。\n2. 不在文档中写入真实密钥示例。\n\n推荐配置写法(示意):\n\n```json\n{\n\t\"provider\": {\n\t\t\"opencode-go\": {\n\t\t\t\"options\": {\n\t\t\t\t\"apiKey\": \"{env:OPENCODE_GO_API_KEY}\",\n\t\t\t\t\"timeout\": 300000\n\t\t\t}\n\t\t}\n\t}\n}\n```\n\n说明:`timeout` 可按任务时延需求调整;抓取或长上下文任务建议提高超时,交互式任务保持默认即可。\n\n## 8. Hermes 编排改动点 (Hermes Orchestration Plan)\n\nHermes Skill(`codespace-coding`)按以下步骤执行:\n\n1. 校验 Codespace 状态(存在且运行)\n2. 进入工作目录并执行预设切换命令\n3. 调用 OpenCode 非交互任务\n4. 拉取 diff 与关键文件内容\n5. 回传结构化结果(改动文件、验证结果、失败原因)\n\n建议命令模板:\n\n```bash\npnpm node scripts/setup/switch-models.mjs opencode-go\n```\n\n降级模板:\n\n```bash\npnpm node scripts/setup/switch-models.mjs deepseek\n```\n\n备用模板:\n\n```bash\npnpm node scripts/setup/switch-models.mjs xiaomi\n```\n\n## 9. 验证矩阵 (Validation Matrix)\n\n| 层级 | 验证项 | 验证方式 |\n| :--- | :--- | :--- |\n| V0 | 变更范围正确 | 对照本方案中的文件级清单 |\n| V1 | 配置语法有效 | JSON 语法检查 + `pnpm typecheck` |\n| V2 | 切换脚本有效 | `switch-models --list` / `--current` / 切换往返测试 |\n| V2 | Codespace 可执行 | 远程执行 `opencode -p` 最小任务 |\n| RG | 审计结论 | Review Gate 输出 Pass / Reject |\n\n## 10. 回滚策略 (Rollback)\n\n若 provider 收敛导致任务失败率明显上升:\n\n1. 先回滚 `opencode.json` 默认预设到上一个可用配置。\n2. 保留 `switch-models` allowlist 逻辑,只临时放开单一候选预设做故障排查。\n3. 在专项文档追加“失败样本 + 根因 + 下一步收敛策略”,避免反复横跳。\n\n## 11. 里程碑与交付 (Milestones)\n\n1. M1(配置收敛):完成 P0 文件改动并通过 V1。\n2. M2(执行打通):Hermes -> Codespace -> OpenCode 最小链路通过。\n3. M3(治理收口):文档、脚本说明、审计证据同步完成。\n\n---\n\n关联文档:\n\n- [CLI / MCP 自动化能力扩展设计](./cli-mcp-automation.md)\n- [AI 协作规范](../../standards/ai-collaboration.md)\n- [安全开发规范](../../standards/security.md)\n"}, "29a79ce94bae97872b989adfbad9fca0409f705b": {"t": 1785749519.7037365, "n": 6306, "h": "69906f4eb51e367c", "c": "# OpenCode + GitHub Codespaces 提供商收敛集成方案(opencode-go / deepseek / xiaomi)\n\n## 1. 概述 (Overview)\n\n本文档用于把“Hermes + OpenCode + GitHub Codespaces 集成方案”落地为可执行的仓库改动清单,并明确当前模型提供商收敛策略:\n\n- 保留 `opencode-go`、`deepseek`、`xiaomi` 三类模型提供商。\n- 以 `.opencode/configs/` 作为 OpenCode 模型配置的事实源。\n- `opencode.json` 仅作为当前激活配置的派生结果。\n\n该方案聚焦“配置与流程收敛”,不直接包含功能代码实现。\n\n## 2. 准入结论 (Intake Decision)\n\n- 结论:允许作为专项设计文档先落盘,执行时按独立基础设施任务推进。\n- 原因:当前 `todo.md` 主线是缓存架构与治理深化,本事项属于开发工具链集成与运行环境治理,不宜静默插入当前功能主线。\n- 执行建议:以“专项任务”方式推进,先完成最小可运行闭环,再逐步收敛策略。\n\n## 3. 现状基线 (Current Baseline)\n\n当前仓库已具备以下基础:\n\n1. OpenCode 主配置已存在:[opencode.json](../../../opencode.json)\n2. 多个 OpenCode 预设已存在:[.opencode/configs/](../../../.opencode/configs)\n3. 模型切换脚本已存在:[scripts/setup/switch-models.mjs](../../../scripts/setup/switch-models.mjs)\n4. AI 工作树软链接脚本已存在:[scripts/setup/setup-ai.mjs](../../../scripts/setup/setup-ai.mjs)\n5. Codespaces 容器配置存在但位于根目录:[devcontainer.json](../../../devcontainer.json)\n\n已识别差异:\n\n1. 容器镜像版本为 Node 18,而项目 `engines.node` 要求 `>=20`。\n2. `opencode.opencode-go.json` 仍包含 `glm`、`qwen` 等非目标模型,与当前收敛目标不一致。\n3. 尚无“提供商白名单”层面的显式治理规则,切换脚本仍可面向全部预设。\n\n### 3.1 Node 24 镜像可用性核实\n\n核实结论:Node 24 的官方 devcontainer 镜像标签可用,后续可按 Node 24 作为容器默认目标版本。\n\n已核实的公开标签(MCR):\n\n1. `mcr.microsoft.com/devcontainers/typescript-node:24-bookworm`\n2. `mcr.microsoft.com/devcontainers/typescript-node:24`\n3. `mcr.microsoft.com/devcontainers/javascript-node:24-bookworm`\n\n核实方式:通过带超时的 HTTP 请求抓取 MCR 标签列表(`TimeoutSec=15`),避免网络异常导致探测流程长时间阻塞。\n\n## 4. 目标状态 (Target State)\n\n### 4.1 提供商策略\n\n运行链路只允许以下两类提供商:\n\n1. `opencode-go/*`\n2. `deepseek/*`\n3. `xiaomi/*`\n\n### 4.2 执行原则\n\n1. 复用仓库内现有 OpenCode 配置,不在 Codespace 内维护平行的私有配置源。\n2. `.opencode/configs/` 是唯一预设事实源;`opencode.json` 由切换脚本写入。\n3. 统一通过仓库脚本完成模型切换与治理,不依赖人工手改 JSON。\n4. 以最小改动优先,先完成可运行,再做收紧。\n\n### 4.3 Codespaces 手动设置 vs OpenCode 配置文件\n\n当前有两条可行路径:\n\n1. 在 GitHub Codespaces 中手动执行 `/connect`、`/model`,逐个设置提供商与模型。\n2. 在仓库配置(`.opencode/configs/*.json` + `opencode.json`)中声明提供商与模型,通过脚本切换激活态。\n\n对比结论如下:\n\n| 维度 | Codespaces 手动设置 | OpenCode 配置文件声明 |\n| :--- | :--- | :--- |\n| 可复现性 | 低:依赖个人操作顺序与习惯 | 高:配置与脚本可审计、可复用 |\n| 团队一致性 | 低:多人环境容易漂移 | 高:同一分支默认一致 |\n| 治理成本 | 高:需要反复口头同步 | 低:规则集中在仓库文件 |\n| 首次上手速度 | 中:单人试用快 | 中:首次需要理解预设与切换脚本 |\n| 临时调试灵活性 | 高:可即时切换 | 中:推荐通过脚本切换而非手改 |\n\n建议:本项目采用“配置文件优先、手动设置兜底”的策略。\n\n1. 日常开发与协作:以 `.opencode/configs/` 为事实源。\n2. 紧急排障或临时试验:允许在 Codespace 手动切换,但任务结束后必须回到仓库预设并记录原因。\n\n### 4.4 OpenCode Go 为内置提供商时,写入配置会发生什么\n\nOpenCode Go 是 OpenCode 内置 provider。将模型写入配置后,行为是“显式选择内置 provider”,不是“新增自定义 provider”。\n\n1. 当模型写为 `opencode-go/<model-id>`(例如 `opencode-go/deepseek-v4-pro`)时,OpenCode 会按内置 OpenCode Go 路由请求。\n2. 这不会破坏 `/connect` 流程;`/connect` 仍可用于交互式录入凭据。\n3. 在自动化场景(Codespaces / CI)中,推荐通过配置映射环境变量到 `provider.options.apiKey`,避免依赖交互式录入。\n\n补充说明:官方文档明确支持 `{env:VARIABLE}` 通用变量替换机制,但未强制规定 OpenCode Go 必须使用某个固定环境变量名。因此 `OPENCODE_GO_API_KEY` 可作为本仓库约定命名,而非官方硬编码键名。\n\n## 5. 具体改动方案 (File-level Change Plan)\n\n### 5.1 P0:必须改动\n\n| 文件 | 改动类型 | 具体改动 |\n| :--- | :--- | :--- |\n| [devcontainer.json](../../../devcontainer.json) | Update | 基础镜像升级到 Node 24(推荐 `mcr.microsoft.com/devcontainers/typescript-node:24-bookworm`);`postCreateCommand` 中保留 `pnpm install`,并新增 OpenCode 可用性检查(安装或版本检测)。 |\n| [opencode.json](../../../opencode.json) | Update | 默认模型收敛到三提供商之一(`opencode-go/deepseek-v4-pro`、`deepseek/deepseek-v4-pro`、`xiaomi/mimo-v2.5-pro`);`instructions` 继续指向 `AGENTS.md`。 |\n| [.opencode/configs/opencode.opencode-go.json](../../../.opencode/configs/opencode.opencode-go.json) | Update | 所有 agent 模型统一为 `opencode-go/deepseek-v4-pro` 或 `opencode-go/deepseek-v4-flash`,移除 `opencode-go/glm-*` 与 `opencode-go/qwen*`。 |\n| [.opencode/configs/opencode.deepseek.json](../../../.opencode/configs/opencode.deepseek.json) | Verify | 校验所有 agent 仅使用 `deepseek/*`,保持与目标策略一致。 |\n| [.opencode/configs/opencode.xiaomi.json](../../../.opencode/configs/opencode.xiaomi.json) | Verify | 保持 xiaomi 预设可用,并校验模型字段只落在 `xiaomi/*`。 |\n| [scripts/setup/switch-models.mjs](../../../scripts/setup/switch-models.mjs) | Update | 增加 provider allowlist 校验(仅允许 opencode-go / deepseek / xiaomi);保留 `--list`、`--current`。 |\n\n### 5.2 P1:建议改动\n\n| 文件 | 改动类型 | 具体改动 |\n| :--- | :--- | :--- |\n| [scripts/README.md](../../../scripts/README.md) | Update | 在 `setup` 章节新增“模型提供商白名单”说明与标准切换命令。 |\n| [docs/guide/ai-development.md](../../../docs/guide/ai-development.md) | Update | 增补 Codespaces + OpenCode 最小使用流程,强调“.opencode/configs 为事实源,opencode.json 为激活态”。 |\n\n## 6. 预设与映射建议 (Preset Mapping)\n\n### 6.1 推荐保留预设\n\n1. `opencode-go`(执行主力)\n2. `deepseek`(降级与兜底)\n3. `xiaomi`(保留为专项任务备用预设)\n\n### 6.2 推荐默认预设\n\n建议将默认预设设为 `opencode-go`,原因:\n\n1. 与“供应商策略”一致。\n2. 能保持与现有 `opencode-go/deepseek-v4-pro` 配置连续性。\n3. 当 `opencode-go` 不可用时,可快速切换到 `deepseek` 或 `xiaomi` 预设。\n\n## 7. Secrets 与环境变量方案 (Secrets & Env)\n\nGitHub Codespaces Secrets 最小集合:\n\n1. `OPENCODE_GO_API_KEY`(推荐命名;用于 OpenCode Go)\n2. `DEEPSEEK_API_KEY`(若直连 DeepSeek)\n3. `OPENROUTER_API_KEY`(若通过 OpenRouter 调度)\n4. `GITHUB_TOKEN` 或等效 PAT(用于仓库操作与 API 调用)\n\n约束:\n\n1. 不在仓库内提交任何明文密钥。\n2. 不在文档中写入真实密钥示例。\n\n推荐配置写法(示意):\n\n```json\n{\n\t\"provider\": {\n\t\t\"opencode-go\": {\n\t\t\t\"options\": {\n\t\t\t\t\"apiKey\": \"{env:OPENCODE_GO_API_KEY}\",\n\t\t\t\t\"timeout\": 300000\n\t\t\t}\n\t\t}\n\t}\n}\n```\n\n说明:`timeout` 可按任务时延需求调整;抓取或长上下文任务建议提高超时,交互式任务保持默认即可。\n\n## 8. Hermes 编排改动点 (Hermes Orchestration Plan)\n\nHermes Skill(`codespace-coding`)按以下步骤执行:\n\n1. 校验 Codespace 状态(存在且运行)\n2. 进入工作目录并执行预设切换命令\n3. 调用 OpenCode 非交互任务\n4. 拉取 diff 与关键文件内容\n5. 回传结构化结果(改动文件、验证结果、失败原因)\n\n建议命令模板:\n\n```bash\npnpm node scripts/setup/switch-models.mjs opencode-go\n```\n\n降级模板:\n\n```bash\npnpm node scripts/setup/switch-models.mjs deepseek\n```\n\n备用模板:\n\n```bash\npnpm node scripts/setup/switch-models.mjs xiaomi\n```\n\n## 9. 验证矩阵 (Validation Matrix)\n\n| 层级 | 验证项 | 验证方式 |\n| :--- | :--- | :--- |\n| V0 | 变更范围正确 | 对照本方案中的文件级清单 |\n| V1 | 配置语法有效 | JSON 语法检查 + `pnpm typecheck` |\n| V2 | 切换脚本有效 | `switch-models --list` / `--current` / 切换往返测试 |\n| V2 | Codespace 可执行 | 远程执行 `opencode -p` 最小任务 |\n| RG | 审计结论 | Review Gate 输出 Pass / Reject |\n\n## 10. 回滚策略 (Rollback)\n\n若 provider 收敛导致任务失败率明显上升:\n\n1. 先回滚 `opencode.json` 默认预设到上一个可用配置。\n2. 保留 `switch-models` allowlist 逻辑,只临时放开单一候选预设做故障排查。\n3. 在专项文档追加“失败样本 + 根因 + 下一步收敛策略”,避免反复横跳。\n\n## 11. 里程碑与交付 (Milestones)\n\n1. M1(配置收敛):完成 P0 文件改动并通过 V1。\n2. M2(执行打通):Hermes -> Codespace -> OpenCode 最小链路通过。\n3. M3(治理收口):文档、脚本说明、审计证据同步完成。\n\n---\n\n关联文档:\n\n- [CLI / MCP 自动化能力扩展设计](./cli-mcp-automation.md)\n- [AI 协作规范](../../standards/ai-collaboration.md)\n- [安全开发规范](../../standards/security.md)\n"}, "e2da73032e3eb8bf346c3b5e750a6ed1cf414b1e": {"t": 1785749520.8083754, "n": 6366, "h": "6d1af20f30ebaac5", "c": "# OpenCode + GitHub Codespaces 提供商收敛集成方案(opencode-go / deepseek / xiaomi-mimo)\n\n## 1. 概述 (Overview)\n\n本文档用于把“Hermes + OpenCode + GitHub Codespaces 集成方案”落地为可执行的仓库改动清单,并明确当前模型提供商收敛策略:\n\n- 保留 `opencode-go`、`deepseek`、`xiaomi-mimo` 三类模型提供商。\n- 以 `.opencode/configs/` 作为 OpenCode 模型配置的事实源。\n- `opencode.json` 仅作为当前激活配置的派生结果。\n\n该方案聚焦“配置与流程收敛”,不直接包含功能代码实现。\n\n## 2. 准入结论 (Intake Decision)\n\n- 结论:允许作为专项设计文档先落盘,执行时按独立基础设施任务推进。\n- 原因:当前 `todo.md` 主线是缓存架构与治理深化,本事项属于开发工具链集成与运行环境治理,不宜静默插入当前功能主线。\n- 执行建议:以“专项任务”方式推进,先完成最小可运行闭环,再逐步收敛策略。\n\n## 3. 现状基线 (Current Baseline)\n\n当前仓库已具备以下基础:\n\n1. OpenCode 主配置已存在:[opencode.json](../../../opencode.json)\n2. 多个 OpenCode 预设已存在:[.opencode/configs/](../../../.opencode/configs)\n3. 模型切换脚本已存在:[scripts/setup/switch-models.mjs](../../../scripts/setup/switch-models.mjs)\n4. AI 工作树软链接脚本已存在:[scripts/setup/setup-ai.mjs](../../../scripts/setup/setup-ai.mjs)\n5. Codespaces 容器配置存在但位于根目录:[devcontainer.json](../../../devcontainer.json)\n\n已识别差异:\n\n1. 容器镜像版本为 Node 18,而项目 `engines.node` 要求 `>=20`。\n2. `opencode.opencode-go.json` 仍包含 `glm`、`qwen` 等非目标模型,与当前收敛目标不一致。\n3. 尚无“提供商白名单”层面的显式治理规则,切换脚本仍可面向全部预设。\n\n### 3.1 Node 24 镜像可用性核实\n\n核实结论:Node 24 的官方 devcontainer 镜像标签可用,后续可按 Node 24 作为容器默认目标版本。\n\n已核实的公开标签(MCR):\n\n1. `mcr.microsoft.com/devcontainers/typescript-node:24-bookworm`\n2. `mcr.microsoft.com/devcontainers/typescript-node:24`\n3. `mcr.microsoft.com/devcontainers/javascript-node:24-bookworm`\n\n核实方式:通过带超时的 HTTP 请求抓取 MCR 标签列表(`TimeoutSec=15`),避免网络异常导致探测流程长时间阻塞。\n\n## 4. 目标状态 (Target State)\n\n### 4.1 提供商策略\n\n运行链路只允许以下两类提供商:\n\n1. `opencode-go/*`\n2. `deepseek/*`\n3. `xiaomi-mimo/*`\n\n### 4.2 执行原则\n\n1. 复用仓库内现有 OpenCode 配置,不在 Codespace 内维护平行的私有配置源。\n2. `.opencode/configs/` 是唯一预设事实源;`opencode.json` 由切换脚本写入。\n3. 统一通过仓库脚本完成模型切换与治理,不依赖人工手改 JSON。\n4. 以最小改动优先,先完成可运行,再做收紧。\n\n### 4.3 Codespaces 手动设置 vs OpenCode 配置文件\n\n当前有两条可行路径:\n\n1. 在 GitHub Codespaces 中手动执行 `/connect`、`/model`,逐个设置提供商与模型。\n2. 在仓库配置(`.opencode/configs/*.json` + `opencode.json`)中声明提供商与模型,通过脚本切换激活态。\n\n对比结论如下:\n\n| 维度 | Codespaces 手动设置 | OpenCode 配置文件声明 |\n| :--- | :--- | :--- |\n| 可复现性 | 低:依赖个人操作顺序与习惯 | 高:配置与脚本可审计、可复用 |\n| 团队一致性 | 低:多人环境容易漂移 | 高:同一分支默认一致 |\n| 治理成本 | 高:需要反复口头同步 | 低:规则集中在仓库文件 |\n| 首次上手速度 | 中:单人试用快 | 中:首次需要理解预设与切换脚本 |\n| 临时调试灵活性 | 高:可即时切换 | 中:推荐通过脚本切换而非手改 |\n\n建议:本项目采用“配置文件优先、手动设置兜底”的策略。\n\n1. 日常开发与协作:以 `.opencode/configs/` 为事实源。\n2. 紧急排障或临时试验:允许在 Codespace 手动切换,但任务结束后必须回到仓库预设并记录原因。\n\n### 4.4 OpenCode Go 为内置提供商时,写入配置会发生什么\n\nOpenCode Go 是 OpenCode 内置 provider。将模型写入配置后,行为是“显式选择内置 provider”,不是“新增自定义 provider”。\n\n1. 当模型写为 `opencode-go/<model-id>`(例如 `opencode-go/deepseek-v4-pro`)时,OpenCode 会按内置 OpenCode Go 路由请求。\n2. 这不会破坏 `/connect` 流程;`/connect` 仍可用于交互式录入凭据。\n3. 在自动化场景(Codespaces / CI)中,推荐通过配置映射环境变量到 `provider.options.apiKey`,避免依赖交互式录入。\n\n补充说明:官方文档明确支持 `{env:VARIABLE}` 通用变量替换机制,但未强制规定 OpenCode Go 必须使用某个固定环境变量名。因此 `OPENCODE_GO_API_KEY` 可作为本仓库约定命名,而非官方硬编码键名。\n\n## 5. 具体改动方案 (File-level Change Plan)\n\n### 5.1 P0:必须改动\n\n| 文件 | 改动类型 | 具体改动 |\n| :--- | :--- | :--- |\n| [devcontainer.json](../../../devcontainer.json) | Update | 基础镜像升级到 Node 24(推荐 `mcr.microsoft.com/devcontainers/typescript-node:24-bookworm`);`postCreateCommand` 中保留 `pnpm install`,并新增 OpenCode 可用性检查(安装或版本检测)。 |\n| [opencode.json](../../../opencode.json) | Update | 默认模型收敛到三提供商之一(`opencode-go/deepseek-v4-pro`、`deepseek/deepseek-v4-pro`、`xiaomi-mimo/mimo-v2.5-pro`);`instructions` 继续指向 `AGENTS.md`。 |\n| [.opencode/configs/opencode.opencode-go.json](../../../.opencode/configs/opencode.opencode-go.json) | Update | 所有 agent 模型统一为 `opencode-go/deepseek-v4-pro` 或 `opencode-go/deepseek-v4-flash`,移除 `opencode-go/glm-*` 与 `opencode-go/qwen*`。 |\n| [.opencode/configs/opencode.deepseek.json](../../../.opencode/configs/opencode.deepseek.json) | Verify | 校验所有 agent 仅使用 `deepseek/*`,保持与目标策略一致。 |\n| [.opencode/configs/opencode.xiaomi-mimo.json](../../../.opencode/configs/opencode.xiaomi-mimo.json) | Verify | 保持 xiaomi-mimo 预设可用,并校验模型字段只落在 `xiaomi-mimo/*`。 |\n| [scripts/setup/switch-models.mjs](../../../scripts/setup/switch-models.mjs) | Update | 增加 provider allowlist 校验(仅允许 opencode-go / deepseek / xiaomi-mimo);保留 `--list`、`--current`。 |\n\n### 5.2 P1:建议改动\n\n| 文件 | 改动类型 | 具体改动 |\n| :--- | :--- | :--- |\n| [scripts/README.md](../../../scripts/README.md) | Update | 在 `setup` 章节新增“模型提供商白名单”说明与标准切换命令。 |\n| [docs/guide/ai-development.md](../../../docs/guide/ai-development.md) | Update | 增补 Codespaces + OpenCode 最小使用流程,强调“.opencode/configs 为事实源,opencode.json 为激活态”。 |\n\n## 6. 预设与映射建议 (Preset Mapping)\n\n### 6.1 推荐保留预设\n\n1. `opencode-go`(执行主力)\n2. `deepseek`(降级与兜底)\n3. `xiaomi-mimo`(保留为专项任务备用预设)\n\n### 6.2 推荐默认预设\n\n建议将默认预设设为 `opencode-go`,原因:\n\n1. 与“供应商策略”一致。\n2. 能保持与现有 `opencode-go/deepseek-v4-pro` 配置连续性。\n3. 当 `opencode-go` 不可用时,可快速切换到 `deepseek` 或 `xiaomi-mimo` 预设。\n\n## 7. Secrets 与环境变量方案 (Secrets & Env)\n\nGitHub Codespaces Secrets 最小集合:\n\n1. `OPENCODE_GO_API_KEY`(推荐命名;用于 OpenCode Go)\n2. `DEEPSEEK_API_KEY`(若直连 DeepSeek)\n3. `OPENROUTER_API_KEY`(若通过 OpenRouter 调度)\n4. `GITHUB_TOKEN` 或等效 PAT(用于仓库操作与 API 调用)\n\n约束:\n\n1. 不在仓库内提交任何明文密钥。\n2. 不在文档中写入真实密钥示例。\n\n推荐配置写法(示意):\n\n```json\n{\n\t\"provider\": {\n\t\t\"opencode-go\": {\n\t\t\t\"options\": {\n\t\t\t\t\"apiKey\": \"{env:OPENCODE_GO_API_KEY}\",\n\t\t\t\t\"timeout\": 300000\n\t\t\t}\n\t\t}\n\t}\n}\n```\n\n说明:`timeout` 可按任务时延需求调整;抓取或长上下文任务建议提高超时,交互式任务保持默认即可。\n\n## 8. Hermes 编排改动点 (Hermes Orchestration Plan)\n\nHermes Skill(`codespace-coding`)按以下步骤执行:\n\n1. 校验 Codespace 状态(存在且运行)\n2. 进入工作目录并执行预设切换命令\n3. 调用 OpenCode 非交互任务\n4. 拉取 diff 与关键文件内容\n5. 回传结构化结果(改动文件、验证结果、失败原因)\n\n建议命令模板:\n\n```bash\npnpm node scripts/setup/switch-models.mjs opencode-go\n```\n\n降级模板:\n\n```bash\npnpm node scripts/setup/switch-models.mjs deepseek\n```\n\n备用模板:\n\n```bash\npnpm node scripts/setup/switch-models.mjs xiaomi-mimo\n```\n\n## 9. 验证矩阵 (Validation Matrix)\n\n| 层级 | 验证项 | 验证方式 |\n| :--- | :--- | :--- |\n| V0 | 变更范围正确 | 对照本方案中的文件级清单 |\n| V1 | 配置语法有效 | JSON 语法检查 + `pnpm typecheck` |\n| V2 | 切换脚本有效 | `switch-models --list` / `--current` / 切换往返测试 |\n| V2 | Codespace 可执行 | 远程执行 `opencode -p` 最小任务 |\n| RG | 审计结论 | Review Gate 输出 Pass / Reject |\n\n## 10. 回滚策略 (Rollback)\n\n若 provider 收敛导致任务失败率明显上升:\n\n1. 先回滚 `opencode.json` 默认预设到上一个可用配置。\n2. 保留 `switch-models` allowlist 逻辑,只临时放开单一候选预设做故障排查。\n3. 在专项文档追加“失败样本 + 根因 + 下一步收敛策略”,避免反复横跳。\n\n## 11. 里程碑与交付 (Milestones)\n\n1. M1(配置收敛):完成 P0 文件改动并通过 V1。\n2. M2(执行打通):Hermes -> Codespace -> OpenCode 最小链路通过。\n3. M3(治理收口):文档、脚本说明、审计证据同步完成。\n\n---\n\n关联文档:\n\n- [CLI / MCP 自动化能力扩展设计](./cli-mcp-automation.md)\n- [AI 协作规范](../../standards/ai-collaboration.md)\n- [安全开发规范](../../standards/security.md)\n"}, "88def9baf257e43e4c4f93e80709b29abd8d0d23": {"t": 1785749522.7926373, "n": 5053, "h": "d6fbe39b17d3f087", "c": "# OpenCode + GitHub Codespaces 提供商收敛集成方案(opencode-go / deepseek / xiaomi-mimo)\n\n## 1. 概述 (Overview)\n\n本文档用于把“Hermes + OpenCode + GitHub Codespaces 集成方案”落地为可执行的仓库改动清单,并明确当前模型提供商收敛策略:\n\n- 保留 `opencode-go`、`deepseek`、`xiaomi-mimo` 三类模型提供商。\n- 以 `.opencode/configs/` 作为 OpenCode 模型配置的事实源。\n- `opencode.json` 仅作为当前激活配置的派生结果。\n\n该方案聚焦“配置与流程收敛”,不直接包含功能代码实现。\n\n## 2. 准入结论 (Intake Decision)\n\n- 结论:允许作为专项设计文档先落盘,执行时按独立基础设施任务推进。\n- 原因:当前 `todo.md` 主线是缓存架构与治理深化,本事项属于开发工具链集成与运行环境治理,不宜静默插入当前功能主线。\n- 执行建议:以“专项任务”方式推进,先完成最小可运行闭环,再逐步收敛策略。\n\n## 3. 现状基线 (Current Baseline)\n\n当前仓库已具备以下基础:\n\n1. OpenCode 主配置已存在:[opencode.json](../../../opencode.json)\n2. 多个 OpenCode 预设已存在:[.opencode/configs/](../../../.opencode/configs)\n3. 模型切换脚本已存在:[scripts/setup/switch-models.mjs](../../../scripts/setup/switch-models.mjs)\n4. AI 工作树软链接脚本已存在:[scripts/setup/setup-ai.mjs](../../../scripts/setup/setup-ai.mjs)\n5. Codespaces 容器配置存在但位于根目录:[devcontainer.json](../../../devcontainer.json)\n\n已识别差异:\n\n1. 容器镜像版本为 Node 18,而项目 `engines.node` 要求 `>=20`。\n2. `opencode.opencode-go.json` 仍包含 `glm`、`qwen` 等非目标模型,与当前收敛目标不一致。\n3. 尚无“提供商白名单”层面的显式治理规则,切换脚本仍可面向全部预设。\n\n### 3.1 Node 24 镜像可用性核实\n\n核实结论:Node 24 的官方 devcontainer 镜像标签可用,后续可按 Node 24 作为容器默认目标版本。\n\n已核实的公开标签(MCR):\n\n1. `mcr.microsoft.com/devcontainers/typescript-node:24-bookworm`\n2. `mcr.microsoft.com/devcontainers/typescript-node:24`\n3. `mcr.microsoft.com/devcontainers/javascript-node:24-bookworm`\n\n核实方式:通过带超时的 HTTP 请求抓取 MCR 标签列表(`TimeoutSec=15`),避免网络异常导致探测流程长时间阻塞。\n\n## 4. 目标状态 (Target State)\n\n### 4.1 提供商策略\n\n运行链路只允许以下两类提供商:\n\n1. `opencode-go/*`\n2. `deepseek/*`\n3. `xiaomi-mimo/*`\n\n### 4.2 执行原则\n\n1. 复用仓库内现有 OpenCode 配置,不在 Codespace 内维护平行的私有配置源。\n2. `.opencode/configs/` 是唯一预设事实源;`opencode.json` 由切换脚本写入。\n3. 统一通过仓库脚本完成模型切换与治理,不依赖人工手改 JSON。\n4. 以最小改动优先,先完成可运行,再做收紧。\n\n## 5. 具体改动方案 (File-level Change Plan)\n\n### 5.1 P0:必须改动\n\n| 文件 | 改动类型 | 具体改动 |\n| :--- | :--- | :--- |\n| [devcontainer.json](../../../devcontainer.json) | Update | 基础镜像升级到 Node 24(推荐 `mcr.microsoft.com/devcontainers/typescript-node:24-bookworm`);`postCreateCommand` 中保留 `pnpm install`,并新增 OpenCode 可用性检查(安装或版本检测)。 |\n| [opencode.json](../../../opencode.json) | Update | 默认模型收敛到三提供商之一(`opencode-go/deepseek-v4-pro`、`deepseek/deepseek-v4-pro`、`xiaomi-mimo/mimo-v2.5-pro`);`instructions` 继续指向 `AGENTS.md`。 |\n| [.opencode/configs/opencode.opencode-go.json](../../../.opencode/configs/opencode.opencode-go.json) | Update | 所有 agent 模型统一为 `opencode-go/deepseek-v4-pro` 或 `opencode-go/deepseek-v4-flash`,移除 `opencode-go/glm-*` 与 `opencode-go/qwen*`。 |\n| [.opencode/configs/opencode.deepseek.json](../../../.opencode/configs/opencode.deepseek.json) | Verify | 校验所有 agent 仅使用 `deepseek/*`,保持与目标策略一致。 |\n| [.opencode/configs/opencode.xiaomi-mimo.json](../../../.opencode/configs/opencode.xiaomi-mimo.json) | Verify | 保持 xiaomi-mimo 预设可用,并校验模型字段只落在 `xiaomi-mimo/*`。 |\n| [scripts/setup/switch-models.mjs](../../../scripts/setup/switch-models.mjs) | Update | 增加 provider allowlist 校验(仅允许 opencode-go / deepseek / xiaomi-mimo);保留 `--list`、`--current`。 |\n\n### 5.2 P1:建议改动\n\n| 文件 | 改动类型 | 具体改动 |\n| :--- | :--- | :--- |\n| [scripts/README.md](../../../scripts/README.md) | Update | 在 `setup` 章节新增“模型提供商白名单”说明与标准切换命令。 |\n| [docs/guide/ai-development.md](../../../docs/guide/ai-development.md) | Update | 增补 Codespaces + OpenCode 最小使用流程,强调“.opencode/configs 为事实源,opencode.json 为激活态”。 |\n\n## 6. 预设与映射建议 (Preset Mapping)\n\n### 6.1 推荐保留预设\n\n1. `opencode-go`(执行主力)\n2. `deepseek`(降级与兜底)\n3. `xiaomi-mimo`(保留为专项任务备用预设)\n\n### 6.2 推荐默认预设\n\n建议将默认预设设为 `opencode-go`,原因:\n\n1. 与“供应商策略”一致。\n2. 能保持与现有 `opencode-go/deepseek-v4-pro` 配置连续性。\n3. 当 `opencode-go` 不可用时,可快速切换到 `deepseek` 或 `xiaomi-mimo` 预设。\n\n## 7. Secrets 与环境变量方案 (Secrets & Env)\n\nGitHub Codespaces Secrets 最小集合:\n\n1. `OPENROUTER_API_KEY`(若通过 OpenRouter 调度)\n2. `DEEPSEEK_API_KEY`(若直连 DeepSeek)\n3. `GITHUB_TOKEN` 或等效 PAT(用于仓库操作与 API 调用)\n\n约束:\n\n1. 不在仓库内提交任何明文密钥。\n2. 不在文档中写入真实密钥示例。\n\n## 8. Hermes 编排改动点 (Hermes Orchestration Plan)\n\nHermes Skill(`codespace-coding`)按以下步骤执行:\n\n1. 校验 Codespace 状态(存在且运行)\n2. 进入工作目录并执行预设切换命令\n3. 调用 OpenCode 非交互任务\n4. 拉取 diff 与关键文件内容\n5. 回传结构化结果(改动文件、验证结果、失败原因)\n\n建议命令模板:\n\n```bash\npnpm node scripts/setup/switch-models.mjs opencode-go\n```\n\n降级模板:\n\n```bash\npnpm node scripts/setup/switch-models.mjs deepseek\n```\n\n备用模板:\n\n```bash\npnpm node scripts/setup/switch-models.mjs xiaomi-mimo\n```\n\n## 9. 验证矩阵 (Validation Matrix)\n\n| 层级 | 验证项 | 验证方式 |\n| :--- | :--- | :--- |\n| V0 | 变更范围正确 | 对照本方案中的文件级清单 |\n| V1 | 配置语法有效 | JSON 语法检查 + `pnpm typecheck` |\n| V2 | 切换脚本有效 | `switch-models --list` / `--current` / 切换往返测试 |\n| V2 | Codespace 可执行 | 远程执行 `opencode -p` 最小任务 |\n| RG | 审计结论 | Review Gate 输出 Pass / Reject |\n\n## 10. 回滚策略 (Rollback)\n\n若 provider 收敛导致任务失败率明显上升:\n\n1. 先回滚 `opencode.json` 默认预设到上一个可用配置。\n2. 保留 `switch-models` allowlist 逻辑,只临时放开单一候选预设做故障排查。\n3. 在专项文档追加“失败样本 + 根因 + 下一步收敛策略”,避免反复横跳。\n\n## 11. 里程碑与交付 (Milestones)\n\n1. M1(配置收敛):完成 P0 文件改动并通过 V1。\n2. M2(执行打通):Hermes -> Codespace -> OpenCode 最小链路通过。\n3. M3(治理收口):文档、脚本说明、审计证据同步完成。\n\n---\n\n关联文档:\n\n- [CLI / MCP 自动化能力扩展设计](./cli-mcp-automation.md)\n- [AI 协作规范](../../standards/ai-collaboration.md)\n- [安全开发规范](../../standards/security.md)\n"}, "f355f030b2b56cd39895a104b9a47880ad9ca4d1": {"t": 1785846944.283913, "n": 6306, "h": "69906f4eb51e367c", "c": "# OpenCode + GitHub Codespaces 提供商收敛集成方案(opencode-go / deepseek / xiaomi)\n\n## 1. 概述 (Overview)\n\n本文档用于把“Hermes + OpenCode + GitHub Codespaces 集成方案”落地为可执行的仓库改动清单,并明确当前模型提供商收敛策略:\n\n- 保留 `opencode-go`、`deepseek`、`xiaomi` 三类模型提供商。\n- 以 `.opencode/configs/` 作为 OpenCode 模型配置的事实源。\n- `opencode.json` 仅作为当前激活配置的派生结果。\n\n该方案聚焦“配置与流程收敛”,不直接包含功能代码实现。\n\n## 2. 准入结论 (Intake Decision)\n\n- 结论:允许作为专项设计文档先落盘,执行时按独立基础设施任务推进。\n- 原因:当前 `todo.md` 主线是缓存架构与治理深化,本事项属于开发工具链集成与运行环境治理,不宜静默插入当前功能主线。\n- 执行建议:以“专项任务”方式推进,先完成最小可运行闭环,再逐步收敛策略。\n\n## 3. 现状基线 (Current Baseline)\n\n当前仓库已具备以下基础:\n\n1. OpenCode 主配置已存在:[opencode.json](../../../opencode.json)\n2. 多个 OpenCode 预设已存在:[.opencode/configs/](../../../.opencode/configs)\n3. 模型切换脚本已存在:[scripts/setup/switch-models.mjs](../../../scripts/setup/switch-models.mjs)\n4. AI 工作树软链接脚本已存在:[scripts/setup/setup-ai.mjs](../../../scripts/setup/setup-ai.mjs)\n5. Codespaces 容器配置存在但位于根目录:[devcontainer.json](../../../devcontainer.json)\n\n已识别差异:\n\n1. 容器镜像版本为 Node 18,而项目 `engines.node` 要求 `>=20`。\n2. `opencode.opencode-go.json` 仍包含 `glm`、`qwen` 等非目标模型,与当前收敛目标不一致。\n3. 尚无“提供商白名单”层面的显式治理规则,切换脚本仍可面向全部预设。\n\n### 3.1 Node 24 镜像可用性核实\n\n核实结论:Node 24 的官方 devcontainer 镜像标签可用,后续可按 Node 24 作为容器默认目标版本。\n\n已核实的公开标签(MCR):\n\n1. `mcr.microsoft.com/devcontainers/typescript-node:24-bookworm`\n2. `mcr.microsoft.com/devcontainers/typescript-node:24`\n3. `mcr.microsoft.com/devcontainers/javascript-node:24-bookworm`\n\n核实方式:通过带超时的 HTTP 请求抓取 MCR 标签列表(`TimeoutSec=15`),避免网络异常导致探测流程长时间阻塞。\n\n## 4. 目标状态 (Target State)\n\n### 4.1 提供商策略\n\n运行链路只允许以下两类提供商:\n\n1. `opencode-go/*`\n2. `deepseek/*`\n3. `xiaomi/*`\n\n### 4.2 执行原则\n\n1. 复用仓库内现有 OpenCode 配置,不在 Codespace 内维护平行的私有配置源。\n2. `.opencode/configs/` 是唯一预设事实源;`opencode.json` 由切换脚本写入。\n3. 统一通过仓库脚本完成模型切换与治理,不依赖人工手改 JSON。\n4. 以最小改动优先,先完成可运行,再做收紧。\n\n### 4.3 Codespaces 手动设置 vs OpenCode 配置文件\n\n当前有两条可行路径:\n\n1. 在 GitHub Codespaces 中手动执行 `/connect`、`/model`,逐个设置提供商与模型。\n2. 在仓库配置(`.opencode/configs/*.json` + `opencode.json`)中声明提供商与模型,通过脚本切换激活态。\n\n对比结论如下:\n\n| 维度 | Codespaces 手动设置 | OpenCode 配置文件声明 |\n| :--- | :--- | :--- |\n| 可复现性 | 低:依赖个人操作顺序与习惯 | 高:配置与脚本可审计、可复用 |\n| 团队一致性 | 低:多人环境容易漂移 | 高:同一分支默认一致 |\n| 治理成本 | 高:需要反复口头同步 | 低:规则集中在仓库文件 |\n| 首次上手速度 | 中:单人试用快 | 中:首次需要理解预设与切换脚本 |\n| 临时调试灵活性 | 高:可即时切换 | 中:推荐通过脚本切换而非手改 |\n\n建议:本项目采用“配置文件优先、手动设置兜底”的策略。\n\n1. 日常开发与协作:以 `.opencode/configs/` 为事实源。\n2. 紧急排障或临时试验:允许在 Codespace 手动切换,但任务结束后必须回到仓库预设并记录原因。\n\n### 4.4 OpenCode Go 为内置提供商时,写入配置会发生什么\n\nOpenCode Go 是 OpenCode 内置 provider。将模型写入配置后,行为是“显式选择内置 provider”,不是“新增自定义 provider”。\n\n1. 当模型写为 `opencode-go/<model-id>`(例如 `opencode-go/deepseek-v4-pro`)时,OpenCode 会按内置 OpenCode Go 路由请求。\n2. 这不会破坏 `/connect` 流程;`/connect` 仍可用于交互式录入凭据。\n3. 在自动化场景(Codespaces / CI)中,推荐通过配置映射环境变量到 `provider.options.apiKey`,避免依赖交互式录入。\n\n补充说明:官方文档明确支持 `{env:VARIABLE}` 通用变量替换机制,但未强制规定 OpenCode Go 必须使用某个固定环境变量名。因此 `OPENCODE_GO_API_KEY` 可作为本仓库约定命名,而非官方硬编码键名。\n\n## 5. 具体改动方案 (File-level Change Plan)\n\n### 5.1 P0:必须改动\n\n| 文件 | 改动类型 | 具体改动 |\n| :--- | :--- | :--- |\n| [devcontainer.json](../../../devcontainer.json) | Update | 基础镜像升级到 Node 24(推荐 `mcr.microsoft.com/devcontainers/typescript-node:24-bookworm`);`postCreateCommand` 中保留 `pnpm install`,并新增 OpenCode 可用性检查(安装或版本检测)。 |\n| [opencode.json](../../../opencode.json) | Update | 默认模型收敛到三提供商之一(`opencode-go/deepseek-v4-pro`、`deepseek/deepseek-v4-pro`、`xiaomi/mimo-v2.5-pro`);`instructions` 继续指向 `AGENTS.md`。 |\n| [.opencode/configs/opencode.opencode-go.json](../../../.opencode/configs/opencode.opencode-go.json) | Update | 所有 agent 模型统一为 `opencode-go/deepseek-v4-pro` 或 `opencode-go/deepseek-v4-flash`,移除 `opencode-go/glm-*` 与 `opencode-go/qwen*`。 |\n| [.opencode/configs/opencode.deepseek.json](../../../.opencode/configs/opencode.deepseek.json) | Verify | 校验所有 agent 仅使用 `deepseek/*`,保持与目标策略一致。 |\n| [.opencode/configs/opencode.xiaomi.json](../../../.opencode/configs/opencode.xiaomi.json) | Verify | 保持 xiaomi 预设可用,并校验模型字段只落在 `xiaomi/*`。 |\n| [scripts/setup/switch-models.mjs](../../../scripts/setup/switch-models.mjs) | Update | 增加 provider allowlist 校验(仅允许 opencode-go / deepseek / xiaomi);保留 `--list`、`--current`。 |\n\n### 5.2 P1:建议改动\n\n| 文件 | 改动类型 | 具体改动 |\n| :--- | :--- | :--- |\n| [scripts/README.md](../../../scripts/README.md) | Update | 在 `setup` 章节新增“模型提供商白名单”说明与标准切换命令。 |\n| [docs/guide/ai-development.md](../../../docs/guide/ai-development.md) | Update | 增补 Codespaces + OpenCode 最小使用流程,强调“.opencode/configs 为事实源,opencode.json 为激活态”。 |\n\n## 6. 预设与映射建议 (Preset Mapping)\n\n### 6.1 推荐保留预设\n\n1. `opencode-go`(执行主力)\n2. `deepseek`(降级与兜底)\n3. `xiaomi`(保留为专项任务备用预设)\n\n### 6.2 推荐默认预设\n\n建议将默认预设设为 `opencode-go`,原因:\n\n1. 与“供应商策略”一致。\n2. 能保持与现有 `opencode-go/deepseek-v4-pro` 配置连续性。\n3. 当 `opencode-go` 不可用时,可快速切换到 `deepseek` 或 `xiaomi` 预设。\n\n## 7. Secrets 与环境变量方案 (Secrets & Env)\n\nGitHub Codespaces Secrets 最小集合:\n\n1. `OPENCODE_GO_API_KEY`(推荐命名;用于 OpenCode Go)\n2. `DEEPSEEK_API_KEY`(若直连 DeepSeek)\n3. `OPENROUTER_API_KEY`(若通过 OpenRouter 调度)\n4. `GITHUB_TOKEN` 或等效 PAT(用于仓库操作与 API 调用)\n\n约束:\n\n1. 不在仓库内提交任何明文密钥。\n2. 不在文档中写入真实密钥示例。\n\n推荐配置写法(示意):\n\n```json\n{\n\t\"provider\": {\n\t\t\"opencode-go\": {\n\t\t\t\"options\": {\n\t\t\t\t\"apiKey\": \"{env:OPENCODE_GO_API_KEY}\",\n\t\t\t\t\"timeout\": 300000\n\t\t\t}\n\t\t}\n\t}\n}\n```\n\n说明:`timeout` 可按任务时延需求调整;抓取或长上下文任务建议提高超时,交互式任务保持默认即可。\n\n## 8. Hermes 编排改动点 (Hermes Orchestration Plan)\n\nHermes Skill(`codespace-coding`)按以下步骤执行:\n\n1. 校验 Codespace 状态(存在且运行)\n2. 进入工作目录并执行预设切换命令\n3. 调用 OpenCode 非交互任务\n4. 拉取 diff 与关键文件内容\n5. 回传结构化结果(改动文件、验证结果、失败原因)\n\n建议命令模板:\n\n```bash\npnpm node scripts/setup/switch-models.mjs opencode-go\n```\n\n降级模板:\n\n```bash\npnpm node scripts/setup/switch-models.mjs deepseek\n```\n\n备用模板:\n\n```bash\npnpm node scripts/setup/switch-models.mjs xiaomi\n```\n\n## 9. 验证矩阵 (Validation Matrix)\n\n| 层级 | 验证项 | 验证方式 |\n| :--- | :--- | :--- |\n| V0 | 变更范围正确 | 对照本方案中的文件级清单 |\n| V1 | 配置语法有效 | JSON 语法检查 + `pnpm typecheck` |\n| V2 | 切换脚本有效 | `switch-models --list` / `--current` / 切换往返测试 |\n| V2 | Codespace 可执行 | 远程执行 `opencode -p` 最小任务 |\n| RG | 审计结论 | Review Gate 输出 Pass / Reject |\n\n## 10. 回滚策略 (Rollback)\n\n若 provider 收敛导致任务失败率明显上升:\n\n1. 先回滚 `opencode.json` 默认预设到上一个可用配置。\n2. 保留 `switch-models` allowlist 逻辑,只临时放开单一候选预设做故障排查。\n3. 在专项文档追加“失败样本 + 根因 + 下一步收敛策略”,避免反复横跳。\n\n## 11. 里程碑与交付 (Milestones)\n\n1. M1(配置收敛):完成 P0 文件改动并通过 V1。\n2. M2(执行打通):Hermes -> Codespace -> OpenCode 最小链路通过。\n3. M3(治理收口):文档、脚本说明、审计证据同步完成。\n\n---\n\n关联文档:\n\n- [CLI / MCP 自动化能力扩展设计](./cli-mcp-automation.md)\n- [AI 协作规范](../../standards/ai-collaboration.md)\n- [安全开发规范](../../standards/security.md)\n"}, "86e4ddd39c41d4890cdba94e4c562c301d43dcc8": {"t": 1786068113.2740183, "n": 6306, "h": "69906f4eb51e367c", "c": "# OpenCode + GitHub Codespaces 提供商收敛集成方案(opencode-go / deepseek / xiaomi)\n\n## 1. 概述 (Overview)\n\n本文档用于把“Hermes + OpenCode + GitHub Codespaces 集成方案”落地为可执行的仓库改动清单,并明确当前模型提供商收敛策略:\n\n- 保留 `opencode-go`、`deepseek`、`xiaomi` 三类模型提供商。\n- 以 `.opencode/configs/` 作为 OpenCode 模型配置的事实源。\n- `opencode.json` 仅作为当前激活配置的派生结果。\n\n该方案聚焦“配置与流程收敛”,不直接包含功能代码实现。\n\n## 2. 准入结论 (Intake Decision)\n\n- 结论:允许作为专项设计文档先落盘,执行时按独立基础设施任务推进。\n- 原因:当前 `todo.md` 主线是缓存架构与治理深化,本事项属于开发工具链集成与运行环境治理,不宜静默插入当前功能主线。\n- 执行建议:以“专项任务”方式推进,先完成最小可运行闭环,再逐步收敛策略。\n\n## 3. 现状基线 (Current Baseline)\n\n当前仓库已具备以下基础:\n\n1. OpenCode 主配置已存在:[opencode.json](../../../opencode.json)\n2. 多个 OpenCode 预设已存在:[.opencode/configs/](../../../.opencode/configs)\n3. 模型切换脚本已存在:[scripts/setup/switch-models.mjs](../../../scripts/setup/switch-models.mjs)\n4. AI 工作树软链接脚本已存在:[scripts/setup/setup-ai.mjs](../../../scripts/setup/setup-ai.mjs)\n5. Codespaces 容器配置存在但位于根目录:[devcontainer.json](../../../devcontainer.json)\n\n已识别差异:\n\n1. 容器镜像版本为 Node 18,而项目 `engines.node` 要求 `>=20`。\n2. `opencode.opencode-go.json` 仍包含 `glm`、`qwen` 等非目标模型,与当前收敛目标不一致。\n3. 尚无“提供商白名单”层面的显式治理规则,切换脚本仍可面向全部预设。\n\n### 3.1 Node 24 镜像可用性核实\n\n核实结论:Node 24 的官方 devcontainer 镜像标签可用,后续可按 Node 24 作为容器默认目标版本。\n\n已核实的公开标签(MCR):\n\n1. `mcr.microsoft.com/devcontainers/typescript-node:24-bookworm`\n2. `mcr.microsoft.com/devcontainers/typescript-node:24`\n3. `mcr.microsoft.com/devcontainers/javascript-node:24-bookworm`\n\n核实方式:通过带超时的 HTTP 请求抓取 MCR 标签列表(`TimeoutSec=15`),避免网络异常导致探测流程长时间阻塞。\n\n## 4. 目标状态 (Target State)\n\n### 4.1 提供商策略\n\n运行链路只允许以下两类提供商:\n\n1. `opencode-go/*`\n2. `deepseek/*`\n3. `xiaomi/*`\n\n### 4.2 执行原则\n\n1. 复用仓库内现有 OpenCode 配置,不在 Codespace 内维护平行的私有配置源。\n2. `.opencode/configs/` 是唯一预设事实源;`opencode.json` 由切换脚本写入。\n3. 统一通过仓库脚本完成模型切换与治理,不依赖人工手改 JSON。\n4. 以最小改动优先,先完成可运行,再做收紧。\n\n### 4.3 Codespaces 手动设置 vs OpenCode 配置文件\n\n当前有两条可行路径:\n\n1. 在 GitHub Codespaces 中手动执行 `/connect`、`/model`,逐个设置提供商与模型。\n2. 在仓库配置(`.opencode/configs/*.json` + `opencode.json`)中声明提供商与模型,通过脚本切换激活态。\n\n对比结论如下:\n\n| 维度 | Codespaces 手动设置 | OpenCode 配置文件声明 |\n| :--- | :--- | :--- |\n| 可复现性 | 低:依赖个人操作顺序与习惯 | 高:配置与脚本可审计、可复用 |\n| 团队一致性 | 低:多人环境容易漂移 | 高:同一分支默认一致 |\n| 治理成本 | 高:需要反复口头同步 | 低:规则集中在仓库文件 |\n| 首次上手速度 | 中:单人试用快 | 中:首次需要理解预设与切换脚本 |\n| 临时调试灵活性 | 高:可即时切换 | 中:推荐通过脚本切换而非手改 |\n\n建议:本项目采用“配置文件优先、手动设置兜底”的策略。\n\n1. 日常开发与协作:以 `.opencode/configs/` 为事实源。\n2. 紧急排障或临时试验:允许在 Codespace 手动切换,但任务结束后必须回到仓库预设并记录原因。\n\n### 4.4 OpenCode Go 为内置提供商时,写入配置会发生什么\n\nOpenCode Go 是 OpenCode 内置 provider。将模型写入配置后,行为是“显式选择内置 provider”,不是“新增自定义 provider”。\n\n1. 当模型写为 `opencode-go/<model-id>`(例如 `opencode-go/deepseek-v4-pro`)时,OpenCode 会按内置 OpenCode Go 路由请求。\n2. 这不会破坏 `/connect` 流程;`/connect` 仍可用于交互式录入凭据。\n3. 在自动化场景(Codespaces / CI)中,推荐通过配置映射环境变量到 `provider.options.apiKey`,避免依赖交互式录入。\n\n补充说明:官方文档明确支持 `{env:VARIABLE}` 通用变量替换机制,但未强制规定 OpenCode Go 必须使用某个固定环境变量名。因此 `OPENCODE_GO_API_KEY` 可作为本仓库约定命名,而非官方硬编码键名。\n\n## 5. 具体改动方案 (File-level Change Plan)\n\n### 5.1 P0:必须改动\n\n| 文件 | 改动类型 | 具体改动 |\n| :--- | :--- | :--- |\n| [devcontainer.json](../../../devcontainer.json) | Update | 基础镜像升级到 Node 24(推荐 `mcr.microsoft.com/devcontainers/typescript-node:24-bookworm`);`postCreateCommand` 中保留 `pnpm install`,并新增 OpenCode 可用性检查(安装或版本检测)。 |\n| [opencode.json](../../../opencode.json) | Update | 默认模型收敛到三提供商之一(`opencode-go/deepseek-v4-pro`、`deepseek/deepseek-v4-pro`、`xiaomi/mimo-v2.5-pro`);`instructions` 继续指向 `AGENTS.md`。 |\n| [.opencode/configs/opencode.opencode-go.json](../../../.opencode/configs/opencode.opencode-go.json) | Update | 所有 agent 模型统一为 `opencode-go/deepseek-v4-pro` 或 `opencode-go/deepseek-v4-flash`,移除 `opencode-go/glm-*` 与 `opencode-go/qwen*`。 |\n| [.opencode/configs/opencode.deepseek.json](../../../.opencode/configs/opencode.deepseek.json) | Verify | 校验所有 agent 仅使用 `deepseek/*`,保持与目标策略一致。 |\n| [.opencode/configs/opencode.xiaomi.json](../../../.opencode/configs/opencode.xiaomi.json) | Verify | 保持 xiaomi 预设可用,并校验模型字段只落在 `xiaomi/*`。 |\n| [scripts/setup/switch-models.mjs](../../../scripts/setup/switch-models.mjs) | Update | 增加 provider allowlist 校验(仅允许 opencode-go / deepseek / xiaomi);保留 `--list`、`--current`。 |\n\n### 5.2 P1:建议改动\n\n| 文件 | 改动类型 | 具体改动 |\n| :--- | :--- | :--- |\n| [scripts/README.md](../../../scripts/README.md) | Update | 在 `setup` 章节新增“模型提供商白名单”说明与标准切换命令。 |\n| [docs/guide/ai-development.md](../../../docs/guide/ai-development.md) | Update | 增补 Codespaces + OpenCode 最小使用流程,强调“.opencode/configs 为事实源,opencode.json 为激活态”。 |\n\n## 6. 预设与映射建议 (Preset Mapping)\n\n### 6.1 推荐保留预设\n\n1. `opencode-go`(执行主力)\n2. `deepseek`(降级与兜底)\n3. `xiaomi`(保留为专项任务备用预设)\n\n### 6.2 推荐默认预设\n\n建议将默认预设设为 `opencode-go`,原因:\n\n1. 与“供应商策略”一致。\n2. 能保持与现有 `opencode-go/deepseek-v4-pro` 配置连续性。\n3. 当 `opencode-go` 不可用时,可快速切换到 `deepseek` 或 `xiaomi` 预设。\n\n## 7. Secrets 与环境变量方案 (Secrets & Env)\n\nGitHub Codespaces Secrets 最小集合:\n\n1. `OPENCODE_GO_API_KEY`(推荐命名;用于 OpenCode Go)\n2. `DEEPSEEK_API_KEY`(若直连 DeepSeek)\n3. `OPENROUTER_API_KEY`(若通过 OpenRouter 调度)\n4. `GITHUB_TOKEN` 或等效 PAT(用于仓库操作与 API 调用)\n\n约束:\n\n1. 不在仓库内提交任何明文密钥。\n2. 不在文档中写入真实密钥示例。\n\n推荐配置写法(示意):\n\n```json\n{\n\t\"provider\": {\n\t\t\"opencode-go\": {\n\t\t\t\"options\": {\n\t\t\t\t\"apiKey\": \"{env:OPENCODE_GO_API_KEY}\",\n\t\t\t\t\"timeout\": 300000\n\t\t\t}\n\t\t}\n\t}\n}\n```\n\n说明:`timeout` 可按任务时延需求调整;抓取或长上下文任务建议提高超时,交互式任务保持默认即可。\n\n## 8. Hermes 编排改动点 (Hermes Orchestration Plan)\n\nHermes Skill(`codespace-coding`)按以下步骤执行:\n\n1. 校验 Codespace 状态(存在且运行)\n2. 进入工作目录并执行预设切换命令\n3. 调用 OpenCode 非交互任务\n4. 拉取 diff 与关键文件内容\n5. 回传结构化结果(改动文件、验证结果、失败原因)\n\n建议命令模板:\n\n```bash\npnpm node scripts/setup/switch-models.mjs opencode-go\n```\n\n降级模板:\n\n```bash\npnpm node scripts/setup/switch-models.mjs deepseek\n```\n\n备用模板:\n\n```bash\npnpm node scripts/setup/switch-models.mjs xiaomi\n```\n\n## 9. 验证矩阵 (Validation Matrix)\n\n| 层级 | 验证项 | 验证方式 |\n| :--- | :--- | :--- |\n| V0 | 变更范围正确 | 对照本方案中的文件级清单 |\n| V1 | 配置语法有效 | JSON 语法检查 + `pnpm typecheck` |\n| V2 | 切换脚本有效 | `switch-models --list` / `--current` / 切换往返测试 |\n| V2 | Codespace 可执行 | 远程执行 `opencode -p` 最小任务 |\n| RG | 审计结论 | Review Gate 输出 Pass / Reject |\n\n## 10. 回滚策略 (Rollback)\n\n若 provider 收敛导致任务失败率明显上升:\n\n1. 先回滚 `opencode.json` 默认预设到上一个可用配置。\n2. 保留 `switch-models` allowlist 逻辑,只临时放开单一候选预设做故障排查。\n3. 在专项文档追加“失败样本 + 根因 + 下一步收敛策略”,避免反复横跳。\n\n## 11. 里程碑与交付 (Milestones)\n\n1. M1(配置收敛):完成 P0 文件改动并通过 V1。\n2. M2(执行打通):Hermes -> Codespace -> OpenCode 最小链路通过。\n3. M3(治理收口):文档、脚本说明、审计证据同步完成。\n\n---\n\n关联文档:\n\n- [CLI / MCP 自动化能力扩展设计](./cli-mcp-automation.md)\n- [AI 协作规范](../../standards/ai-collaboration.md)\n- [安全开发规范](../../standards/security.md)\n"}}, "devcontainer.json": {"9a797673716991b7e3b4b1192ad186ca39e64a6b": {"t": 1785674053.731034, "n": 2736, "h": "6bf2b199a8b0fbb6", "c": "{\n // 配置名称(可自定义,用于在 Codespaces 中识别)\n \"name\": \"OpenCode Ready Environment\",\n // 基础镜像:选择官方 Node.js 镜像(预装 Node.js/npm,兼容 OpenCode 多种安装方式)\n // Node 24 版本,和项目运行时要求保持一致\n \"image\": \"mcr.microsoft.com/devcontainers/typescript-node:24-bookworm\",\n // 【核心】Codespace 创建完成后自动执行的命令(安装依赖并初始化 OpenCode CLI)\n \"postCreateCommand\": \"bash -c 'sudo apt update && sudo apt install -y curl git && corepack enable && pnpm install && (command -v opencode >/dev/null 2>&1 || npm install -g opencode-ai || true) && (command -v opencode >/dev/null 2>&1 && opencode --version || echo \\\"[devcontainer] opencode CLI 安装失败或不可用,请手动检查 npm registry 与包名\\\")'\",\n // 定制化配置(终端 + VS Code)\n \"customizations\": {\n // 终端配置:默认使用 zsh(更友好的终端体验),兼容 claude 命令\n \"terminal\": {\n \"shellArgs\": [\n \"/bin/zsh\",\n \"-l\"\n ]\n },\n // VS Code 配置:预装实用扩展,提升与 Claude Code 的协作效率\n \"vscode\": {\n \"extensions\": [\n \"GitHub.github-vscode-theme\", // GitHub 主题,视觉更统一\n \"ms-vscode.vscode-typescript-next\", // TypeScript 增强(Claude Code 常用)\n \"ms-vscode.git-extension-pack\", // Git 扩展包(Claude Code 需操作 Git)\n \"redhat.vscode-yaml\" // YAML 语法高亮(配置文件编辑)\n ],\n // VS Code 基础设置(可选,可自定义)\n \"settings\": {\n \"terminal.integrated.shell.linux\": \"/bin/zsh\",\n \"editor.formatOnSave\": true,\n \"files.eol\": \"\\n\"\n }\n }\n },\n // 环境变量配置(占位符)\n // 方式1:直接填写(不推荐,存在密钥泄露风险,仅用于本地测试)\n // 方式2:后续配置 GitHub Codespaces Secrets(推荐,安全可靠)\n \"remoteEnv\": {\n // OpenCode 三提供商与调度所需密钥(从本地或 Codespaces Secrets 注入)\n \"OPENCODE_GO_API_KEY\": \"${localEnv:OPENCODE_GO_API_KEY}\",\n \"DEEPSEEK_API_KEY\": \"${localEnv:DEEPSEEK_API_KEY}\",\n \"OPENROUTER_API_KEY\": \"${localEnv:OPENROUTER_API_KEY}\",\n // GitHub Token(用于仓库与 API 访问)\n \"GITHUB_TOKEN\": \"${localEnv:GITHUB_TOKEN}\",\n \"GITHUB_PERSONAL_ACCESS_TOKEN\": \"${localEnv:GITHUB_PERSONAL_ACCESS_TOKEN}\",\n // Tinyfish MCP(用于搜索)\n \"TINYFISH_MCP_URL\": \"${localEnv:TINYFISH_MCP_URL}\",\n \"TINYFISH_MCP_TOKEN\": \"${localEnv:TINYFISH_MCP_TOKEN}\"\n },\n // 容器资源限制(可选,根据自身 Codespaces 额度调整)\n \"hostRequirements\": {\n \"cpus\": 4, // 最低 4 核 CPU,提升运行效率\n \"memory\": \"16gb\" // 最低 16G 内存,确保多任务处理流畅\n // \"storage\": \"32gb\" // 最低 32G 存储,预留足够空间安装依赖和缓存\n },\n // 持久化配置(保留 OpenCode 配置和缓存,下次创建无需重新初始化)\n \"mounts\": [\n \"source=opencode-config,target=/home/node/.config/opencode,type=volume\",\n \"source=opencode-cache,target=/home/node/.cache/opencode,type=volume\"\n ],\n // 特权模式(可选,解决部分权限问题,无需手动授权)\n \"runArgs\": [\n \"--privileged\"\n ]\n}\n"}, "c0fcc48f03c34ef536c5e3716ad02df7757163e3": {"t": 1785749520.8326156, "n": 2736, "h": "6bf2b199a8b0fbb6", "c": "{\n // 配置名称(可自定义,用于在 Codespaces 中识别)\n \"name\": \"OpenCode Ready Environment\",\n // 基础镜像:选择官方 Node.js 镜像(预装 Node.js/npm,兼容 OpenCode 多种安装方式)\n // Node 24 版本,和项目运行时要求保持一致\n \"image\": \"mcr.microsoft.com/devcontainers/typescript-node:24-bookworm\",\n // 【核心】Codespace 创建完成后自动执行的命令(安装依赖并初始化 OpenCode CLI)\n \"postCreateCommand\": \"bash -c 'sudo apt update && sudo apt install -y curl git && corepack enable && pnpm install && (command -v opencode >/dev/null 2>&1 || npm install -g opencode-ai || true) && (command -v opencode >/dev/null 2>&1 && opencode --version || echo \\\"[devcontainer] opencode CLI 安装失败或不可用,请手动检查 npm registry 与包名\\\")'\",\n // 定制化配置(终端 + VS Code)\n \"customizations\": {\n // 终端配置:默认使用 zsh(更友好的终端体验),兼容 claude 命令\n \"terminal\": {\n \"shellArgs\": [\n \"/bin/zsh\",\n \"-l\"\n ]\n },\n // VS Code 配置:预装实用扩展,提升与 Claude Code 的协作效率\n \"vscode\": {\n \"extensions\": [\n \"GitHub.github-vscode-theme\", // GitHub 主题,视觉更统一\n \"ms-vscode.vscode-typescript-next\", // TypeScript 增强(Claude Code 常用)\n \"ms-vscode.git-extension-pack\", // Git 扩展包(Claude Code 需操作 Git)\n \"redhat.vscode-yaml\" // YAML 语法高亮(配置文件编辑)\n ],\n // VS Code 基础设置(可选,可自定义)\n \"settings\": {\n \"terminal.integrated.shell.linux\": \"/bin/zsh\",\n \"editor.formatOnSave\": true,\n \"files.eol\": \"\\n\"\n }\n }\n },\n // 环境变量配置(占位符)\n // 方式1:直接填写(不推荐,存在密钥泄露风险,仅用于本地测试)\n // 方式2:后续配置 GitHub Codespaces Secrets(推荐,安全可靠)\n \"remoteEnv\": {\n // OpenCode 三提供商与调度所需密钥(从本地或 Codespaces Secrets 注入)\n \"OPENCODE_GO_API_KEY\": \"${localEnv:OPENCODE_GO_API_KEY}\",\n \"DEEPSEEK_API_KEY\": \"${localEnv:DEEPSEEK_API_KEY}\",\n \"OPENROUTER_API_KEY\": \"${localEnv:OPENROUTER_API_KEY}\",\n // GitHub Token(用于仓库与 API 访问)\n \"GITHUB_TOKEN\": \"${localEnv:GITHUB_TOKEN}\",\n \"GITHUB_PERSONAL_ACCESS_TOKEN\": \"${localEnv:GITHUB_PERSONAL_ACCESS_TOKEN}\",\n // Tinyfish MCP(用于搜索)\n \"TINYFISH_MCP_URL\": \"${localEnv:TINYFISH_MCP_URL}\",\n \"TINYFISH_MCP_TOKEN\": \"${localEnv:TINYFISH_MCP_TOKEN}\"\n },\n // 容器资源限制(可选,根据自身 Codespaces 额度调整)\n \"hostRequirements\": {\n \"cpus\": 4, // 最低 4 核 CPU,提升运行效率\n \"memory\": \"16gb\" // 最低 16G 内存,确保多任务处理流畅\n // \"storage\": \"32gb\" // 最低 32G 存储,预留足够空间安装依赖和缓存\n },\n // 持久化配置(保留 OpenCode 配置和缓存,下次创建无需重新初始化)\n \"mounts\": [\n \"source=opencode-config,target=/home/node/.config/opencode,type=volume\",\n \"source=opencode-cache,target=/home/node/.cache/opencode,type=volume\"\n ],\n // 特权模式(可选,解决部分权限问题,无需手动授权)\n \"runArgs\": [\n \"--privileged\"\n ]\n}\n"}, "386e0fd77ec07e4cb9264791615eecb5443f897b": {"t": 1785749521.987714, "n": 2581, "h": "729777622d17ddc8", "c": "{\n // 配置名称(可自定义,用于在 Codespaces 中识别)\n \"name\": \"OpenCode Ready Environment\",\n // 基础镜像:选择官方 Node.js 镜像(预装 Node.js/npm,兼容 OpenCode 多种安装方式)\n // Node 24 版本,和项目运行时要求保持一致\n \"image\": \"mcr.microsoft.com/devcontainers/typescript-node:24-bookworm\",\n // 【核心】Codespace 创建完成后自动执行的命令(安装依赖并初始化 OpenCode CLI)\n \"postCreateCommand\": \"bash -c 'sudo apt update && sudo apt install -y curl git && corepack enable && pnpm install && (command -v opencode >/dev/null 2>&1 || npm install -g opencode-ai || true) && (command -v opencode >/dev/null 2>&1 && opencode --version || echo \\\"[devcontainer] opencode CLI 安装失败或不可用,请手动检查 npm registry 与包名\\\")'\",\n // 定制化配置(终端 + VS Code)\n \"customizations\": {\n // 终端配置:默认使用 zsh(更友好的终端体验),兼容 claude 命令\n \"terminal\": {\n \"shellArgs\": [\n \"/bin/zsh\",\n \"-l\"\n ]\n },\n // VS Code 配置:预装实用扩展,提升与 Claude Code 的协作效率\n \"vscode\": {\n \"extensions\": [\n \"GitHub.github-vscode-theme\", // GitHub 主题,视觉更统一\n \"ms-vscode.vscode-typescript-next\", // TypeScript 增强(Claude Code 常用)\n \"ms-vscode.git-extension-pack\", // Git 扩展包(Claude Code 需操作 Git)\n \"redhat.vscode-yaml\" // YAML 语法高亮(配置文件编辑)\n ],\n // VS Code 基础设置(可选,可自定义)\n \"settings\": {\n \"terminal.integrated.shell.linux\": \"/bin/zsh\",\n \"editor.formatOnSave\": true,\n \"files.eol\": \"\\n\"\n }\n }\n },\n // 环境变量配置(占位符)\n // 方式1:直接填写(不推荐,存在密钥泄露风险,仅用于本地测试)\n // 方式2:后续配置 GitHub Codespaces Secrets(推荐,安全可靠)\n \"remoteEnv\": {\n // OpenCode 三提供商与调度所需密钥(从本地或 Codespaces Secrets 注入)\n \"OPENCODE_GO_API_KEY\": \"${localEnv:OPENCODE_GO_API_KEY}\",\n \"DEEPSEEK_API_KEY\": \"${localEnv:DEEPSEEK_API_KEY}\",\n \"OPENROUTER_API_KEY\": \"${localEnv:OPENROUTER_API_KEY}\",\n // GitHub Token(用于仓库与 API 访问)\n \"GITHUB_TOKEN\": \"${localEnv:GITHUB_TOKEN}\",\n \"GITHUB_PERSONAL_ACCESS_TOKEN\": \"${localEnv:GITHUB_PERSONAL_ACCESS_TOKEN}\"\n },\n // 容器资源限制(可选,根据自身 Codespaces 额度调整)\n \"hostRequirements\": {\n \"cpus\": 4, // 最低 4 核 CPU,提升运行效率\n \"memory\": \"16gb\" // 最低 16G 内存,确保多任务处理流畅\n // \"storage\": \"32gb\" // 最低 32G 存储,预留足够空间安装依赖和缓存\n },\n // 持久化配置(保留 OpenCode 配置和缓存,下次创建无需重新初始化)\n \"mounts\": [\n \"source=opencode-config,target=/home/node/.config/opencode,type=volume\",\n \"source=opencode-cache,target=/home/node/.cache/opencode,type=volume\"\n ],\n // 特权模式(可选,解决部分权限问题,无需手动授权)\n \"runArgs\": [\n \"--privileged\"\n ]\n}"}, "e2da73032e3eb8bf346c3b5e750a6ed1cf414b1e": {"t": 1785749523.0958633, "n": 2505, "h": "8581b3412d4802fb", "c": "{\n // 配置名称(可自定义,用于在 Codespaces 中识别)\n \"name\": \"Claude Code Ready Environment\",\n // 基础镜像:选择官方 Node.js 镜像(预装 Node.js/npm,兼容 Claude Code 多种安装方式)\n // Node 24 版本,和项目运行时要求保持一致\n \"image\": \"mcr.microsoft.com/devcontainers/typescript-node:24-bookworm\",\n // 【核心】Codespace 创建完成后自动执行的命令(预装 Claude Code 及依赖)\n \"postCreateCommand\": \"bash -c 'sudo apt update && sudo apt install -y curl git && corepack enable && pnpm install && (curl -fsSL https://claude.ai/install.sh | bash || true) && (command -v opencode >/dev/null 2>&1 && opencode --version || echo \\\"[devcontainer] opencode CLI 未安装,已跳过版本检查\\\")'\",\n // 定制化配置(终端 + VS Code)\n \"customizations\": {\n // 终端配置:默认使用 zsh(更友好的终端体验),兼容 claude 命令\n \"terminal\": {\n \"shellArgs\": [\n \"/bin/zsh\",\n \"-l\"\n ]\n },\n // VS Code 配置:预装实用扩展,提升与 Claude Code 的协作效率\n \"vscode\": {\n \"extensions\": [\n \"GitHub.github-vscode-theme\", // GitHub 主题,视觉更统一\n \"ms-vscode.vscode-typescript-next\", // TypeScript 增强(Claude Code 常用)\n \"ms-vscode.git-extension-pack\", // Git 扩展包(Claude Code 需操作 Git)\n \"redhat.vscode-yaml\" // YAML 语法高亮(配置文件编辑)\n ],\n // VS Code 基础设置(可选,可自定义)\n \"settings\": {\n \"terminal.integrated.shell.linux\": \"/bin/zsh\",\n \"editor.formatOnSave\": true,\n \"files.eol\": \"\\n\"\n }\n }\n },\n // 环境变量配置(占位符)\n // 方式1:直接填写(不推荐,存在密钥泄露风险,仅用于本地测试)\n // 方式2:后续配置 GitHub Codespaces Secrets(推荐,安全可靠)\n \"remoteEnv\": {\n // Claude Code 认证密钥占位符(二选一即可)\n \"ANTHROPIC_BASE_URL\": \"${localEnv:ANTHROPIC_BASE_URL}\",\n \"ANTHROPIC_API_KEY\": \"${localEnv:ANTHROPIC_API_KEY}\",\n \"ANTHROPIC_AUTH_TOKEN\": \"${localEnv:ANTHROPIC_AUTH_TOKEN}\",\n // 可选:GitHub PAT 环境变量(用于 Claude Code 操作 GitHub 仓库/PR)\n \"GITHUB_PERSONAL_ACCESS_TOKEN\": \"${localEnv:GITHUB_PERSONAL_ACCESS_TOKEN}\"\n },\n // 容器资源限制(可选,根据自身 Codespaces 额度调整)\n \"hostRequirements\": {\n \"cpus\": 4, // 最低 4 核 CPU,提升运行效率\n \"memory\": \"16gb\" // 最低 16G 内存,确保多任务处理流畅\n // \"storage\": \"32gb\" // 最低 32G 存储,预留足够空间安装依赖和缓存\n },\n // 持久化配置(保留 Claude Code 认证信息和配置,下次创建无需重新安装)\n \"mounts\": [\n \"source=claude-code-config,target=/home/node/.config/claude,type=volume\",\n \"source=claude-code-cache,target=/home/node/.cache/claude,type=volume\"\n ],\n // 特权模式(可选,解决部分权限问题,无需手动授权)\n \"runArgs\": [\n \"--privileged\"\n ]\n}"}, "0e713cc44ac941b3d8b698a63ab42d843813f528": {"t": 1785749524.318239, "n": 2385, "h": "2dfd9415787268d2", "c": "{\n // 配置名称(可自定义,用于在 Codespaces 中识别)\n \"name\": \"Claude Code Ready Environment\",\n // 基础镜像:选择官方 Node.js 镜像(预装 Node.js/npm,兼容 Claude Code 多种安装方式)\n // 18-bullseye 稳定版,兼容性强,适合大多数场景\n \"image\": \"mcr.microsoft.com/devcontainers/node:18-bullseye\",\n // 【核心】Codespace 创建完成后自动执行的命令(预装 Claude Code 及依赖)\n \"postCreateCommand\": \"bash -c 'sudo apt update && sudo apt install -y curl git && corepack enable && pnpm install && (curl -fsSL https://claude.ai/install.sh | bash || true)'\",\n // 定制化配置(终端 + VS Code)\n \"customizations\": {\n // 终端配置:默认使用 zsh(更友好的终端体验),兼容 claude 命令\n \"terminal\": {\n \"shellArgs\": [\n \"/bin/zsh\",\n \"-l\"\n ]\n },\n // VS Code 配置:预装实用扩展,提升与 Claude Code 的协作效率\n \"vscode\": {\n \"extensions\": [\n \"GitHub.github-vscode-theme\", // GitHub 主题,视觉更统一\n \"ms-vscode.vscode-typescript-next\", // TypeScript 增强(Claude Code 常用)\n \"ms-vscode.git-extension-pack\", // Git 扩展包(Claude Code 需操作 Git)\n \"redhat.vscode-yaml\" // YAML 语法高亮(配置文件编辑)\n ],\n // VS Code 基础设置(可选,可自定义)\n \"settings\": {\n \"terminal.integrated.shell.linux\": \"/bin/zsh\",\n \"editor.formatOnSave\": true,\n \"files.eol\": \"\\n\"\n }\n }\n },\n // 环境变量配置(占位符)\n // 方式1:直接填写(不推荐,存在密钥泄露风险,仅用于本地测试)\n // 方式2:后续配置 GitHub Codespaces Secrets(推荐,安全可靠)\n \"remoteEnv\": {\n // Claude Code 认证密钥占位符(二选一即可)\n \"ANTHROPIC_BASE_URL\": \"${localEnv:ANTHROPIC_BASE_URL}\",\n \"ANTHROPIC_API_KEY\": \"${localEnv:ANTHROPIC_API_KEY}\",\n \"ANTHROPIC_AUTH_TOKEN\": \"${localEnv:ANTHROPIC_AUTH_TOKEN}\",\n // 可选:GitHub PAT 环境变量(用于 Claude Code 操作 GitHub 仓库/PR)\n \"GITHUB_PERSONAL_ACCESS_TOKEN\": \"${localEnv:GITHUB_PERSONAL_ACCESS_TOKEN}\"\n },\n // 容器资源限制(可选,根据自身 Codespaces 额度调整)\n \"hostRequirements\": {\n \"cpus\": 4, // 最低 4 核 CPU,提升运行效率\n \"memory\": \"16gb\" // 最低 16G 内存,确保多任务处理流畅\n // \"storage\": \"32gb\" // 最低 32G 存储,预留足够空间安装依赖和缓存\n },\n // 持久化配置(保留 Claude Code 认证信息和配置,下次创建无需重新安装)\n \"mounts\": [\n \"source=claude-code-config,target=/home/node/.config/claude,type=volume\",\n \"source=claude-code-cache,target=/home/node/.cache/claude,type=volume\"\n ],\n // 特权模式(可选,解决部分权限问题,无需手动授权)\n \"runArgs\": [\n \"--privileged\"\n ]\n}\n"}, "c20f986876c47c251b96315b46197d9adc5d8b0f": {"t": 1785749525.3999202, "n": 2395, "h": "10752cda030ed399", "c": "{\n // 配置名称(可自定义,用于在 Codespaces 中识别)\n \"name\": \"Claude Code Ready Environment\",\n // 基础镜像:选择官方 Node.js 镜像(预装 Node.js/npm,兼容 Claude Code 多种安装方式)\n // 18-bullseye 稳定版,兼容性强,适合大多数场景\n \"image\": \"mcr.microsoft.com/devcontainers/node:18-bullseye\",\n // 【核心】Codespace 创建完成后自动执行的命令(预装 Claude Code 及依赖)\n \"postCreateCommand\": \"bash -c 'sudo apt update && sudo apt install -y curl git && corepack enable && pnpm install && (curl -fsSL https://claude.ai/install.sh | bash || true)'\",\n // 定制化配置(终端 + VS Code)\n \"customizations\": {\n // 终端配置:默认使用 zsh(更友好的终端体验),兼容 claude 命令\n \"terminal\": {\n \"shellArgs\": [\n \"/bin/zsh\",\n \"-l\"\n ]\n },\n // VS Code 配置:预装实用扩展,提升与 Claude Code 的协作效率\n \"vscode\": {\n \"extensions\": [\n \"GitHub.github-vscode-theme\", // GitHub 主题,视觉更统一\n \"ms-vscode.vscode-typescript-next\", // TypeScript 增强(Claude Code 常用)\n \"ms-vscode.git-extension-pack\", // Git 扩展包(Claude Code 需操作 Git)\n \"redhat.vscode-yaml\" // YAML 语法高亮(配置文件编辑)\n ],\n // VS Code 基础设置(可选,可自定义)\n \"settings\": {\n \"terminal.integrated.shell.linux\": \"/bin/zsh\",\n \"editor.formatOnSave\": true,\n \"files.eol\": \"\\n\"\n }\n }\n },\n // 环境变量配置(占位符)\n // 方式1:直接填写(不推荐,存在密钥泄露风险,仅用于本地测试)\n // 方式2:后续配置 GitHub Codespaces Secrets(推荐,安全可靠)\n \"remoteEnv\": {\n // Claude Code 认证密钥占位符(二选一即可)\n \"ANTHROPIC_BASE_URL\": \"${localEnv:ANTHROPIC_BASE_URL}\",\n \"ANTHROPIC_API_KEY\": \"${localEnv:ANTHROPIC_API_KEY}\",\n \"ANTHROPIC_AUTH_TOKEN\": \"${localEnv:ANTHROPIC_AUTH_TOKEN}\",\n // 可选:GitHub PAT 环境变量(用于 Claude Code 操作 GitHub 仓库/PR)\n \"GITHUB_PERSONAL_ACCESS_TOKEN\": \"${localEnv:GITHUB_PERSONAL_ACCESS_TOKEN}\"\n },\n // 容器资源限制(可选,根据自身 Codespaces 额度调整)\n \"hostRequirements\": {\n \"cpus\": 2, // 最低 2 核,推荐 4 核(更流畅运行 Claude Code)\n \"memory\": \"8gb\" // 最低 8G 内存,避免运行卡顿\n // \"storage\": \"32gb\" // 最低 32G 存储,预留足够空间安装依赖和缓存\n },\n // 持久化配置(保留 Claude Code 认证信息和配置,下次创建无需重新安装)\n \"mounts\": [\n \"source=claude-code-config,target=/home/node/.config/claude,type=volume\",\n \"source=claude-code-cache,target=/home/node/.cache/claude,type=volume\"\n ],\n // 特权模式(可选,解决部分权限问题,无需手动授权)\n \"runArgs\": [\n \"--privileged\"\n ]\n}\n"}, "b19f6761f90df979cf4626f6bea9df1a6e9acd0c": {"t": 1785749527.4914079, "n": 2379, "h": "8450343fece8ab75", "c": "{\n // 配置名称(可自定义,用于在 Codespaces 中识别)\n \"name\": \"Claude Code Ready Environment\",\n // 基础镜像:选择官方 Node.js 镜像(预装 Node.js/npm,兼容 Claude Code 多种安装方式)\n // 18-bullseye 稳定版,兼容性强,适合大多数场景\n \"image\": \"mcr.microsoft.com/devcontainers/node:18-bullseye\",\n // 【核心】Codespace 创建完成后自动执行的命令(预装 Claude Code 及依赖)\n \"postCreateCommand\": \"bash -c 'sudo apt update && sudo apt install -y curl git && curl -fsSL https://claude.ai/install.sh | bash && source ~/.bashrc || true '\",\n // 定制化配置(终端 + VS Code)\n \"customizations\": {\n // 终端配置:默认使用 zsh(更友好的终端体验),兼容 claude 命令\n \"terminal\": {\n \"shellArgs\": [\n \"/bin/zsh\",\n \"-l\"\n ]\n },\n // VS Code 配置:预装实用扩展,提升与 Claude Code 的协作效率\n \"vscode\": {\n \"extensions\": [\n \"GitHub.github-vscode-theme\", // GitHub 主题,视觉更统一\n \"ms-vscode.vscode-typescript-next\", // TypeScript 增强(Claude Code 常用)\n \"ms-vscode.git-extension-pack\", // Git 扩展包(Claude Code 需操作 Git)\n \"redhat.vscode-yaml\" // YAML 语法高亮(配置文件编辑)\n ],\n // VS Code 基础设置(可选,可自定义)\n \"settings\": {\n \"terminal.integrated.shell.linux\": \"/bin/zsh\",\n \"editor.formatOnSave\": true,\n \"files.eol\": \"\\n\"\n }\n }\n },\n // 环境变量配置(占位符)\n // 方式1:直接填写(不推荐,存在密钥泄露风险,仅用于本地测试)\n // 方式2:后续配置 GitHub Codespaces Secrets(推荐,安全可靠)\n \"remoteEnv\": {\n // Claude Code 认证密钥占位符(二选一即可)\n \"ANTHROPIC_BASE_URL\": \"${localEnv:ANTHROPIC_BASE_URL}\",\n \"ANTHROPIC_API_KEY\": \"${localEnv:ANTHROPIC_API_KEY}\",\n \"ANTHROPIC_AUTH_TOKEN\": \"${localEnv:ANTHROPIC_AUTH_TOKEN}\",\n // 可选:GitHub PAT 环境变量(用于 Claude Code 操作 GitHub 仓库/PR)\n \"GITHUB_PERSONAL_ACCESS_TOKEN\": \"${localEnv:GITHUB_PERSONAL_ACCESS_TOKEN}\"\n },\n // 容器资源限制(可选,根据自身 Codespaces 额度调整)\n \"hostRequirements\": {\n \"cpus\": 2, // 最低 2 核,推荐 4 核(更流畅运行 Claude Code)\n \"memory\": \"8gb\" // 最低 8G 内存,避免运行卡顿\n // \"storage\": \"32gb\" // 最低 32G 存储,预留足够空间安装依赖和缓存\n },\n // 持久化配置(保留 Claude Code 认证信息和配置,下次创建无需重新安装)\n \"mounts\": [\n \"source=claude-code-config,target=/home/node/.config/claude,type=volume\",\n \"source=claude-code-cache,target=/home/node/.cache/claude,type=volume\"\n ],\n // 特权模式(可选,解决部分权限问题,无需手动授权)\n \"runArgs\": [\n \"--privileged\"\n ]\n}\n"}, "83e4748e04071723b8935b0f56b9b4602e9d410a": {"t": 1785749528.5841367, "n": 2405, "h": "43fab8856936b166", "c": "{\n // 配置名称(可自定义,用于在 Codespaces 中识别)\n \"name\": \"Claude Code Ready Environment\",\n // 基础镜像:选择官方 Node.js 镜像(预装 Node.js/npm,兼容 Claude Code 多种安装方式)\n // 18-bullseye 稳定版,兼容性强,适合大多数场景\n \"image\": \"mcr.microsoft.com/devcontainers/node:18-bullseye\",\n // 【核心】Codespace 创建完成后自动执行的命令(预装 Claude Code 及依赖)\n \"postCreateCommand\": \"bash -c 'sudo apt update && sudo apt install -y curl git && curl -fsSL https://claude.ai/install.sh | bash && source ~/.bashrc || true && source ~/.zshrc || true'\",\n // 定制化配置(终端 + VS Code)\n \"customizations\": {\n // 终端配置:默认使用 zsh(更友好的终端体验),兼容 claude 命令\n \"terminal\": {\n \"shellArgs\": [\n \"/bin/zsh\",\n \"-l\"\n ]\n },\n // VS Code 配置:预装实用扩展,提升与 Claude Code 的协作效率\n \"vscode\": {\n \"extensions\": [\n \"GitHub.github-vscode-theme\", // GitHub 主题,视觉更统一\n \"ms-vscode.vscode-typescript-next\", // TypeScript 增强(Claude Code 常用)\n \"ms-vscode.git-extension-pack\", // Git 扩展包(Claude Code 需操作 Git)\n \"redhat.vscode-yaml\" // YAML 语法高亮(配置文件编辑)\n ],\n // VS Code 基础设置(可选,可自定义)\n \"settings\": {\n \"terminal.integrated.shell.linux\": \"/bin/zsh\",\n \"editor.formatOnSave\": true,\n \"files.eol\": \"\\n\"\n }\n }\n },\n // 环境变量配置(占位符)\n // 方式1:直接填写(不推荐,存在密钥泄露风险,仅用于本地测试)\n // 方式2:后续配置 GitHub Codespaces Secrets(推荐,安全可靠)\n \"remoteEnv\": {\n // Claude Code 认证密钥占位符(二选一即可)\n \"ANTHROPIC_BASE_URL\": \"${localEnv:ANTHROPIC_BASE_URL}\",\n \"ANTHROPIC_API_KEY\": \"${localEnv:ANTHROPIC_API_KEY}\",\n \"ANTHROPIC_AUTH_TOKEN\": \"${localEnv:ANTHROPIC_AUTH_TOKEN}\",\n // 可选:GitHub PAT 环境变量(用于 Claude Code 操作 GitHub 仓库/PR)\n \"GITHUB_PERSONAL_ACCESS_TOKEN\": \"${localEnv:GITHUB_PERSONAL_ACCESS_TOKEN}\"\n },\n // 容器资源限制(可选,根据自身 Codespaces 额度调整)\n \"hostRequirements\": {\n \"cpus\": 2, // 最低 2 核,推荐 4 核(更流畅运行 Claude Code)\n \"memory\": \"8gb\" // 最低 8G 内存,避免运行卡顿\n // \"storage\": \"32gb\" // 最低 32G 存储,预留足够空间安装依赖和缓存\n },\n // 持久化配置(保留 Claude Code 认证信息和配置,下次创建无需重新安装)\n \"mounts\": [\n \"source=claude-code-config,target=/home/node/.config/claude,type=volume\",\n \"source=claude-code-cache,target=/home/node/.cache/claude,type=volume\"\n ],\n // 特权模式(可选,解决部分权限问题,无需手动授权)\n \"runArgs\": [\n \"--privileged\"\n ]\n}\n"}, "f355f030b2b56cd39895a104b9a47880ad9ca4d1": {"t": 1785846821.097426, "n": 2736, "h": "6bf2b199a8b0fbb6", "c": "{\n // 配置名称(可自定义,用于在 Codespaces 中识别)\n \"name\": \"OpenCode Ready Environment\",\n // 基础镜像:选择官方 Node.js 镜像(预装 Node.js/npm,兼容 OpenCode 多种安装方式)\n // Node 24 版本,和项目运行时要求保持一致\n \"image\": \"mcr.microsoft.com/devcontainers/typescript-node:24-bookworm\",\n // 【核心】Codespace 创建完成后自动执行的命令(安装依赖并初始化 OpenCode CLI)\n \"postCreateCommand\": \"bash -c 'sudo apt update && sudo apt install -y curl git && corepack enable && pnpm install && (command -v opencode >/dev/null 2>&1 || npm install -g opencode-ai || true) && (command -v opencode >/dev/null 2>&1 && opencode --version || echo \\\"[devcontainer] opencode CLI 安装失败或不可用,请手动检查 npm registry 与包名\\\")'\",\n // 定制化配置(终端 + VS Code)\n \"customizations\": {\n // 终端配置:默认使用 zsh(更友好的终端体验),兼容 claude 命令\n \"terminal\": {\n \"shellArgs\": [\n \"/bin/zsh\",\n \"-l\"\n ]\n },\n // VS Code 配置:预装实用扩展,提升与 Claude Code 的协作效率\n \"vscode\": {\n \"extensions\": [\n \"GitHub.github-vscode-theme\", // GitHub 主题,视觉更统一\n \"ms-vscode.vscode-typescript-next\", // TypeScript 增强(Claude Code 常用)\n \"ms-vscode.git-extension-pack\", // Git 扩展包(Claude Code 需操作 Git)\n \"redhat.vscode-yaml\" // YAML 语法高亮(配置文件编辑)\n ],\n // VS Code 基础设置(可选,可自定义)\n \"settings\": {\n \"terminal.integrated.shell.linux\": \"/bin/zsh\",\n \"editor.formatOnSave\": true,\n \"files.eol\": \"\\n\"\n }\n }\n },\n // 环境变量配置(占位符)\n // 方式1:直接填写(不推荐,存在密钥泄露风险,仅用于本地测试)\n // 方式2:后续配置 GitHub Codespaces Secrets(推荐,安全可靠)\n \"remoteEnv\": {\n // OpenCode 三提供商与调度所需密钥(从本地或 Codespaces Secrets 注入)\n \"OPENCODE_GO_API_KEY\": \"${localEnv:OPENCODE_GO_API_KEY}\",\n \"DEEPSEEK_API_KEY\": \"${localEnv:DEEPSEEK_API_KEY}\",\n \"OPENROUTER_API_KEY\": \"${localEnv:OPENROUTER_API_KEY}\",\n // GitHub Token(用于仓库与 API 访问)\n \"GITHUB_TOKEN\": \"${localEnv:GITHUB_TOKEN}\",\n \"GITHUB_PERSONAL_ACCESS_TOKEN\": \"${localEnv:GITHUB_PERSONAL_ACCESS_TOKEN}\",\n // Tinyfish MCP(用于搜索)\n \"TINYFISH_MCP_URL\": \"${localEnv:TINYFISH_MCP_URL}\",\n \"TINYFISH_MCP_TOKEN\": \"${localEnv:TINYFISH_MCP_TOKEN}\"\n },\n // 容器资源限制(可选,根据自身 Codespaces 额度调整)\n \"hostRequirements\": {\n \"cpus\": 4, // 最低 4 核 CPU,提升运行效率\n \"memory\": \"16gb\" // 最低 16G 内存,确保多任务处理流畅\n // \"storage\": \"32gb\" // 最低 32G 存储,预留足够空间安装依赖和缓存\n },\n // 持久化配置(保留 OpenCode 配置和缓存,下次创建无需重新初始化)\n \"mounts\": [\n \"source=opencode-config,target=/home/node/.config/opencode,type=volume\",\n \"source=opencode-cache,target=/home/node/.cache/opencode,type=volume\"\n ],\n // 特权模式(可选,解决部分权限问题,无需手动授权)\n \"runArgs\": [\n \"--privileged\"\n ]\n}\n"}, "86e4ddd39c41d4890cdba94e4c562c301d43dcc8": {"t": 1786067333.289447, "n": 2736, "h": "6bf2b199a8b0fbb6", "c": "{\n // 配置名称(可自定义,用于在 Codespaces 中识别)\n \"name\": \"OpenCode Ready Environment\",\n // 基础镜像:选择官方 Node.js 镜像(预装 Node.js/npm,兼容 OpenCode 多种安装方式)\n // Node 24 版本,和项目运行时要求保持一致\n \"image\": \"mcr.microsoft.com/devcontainers/typescript-node:24-bookworm\",\n // 【核心】Codespace 创建完成后自动执行的命令(安装依赖并初始化 OpenCode CLI)\n \"postCreateCommand\": \"bash -c 'sudo apt update && sudo apt install -y curl git && corepack enable && pnpm install && (command -v opencode >/dev/null 2>&1 || npm install -g opencode-ai || true) && (command -v opencode >/dev/null 2>&1 && opencode --version || echo \\\"[devcontainer] opencode CLI 安装失败或不可用,请手动检查 npm registry 与包名\\\")'\",\n // 定制化配置(终端 + VS Code)\n \"customizations\": {\n // 终端配置:默认使用 zsh(更友好的终端体验),兼容 claude 命令\n \"terminal\": {\n \"shellArgs\": [\n \"/bin/zsh\",\n \"-l\"\n ]\n },\n // VS Code 配置:预装实用扩展,提升与 Claude Code 的协作效率\n \"vscode\": {\n \"extensions\": [\n \"GitHub.github-vscode-theme\", // GitHub 主题,视觉更统一\n \"ms-vscode.vscode-typescript-next\", // TypeScript 增强(Claude Code 常用)\n \"ms-vscode.git-extension-pack\", // Git 扩展包(Claude Code 需操作 Git)\n \"redhat.vscode-yaml\" // YAML 语法高亮(配置文件编辑)\n ],\n // VS Code 基础设置(可选,可自定义)\n \"settings\": {\n \"terminal.integrated.shell.linux\": \"/bin/zsh\",\n \"editor.formatOnSave\": true,\n \"files.eol\": \"\\n\"\n }\n }\n },\n // 环境变量配置(占位符)\n // 方式1:直接填写(不推荐,存在密钥泄露风险,仅用于本地测试)\n // 方式2:后续配置 GitHub Codespaces Secrets(推荐,安全可靠)\n \"remoteEnv\": {\n // OpenCode 三提供商与调度所需密钥(从本地或 Codespaces Secrets 注入)\n \"OPENCODE_GO_API_KEY\": \"${localEnv:OPENCODE_GO_API_KEY}\",\n \"DEEPSEEK_API_KEY\": \"${localEnv:DEEPSEEK_API_KEY}\",\n \"OPENROUTER_API_KEY\": \"${localEnv:OPENROUTER_API_KEY}\",\n // GitHub Token(用于仓库与 API 访问)\n \"GITHUB_TOKEN\": \"${localEnv:GITHUB_TOKEN}\",\n \"GITHUB_PERSONAL_ACCESS_TOKEN\": \"${localEnv:GITHUB_PERSONAL_ACCESS_TOKEN}\",\n // Tinyfish MCP(用于搜索)\n \"TINYFISH_MCP_URL\": \"${localEnv:TINYFISH_MCP_URL}\",\n \"TINYFISH_MCP_TOKEN\": \"${localEnv:TINYFISH_MCP_TOKEN}\"\n },\n // 容器资源限制(可选,根据自身 Codespaces 额度调整)\n \"hostRequirements\": {\n \"cpus\": 4, // 最低 4 核 CPU,提升运行效率\n \"memory\": \"16gb\" // 最低 16G 内存,确保多任务处理流畅\n // \"storage\": \"32gb\" // 最低 32G 存储,预留足够空间安装依赖和缓存\n },\n // 持久化配置(保留 OpenCode 配置和缓存,下次创建无需重新初始化)\n \"mounts\": [\n \"source=opencode-config,target=/home/node/.config/opencode,type=volume\",\n \"source=opencode-cache,target=/home/node/.cache/opencode,type=volume\"\n ],\n // 特权模式(可选,解决部分权限问题,无需手动授权)\n \"runArgs\": [\n \"--privileged\"\n ]\n}\n"}, "5bf84cd7e3091534a239218f202a100f45042ec0": {"t": 1786068225.8319895, "n": 2736, "h": "6bf2b199a8b0fbb6", "c": "{\n // 配置名称(可自定义,用于在 Codespaces 中识别)\n \"name\": \"OpenCode Ready Environment\",\n // 基础镜像:选择官方 Node.js 镜像(预装 Node.js/npm,兼容 OpenCode 多种安装方式)\n // Node 24 版本,和项目运行时要求保持一致\n \"image\": \"mcr.microsoft.com/devcontainers/typescript-node:24-bookworm\",\n // 【核心】Codespace 创建完成后自动执行的命令(安装依赖并初始化 OpenCode CLI)\n \"postCreateCommand\": \"bash -c 'sudo apt update && sudo apt install -y curl git && corepack enable && pnpm install && (command -v opencode >/dev/null 2>&1 || npm install -g opencode-ai || true) && (command -v opencode >/dev/null 2>&1 && opencode --version || echo \\\"[devcontainer] opencode CLI 安装失败或不可用,请手动检查 npm registry 与包名\\\")'\",\n // 定制化配置(终端 + VS Code)\n \"customizations\": {\n // 终端配置:默认使用 zsh(更友好的终端体验),兼容 claude 命令\n \"terminal\": {\n \"shellArgs\": [\n \"/bin/zsh\",\n \"-l\"\n ]\n },\n // VS Code 配置:预装实用扩展,提升与 Claude Code 的协作效率\n \"vscode\": {\n \"extensions\": [\n \"GitHub.github-vscode-theme\", // GitHub 主题,视觉更统一\n \"ms-vscode.vscode-typescript-next\", // TypeScript 增强(Claude Code 常用)\n \"ms-vscode.git-extension-pack\", // Git 扩展包(Claude Code 需操作 Git)\n \"redhat.vscode-yaml\" // YAML 语法高亮(配置文件编辑)\n ],\n // VS Code 基础设置(可选,可自定义)\n \"settings\": {\n \"terminal.integrated.shell.linux\": \"/bin/zsh\",\n \"editor.formatOnSave\": true,\n \"files.eol\": \"\\n\"\n }\n }\n },\n // 环境变量配置(占位符)\n // 方式1:直接填写(不推荐,存在密钥泄露风险,仅用于本地测试)\n // 方式2:后续配置 GitHub Codespaces Secrets(推荐,安全可靠)\n \"remoteEnv\": {\n // OpenCode 三提供商与调度所需密钥(从本地或 Codespaces Secrets 注入)\n \"OPENCODE_GO_API_KEY\": \"${localEnv:OPENCODE_GO_API_KEY}\",\n \"DEEPSEEK_API_KEY\": \"${localEnv:DEEPSEEK_API_KEY}\",\n \"OPENROUTER_API_KEY\": \"${localEnv:OPENROUTER_API_KEY}\",\n // GitHub Token(用于仓库与 API 访问)\n \"GITHUB_TOKEN\": \"${localEnv:GITHUB_TOKEN}\",\n \"GITHUB_PERSONAL_ACCESS_TOKEN\": \"${localEnv:GITHUB_PERSONAL_ACCESS_TOKEN}\",\n // Tinyfish MCP(用于搜索)\n \"TINYFISH_MCP_URL\": \"${localEnv:TINYFISH_MCP_URL}\",\n \"TINYFISH_MCP_TOKEN\": \"${localEnv:TINYFISH_MCP_TOKEN}\"\n },\n // 容器资源限制(可选,根据自身 Codespaces 额度调整)\n \"hostRequirements\": {\n \"cpus\": 4, // 最低 4 核 CPU,提升运行效率\n \"memory\": \"16gb\" // 最低 16G 内存,确保多任务处理流畅\n // \"storage\": \"32gb\" // 最低 32G 存储,预留足够空间安装依赖和缓存\n },\n // 持久化配置(保留 OpenCode 配置和缓存,下次创建无需重新初始化)\n \"mounts\": [\n \"source=opencode-config,target=/home/node/.config/opencode,type=volume\",\n \"source=opencode-cache,target=/home/node/.cache/opencode,type=volume\"\n ],\n // 特权模式(可选,解决部分权限问题,无需手动授权)\n \"runArgs\": [\n \"--privileged\"\n ]\n}\n"}}, ".env.full.example": {"9a797673716991b7e3b4b1192ad186ca39e64a6b": {"t": 1785746762.322405, "n": 12810, "h": "ecd8d0f266646bd7", "c": "# ==========================================\n# 墨梅博客 (Momei) 环境变量完整示例文件\n# ==========================================\n\n# ------------------------------------------\n# 1. 基础核心配置 (Essential)\n# ------------------------------------------\n\n# 应用名称\nNUXT_PUBLIC_APP_NAME=墨梅博客\n\n# 站点 SEO 描述\nNUXT_PUBLIC_SITE_DESCRIPTION=一个基于 Nuxt 4 构建的现代化 AI 驱动博客平台\n\n# 站点 SEO 关键词 (逗号分隔)\nNUXT_PUBLIC_SITE_KEYWORDS=Nuxt,Vue,Blog,AI,TypeScript\n\n# 默认文章版权协议类型 (例如 all-rights-reserved, cc-by-nc-sa)\nNUXT_PUBLIC_POST_COPYRIGHT=all-rights-reserved\n\n# 站点版权展示信息 (用于页脚版权行)\nNUXT_PUBLIC_SITE_COPYRIGHT_OWNER=XX博客版权所有\nNUXT_PUBLIC_SITE_COPYRIGHT_START_YEAR=2026\n\n# 兼容旧变量名,建议迁移到新的 POST_/SITE_ 命名\n# NUXT_PUBLIC_DEFAULT_COPYRIGHT=all-rights-reserved\n# NUXT_PUBLIC_FOOTER_COPYRIGHT_OWNER=\n# NUXT_PUBLIC_FOOTER_COPYRIGHT_START_YEAR=\n\n# 默认语言 (en-US, zh-CN)\nNUXT_PUBLIC_DEFAULT_LANGUAGE=zh-CN\n\n# 站点 URL(注意:公开访问的站点地址,用于 SEO 和 RSS 生成)\nNUXT_PUBLIC_SITE_URL=http://localhost:3000\n\n# Better Auth 的基础 URL(必需,用于认证回调重定向,推荐与 SITE_URL 一致)\nNUXT_PUBLIC_AUTH_BASE_URL=http://localhost:3000\n\n# 用于加密、签名和哈希的密钥。生产环境必须设置!\n# 可以使用 `openssl rand -hex 32` 生成。开发环境下会自动生成随机值。\nAUTH_SECRET=\n\n# 雪花算法机器 ID (0-1023),用于生成分布式唯一 ID。默认自动获取进程 PID 对 1024 取余\n# MACHINE_ID=\n\n# ------------------------------------------\n# 2. 数据库与高性能配置 (Database & Cache)\n# ------------------------------------------\n\n# 数据库连接 URL (支持 SQLite, MySQL, PostgreSQL)\n# 支持智能推断:\n# - SQLite (推荐): sqlite://database/momei.sqlite (或 file://database/momei.sqlite)\n# - MySQL: mysql://user:pass@host:3306/db\n# - PostgreSQL: postgres://user:pass@host:5432/db\n# 如果未配置,默认将使用本地 SQLite\nDATABASE_URL=sqlite://database/momei.sqlite\n\n# 手动指定数据库类型 (可选,通常由 URL 自动推断: sqlite, mysql, postgres)\n# DATABASE_TYPE=sqlite\n\n# SQLite 数据库路径 (兼容旧版,不推荐手动设置)\n# DATABASE_PATH=database/momei.sqlite\n\n# 是否自动同步数据库表结构 (生产环境建议固定为 false,仅手动控制迁移)\nDATABASE_SYNCHRONIZE=false\n\n# 数据库连接调节 (可选)\n# DATABASE_SSL=false\n# DATABASE_CHARSET=utf8_general_ci\n# DATABASE_TIMEZONE=local\n# DATABASE_ENTITY_PREFIX=momei_\n\n# Redis 连接地址 (可选,配置后将启用基于 Redis 的缓存或限流)\n# REDIS_URL=redis://localhost:6379\n\n# Vercel KV / Upstash Redis 持久化缓存 (可选,用于 ISR/SWR 跨实例共享缓存)\n# Vercel KV 基于 Upstash Redis,在 Vercel 项目中集成 KV 后以下环境变量会自动配置\n# KV_URL=\n# KV_REST_API_URL=\n# KV_REST_API_TOKEN=\n# KV_REST_API_READ_ONLY_TOKEN=\n\n# ------------------------------------------\n# 3. 认证与社交登录 (Authentication)\n# ------------------------------------------\n\n# 是否允许新用户注册\nALLOW_REGISTRATION=true\n\n# 是否启用匿名登录 (无需邮箱密码即可登录)\nANONYMOUS_LOGIN_ENABLED=false\n\n# GitHub 配置 (OAuth)\nNUXT_PUBLIC_GITHUB_CLIENT_ID=\nGITHUB_CLIENT_SECRET=\n\n# Google 配置 (OAuth)\nNUXT_PUBLIC_GOOGLE_CLIENT_ID=\nGOOGLE_CLIENT_SECRET=\n\n# ------------------------------------------\n# 4. AI 核心引擎 (AI Integration - Text & Image)\n# ------------------------------------------\n\n# 是否启用 AI 功能\nAI_ENABLED=true\n\n# 主 AI 提供商 (openai, anthropic, deepseek, doubao, siliconflow, gemini, volcengine)\nAI_PROVIDER=openai\n\n# AI API 密钥\nAI_API_KEY=\n\n# 默认模型名称 (如 gpt-4o, claude-3-5-sonnet, deepseek-chat)\nAI_MODEL=gpt-4o\n\n# API 代理端点 (可选,用于 OpenAI 兼容服务)\nAI_API_ENDPOINT=\n\n# AI 生成参数控制 (可选,默认内置优化值)\n# AI_MAX_TOKENS=2048\n# AI_TEMPERATURE=0.7\n# AI_MAX_CONTENT_LENGTH=50000\n# AI_CHUNK_SIZE=4000\n# AI_TEXT_DIRECT_RETURN_MAX_CHARS=1000\n# AI_TEXT_TASK_CHUNK_SIZE=4000\n# AI_TEXT_TASK_CONCURRENCY=3\n# AI 重任务超时(用于 TTS / ASR / 图片生成等耗时任务)\nAI_HEAVY_TASK_TIMEOUT=5m\n\n# Gemini 专用令牌 (如果 provider 为 gemini 且需要独立令牌鉴权)\n# GEMINI_API_TOKEN=\n\n# AI 图像生成配置\nAI_IMAGE_ENABLED=false\nAI_IMAGE_PROVIDER=openai\nAI_IMAGE_API_KEY=\nAI_IMAGE_MODEL=dall-e-3\nAI_IMAGE_ENDPOINT=\n\n# AI 配额治理 (可选,支持直接复用后台设置页导出的 JSON)\n# AI_QUOTA_ENABLED=false\n# AI_QUOTA_POLICIES=[{\"subjectType\":\"global\",\"subjectValue\":\"default\",\"scope\":\"all\",\"period\":\"day\",\"maxRequests\":100,\"maxQuotaUnits\":200,\"enabled\":true}]\n# AI_ALERT_THRESHOLDS={\"enabled\":true,\"quotaUsageRatios\":[0.5,0.8,1],\"costUsageRatios\":[0.8,1],\"failureBurst\":{\"enabled\":true,\"windowMinutes\":10,\"maxFailures\":3,\"categories\":[\"image\",\"asr\",\"tts\",\"podcast\"]},\"dedupeWindowMinutes\":1440,\"maxAlerts\":10}\n\n# ------------------------------------------\n# 5. AI 多模态音频 (ASR & TTS)\n# ------------------------------------------\n\n# ASR (语音识别) 配置\n# 是否启用 ASR 功能\nASR_ENABLED=false\n# ASR 提供商 (openai, siliconflow, volcengine)\nASR_PROVIDER=siliconflow\n# ASR 通用配置\nASR_API_KEY=\nASR_MODEL=FunAudioLLM/SenseVoiceSmall\nASR_ENDPOINT=\n\n# SiliconFlow ASR 专用配置 (可选,优先级高于通用 ASR_API_KEY / ASR_MODEL)\nASR_SILICONFLOW_API_KEY=\nASR_SILICONFLOW_MODEL=FunAudioLLM/SenseVoiceSmall\n\n# 火山引擎 ASR 专用配置 (可选,优先级高于通用 VOLCENGINE_* 配置)\nASR_VOLCENGINE_APP_ID=\nASR_VOLCENGINE_ACCESS_KEY=\nASR_VOLCENGINE_SECRET_KEY=\nASR_VOLCENGINE_CLUSTER_ID=volc.bigasr.sauc.duration\n\n# TTS (文本转语音) 配置\n# 是否启用 TTS 功能\nTTS_ENABLED=false\n# TTS 提供商 (openai, siliconflow, volcengine)\nTTS_PROVIDER=openai\n# TTS 通用配置 (默认复用 AI_API_KEY)\nTTS_API_KEY=\nTTS_ENDPOINT=\nTTS_DEFAULT_MODEL=tts-1\nTTS_DEFAULT_VOICE=alloy\n\n# TTS 前端直连模式(显式启用,默认在 Serverless 环境自动降级到火山引擎直连)\n# TTS_FRONTEND_DIRECT=false\n# TTS 前端直连凭证有效期(秒),默认 600(10 分钟),范围 [300, 43200]\n# TTS_CREDENTIAL_TTL_SECONDS=600\n\n# --- 厂商专项凭据 (可被上述 ASR/TTS 引用) ---\n\n# 火山引擎 (豆包语音) 统一凭据\nVOLCENGINE_APP_ID=\nVOLCENGINE_ACCESS_KEY=\nVOLCENGINE_SECRET_KEY=\n\n# ------------------------------------------\n# 6. 邮件发送系统 (SMTP)\n# ------------------------------------------\n\n# SMTP 服务器地址\nEMAIL_HOST=\n# SMTP 端口\nEMAIL_PORT=587\n# 是否使用 SSL/TLS (默认 false 会尝试 STARTTLS)\nEMAIL_SECURE=false\nEMAIL_USER=\nEMAIL_PASS=\n# 默认邮件发送者 (格式示例: \"Momei Blog\" <admin@example.com>)\nEMAIL_FROM=\n# 是否要求邮箱验证码验证后才允许登录\nEMAIL_REQUIRE_VERIFICATION=false\n\n# 邮件限流与周期配置 (可选)\n# EMAIL_DAILY_LIMIT=100\n# EMAIL_SINGLE_USER_DAILY_LIMIT=5\n# EMAIL_LIMIT_WINDOW=86400\n# EMAIL_EXPIRES_IN=300\n\n# 临时邮箱域拦截配置 (可选)\n# TEMP_EMAIL_DOMAIN_NAME=example.com\n\n# ------------------------------------------\n# 7. 对象存储系统 (Storage & Upload)\n# ------------------------------------------\n\n# 存储引擎 (local, s3, r2, vercel_blob;兼容旧值 vercel-blob)\nSTORAGE_TYPE=local\n\n# 路径前缀(所有上传文件均会携带此目录前缀)\nBUCKET_PREFIX=momei/\n\n# 全局公共访问域名 / 对象前缀(可选,优先级高于驱动级 BaseURL/Prefix)\n# ASSET_PUBLIC_BASE_URL=https://cdn.example.com/assets\n# ASSET_OBJECT_PREFIX=momei-blog/\n\n# 1. 本地存储配置 (STORAGE_TYPE=local)\nLOCAL_STORAGE_DIR=public/uploads\nNUXT_PUBLIC_LOCAL_STORAGE_BASE_URL=/uploads\n\n# 2. S3 兼容存储 (STORAGE_TYPE=s3, 适用于 R2, AWS S3, MinIO)\nS3_ENDPOINT=\nS3_BUCKET_NAME=\nS3_REGION=auto\nS3_ACCESS_KEY_ID=\nS3_SECRET_ACCESS_KEY=\nS3_BASE_URL=\n\n# 3. Vercel Blob (STORAGE_TYPE=vercel_blob)\nBLOB_READ_WRITE_TOKEN=\n\n# 4. Cloudflare R2 专用配置 (也可通过 S3 变量配置)\n# CLOUDFLARE_R2_ACCOUNT_ID=\n# CLOUDFLARE_R2_ACCESS_KEY=\n# CLOUDFLARE_R2_SECRET_KEY=\n# CLOUDFLARE_R2_BUCKET=\n# CLOUDFLARE_R2_BASE_URL=\n\n# 文件大小限制调节 (可选)\n# NUXT_PUBLIC_MAX_UPLOAD_SIZE=4.5MiB\n# NUXT_PUBLIC_MAX_AUDIO_UPLOAD_SIZE=100MiB\n# LOCAL_STORAGE_MIN_FREE_SPACE=100MiB\n\n# ------------------------------------------\n# 7.1 listmonk Newsletter 分发\n# ------------------------------------------\n\nLISTMONK_ENABLED=false\nLISTMONK_INSTANCE_URL=\nLISTMONK_USERNAME=\nLISTMONK_ACCESS_TOKEN=\nLISTMONK_DEFAULT_LIST_IDS=\n# JSON 示例: {\"backend\":[3],\"frontend\":[4]}\nLISTMONK_CATEGORY_LIST_MAP=\n# JSON 示例: {\"nuxt\":[5],\"newsletter\":[6]}\nLISTMONK_TAG_LIST_MAP=\nLISTMONK_TEMPLATE_ID=\n\n# Hexo 风格文章仓库同步(GitHub / Gitee)\nHEXO_SYNC_ENABLED=false\n# 支持 github / gitee\nHEXO_SYNC_PROVIDER=github\nHEXO_SYNC_OWNER=\nHEXO_SYNC_REPO=\nHEXO_SYNC_BRANCH=main\nHEXO_SYNC_POSTS_DIR=source/_posts\n# 仅服务端读取,不进入后台数据库\nHEXO_SYNC_ACCESS_TOKEN=\n\n# ------------------------------------------\n# 8. 运维、监控与自动化 (Operations)\n# ------------------------------------------\n\n# 管理员用户 ID 列表 (逗号分隔,注册后在此提权)\nADMIN_USER_IDS=\n\n# Vercel Cron 专用鉴权密钥\n# Vercel 会自动以 Authorization: Bearer <CRON_SECRET> 触发定时任务端点\nCRON_SECRET=\n\n# 定时任务鉴权令牌 (用于手动触发 Scheduled Tasks Webhook / 旧版集成)\nTASKS_TOKEN=\n\n# Webhook HMAC 签名密钥 (推荐独立配置,默认使用 TASKS_TOKEN)\n# 用于外部调度器 / GitHub Actions / Cloudflare / Serverless 等场景的 HMAC 验签\nWEBHOOK_SECRET=\n\n# 自部署环境 Cron 表达式 (默认每 5 分钟执行一次)\n# 仅在非 Serverless 环境中生效\n# TASK_CRON_EXPRESSION=*/5 * * * *\n\n# 显式禁用自部署环境 Cron\n# DISABLE_CRON_JOB=false\n\n# Webhook 时间戳容差 (毫秒)\n# 说明:当前版本预留该变量名,Webhook 校验默认固定 5 分钟容差\n# WEBHOOK_TIMESTAMP_TOLERANCE=300000\n\n# Sentry 异常监控\nNUXT_PUBLIC_SENTRY_DSN=\nNUXT_PUBLIC_SENTRY_ENVIRONMENT=production\n\n# 站长流量统计 (填入对应统计 ID)\nNUXT_PUBLIC_BAIDU_ANALYTICS_ID=\nNUXT_PUBLIC_GOOGLE_ANALYTICS_ID=\nNUXT_PUBLIC_CLARITY_PROJECT_ID=\n# Umami 统计配置(JSON 字符串,示例: {\"websiteId\":\"xxx\",\"scriptUrl\":\"https://analytics.example.com/script.js\"})\n# NUXT_PUBLIC_UMAMI_ANALYTICS=\n# 若使用 Docker 自托管 Umami,可参考仓库根目录 `umami.env.example` 与 `docker-compose.umami.yml`\n\n# 站点验证标签 (可选)\n# NUXT_PUBLIC_GOOGLE_SITE_VERIFICATION=\n# NUXT_PUBLIC_BING_SITE_VERIFICATION=\n\n# ------------------------------------------\n# 9. 视觉特效与内容组件 (Features)\n# ------------------------------------------\n\n# 站点元数据\nNUXT_PUBLIC_SITE_LOGO=\nNUXT_PUBLIC_SITE_FAVICON=\nNUXT_PUBLIC_SITE_OPERATOR=\nNUXT_PUBLIC_CONTACT_EMAIL=admin@example.com\n\n# 主题系统默认值 (可选,仅在未通过后台配置覆盖时生效)\n# THEME_PRESET=\n# THEME_PRIMARY_COLOR=\n# THEME_ACCENT_COLOR=\n# THEME_SURFACE_COLOR=\n# THEME_TEXT_COLOR=\n# THEME_DARK_PRIMARY_COLOR=\n# THEME_DARK_ACCENT_COLOR=\n# THEME_DARK_SURFACE_COLOR=\n# THEME_DARK_TEXT_COLOR=\n# THEME_BORDER_RADIUS=\n# THEME_MOURNING_MODE=false\n# THEME_BACKGROUND_TYPE=\n# THEME_BACKGROUND_VALUE=\n\n# 验证码集成 (提供商: cloudflare-turnstile, google-recaptcha, hcaptcha, captchafox)\nENABLE_CAPTCHA=false\nNUXT_PUBLIC_AUTH_CAPTCHA_PROVIDER=\nNUXT_PUBLIC_AUTH_CAPTCHA_SITE_KEY=\nAUTH_CAPTCHA_SECRET_KEY=\n\n# 评论审核与风控\nENABLE_COMMENT_REVIEW=false\n# 关键词黑名单 (英文逗号分隔)\nBLACKLISTED_KEYWORDS=\n\n# 页脚自定义注入代码\nNUXT_PUBLIC_FOOTER_CODE=\n\n# 动态视觉特效控制\nNUXT_PUBLIC_LIVE2D_ENABLED=false\n# NUXT_PUBLIC_LIVE2D_SCRIPT_URL=https://unpkg.com/live2d-widgets@1.0.0/dist/\n# NUXT_PUBLIC_LIVE2D_MODEL_URL=\n# NUXT_PUBLIC_LIVE2D_OPTIONS_JSON={}\n# NUXT_PUBLIC_LIVE2D_MOBILE_ENABLED=false\n# NUXT_PUBLIC_LIVE2D_MIN_WIDTH=1024\n# NUXT_PUBLIC_LIVE2D_DATA_SAVER_BLOCK=true\nNUXT_PUBLIC_CANVAS_NEST_ENABLED=false\n# NUXT_PUBLIC_CANVAS_NEST_OPTIONS_JSON={}\n# NUXT_PUBLIC_CANVAS_NEST_MOBILE_ENABLED=false\n# NUXT_PUBLIC_CANVAS_NEST_MIN_WIDTH=1024\n# NUXT_PUBLIC_CANVAS_NEST_DATA_SAVER_BLOCK=true\n# 全局性能卫兵:是否允许移动端加载特效\nNUXT_PUBLIC_EFFECTS_MOBILE_ENABLED=false\n# NUXT_PUBLIC_EFFECTS_MIN_WIDTH=768\n# NUXT_PUBLIC_EFFECTS_DATA_SAVER_BLOCK=true\n\n# 公开限制项 (可选,会同步给前端)\n# NUXT_PUBLIC_ALLOWED_FILE_TYPES=image/jpeg,image/png,image/webp,image/gif\n# NUXT_PUBLIC_COMMENT_INTERVAL=60\n# NUXT_PUBLIC_POSTS_PER_PAGE=10\n\n# 上传限流 (可选)\n# UPLOAD_DAILY_LIMIT=100\n# UPLOAD_SINGLE_USER_DAILY_LIMIT=20\n# UPLOAD_LIMIT_WINDOW=86400\n\n# ------------------------------------------\n# 10. 合规与外部资源安全 (Compliance & Security)\n# ------------------------------------------\n\n# 中国大陆备案信息显示\nNUXT_PUBLIC_SHOW_COMPLIANCE_INFO=false\nNUXT_PUBLIC_ICP_LICENSE_NUMBER=\nNUXT_PUBLIC_PUBLIC_SECURITY_NUMBER=\n\n# 安全:外部资源域名白名单 (逗号分隔,防止某些代理环境下图片加载失败)\nNUXT_PUBLIC_SECURITY_URL_WHITELIST=\n\n# Hugging Face 镜像代理地址 (用于部署在大陆环境时拉取资源)\nNUXT_PUBLIC_HF_PROXY=https://huggingface.co\n\n# ------------------------------------------\n# 11. 商业化与第三方平台集成 (Commercial & Third-party)\n# ------------------------------------------\n\n# 全局商业化默认配置 (JSON 字符串)\n# 仅当需要通过环境变量锁定全局社交/打赏配置时使用\n# COMMERCIAL_SPONSORSHIP_JSON={\"enabled\":true,\"donationLinks\":[],\"socialLinks\":[]}\n\n# Memos 生活流同步\nMEMOS_ENABLED=false\nMEMOS_INSTANCE_URL=\nMEMOS_ACCESS_TOKEN=\nMEMOS_DEFAULT_VISIBILITY=PRIVATE\n\n# ------------------------------------------\n# 12. API 限流配置 (Rate Limiting)\n# ------------------------------------------\n#\n# 内置限流规则及对应环境变量覆盖(不设置则使用默认值)。\n# 规则名对应 server/utils/rate-limit-config.ts 中的 name 字段。\n#\n# 命名规则:NUXT_RATE_LIMIT_<RULE_NAME>_MAX=<number>\n# NUXT_RATE_LIMIT_<RULE_NAME>_WINDOW=<number> 窗口秒数\n\n# 外部 API(CLI/MCP 导入导出等批量操作,容忍度更高)\n# NUXT_RATE_LIMIT_EXTERNAL_MAX=300\n# NUXT_RATE_LIMIT_EXTERNAL_WINDOW=60\n\n# AI 接口(防止 API 费用超支及滥用)\n# NUXT_RATE_LIMIT_AI_MAX=10\n# NUXT_RATE_LIMIT_AI_WINDOW=60\n\n# AI 任务轮询(放宽限制)\n# NUXT_RATE_LIMIT_AI_STATUS_MAX=30\n# NUXT_RATE_LIMIT_AI_STATUS_WINDOW=60\n\n# 搜索(全文搜索压力大)\n# NUXT_RATE_LIMIT_SEARCH_MAX=5\n# NUXT_RATE_LIMIT_SEARCH_WINDOW=60\n\n# 文章浏览量计数(POST /api/posts/:id/views,通过 match: path.endsWith('/views') 精准匹配)\n# 较严格的默认值(3次/10分钟)防止刷量,match 确保不影响 POST /api/posts/ 创建文章\n# NUXT_RATE_LIMIT_VIEWS_MAX=3\n# NUXT_RATE_LIMIT_VIEWS_WINDOW=600\n\n# 通用写请求(POST/PATCH/PUT/DELETE)\n# NUXT_RATE_LIMIT_DEFAULT_POST_MAX=20\n# NUXT_RATE_LIMIT_DEFAULT_POST_WINDOW=60\n\n# 通用读请求(GET)\n# NUXT_RATE_LIMIT_DEFAULT_GET_MAX=60\n# NUXT_RATE_LIMIT_DEFAULT_GET_WINDOW=60\n\n# ------------------------------------------\n# 13. 日志、调试与 Demo 模式 (Logging & Debug)\n# ------------------------------------------\n\n# 日志输出等级 (silly, debug, http, info, warn, error)\nLOG_LEVEL=info\n# 是否开启文件日志记录 (默认 false,Serverless 环境必须设为 false)\nLOGFILES=false\n# LOG_DIR=logs\n\n# Axiom 日志集成\n# AXIOM_DATASET_NAME=\n# AXIOM_API_TOKEN=\n\n# 演示模式 (内存 DB 运行,限制写操作)\nNUXT_PUBLIC_DEMO_MODE=false\n# NUXT_PUBLIC_DEMO_USER_EMAIL=admin@example.com\n# NUXT_PUBLIC_DEMO_PASSWORD=momei123456\n\n# MCP HTTP 传输开关(启用后主应用挂载 MCP HTTP 端点 /api/mcp)\n# 非 Serverless 环境(Docker / VPS)可开启;Serverless 环境自动静默降级\n# MOMEI_ENABLE_MCP_HTTP=false\n\n# 安装锁定标志(系统首次运行后会自动生成/读取,通常建议初始化后手动修改为 true 并重启系统)\n# MOMEI_INSTALLED=true\n"}, "b6b567a7aa4f7e0d31b525826a070f6ab65b7ff6": {"t": 1785749521.8038125, "n": 12810, "h": "ecd8d0f266646bd7", "c": "# ==========================================\n# 墨梅博客 (Momei) 环境变量完整示例文件\n# ==========================================\n\n# ------------------------------------------\n# 1. 基础核心配置 (Essential)\n# ------------------------------------------\n\n# 应用名称\nNUXT_PUBLIC_APP_NAME=墨梅博客\n\n# 站点 SEO 描述\nNUXT_PUBLIC_SITE_DESCRIPTION=一个基于 Nuxt 4 构建的现代化 AI 驱动博客平台\n\n# 站点 SEO 关键词 (逗号分隔)\nNUXT_PUBLIC_SITE_KEYWORDS=Nuxt,Vue,Blog,AI,TypeScript\n\n# 默认文章版权协议类型 (例如 all-rights-reserved, cc-by-nc-sa)\nNUXT_PUBLIC_POST_COPYRIGHT=all-rights-reserved\n\n# 站点版权展示信息 (用于页脚版权行)\nNUXT_PUBLIC_SITE_COPYRIGHT_OWNER=XX博客版权所有\nNUXT_PUBLIC_SITE_COPYRIGHT_START_YEAR=2026\n\n# 兼容旧变量名,建议迁移到新的 POST_/SITE_ 命名\n# NUXT_PUBLIC_DEFAULT_COPYRIGHT=all-rights-reserved\n# NUXT_PUBLIC_FOOTER_COPYRIGHT_OWNER=\n# NUXT_PUBLIC_FOOTER_COPYRIGHT_START_YEAR=\n\n# 默认语言 (en-US, zh-CN)\nNUXT_PUBLIC_DEFAULT_LANGUAGE=zh-CN\n\n# 站点 URL(注意:公开访问的站点地址,用于 SEO 和 RSS 生成)\nNUXT_PUBLIC_SITE_URL=http://localhost:3000\n\n# Better Auth 的基础 URL(必需,用于认证回调重定向,推荐与 SITE_URL 一致)\nNUXT_PUBLIC_AUTH_BASE_URL=http://localhost:3000\n\n# 用于加密、签名和哈希的密钥。生产环境必须设置!\n# 可以使用 `openssl rand -hex 32` 生成。开发环境下会自动生成随机值。\nAUTH_SECRET=\n\n# 雪花算法机器 ID (0-1023),用于生成分布式唯一 ID。默认自动获取进程 PID 对 1024 取余\n# MACHINE_ID=\n\n# ------------------------------------------\n# 2. 数据库与高性能配置 (Database & Cache)\n# ------------------------------------------\n\n# 数据库连接 URL (支持 SQLite, MySQL, PostgreSQL)\n# 支持智能推断:\n# - SQLite (推荐): sqlite://database/momei.sqlite (或 file://database/momei.sqlite)\n# - MySQL: mysql://user:pass@host:3306/db\n# - PostgreSQL: postgres://user:pass@host:5432/db\n# 如果未配置,默认将使用本地 SQLite\nDATABASE_URL=sqlite://database/momei.sqlite\n\n# 手动指定数据库类型 (可选,通常由 URL 自动推断: sqlite, mysql, postgres)\n# DATABASE_TYPE=sqlite\n\n# SQLite 数据库路径 (兼容旧版,不推荐手动设置)\n# DATABASE_PATH=database/momei.sqlite\n\n# 是否自动同步数据库表结构 (生产环境建议固定为 false,仅手动控制迁移)\nDATABASE_SYNCHRONIZE=false\n\n# 数据库连接调节 (可选)\n# DATABASE_SSL=false\n# DATABASE_CHARSET=utf8_general_ci\n# DATABASE_TIMEZONE=local\n# DATABASE_ENTITY_PREFIX=momei_\n\n# Redis 连接地址 (可选,配置后将启用基于 Redis 的缓存或限流)\n# REDIS_URL=redis://localhost:6379\n\n# Vercel KV / Upstash Redis 持久化缓存 (可选,用于 ISR/SWR 跨实例共享缓存)\n# Vercel KV 基于 Upstash Redis,在 Vercel 项目中集成 KV 后以下环境变量会自动配置\n# KV_URL=\n# KV_REST_API_URL=\n# KV_REST_API_TOKEN=\n# KV_REST_API_READ_ONLY_TOKEN=\n\n# ------------------------------------------\n# 3. 认证与社交登录 (Authentication)\n# ------------------------------------------\n\n# 是否允许新用户注册\nALLOW_REGISTRATION=true\n\n# 是否启用匿名登录 (无需邮箱密码即可登录)\nANONYMOUS_LOGIN_ENABLED=false\n\n# GitHub 配置 (OAuth)\nNUXT_PUBLIC_GITHUB_CLIENT_ID=\nGITHUB_CLIENT_SECRET=\n\n# Google 配置 (OAuth)\nNUXT_PUBLIC_GOOGLE_CLIENT_ID=\nGOOGLE_CLIENT_SECRET=\n\n# ------------------------------------------\n# 4. AI 核心引擎 (AI Integration - Text & Image)\n# ------------------------------------------\n\n# 是否启用 AI 功能\nAI_ENABLED=true\n\n# 主 AI 提供商 (openai, anthropic, deepseek, doubao, siliconflow, gemini, volcengine)\nAI_PROVIDER=openai\n\n# AI API 密钥\nAI_API_KEY=\n\n# 默认模型名称 (如 gpt-4o, claude-3-5-sonnet, deepseek-chat)\nAI_MODEL=gpt-4o\n\n# API 代理端点 (可选,用于 OpenAI 兼容服务)\nAI_API_ENDPOINT=\n\n# AI 生成参数控制 (可选,默认内置优化值)\n# AI_MAX_TOKENS=2048\n# AI_TEMPERATURE=0.7\n# AI_MAX_CONTENT_LENGTH=50000\n# AI_CHUNK_SIZE=4000\n# AI_TEXT_DIRECT_RETURN_MAX_CHARS=1000\n# AI_TEXT_TASK_CHUNK_SIZE=4000\n# AI_TEXT_TASK_CONCURRENCY=3\n# AI 重任务超时(用于 TTS / ASR / 图片生成等耗时任务)\nAI_HEAVY_TASK_TIMEOUT=5m\n\n# Gemini 专用令牌 (如果 provider 为 gemini 且需要独立令牌鉴权)\n# GEMINI_API_TOKEN=\n\n# AI 图像生成配置\nAI_IMAGE_ENABLED=false\nAI_IMAGE_PROVIDER=openai\nAI_IMAGE_API_KEY=\nAI_IMAGE_MODEL=dall-e-3\nAI_IMAGE_ENDPOINT=\n\n# AI 配额治理 (可选,支持直接复用后台设置页导出的 JSON)\n# AI_QUOTA_ENABLED=false\n# AI_QUOTA_POLICIES=[{\"subjectType\":\"global\",\"subjectValue\":\"default\",\"scope\":\"all\",\"period\":\"day\",\"maxRequests\":100,\"maxQuotaUnits\":200,\"enabled\":true}]\n# AI_ALERT_THRESHOLDS={\"enabled\":true,\"quotaUsageRatios\":[0.5,0.8,1],\"costUsageRatios\":[0.8,1],\"failureBurst\":{\"enabled\":true,\"windowMinutes\":10,\"maxFailures\":3,\"categories\":[\"image\",\"asr\",\"tts\",\"podcast\"]},\"dedupeWindowMinutes\":1440,\"maxAlerts\":10}\n\n# ------------------------------------------\n# 5. AI 多模态音频 (ASR & TTS)\n# ------------------------------------------\n\n# ASR (语音识别) 配置\n# 是否启用 ASR 功能\nASR_ENABLED=false\n# ASR 提供商 (openai, siliconflow, volcengine)\nASR_PROVIDER=siliconflow\n# ASR 通用配置\nASR_API_KEY=\nASR_MODEL=FunAudioLLM/SenseVoiceSmall\nASR_ENDPOINT=\n\n# SiliconFlow ASR 专用配置 (可选,优先级高于通用 ASR_API_KEY / ASR_MODEL)\nASR_SILICONFLOW_API_KEY=\nASR_SILICONFLOW_MODEL=FunAudioLLM/SenseVoiceSmall\n\n# 火山引擎 ASR 专用配置 (可选,优先级高于通用 VOLCENGINE_* 配置)\nASR_VOLCENGINE_APP_ID=\nASR_VOLCENGINE_ACCESS_KEY=\nASR_VOLCENGINE_SECRET_KEY=\nASR_VOLCENGINE_CLUSTER_ID=volc.bigasr.sauc.duration\n\n# TTS (文本转语音) 配置\n# 是否启用 TTS 功能\nTTS_ENABLED=false\n# TTS 提供商 (openai, siliconflow, volcengine)\nTTS_PROVIDER=openai\n# TTS 通用配置 (默认复用 AI_API_KEY)\nTTS_API_KEY=\nTTS_ENDPOINT=\nTTS_DEFAULT_MODEL=tts-1\nTTS_DEFAULT_VOICE=alloy\n\n# TTS 前端直连模式(显式启用,默认在 Serverless 环境自动降级到火山引擎直连)\n# TTS_FRONTEND_DIRECT=false\n# TTS 前端直连凭证有效期(秒),默认 600(10 分钟),范围 [300, 43200]\n# TTS_CREDENTIAL_TTL_SECONDS=600\n\n# --- 厂商专项凭据 (可被上述 ASR/TTS 引用) ---\n\n# 火山引擎 (豆包语音) 统一凭据\nVOLCENGINE_APP_ID=\nVOLCENGINE_ACCESS_KEY=\nVOLCENGINE_SECRET_KEY=\n\n# ------------------------------------------\n# 6. 邮件发送系统 (SMTP)\n# ------------------------------------------\n\n# SMTP 服务器地址\nEMAIL_HOST=\n# SMTP 端口\nEMAIL_PORT=587\n# 是否使用 SSL/TLS (默认 false 会尝试 STARTTLS)\nEMAIL_SECURE=false\nEMAIL_USER=\nEMAIL_PASS=\n# 默认邮件发送者 (格式示例: \"Momei Blog\" <admin@example.com>)\nEMAIL_FROM=\n# 是否要求邮箱验证码验证后才允许登录\nEMAIL_REQUIRE_VERIFICATION=false\n\n# 邮件限流与周期配置 (可选)\n# EMAIL_DAILY_LIMIT=100\n# EMAIL_SINGLE_USER_DAILY_LIMIT=5\n# EMAIL_LIMIT_WINDOW=86400\n# EMAIL_EXPIRES_IN=300\n\n# 临时邮箱域拦截配置 (可选)\n# TEMP_EMAIL_DOMAIN_NAME=example.com\n\n# ------------------------------------------\n# 7. 对象存储系统 (Storage & Upload)\n# ------------------------------------------\n\n# 存储引擎 (local, s3, r2, vercel_blob;兼容旧值 vercel-blob)\nSTORAGE_TYPE=local\n\n# 路径前缀(所有上传文件均会携带此目录前缀)\nBUCKET_PREFIX=momei/\n\n# 全局公共访问域名 / 对象前缀(可选,优先级高于驱动级 BaseURL/Prefix)\n# ASSET_PUBLIC_BASE_URL=https://cdn.example.com/assets\n# ASSET_OBJECT_PREFIX=momei-blog/\n\n# 1. 本地存储配置 (STORAGE_TYPE=local)\nLOCAL_STORAGE_DIR=public/uploads\nNUXT_PUBLIC_LOCAL_STORAGE_BASE_URL=/uploads\n\n# 2. S3 兼容存储 (STORAGE_TYPE=s3, 适用于 R2, AWS S3, MinIO)\nS3_ENDPOINT=\nS3_BUCKET_NAME=\nS3_REGION=auto\nS3_ACCESS_KEY_ID=\nS3_SECRET_ACCESS_KEY=\nS3_BASE_URL=\n\n# 3. Vercel Blob (STORAGE_TYPE=vercel_blob)\nBLOB_READ_WRITE_TOKEN=\n\n# 4. Cloudflare R2 专用配置 (也可通过 S3 变量配置)\n# CLOUDFLARE_R2_ACCOUNT_ID=\n# CLOUDFLARE_R2_ACCESS_KEY=\n# CLOUDFLARE_R2_SECRET_KEY=\n# CLOUDFLARE_R2_BUCKET=\n# CLOUDFLARE_R2_BASE_URL=\n\n# 文件大小限制调节 (可选)\n# NUXT_PUBLIC_MAX_UPLOAD_SIZE=4.5MiB\n# NUXT_PUBLIC_MAX_AUDIO_UPLOAD_SIZE=100MiB\n# LOCAL_STORAGE_MIN_FREE_SPACE=100MiB\n\n# ------------------------------------------\n# 7.1 listmonk Newsletter 分发\n# ------------------------------------------\n\nLISTMONK_ENABLED=false\nLISTMONK_INSTANCE_URL=\nLISTMONK_USERNAME=\nLISTMONK_ACCESS_TOKEN=\nLISTMONK_DEFAULT_LIST_IDS=\n# JSON 示例: {\"backend\":[3],\"frontend\":[4]}\nLISTMONK_CATEGORY_LIST_MAP=\n# JSON 示例: {\"nuxt\":[5],\"newsletter\":[6]}\nLISTMONK_TAG_LIST_MAP=\nLISTMONK_TEMPLATE_ID=\n\n# Hexo 风格文章仓库同步(GitHub / Gitee)\nHEXO_SYNC_ENABLED=false\n# 支持 github / gitee\nHEXO_SYNC_PROVIDER=github\nHEXO_SYNC_OWNER=\nHEXO_SYNC_REPO=\nHEXO_SYNC_BRANCH=main\nHEXO_SYNC_POSTS_DIR=source/_posts\n# 仅服务端读取,不进入后台数据库\nHEXO_SYNC_ACCESS_TOKEN=\n\n# ------------------------------------------\n# 8. 运维、监控与自动化 (Operations)\n# ------------------------------------------\n\n# 管理员用户 ID 列表 (逗号分隔,注册后在此提权)\nADMIN_USER_IDS=\n\n# Vercel Cron 专用鉴权密钥\n# Vercel 会自动以 Authorization: Bearer <CRON_SECRET> 触发定时任务端点\nCRON_SECRET=\n\n# 定时任务鉴权令牌 (用于手动触发 Scheduled Tasks Webhook / 旧版集成)\nTASKS_TOKEN=\n\n# Webhook HMAC 签名密钥 (推荐独立配置,默认使用 TASKS_TOKEN)\n# 用于外部调度器 / GitHub Actions / Cloudflare / Serverless 等场景的 HMAC 验签\nWEBHOOK_SECRET=\n\n# 自部署环境 Cron 表达式 (默认每 5 分钟执行一次)\n# 仅在非 Serverless 环境中生效\n# TASK_CRON_EXPRESSION=*/5 * * * *\n\n# 显式禁用自部署环境 Cron\n# DISABLE_CRON_JOB=false\n\n# Webhook 时间戳容差 (毫秒)\n# 说明:当前版本预留该变量名,Webhook 校验默认固定 5 分钟容差\n# WEBHOOK_TIMESTAMP_TOLERANCE=300000\n\n# Sentry 异常监控\nNUXT_PUBLIC_SENTRY_DSN=\nNUXT_PUBLIC_SENTRY_ENVIRONMENT=production\n\n# 站长流量统计 (填入对应统计 ID)\nNUXT_PUBLIC_BAIDU_ANALYTICS_ID=\nNUXT_PUBLIC_GOOGLE_ANALYTICS_ID=\nNUXT_PUBLIC_CLARITY_PROJECT_ID=\n# Umami 统计配置(JSON 字符串,示例: {\"websiteId\":\"xxx\",\"scriptUrl\":\"https://analytics.example.com/script.js\"})\n# NUXT_PUBLIC_UMAMI_ANALYTICS=\n# 若使用 Docker 自托管 Umami,可参考仓库根目录 `umami.env.example` 与 `docker-compose.umami.yml`\n\n# 站点验证标签 (可选)\n# NUXT_PUBLIC_GOOGLE_SITE_VERIFICATION=\n# NUXT_PUBLIC_BING_SITE_VERIFICATION=\n\n# ------------------------------------------\n# 9. 视觉特效与内容组件 (Features)\n# ------------------------------------------\n\n# 站点元数据\nNUXT_PUBLIC_SITE_LOGO=\nNUXT_PUBLIC_SITE_FAVICON=\nNUXT_PUBLIC_SITE_OPERATOR=\nNUXT_PUBLIC_CONTACT_EMAIL=admin@example.com\n\n# 主题系统默认值 (可选,仅在未通过后台配置覆盖时生效)\n# THEME_PRESET=\n# THEME_PRIMARY_COLOR=\n# THEME_ACCENT_COLOR=\n# THEME_SURFACE_COLOR=\n# THEME_TEXT_COLOR=\n# THEME_DARK_PRIMARY_COLOR=\n# THEME_DARK_ACCENT_COLOR=\n# THEME_DARK_SURFACE_COLOR=\n# THEME_DARK_TEXT_COLOR=\n# THEME_BORDER_RADIUS=\n# THEME_MOURNING_MODE=false\n# THEME_BACKGROUND_TYPE=\n# THEME_BACKGROUND_VALUE=\n\n# 验证码集成 (提供商: cloudflare-turnstile, google-recaptcha, hcaptcha, captchafox)\nENABLE_CAPTCHA=false\nNUXT_PUBLIC_AUTH_CAPTCHA_PROVIDER=\nNUXT_PUBLIC_AUTH_CAPTCHA_SITE_KEY=\nAUTH_CAPTCHA_SECRET_KEY=\n\n# 评论审核与风控\nENABLE_COMMENT_REVIEW=false\n# 关键词黑名单 (英文逗号分隔)\nBLACKLISTED_KEYWORDS=\n\n# 页脚自定义注入代码\nNUXT_PUBLIC_FOOTER_CODE=\n\n# 动态视觉特效控制\nNUXT_PUBLIC_LIVE2D_ENABLED=false\n# NUXT_PUBLIC_LIVE2D_SCRIPT_URL=https://unpkg.com/live2d-widgets@1.0.0/dist/\n# NUXT_PUBLIC_LIVE2D_MODEL_URL=\n# NUXT_PUBLIC_LIVE2D_OPTIONS_JSON={}\n# NUXT_PUBLIC_LIVE2D_MOBILE_ENABLED=false\n# NUXT_PUBLIC_LIVE2D_MIN_WIDTH=1024\n# NUXT_PUBLIC_LIVE2D_DATA_SAVER_BLOCK=true\nNUXT_PUBLIC_CANVAS_NEST_ENABLED=false\n# NUXT_PUBLIC_CANVAS_NEST_OPTIONS_JSON={}\n# NUXT_PUBLIC_CANVAS_NEST_MOBILE_ENABLED=false\n# NUXT_PUBLIC_CANVAS_NEST_MIN_WIDTH=1024\n# NUXT_PUBLIC_CANVAS_NEST_DATA_SAVER_BLOCK=true\n# 全局性能卫兵:是否允许移动端加载特效\nNUXT_PUBLIC_EFFECTS_MOBILE_ENABLED=false\n# NUXT_PUBLIC_EFFECTS_MIN_WIDTH=768\n# NUXT_PUBLIC_EFFECTS_DATA_SAVER_BLOCK=true\n\n# 公开限制项 (可选,会同步给前端)\n# NUXT_PUBLIC_ALLOWED_FILE_TYPES=image/jpeg,image/png,image/webp,image/gif\n# NUXT_PUBLIC_COMMENT_INTERVAL=60\n# NUXT_PUBLIC_POSTS_PER_PAGE=10\n\n# 上传限流 (可选)\n# UPLOAD_DAILY_LIMIT=100\n# UPLOAD_SINGLE_USER_DAILY_LIMIT=20\n# UPLOAD_LIMIT_WINDOW=86400\n\n# ------------------------------------------\n# 10. 合规与外部资源安全 (Compliance & Security)\n# ------------------------------------------\n\n# 中国大陆备案信息显示\nNUXT_PUBLIC_SHOW_COMPLIANCE_INFO=false\nNUXT_PUBLIC_ICP_LICENSE_NUMBER=\nNUXT_PUBLIC_PUBLIC_SECURITY_NUMBER=\n\n# 安全:外部资源域名白名单 (逗号分隔,防止某些代理环境下图片加载失败)\nNUXT_PUBLIC_SECURITY_URL_WHITELIST=\n\n# Hugging Face 镜像代理地址 (用于部署在大陆环境时拉取资源)\nNUXT_PUBLIC_HF_PROXY=https://huggingface.co\n\n# ------------------------------------------\n# 11. 商业化与第三方平台集成 (Commercial & Third-party)\n# ------------------------------------------\n\n# 全局商业化默认配置 (JSON 字符串)\n# 仅当需要通过环境变量锁定全局社交/打赏配置时使用\n# COMMERCIAL_SPONSORSHIP_JSON={\"enabled\":true,\"donationLinks\":[],\"socialLinks\":[]}\n\n# Memos 生活流同步\nMEMOS_ENABLED=false\nMEMOS_INSTANCE_URL=\nMEMOS_ACCESS_TOKEN=\nMEMOS_DEFAULT_VISIBILITY=PRIVATE\n\n# ------------------------------------------\n# 12. API 限流配置 (Rate Limiting)\n# ------------------------------------------\n#\n# 内置限流规则及对应环境变量覆盖(不设置则使用默认值)。\n# 规则名对应 server/utils/rate-limit-config.ts 中的 name 字段。\n#\n# 命名规则:NUXT_RATE_LIMIT_<RULE_NAME>_MAX=<number>\n# NUXT_RATE_LIMIT_<RULE_NAME>_WINDOW=<number> 窗口秒数\n\n# 外部 API(CLI/MCP 导入导出等批量操作,容忍度更高)\n# NUXT_RATE_LIMIT_EXTERNAL_MAX=300\n# NUXT_RATE_LIMIT_EXTERNAL_WINDOW=60\n\n# AI 接口(防止 API 费用超支及滥用)\n# NUXT_RATE_LIMIT_AI_MAX=10\n# NUXT_RATE_LIMIT_AI_WINDOW=60\n\n# AI 任务轮询(放宽限制)\n# NUXT_RATE_LIMIT_AI_STATUS_MAX=30\n# NUXT_RATE_LIMIT_AI_STATUS_WINDOW=60\n\n# 搜索(全文搜索压力大)\n# NUXT_RATE_LIMIT_SEARCH_MAX=5\n# NUXT_RATE_LIMIT_SEARCH_WINDOW=60\n\n# 文章浏览量计数(POST /api/posts/:id/views,通过 match: path.endsWith('/views') 精准匹配)\n# 较严格的默认值(3次/10分钟)防止刷量,match 确保不影响 POST /api/posts/ 创建文章\n# NUXT_RATE_LIMIT_VIEWS_MAX=3\n# NUXT_RATE_LIMIT_VIEWS_WINDOW=600\n\n# 通用写请求(POST/PATCH/PUT/DELETE)\n# NUXT_RATE_LIMIT_DEFAULT_POST_MAX=20\n# NUXT_RATE_LIMIT_DEFAULT_POST_WINDOW=60\n\n# 通用读请求(GET)\n# NUXT_RATE_LIMIT_DEFAULT_GET_MAX=60\n# NUXT_RATE_LIMIT_DEFAULT_GET_WINDOW=60\n\n# ------------------------------------------\n# 13. 日志、调试与 Demo 模式 (Logging & Debug)\n# ------------------------------------------\n\n# 日志输出等级 (silly, debug, http, info, warn, error)\nLOG_LEVEL=info\n# 是否开启文件日志记录 (默认 false,Serverless 环境必须设为 false)\nLOGFILES=false\n# LOG_DIR=logs\n\n# Axiom 日志集成\n# AXIOM_DATASET_NAME=\n# AXIOM_API_TOKEN=\n\n# 演示模式 (内存 DB 运行,限制写操作)\nNUXT_PUBLIC_DEMO_MODE=false\n# NUXT_PUBLIC_DEMO_USER_EMAIL=admin@example.com\n# NUXT_PUBLIC_DEMO_PASSWORD=momei123456\n\n# MCP HTTP 传输开关(启用后主应用挂载 MCP HTTP 端点 /api/mcp)\n# 非 Serverless 环境(Docker / VPS)可开启;Serverless 环境自动静默降级\n# MOMEI_ENABLE_MCP_HTTP=false\n\n# 安装锁定标志(系统首次运行后会自动生成/读取,通常建议初始化后手动修改为 true 并重启系统)\n# MOMEI_INSTALLED=true\n"}, "3f405e70dda1c7c623ce07d0c0e298e15b4eeea4": {"t": 1785749523.9940205, "n": 12611, "h": "44832e821043a8b2", "c": "# ==========================================\n# 墨梅博客 (Momei) 环境变量完整示例文件\n# ==========================================\n\n# ------------------------------------------\n# 1. 基础核心配置 (Essential)\n# ------------------------------------------\n\n# 应用名称\nNUXT_PUBLIC_APP_NAME=墨梅博客\n\n# 站点 SEO 描述\nNUXT_PUBLIC_SITE_DESCRIPTION=一个基于 Nuxt 4 构建的现代化 AI 驱动博客平台\n\n# 站点 SEO 关键词 (逗号分隔)\nNUXT_PUBLIC_SITE_KEYWORDS=Nuxt,Vue,Blog,AI,TypeScript\n\n# 默认文章版权协议类型 (例如 all-rights-reserved, cc-by-nc-sa)\nNUXT_PUBLIC_POST_COPYRIGHT=all-rights-reserved\n\n# 站点版权展示信息 (用于页脚版权行)\nNUXT_PUBLIC_SITE_COPYRIGHT_OWNER=XX博客版权所有\nNUXT_PUBLIC_SITE_COPYRIGHT_START_YEAR=2026\n\n# 兼容旧变量名,建议迁移到新的 POST_/SITE_ 命名\n# NUXT_PUBLIC_DEFAULT_COPYRIGHT=all-rights-reserved\n# NUXT_PUBLIC_FOOTER_COPYRIGHT_OWNER=\n# NUXT_PUBLIC_FOOTER_COPYRIGHT_START_YEAR=\n\n# 默认语言 (en-US, zh-CN)\nNUXT_PUBLIC_DEFAULT_LANGUAGE=zh-CN\n\n# 站点 URL(注意:公开访问的站点地址,用于 SEO 和 RSS 生成)\nNUXT_PUBLIC_SITE_URL=http://localhost:3000\n\n# Better Auth 的基础 URL(必需,用于认证回调重定向,推荐与 SITE_URL 一致)\nNUXT_PUBLIC_AUTH_BASE_URL=http://localhost:3000\n\n# 用于加密、签名和哈希的密钥。生产环境必须设置!\n# 可以使用 `openssl rand -hex 32` 生成。开发环境下会自动生成随机值。\nAUTH_SECRET=\n\n# 雪花算法机器 ID (0-1023),用于生成分布式唯一 ID。默认自动获取进程 PID 对 1024 取余\n# MACHINE_ID=\n\n# ------------------------------------------\n# 2. 数据库与高性能配置 (Database & Cache)\n# ------------------------------------------\n\n# 数据库连接 URL (支持 SQLite, MySQL, PostgreSQL)\n# 支持智能推断:\n# - SQLite (推荐): sqlite://database/momei.sqlite (或 file://database/momei.sqlite)\n# - MySQL: mysql://user:pass@host:3306/db\n# - PostgreSQL: postgres://user:pass@host:5432/db\n# 如果未配置,默认将使用本地 SQLite\nDATABASE_URL=sqlite://database/momei.sqlite\n\n# 手动指定数据库类型 (可选,通常由 URL 自动推断: sqlite, mysql, postgres)\n# DATABASE_TYPE=sqlite\n\n# SQLite 数据库路径 (兼容旧版,不推荐手动设置)\n# DATABASE_PATH=database/momei.sqlite\n\n# 是否自动同步数据库表结构 (生产环境建议固定为 false,仅手动控制迁移)\nDATABASE_SYNCHRONIZE=false\n\n# 数据库连接调节 (可选)\n# DATABASE_SSL=false\n# DATABASE_CHARSET=utf8_general_ci\n# DATABASE_TIMEZONE=local\n# DATABASE_ENTITY_PREFIX=momei_\n\n# Redis 连接地址 (可选,配置后将启用基于 Redis 的缓存或限流)\n# REDIS_URL=redis://localhost:6379\n\n# Vercel KV / Upstash Redis 持久化缓存 (可选,用于 ISR/SWR 跨实例共享缓存)\n# Vercel KV 基于 Upstash Redis,在 Vercel 项目中集成 KV 后以下环境变量会自动配置\n# KV_URL=\n# KV_REST_API_URL=\n# KV_REST_API_TOKEN=\n# KV_REST_API_READ_ONLY_TOKEN=\n\n# ------------------------------------------\n# 3. 认证与社交登录 (Authentication)\n# ------------------------------------------\n\n# 是否允许新用户注册\nALLOW_REGISTRATION=true\n\n# 是否启用匿名登录 (无需邮箱密码即可登录)\nANONYMOUS_LOGIN_ENABLED=false\n\n# GitHub 配置 (OAuth)\nNUXT_PUBLIC_GITHUB_CLIENT_ID=\nGITHUB_CLIENT_SECRET=\n\n# Google 配置 (OAuth)\nNUXT_PUBLIC_GOOGLE_CLIENT_ID=\nGOOGLE_CLIENT_SECRET=\n\n# ------------------------------------------\n# 4. AI 核心引擎 (AI Integration - Text & Image)\n# ------------------------------------------\n\n# 是否启用 AI 功能\nAI_ENABLED=true\n\n# 主 AI 提供商 (openai, anthropic, deepseek, doubao, siliconflow, gemini, volcengine)\nAI_PROVIDER=openai\n\n# AI API 密钥\nAI_API_KEY=\n\n# 默认模型名称 (如 gpt-4o, claude-3-5-sonnet, deepseek-chat)\nAI_MODEL=gpt-4o\n\n# API 代理端点 (可选,用于 OpenAI 兼容服务)\nAI_API_ENDPOINT=\n\n# AI 生成参数控制 (可选,默认内置优化值)\n# AI_MAX_TOKENS=2048\n# AI_TEMPERATURE=0.7\n# AI_MAX_CONTENT_LENGTH=50000\n# AI_CHUNK_SIZE=4000\n# AI_TEXT_DIRECT_RETURN_MAX_CHARS=1000\n# AI_TEXT_TASK_CHUNK_SIZE=4000\n# AI_TEXT_TASK_CONCURRENCY=3\n# AI 重任务超时(用于 TTS / ASR / 图片生成等耗时任务)\nAI_HEAVY_TASK_TIMEOUT=5m\n\n# Gemini 专用令牌 (如果 provider 为 gemini 且需要独立令牌鉴权)\n# GEMINI_API_TOKEN=\n\n# AI 图像生成配置\nAI_IMAGE_ENABLED=false\nAI_IMAGE_PROVIDER=openai\nAI_IMAGE_API_KEY=\nAI_IMAGE_MODEL=dall-e-3\nAI_IMAGE_ENDPOINT=\n\n# AI 配额治理 (可选,支持直接复用后台设置页导出的 JSON)\n# AI_QUOTA_ENABLED=false\n# AI_QUOTA_POLICIES=[{\"subjectType\":\"global\",\"subjectValue\":\"default\",\"scope\":\"all\",\"period\":\"day\",\"maxRequests\":100,\"maxQuotaUnits\":200,\"enabled\":true}]\n# AI_ALERT_THRESHOLDS={\"enabled\":true,\"quotaUsageRatios\":[0.5,0.8,1],\"costUsageRatios\":[0.8,1],\"failureBurst\":{\"enabled\":true,\"windowMinutes\":10,\"maxFailures\":3,\"categories\":[\"image\",\"asr\",\"tts\",\"podcast\"]},\"dedupeWindowMinutes\":1440,\"maxAlerts\":10}\n\n# ------------------------------------------\n# 5. AI 多模态音频 (ASR & TTS)\n# ------------------------------------------\n\n# ASR (语音识别) 配置\n# 是否启用 ASR 功能\nASR_ENABLED=false\n# ASR 提供商 (openai, siliconflow, volcengine)\nASR_PROVIDER=siliconflow\n# ASR 通用配置\nASR_API_KEY=\nASR_MODEL=FunAudioLLM/SenseVoiceSmall\nASR_ENDPOINT=\n\n# SiliconFlow ASR 专用配置 (可选,优先级高于通用 ASR_API_KEY / ASR_MODEL)\nASR_SILICONFLOW_API_KEY=\nASR_SILICONFLOW_MODEL=FunAudioLLM/SenseVoiceSmall\n\n# 火山引擎 ASR 专用配置 (可选,优先级高于通用 VOLCENGINE_* 配置)\nASR_VOLCENGINE_APP_ID=\nASR_VOLCENGINE_ACCESS_KEY=\nASR_VOLCENGINE_SECRET_KEY=\nASR_VOLCENGINE_CLUSTER_ID=volc.bigasr.sauc.duration\n\n# TTS (文本转语音) 配置\n# 是否启用 TTS 功能\nTTS_ENABLED=false\n# TTS 提供商 (openai, siliconflow, volcengine)\nTTS_PROVIDER=openai\n# TTS 通用配置 (默认复用 AI_API_KEY)\nTTS_API_KEY=\nTTS_ENDPOINT=\nTTS_DEFAULT_MODEL=tts-1\nTTS_DEFAULT_VOICE=alloy\n\n# TTS 前端直连模式(显式启用,默认在 Serverless 环境自动降级到火山引擎直连)\n# TTS_FRONTEND_DIRECT=false\n# TTS 前端直连凭证有效期(秒),默认 600(10 分钟),范围 [300, 43200]\n# TTS_CREDENTIAL_TTL_SECONDS=600\n\n# --- 厂商专项凭据 (可被上述 ASR/TTS 引用) ---\n\n# 火山引擎 (豆包语音) 统一凭据\nVOLCENGINE_APP_ID=\nVOLCENGINE_ACCESS_KEY=\nVOLCENGINE_SECRET_KEY=\n\n# ------------------------------------------\n# 6. 邮件发送系统 (SMTP)\n# ------------------------------------------\n\n# SMTP 服务器地址\nEMAIL_HOST=\n# SMTP 端口\nEMAIL_PORT=587\n# 是否使用 SSL/TLS (默认 false 会尝试 STARTTLS)\nEMAIL_SECURE=false\nEMAIL_USER=\nEMAIL_PASS=\n# 默认邮件发送者 (格式示例: \"Momei Blog\" <admin@example.com>)\nEMAIL_FROM=\n# 是否要求邮箱验证码验证后才允许登录\nEMAIL_REQUIRE_VERIFICATION=false\n\n# 邮件限流与周期配置 (可选)\n# EMAIL_DAILY_LIMIT=100\n# EMAIL_SINGLE_USER_DAILY_LIMIT=5\n# EMAIL_LIMIT_WINDOW=86400\n# EMAIL_EXPIRES_IN=300\n\n# 临时邮箱域拦截配置 (可选)\n# TEMP_EMAIL_DOMAIN_NAME=example.com\n\n# ------------------------------------------\n# 7. 对象存储系统 (Storage & Upload)\n# ------------------------------------------\n\n# 存储引擎 (local, s3, r2, vercel_blob;兼容旧值 vercel-blob)\nSTORAGE_TYPE=local\n\n# 路径前缀(所有上传文件均会携带此目录前缀)\nBUCKET_PREFIX=momei/\n\n# 全局公共访问域名 / 对象前缀(可选,优先级高于驱动级 BaseURL/Prefix)\n# ASSET_PUBLIC_BASE_URL=https://cdn.example.com/assets\n# ASSET_OBJECT_PREFIX=momei-blog/\n\n# 1. 本地存储配置 (STORAGE_TYPE=local)\nLOCAL_STORAGE_DIR=public/uploads\nNUXT_PUBLIC_LOCAL_STORAGE_BASE_URL=/uploads\n\n# 2. S3 兼容存储 (STORAGE_TYPE=s3, 适用于 R2, AWS S3, MinIO)\nS3_ENDPOINT=\nS3_BUCKET_NAME=\nS3_REGION=auto\nS3_ACCESS_KEY_ID=\nS3_SECRET_ACCESS_KEY=\nS3_BASE_URL=\n\n# 3. Vercel Blob (STORAGE_TYPE=vercel_blob)\nBLOB_READ_WRITE_TOKEN=\n\n# 4. Cloudflare R2 专用配置 (也可通过 S3 变量配置)\n# CLOUDFLARE_R2_ACCOUNT_ID=\n# CLOUDFLARE_R2_ACCESS_KEY=\n# CLOUDFLARE_R2_SECRET_KEY=\n# CLOUDFLARE_R2_BUCKET=\n# CLOUDFLARE_R2_BASE_URL=\n\n# 文件大小限制调节 (可选)\n# NUXT_PUBLIC_MAX_UPLOAD_SIZE=4.5MiB\n# NUXT_PUBLIC_MAX_AUDIO_UPLOAD_SIZE=100MiB\n# LOCAL_STORAGE_MIN_FREE_SPACE=100MiB\n\n# ------------------------------------------\n# 7.1 listmonk Newsletter 分发\n# ------------------------------------------\n\nLISTMONK_ENABLED=false\nLISTMONK_INSTANCE_URL=\nLISTMONK_USERNAME=\nLISTMONK_ACCESS_TOKEN=\nLISTMONK_DEFAULT_LIST_IDS=\n# JSON 示例: {\"backend\":[3],\"frontend\":[4]}\nLISTMONK_CATEGORY_LIST_MAP=\n# JSON 示例: {\"nuxt\":[5],\"newsletter\":[6]}\nLISTMONK_TAG_LIST_MAP=\nLISTMONK_TEMPLATE_ID=\n\n# Hexo 风格文章仓库同步(GitHub / Gitee)\nHEXO_SYNC_ENABLED=false\n# 支持 github / gitee\nHEXO_SYNC_PROVIDER=github\nHEXO_SYNC_OWNER=\nHEXO_SYNC_REPO=\nHEXO_SYNC_BRANCH=main\nHEXO_SYNC_POSTS_DIR=source/_posts\n# 仅服务端读取,不进入后台数据库\nHEXO_SYNC_ACCESS_TOKEN=\n\n# ------------------------------------------\n# 8. 运维、监控与自动化 (Operations)\n# ------------------------------------------\n\n# 管理员用户 ID 列表 (逗号分隔,注册后在此提权)\nADMIN_USER_IDS=\n\n# Vercel Cron 专用鉴权密钥\n# Vercel 会自动以 Authorization: Bearer <CRON_SECRET> 触发定时任务端点\nCRON_SECRET=\n\n# 定时任务鉴权令牌 (用于手动触发 Scheduled Tasks Webhook / 旧版集成)\nTASKS_TOKEN=\n\n# Webhook HMAC 签名密钥 (推荐独立配置,默认使用 TASKS_TOKEN)\n# 用于外部调度器 / GitHub Actions / Cloudflare / Serverless 等场景的 HMAC 验签\nWEBHOOK_SECRET=\n\n# 自部署环境 Cron 表达式 (默认每 5 分钟执行一次)\n# 仅在非 Serverless 环境中生效\n# TASK_CRON_EXPRESSION=*/5 * * * *\n\n# 显式禁用自部署环境 Cron\n# DISABLE_CRON_JOB=false\n\n# Webhook 时间戳容差 (毫秒)\n# 说明:当前版本预留该变量名,Webhook 校验默认固定 5 分钟容差\n# WEBHOOK_TIMESTAMP_TOLERANCE=300000\n\n# Sentry 异常监控\nNUXT_PUBLIC_SENTRY_DSN=\nNUXT_PUBLIC_SENTRY_ENVIRONMENT=production\n\n# 站长流量统计 (填入对应统计 ID)\nNUXT_PUBLIC_BAIDU_ANALYTICS_ID=\nNUXT_PUBLIC_GOOGLE_ANALYTICS_ID=\nNUXT_PUBLIC_CLARITY_PROJECT_ID=\n# Umami 统计配置(JSON 字符串,示例: {\"websiteId\":\"xxx\",\"scriptUrl\":\"https://analytics.example.com/script.js\"})\n# NUXT_PUBLIC_UMAMI_ANALYTICS=\n# 若使用 Docker 自托管 Umami,可参考仓库根目录 `umami.env.example` 与 `docker-compose.umami.yml`\n\n# 站点验证标签 (可选)\n# NUXT_PUBLIC_GOOGLE_SITE_VERIFICATION=\n# NUXT_PUBLIC_BING_SITE_VERIFICATION=\n\n# ------------------------------------------\n# 9. 视觉特效与内容组件 (Features)\n# ------------------------------------------\n\n# 站点元数据\nNUXT_PUBLIC_SITE_LOGO=\nNUXT_PUBLIC_SITE_FAVICON=\nNUXT_PUBLIC_SITE_OPERATOR=\nNUXT_PUBLIC_CONTACT_EMAIL=admin@example.com\n\n# 主题系统默认值 (可选,仅在未通过后台配置覆盖时生效)\n# THEME_PRESET=\n# THEME_PRIMARY_COLOR=\n# THEME_ACCENT_COLOR=\n# THEME_SURFACE_COLOR=\n# THEME_TEXT_COLOR=\n# THEME_DARK_PRIMARY_COLOR=\n# THEME_DARK_ACCENT_COLOR=\n# THEME_DARK_SURFACE_COLOR=\n# THEME_DARK_TEXT_COLOR=\n# THEME_BORDER_RADIUS=\n# THEME_MOURNING_MODE=false\n# THEME_BACKGROUND_TYPE=\n# THEME_BACKGROUND_VALUE=\n\n# 验证码集成 (提供商: cloudflare-turnstile, google-recaptcha, hcaptcha, captchafox)\nENABLE_CAPTCHA=false\nNUXT_PUBLIC_AUTH_CAPTCHA_PROVIDER=\nNUXT_PUBLIC_AUTH_CAPTCHA_SITE_KEY=\nAUTH_CAPTCHA_SECRET_KEY=\n\n# 评论审核与风控\nENABLE_COMMENT_REVIEW=false\n# 关键词黑名单 (英文逗号分隔)\nBLACKLISTED_KEYWORDS=\n\n# 页脚自定义注入代码\nNUXT_PUBLIC_FOOTER_CODE=\n\n# 动态视觉特效控制\nNUXT_PUBLIC_LIVE2D_ENABLED=false\n# NUXT_PUBLIC_LIVE2D_SCRIPT_URL=https://unpkg.com/live2d-widgets@1.0.0/dist/\n# NUXT_PUBLIC_LIVE2D_MODEL_URL=\n# NUXT_PUBLIC_LIVE2D_OPTIONS_JSON={}\n# NUXT_PUBLIC_LIVE2D_MOBILE_ENABLED=false\n# NUXT_PUBLIC_LIVE2D_MIN_WIDTH=1024\n# NUXT_PUBLIC_LIVE2D_DATA_SAVER_BLOCK=true\nNUXT_PUBLIC_CANVAS_NEST_ENABLED=false\n# NUXT_PUBLIC_CANVAS_NEST_OPTIONS_JSON={}\n# NUXT_PUBLIC_CANVAS_NEST_MOBILE_ENABLED=false\n# NUXT_PUBLIC_CANVAS_NEST_MIN_WIDTH=1024\n# NUXT_PUBLIC_CANVAS_NEST_DATA_SAVER_BLOCK=true\n# 全局性能卫兵:是否允许移动端加载特效\nNUXT_PUBLIC_EFFECTS_MOBILE_ENABLED=false\n# NUXT_PUBLIC_EFFECTS_MIN_WIDTH=768\n# NUXT_PUBLIC_EFFECTS_DATA_SAVER_BLOCK=true\n\n# 公开限制项 (可选,会同步给前端)\n# NUXT_PUBLIC_ALLOWED_FILE_TYPES=image/jpeg,image/png,image/webp,image/gif\n# NUXT_PUBLIC_COMMENT_INTERVAL=60\n# NUXT_PUBLIC_POSTS_PER_PAGE=10\n\n# 上传限流 (可选)\n# UPLOAD_DAILY_LIMIT=100\n# UPLOAD_SINGLE_USER_DAILY_LIMIT=20\n# UPLOAD_LIMIT_WINDOW=86400\n\n# ------------------------------------------\n# 10. 合规与外部资源安全 (Compliance & Security)\n# ------------------------------------------\n\n# 中国大陆备案信息显示\nNUXT_PUBLIC_SHOW_COMPLIANCE_INFO=false\nNUXT_PUBLIC_ICP_LICENSE_NUMBER=\nNUXT_PUBLIC_PUBLIC_SECURITY_NUMBER=\n\n# 安全:外部资源域名白名单 (逗号分隔,防止某些代理环境下图片加载失败)\nNUXT_PUBLIC_SECURITY_URL_WHITELIST=\n\n# Hugging Face 镜像代理地址 (用于部署在大陆环境时拉取资源)\nNUXT_PUBLIC_HF_PROXY=https://huggingface.co\n\n# ------------------------------------------\n# 11. 商业化与第三方平台集成 (Commercial & Third-party)\n# ------------------------------------------\n\n# 全局商业化默认配置 (JSON 字符串)\n# 仅当需要通过环境变量锁定全局社交/打赏配置时使用\n# COMMERCIAL_SPONSORSHIP_JSON={\"enabled\":true,\"donationLinks\":[],\"socialLinks\":[]}\n\n# Memos 生活流同步\nMEMOS_ENABLED=false\nMEMOS_INSTANCE_URL=\nMEMOS_ACCESS_TOKEN=\nMEMOS_DEFAULT_VISIBILITY=PRIVATE\n\n# ------------------------------------------\n# 12. API 限流配置 (Rate Limiting)\n# ------------------------------------------\n#\n# 内置限流规则及对应环境变量覆盖(不设置则使用默认值)。\n# 规则名对应 server/utils/rate-limit-config.ts 中的 name 字段。\n#\n# 命名规则:NUXT_RATE_LIMIT_<RULE_NAME>_MAX=<number>\n# NUXT_RATE_LIMIT_<RULE_NAME>_WINDOW=<number> 窗口秒数\n\n# 外部 API(CLI/MCP 导入导出等批量操作,容忍度更高)\n# NUXT_RATE_LIMIT_EXTERNAL_MAX=300\n# NUXT_RATE_LIMIT_EXTERNAL_WINDOW=60\n\n# AI 接口(防止 API 费用超支及滥用)\n# NUXT_RATE_LIMIT_AI_MAX=10\n# NUXT_RATE_LIMIT_AI_WINDOW=60\n\n# AI 任务轮询(放宽限制)\n# NUXT_RATE_LIMIT_AI_STATUS_MAX=30\n# NUXT_RATE_LIMIT_AI_STATUS_WINDOW=60\n\n# 搜索(全文搜索压力大)\n# NUXT_RATE_LIMIT_SEARCH_MAX=5\n# NUXT_RATE_LIMIT_SEARCH_WINDOW=60\n\n# 通用写请求(POST/PATCH/PUT/DELETE)\n# NUXT_RATE_LIMIT_DEFAULT_POST_MAX=20\n# NUXT_RATE_LIMIT_DEFAULT_POST_WINDOW=60\n\n# 通用读请求(GET)\n# NUXT_RATE_LIMIT_DEFAULT_GET_MAX=60\n# NUXT_RATE_LIMIT_DEFAULT_GET_WINDOW=60\n\n# ------------------------------------------\n# 13. 日志、调试与 Demo 模式 (Logging & Debug)\n# ------------------------------------------\n\n# 日志输出等级 (silly, debug, http, info, warn, error)\nLOG_LEVEL=info\n# 是否开启文件日志记录 (默认 false,Serverless 环境必须设为 false)\nLOGFILES=false\n# LOG_DIR=logs\n\n# Axiom 日志集成\n# AXIOM_DATASET_NAME=\n# AXIOM_API_TOKEN=\n\n# 演示模式 (内存 DB 运行,限制写操作)\nNUXT_PUBLIC_DEMO_MODE=false\n# NUXT_PUBLIC_DEMO_USER_EMAIL=admin@example.com\n# NUXT_PUBLIC_DEMO_PASSWORD=momei123456\n\n# MCP HTTP 传输开关(启用后主应用挂载 MCP HTTP 端点 /api/mcp)\n# 非 Serverless 环境(Docker / VPS)可开启;Serverless 环境自动静默降级\n# MOMEI_ENABLE_MCP_HTTP=false\n\n# 安装锁定标志(系统首次运行后会自动生成/读取,通常建议初始化后手动修改为 true 并重启系统)\n# MOMEI_INSTALLED=true\n"}, "57fb839a9793d090e91f257d2b2c351e8544bc57": {"t": 1785749526.1842768, "n": 12478, "h": "2f3a1e58718c9b34", "c": "# ==========================================\n# 墨梅博客 (Momei) 环境变量完整示例文件\n# ==========================================\n\n# ------------------------------------------\n# 1. 基础核心配置 (Essential)\n# ------------------------------------------\n\n# 应用名称\nNUXT_PUBLIC_APP_NAME=墨梅博客\n\n# 站点 SEO 描述\nNUXT_PUBLIC_SITE_DESCRIPTION=一个基于 Nuxt 4 构建的现代化 AI 驱动博客平台\n\n# 站点 SEO 关键词 (逗号分隔)\nNUXT_PUBLIC_SITE_KEYWORDS=Nuxt,Vue,Blog,AI,TypeScript\n\n# 默认文章版权协议类型 (例如 all-rights-reserved, cc-by-nc-sa)\nNUXT_PUBLIC_POST_COPYRIGHT=all-rights-reserved\n\n# 站点版权展示信息 (用于页脚版权行)\nNUXT_PUBLIC_SITE_COPYRIGHT_OWNER=XX博客版权所有\nNUXT_PUBLIC_SITE_COPYRIGHT_START_YEAR=2026\n\n# 兼容旧变量名,建议迁移到新的 POST_/SITE_ 命名\n# NUXT_PUBLIC_DEFAULT_COPYRIGHT=all-rights-reserved\n# NUXT_PUBLIC_FOOTER_COPYRIGHT_OWNER=\n# NUXT_PUBLIC_FOOTER_COPYRIGHT_START_YEAR=\n\n# 默认语言 (en-US, zh-CN)\nNUXT_PUBLIC_DEFAULT_LANGUAGE=zh-CN\n\n# 站点 URL(注意:公开访问的站点地址,用于 SEO 和 RSS 生成)\nNUXT_PUBLIC_SITE_URL=http://localhost:3000\n\n# Better Auth 的基础 URL(必需,用于认证回调重定向,推荐与 SITE_URL 一致)\nNUXT_PUBLIC_AUTH_BASE_URL=http://localhost:3000\n\n# 用于加密、签名和哈希的密钥。生产环境必须设置!\n# 可以使用 `openssl rand -hex 32` 生成。开发环境下会自动生成随机值。\nAUTH_SECRET=\n\n# 雪花算法机器 ID (0-1023),用于生成分布式唯一 ID。默认自动获取进程 PID 对 1024 取余\n# MACHINE_ID=\n\n# ------------------------------------------\n# 2. 数据库与高性能配置 (Database & Cache)\n# ------------------------------------------\n\n# 数据库连接 URL (支持 SQLite, MySQL, PostgreSQL)\n# 支持智能推断:\n# - SQLite (推荐): sqlite://database/momei.sqlite (或 file://database/momei.sqlite)\n# - MySQL: mysql://user:pass@host:3306/db\n# - PostgreSQL: postgres://user:pass@host:5432/db\n# 如果未配置,默认将使用本地 SQLite\nDATABASE_URL=sqlite://database/momei.sqlite\n\n# 手动指定数据库类型 (可选,通常由 URL 自动推断: sqlite, mysql, postgres)\n# DATABASE_TYPE=sqlite\n\n# SQLite 数据库路径 (兼容旧版,不推荐手动设置)\n# DATABASE_PATH=database/momei.sqlite\n\n# 是否自动同步数据库表结构 (生产环境建议固定为 false,仅手动控制迁移)\nDATABASE_SYNCHRONIZE=false\n\n# 数据库连接调节 (可选)\n# DATABASE_SSL=false\n# DATABASE_CHARSET=utf8_general_ci\n# DATABASE_TIMEZONE=local\n# DATABASE_ENTITY_PREFIX=momei_\n\n# Redis 连接地址 (可选,配置后将启用基于 Redis 的缓存或限流)\n# REDIS_URL=redis://localhost:6379\n\n# Vercel KV / Upstash Redis 持久化缓存 (可选,用于 ISR/SWR 跨实例共享缓存)\n# Vercel KV 基于 Upstash Redis,在 Vercel 项目中集成 KV 后以下环境变量会自动配置\n# KV_URL=\n# KV_REST_API_URL=\n# KV_REST_API_TOKEN=\n# KV_REST_API_READ_ONLY_TOKEN=\n\n# ------------------------------------------\n# 3. 认证与社交登录 (Authentication)\n# ------------------------------------------\n\n# 是否允许新用户注册\nALLOW_REGISTRATION=true\n\n# 是否启用匿名登录 (无需邮箱密码即可登录)\nANONYMOUS_LOGIN_ENABLED=false\n\n# GitHub 配置 (OAuth)\nNUXT_PUBLIC_GITHUB_CLIENT_ID=\nGITHUB_CLIENT_SECRET=\n\n# Google 配置 (OAuth)\nNUXT_PUBLIC_GOOGLE_CLIENT_ID=\nGOOGLE_CLIENT_SECRET=\n\n# ------------------------------------------\n# 4. AI 核心引擎 (AI Integration - Text & Image)\n# ------------------------------------------\n\n# 是否启用 AI 功能\nAI_ENABLED=true\n\n# 主 AI 提供商 (openai, anthropic, deepseek, doubao, siliconflow, gemini, volcengine)\nAI_PROVIDER=openai\n\n# AI API 密钥\nAI_API_KEY=\n\n# 默认模型名称 (如 gpt-4o, claude-3-5-sonnet, deepseek-chat)\nAI_MODEL=gpt-4o\n\n# API 代理端点 (可选,用于 OpenAI 兼容服务)\nAI_API_ENDPOINT=\n\n# AI 生成参数控制 (可选,默认内置优化值)\n# AI_MAX_TOKENS=2048\n# AI_TEMPERATURE=0.7\n# AI_MAX_CONTENT_LENGTH=50000\n# AI_CHUNK_SIZE=4000\n# AI_TEXT_DIRECT_RETURN_MAX_CHARS=1000\n# AI_TEXT_TASK_CHUNK_SIZE=4000\n# AI_TEXT_TASK_CONCURRENCY=3\n# AI 重任务超时(用于 TTS / ASR / 图片生成等耗时任务)\nAI_HEAVY_TASK_TIMEOUT=5m\n\n# Gemini 专用令牌 (如果 provider 为 gemini 且需要独立令牌鉴权)\n# GEMINI_API_TOKEN=\n\n# AI 图像生成配置\nAI_IMAGE_ENABLED=false\nAI_IMAGE_PROVIDER=openai\nAI_IMAGE_API_KEY=\nAI_IMAGE_MODEL=dall-e-3\nAI_IMAGE_ENDPOINT=\n\n# AI 配额治理 (可选,支持直接复用后台设置页导出的 JSON)\n# AI_QUOTA_ENABLED=false\n# AI_QUOTA_POLICIES=[{\"subjectType\":\"global\",\"subjectValue\":\"default\",\"scope\":\"all\",\"period\":\"day\",\"maxRequests\":100,\"maxQuotaUnits\":200,\"enabled\":true}]\n# AI_ALERT_THRESHOLDS={\"enabled\":true,\"quotaUsageRatios\":[0.5,0.8,1],\"costUsageRatios\":[0.8,1],\"failureBurst\":{\"enabled\":true,\"windowMinutes\":10,\"maxFailures\":3,\"categories\":[\"image\",\"asr\",\"tts\",\"podcast\"]},\"dedupeWindowMinutes\":1440,\"maxAlerts\":10}\n\n# ------------------------------------------\n# 5. AI 多模态音频 (ASR & TTS)\n# ------------------------------------------\n\n# ASR (语音识别) 配置\n# 是否启用 ASR 功能\nASR_ENABLED=false\n# ASR 提供商 (openai, siliconflow, volcengine)\nASR_PROVIDER=siliconflow\n# ASR 通用配置\nASR_API_KEY=\nASR_MODEL=FunAudioLLM/SenseVoiceSmall\nASR_ENDPOINT=\n\n# SiliconFlow ASR 专用配置 (可选,优先级高于通用 ASR_API_KEY / ASR_MODEL)\nASR_SILICONFLOW_API_KEY=\nASR_SILICONFLOW_MODEL=FunAudioLLM/SenseVoiceSmall\n\n# 火山引擎 ASR 专用配置 (可选,优先级高于通用 VOLCENGINE_* 配置)\nASR_VOLCENGINE_APP_ID=\nASR_VOLCENGINE_ACCESS_KEY=\nASR_VOLCENGINE_SECRET_KEY=\nASR_VOLCENGINE_CLUSTER_ID=volc.bigasr.sauc.duration\n\n# TTS (文本转语音) 配置\n# 是否启用 TTS 功能\nTTS_ENABLED=false\n# TTS 提供商 (openai, siliconflow, volcengine)\nTTS_PROVIDER=openai\n# TTS 通用配置 (默认复用 AI_API_KEY)\nTTS_API_KEY=\nTTS_ENDPOINT=\nTTS_DEFAULT_MODEL=tts-1\nTTS_DEFAULT_VOICE=alloy\n\n# TTS 前端直连模式(显式启用,默认在 Serverless 环境自动降级到火山引擎直连)\n# TTS_FRONTEND_DIRECT=false\n# TTS 前端直连凭证有效期(秒),默认 600(10 分钟),范围 [300, 43200]\n# TTS_CREDENTIAL_TTL_SECONDS=600\n\n# --- 厂商专项凭据 (可被上述 ASR/TTS 引用) ---\n\n# 火山引擎 (豆包语音) 统一凭据\nVOLCENGINE_APP_ID=\nVOLCENGINE_ACCESS_KEY=\nVOLCENGINE_SECRET_KEY=\n\n# ------------------------------------------\n# 6. 邮件发送系统 (SMTP)\n# ------------------------------------------\n\n# SMTP 服务器地址\nEMAIL_HOST=\n# SMTP 端口\nEMAIL_PORT=587\n# 是否使用 SSL/TLS (默认 false 会尝试 STARTTLS)\nEMAIL_SECURE=false\nEMAIL_USER=\nEMAIL_PASS=\n# 默认邮件发送者 (格式示例: \"Momei Blog\" <admin@example.com>)\nEMAIL_FROM=\n# 是否要求邮箱验证码验证后才允许登录\nEMAIL_REQUIRE_VERIFICATION=false\n\n# 邮件限流与周期配置 (可选)\n# EMAIL_DAILY_LIMIT=100\n# EMAIL_SINGLE_USER_DAILY_LIMIT=5\n# EMAIL_LIMIT_WINDOW=86400\n# EMAIL_EXPIRES_IN=300\n\n# 临时邮箱域拦截配置 (可选)\n# TEMP_EMAIL_DOMAIN_NAME=example.com\n\n# ------------------------------------------\n# 7. 对象存储系统 (Storage & Upload)\n# ------------------------------------------\n\n# 存储引擎 (local, s3, r2, vercel_blob;兼容旧值 vercel-blob)\nSTORAGE_TYPE=local\n\n# 路径前缀(所有上传文件均会携带此目录前缀)\nBUCKET_PREFIX=momei/\n\n# 全局公共访问域名 / 对象前缀(可选,优先级高于驱动级 BaseURL/Prefix)\n# ASSET_PUBLIC_BASE_URL=https://cdn.example.com/assets\n# ASSET_OBJECT_PREFIX=momei-blog/\n\n# 1. 本地存储配置 (STORAGE_TYPE=local)\nLOCAL_STORAGE_DIR=public/uploads\nNUXT_PUBLIC_LOCAL_STORAGE_BASE_URL=/uploads\n\n# 2. S3 兼容存储 (STORAGE_TYPE=s3, 适用于 R2, AWS S3, MinIO)\nS3_ENDPOINT=\nS3_BUCKET_NAME=\nS3_REGION=auto\nS3_ACCESS_KEY_ID=\nS3_SECRET_ACCESS_KEY=\nS3_BASE_URL=\n\n# 3. Vercel Blob (STORAGE_TYPE=vercel_blob)\nBLOB_READ_WRITE_TOKEN=\n\n# 4. Cloudflare R2 专用配置 (也可通过 S3 变量配置)\n# CLOUDFLARE_R2_ACCOUNT_ID=\n# CLOUDFLARE_R2_ACCESS_KEY=\n# CLOUDFLARE_R2_SECRET_KEY=\n# CLOUDFLARE_R2_BUCKET=\n# CLOUDFLARE_R2_BASE_URL=\n\n# 文件大小限制调节 (可选)\n# NUXT_PUBLIC_MAX_UPLOAD_SIZE=4.5MiB\n# NUXT_PUBLIC_MAX_AUDIO_UPLOAD_SIZE=100MiB\n# LOCAL_STORAGE_MIN_FREE_SPACE=100MiB\n\n# ------------------------------------------\n# 7.1 listmonk Newsletter 分发\n# ------------------------------------------\n\nLISTMONK_ENABLED=false\nLISTMONK_INSTANCE_URL=\nLISTMONK_USERNAME=\nLISTMONK_ACCESS_TOKEN=\nLISTMONK_DEFAULT_LIST_IDS=\n# JSON 示例: {\"backend\":[3],\"frontend\":[4]}\nLISTMONK_CATEGORY_LIST_MAP=\n# JSON 示例: {\"nuxt\":[5],\"newsletter\":[6]}\nLISTMONK_TAG_LIST_MAP=\nLISTMONK_TEMPLATE_ID=\n\n# Hexo 风格文章仓库同步(GitHub / Gitee)\nHEXO_SYNC_ENABLED=false\n# 支持 github / gitee\nHEXO_SYNC_PROVIDER=github\nHEXO_SYNC_OWNER=\nHEXO_SYNC_REPO=\nHEXO_SYNC_BRANCH=main\nHEXO_SYNC_POSTS_DIR=source/_posts\n# 仅服务端读取,不进入后台数据库\nHEXO_SYNC_ACCESS_TOKEN=\n\n# ------------------------------------------\n# 8. 运维、监控与自动化 (Operations)\n# ------------------------------------------\n\n# 管理员用户 ID 列表 (逗号分隔,注册后在此提权)\nADMIN_USER_IDS=\n\n# Vercel Cron 专用鉴权密钥\n# Vercel 会自动以 Authorization: Bearer <CRON_SECRET> 触发定时任务端点\nCRON_SECRET=\n\n# 定时任务鉴权令牌 (用于手动触发 Scheduled Tasks Webhook / 旧版集成)\nTASKS_TOKEN=\n\n# Webhook HMAC 签名密钥 (推荐独立配置,默认使用 TASKS_TOKEN)\n# 用于外部调度器 / GitHub Actions / Cloudflare / Serverless 等场景的 HMAC 验签\nWEBHOOK_SECRET=\n\n# 自部署环境 Cron 表达式 (默认每 5 分钟执行一次)\n# 仅在非 Serverless 环境中生效\n# TASK_CRON_EXPRESSION=*/5 * * * *\n\n# 显式禁用自部署环境 Cron\n# DISABLE_CRON_JOB=false\n\n# Webhook 时间戳容差 (毫秒)\n# 说明:当前版本预留该变量名,Webhook 校验默认固定 5 分钟容差\n# WEBHOOK_TIMESTAMP_TOLERANCE=300000\n\n# Sentry 异常监控\nNUXT_PUBLIC_SENTRY_DSN=\nNUXT_PUBLIC_SENTRY_ENVIRONMENT=production\n\n# 站长流量统计 (填入对应统计 ID)\nNUXT_PUBLIC_BAIDU_ANALYTICS_ID=\nNUXT_PUBLIC_GOOGLE_ANALYTICS_ID=\nNUXT_PUBLIC_CLARITY_PROJECT_ID=\n# Umami 统计配置(JSON 字符串,示例: {\"websiteId\":\"xxx\",\"scriptUrl\":\"https://analytics.example.com/script.js\"})\n# NUXT_PUBLIC_UMAMI_ANALYTICS=\n# 若使用 Docker 自托管 Umami,可参考仓库根目录 `umami.env.example` 与 `docker-compose.umami.yml`\n\n# 站点验证标签 (可选)\n# NUXT_PUBLIC_GOOGLE_SITE_VERIFICATION=\n# NUXT_PUBLIC_BING_SITE_VERIFICATION=\n\n# ------------------------------------------\n# 9. 视觉特效与内容组件 (Features)\n# ------------------------------------------\n\n# 站点元数据\nNUXT_PUBLIC_SITE_LOGO=\nNUXT_PUBLIC_SITE_FAVICON=\nNUXT_PUBLIC_SITE_OPERATOR=\nNUXT_PUBLIC_CONTACT_EMAIL=admin@example.com\n\n# 主题系统默认值 (可选,仅在未通过后台配置覆盖时生效)\n# THEME_PRESET=\n# THEME_PRIMARY_COLOR=\n# THEME_ACCENT_COLOR=\n# THEME_SURFACE_COLOR=\n# THEME_TEXT_COLOR=\n# THEME_DARK_PRIMARY_COLOR=\n# THEME_DARK_ACCENT_COLOR=\n# THEME_DARK_SURFACE_COLOR=\n# THEME_DARK_TEXT_COLOR=\n# THEME_BORDER_RADIUS=\n# THEME_MOURNING_MODE=false\n# THEME_BACKGROUND_TYPE=\n# THEME_BACKGROUND_VALUE=\n\n# 验证码集成 (提供商: cloudflare-turnstile, google-recaptcha, hcaptcha, captchafox)\nENABLE_CAPTCHA=false\nNUXT_PUBLIC_AUTH_CAPTCHA_PROVIDER=\nNUXT_PUBLIC_AUTH_CAPTCHA_SITE_KEY=\nAUTH_CAPTCHA_SECRET_KEY=\n\n# 评论审核与风控\nENABLE_COMMENT_REVIEW=false\n# 关键词黑名单 (英文逗号分隔)\nBLACKLISTED_KEYWORDS=\n\n# 页脚自定义注入代码\nNUXT_PUBLIC_FOOTER_CODE=\n\n# 动态视觉特效控制\nNUXT_PUBLIC_LIVE2D_ENABLED=false\n# NUXT_PUBLIC_LIVE2D_SCRIPT_URL=https://unpkg.com/live2d-widgets@1.0.0/dist/\n# NUXT_PUBLIC_LIVE2D_MODEL_URL=\n# NUXT_PUBLIC_LIVE2D_OPTIONS_JSON={}\n# NUXT_PUBLIC_LIVE2D_MOBILE_ENABLED=false\n# NUXT_PUBLIC_LIVE2D_MIN_WIDTH=1024\n# NUXT_PUBLIC_LIVE2D_DATA_SAVER_BLOCK=true\nNUXT_PUBLIC_CANVAS_NEST_ENABLED=false\n# NUXT_PUBLIC_CANVAS_NEST_OPTIONS_JSON={}\n# NUXT_PUBLIC_CANVAS_NEST_MOBILE_ENABLED=false\n# NUXT_PUBLIC_CANVAS_NEST_MIN_WIDTH=1024\n# NUXT_PUBLIC_CANVAS_NEST_DATA_SAVER_BLOCK=true\n# 全局性能卫兵:是否允许移动端加载特效\nNUXT_PUBLIC_EFFECTS_MOBILE_ENABLED=false\n# NUXT_PUBLIC_EFFECTS_MIN_WIDTH=768\n# NUXT_PUBLIC_EFFECTS_DATA_SAVER_BLOCK=true\n\n# 公开限制项 (可选,会同步给前端)\n# NUXT_PUBLIC_ALLOWED_FILE_TYPES=image/jpeg,image/png,image/webp,image/gif\n# NUXT_PUBLIC_COMMENT_INTERVAL=60\n# NUXT_PUBLIC_POSTS_PER_PAGE=10\n\n# 上传限流 (可选)\n# UPLOAD_DAILY_LIMIT=100\n# UPLOAD_SINGLE_USER_DAILY_LIMIT=20\n# UPLOAD_LIMIT_WINDOW=86400\n\n# ------------------------------------------\n# 10. 合规与外部资源安全 (Compliance & Security)\n# ------------------------------------------\n\n# 中国大陆备案信息显示\nNUXT_PUBLIC_SHOW_COMPLIANCE_INFO=false\nNUXT_PUBLIC_ICP_LICENSE_NUMBER=\nNUXT_PUBLIC_PUBLIC_SECURITY_NUMBER=\n\n# 安全:外部资源域名白名单 (逗号分隔,防止某些代理环境下图片加载失败)\nNUXT_PUBLIC_SECURITY_URL_WHITELIST=\n\n# Hugging Face 镜像代理地址 (用于部署在大陆环境时拉取资源)\nNUXT_PUBLIC_HF_PROXY=https://huggingface.co\n\n# ------------------------------------------\n# 11. 商业化与第三方平台集成 (Commercial & Third-party)\n# ------------------------------------------\n\n# 全局商业化默认配置 (JSON 字符串)\n# 仅当需要通过环境变量锁定全局社交/打赏配置时使用\n# COMMERCIAL_SPONSORSHIP_JSON={\"enabled\":true,\"donationLinks\":[],\"socialLinks\":[]}\n\n# Memos 生活流同步\nMEMOS_ENABLED=false\nMEMOS_INSTANCE_URL=\nMEMOS_ACCESS_TOKEN=\nMEMOS_DEFAULT_VISIBILITY=PRIVATE\n\n# ------------------------------------------\n# 12. API 限流配置 (Rate Limiting)\n# ------------------------------------------\n#\n# 内置限流规则及对应环境变量覆盖(不设置则使用默认值)。\n# 规则名对应 server/utils/rate-limit-config.ts 中的 name 字段。\n#\n# 命名规则:NUXT_RATE_LIMIT_<RULE_NAME>_MAX=<number>\n# NUXT_RATE_LIMIT_<RULE_NAME>_WINDOW=<number> 窗口秒数\n\n# 外部 API(CLI/MCP 导入导出等批量操作,容忍度更高)\n# NUXT_RATE_LIMIT_EXTERNAL_MAX=300\n# NUXT_RATE_LIMIT_EXTERNAL_WINDOW=60\n\n# AI 接口(防止 API 费用超支及滥用)\n# NUXT_RATE_LIMIT_AI_MAX=10\n# NUXT_RATE_LIMIT_AI_WINDOW=60\n\n# AI 任务轮询(放宽限制)\n# NUXT_RATE_LIMIT_AI_STATUS_MAX=30\n# NUXT_RATE_LIMIT_AI_STATUS_WINDOW=60\n\n# 搜索(全文搜索压力大)\n# NUXT_RATE_LIMIT_SEARCH_MAX=5\n# NUXT_RATE_LIMIT_SEARCH_WINDOW=60\n\n# 通用写请求(POST/PATCH/PUT/DELETE)\n# NUXT_RATE_LIMIT_DEFAULT_POST_MAX=20\n# NUXT_RATE_LIMIT_DEFAULT_POST_WINDOW=60\n\n# 通用读请求(GET)\n# NUXT_RATE_LIMIT_DEFAULT_GET_MAX=60\n# NUXT_RATE_LIMIT_DEFAULT_GET_WINDOW=60\n\n# ------------------------------------------\n# 13. 日志、调试与 Demo 模式 (Logging & Debug)\n# ------------------------------------------\n\n# 日志输出等级 (silly, debug, http, info, warn, error)\nLOG_LEVEL=info\n# 是否开启文件日志记录 (默认 false,Serverless 环境必须设为 false)\nLOGFILES=false\n# LOG_DIR=logs\n\n# Axiom 日志集成\n# AXIOM_DATASET_NAME=\n# AXIOM_API_TOKEN=\n\n# 演示模式 (内存 DB 运行,限制写操作)\nNUXT_PUBLIC_DEMO_MODE=false\n# NUXT_PUBLIC_DEMO_USER_EMAIL=admin@example.com\n# NUXT_PUBLIC_DEMO_PASSWORD=momei123456\n\n# 安装锁定标志(系统首次运行后会自动生成/读取,通常建议初始化后手动修改为 true 并重启系统)\n# MOMEI_INSTALLED=true\n"}, "c85206bc8abe441b102984f7e2ceb9a74dc29271": {"t": 1785749527.4838753, "n": 11595, "h": "18a6389505f40769", "c": "# ==========================================\n# 墨梅博客 (Momei) 环境变量完整示例文件\n# ==========================================\n\n# ------------------------------------------\n# 1. 基础核心配置 (Essential)\n# ------------------------------------------\n\n# 应用名称\nNUXT_PUBLIC_APP_NAME=墨梅博客\n\n# 站点 SEO 描述\nNUXT_PUBLIC_SITE_DESCRIPTION=一个基于 Nuxt 4 构建的现代化 AI 驱动博客平台\n\n# 站点 SEO 关键词 (逗号分隔)\nNUXT_PUBLIC_SITE_KEYWORDS=Nuxt,Vue,Blog,AI,TypeScript\n\n# 默认文章版权协议类型 (例如 all-rights-reserved, cc-by-nc-sa)\nNUXT_PUBLIC_POST_COPYRIGHT=all-rights-reserved\n\n# 站点版权展示信息 (用于页脚版权行)\nNUXT_PUBLIC_SITE_COPYRIGHT_OWNER=XX博客版权所有\nNUXT_PUBLIC_SITE_COPYRIGHT_START_YEAR=2026\n\n# 兼容旧变量名,建议迁移到新的 POST_/SITE_ 命名\n# NUXT_PUBLIC_DEFAULT_COPYRIGHT=all-rights-reserved\n# NUXT_PUBLIC_FOOTER_COPYRIGHT_OWNER=\n# NUXT_PUBLIC_FOOTER_COPYRIGHT_START_YEAR=\n\n# 默认语言 (en-US, zh-CN)\nNUXT_PUBLIC_DEFAULT_LANGUAGE=zh-CN\n\n# 站点 URL(注意:公开访问的站点地址,用于 SEO 和 RSS 生成)\nNUXT_PUBLIC_SITE_URL=http://localhost:3000\n\n# Better Auth 的基础 URL(必需,用于认证回调重定向,推荐与 SITE_URL 一致)\nNUXT_PUBLIC_AUTH_BASE_URL=http://localhost:3000\n\n# 用于加密、签名和哈希的密钥。生产环境必须设置!\n# 可以使用 `openssl rand -hex 32` 生成。开发环境下会自动生成随机值。\nAUTH_SECRET=\n\n# 雪花算法机器 ID (0-1023),用于生成分布式唯一 ID。默认自动获取进程 PID 对 1024 取余\n# MACHINE_ID=\n\n# ------------------------------------------\n# 2. 数据库与高性能配置 (Database & Cache)\n# ------------------------------------------\n\n# 数据库连接 URL (支持 SQLite, MySQL, PostgreSQL)\n# 支持智能推断:\n# - SQLite (推荐): sqlite://database/momei.sqlite (或 file://database/momei.sqlite)\n# - MySQL: mysql://user:pass@host:3306/db\n# - PostgreSQL: postgres://user:pass@host:5432/db\n# 如果未配置,默认将使用本地 SQLite\nDATABASE_URL=sqlite://database/momei.sqlite\n\n# 手动指定数据库类型 (可选,通常由 URL 自动推断: sqlite, mysql, postgres)\n# DATABASE_TYPE=sqlite\n\n# SQLite 数据库路径 (兼容旧版,不推荐手动设置)\n# DATABASE_PATH=database/momei.sqlite\n\n# 是否自动同步数据库表结构 (生产环境建议固定为 false,仅手动控制迁移)\nDATABASE_SYNCHRONIZE=false\n\n# 数据库连接调节 (可选)\n# DATABASE_SSL=false\n# DATABASE_CHARSET=utf8_general_ci\n# DATABASE_TIMEZONE=local\n# DATABASE_ENTITY_PREFIX=momei_\n\n# Redis 连接地址 (可选,配置后将启用基于 Redis 的缓存或限流)\n# REDIS_URL=redis://localhost:6379\n\n# Vercel KV / Upstash Redis 持久化缓存 (可选,用于 ISR/SWR 跨实例共享缓存)\n# Vercel KV 基于 Upstash Redis,在 Vercel 项目中集成 KV 后以下环境变量会自动配置\n# KV_URL=\n# KV_REST_API_URL=\n# KV_REST_API_TOKEN=\n# KV_REST_API_READ_ONLY_TOKEN=\n\n# ------------------------------------------\n# 3. 认证与社交登录 (Authentication)\n# ------------------------------------------\n\n# 是否允许新用户注册\nALLOW_REGISTRATION=true\n\n# 是否启用匿名登录 (无需邮箱密码即可登录)\nANONYMOUS_LOGIN_ENABLED=false\n\n# GitHub 配置 (OAuth)\nNUXT_PUBLIC_GITHUB_CLIENT_ID=\nGITHUB_CLIENT_SECRET=\n\n# Google 配置 (OAuth)\nNUXT_PUBLIC_GOOGLE_CLIENT_ID=\nGOOGLE_CLIENT_SECRET=\n\n# ------------------------------------------\n# 4. AI 核心引擎 (AI Integration - Text & Image)\n# ------------------------------------------\n\n# 是否启用 AI 功能\nAI_ENABLED=true\n\n# 主 AI 提供商 (openai, anthropic, deepseek, doubao, siliconflow, gemini, volcengine)\nAI_PROVIDER=openai\n\n# AI API 密钥\nAI_API_KEY=\n\n# 默认模型名称 (如 gpt-4o, claude-3-5-sonnet, deepseek-chat)\nAI_MODEL=gpt-4o\n\n# API 代理端点 (可选,用于 OpenAI 兼容服务)\nAI_API_ENDPOINT=\n\n# AI 生成参数控制 (可选,默认内置优化值)\n# AI_MAX_TOKENS=2048\n# AI_TEMPERATURE=0.7\n# AI_MAX_CONTENT_LENGTH=50000\n# AI_CHUNK_SIZE=4000\n# AI_TEXT_DIRECT_RETURN_MAX_CHARS=1000\n# AI_TEXT_TASK_CHUNK_SIZE=4000\n# AI_TEXT_TASK_CONCURRENCY=3\n# AI 重任务超时(用于 TTS / ASR / 图片生成等耗时任务)\nAI_HEAVY_TASK_TIMEOUT=5m\n\n# Gemini 专用令牌 (如果 provider 为 gemini 且需要独立令牌鉴权)\n# GEMINI_API_TOKEN=\n\n# AI 图像生成配置\nAI_IMAGE_ENABLED=false\nAI_IMAGE_PROVIDER=openai\nAI_IMAGE_API_KEY=\nAI_IMAGE_MODEL=dall-e-3\nAI_IMAGE_ENDPOINT=\n\n# AI 配额治理 (可选,支持直接复用后台设置页导出的 JSON)\n# AI_QUOTA_ENABLED=false\n# AI_QUOTA_POLICIES=[{\"subjectType\":\"global\",\"subjectValue\":\"default\",\"scope\":\"all\",\"period\":\"day\",\"maxRequests\":100,\"maxQuotaUnits\":200,\"enabled\":true}]\n# AI_ALERT_THRESHOLDS={\"enabled\":true,\"quotaUsageRatios\":[0.5,0.8,1],\"costUsageRatios\":[0.8,1],\"failureBurst\":{\"enabled\":true,\"windowMinutes\":10,\"maxFailures\":3,\"categories\":[\"image\",\"asr\",\"tts\",\"podcast\"]},\"dedupeWindowMinutes\":1440,\"maxAlerts\":10}\n\n# ------------------------------------------\n# 5. AI 多模态音频 (ASR & TTS)\n# ------------------------------------------\n\n# ASR (语音识别) 配置\n# 是否启用 ASR 功能\nASR_ENABLED=false\n# ASR 提供商 (openai, siliconflow, volcengine)\nASR_PROVIDER=siliconflow\n# ASR 通用配置\nASR_API_KEY=\nASR_MODEL=FunAudioLLM/SenseVoiceSmall\nASR_ENDPOINT=\n\n# SiliconFlow ASR 专用配置 (可选,优先级高于通用 ASR_API_KEY / ASR_MODEL)\nASR_SILICONFLOW_API_KEY=\nASR_SILICONFLOW_MODEL=FunAudioLLM/SenseVoiceSmall\n\n# 火山引擎 ASR 专用配置 (可选,优先级高于通用 VOLCENGINE_* 配置)\nASR_VOLCENGINE_APP_ID=\nASR_VOLCENGINE_ACCESS_KEY=\nASR_VOLCENGINE_SECRET_KEY=\nASR_VOLCENGINE_CLUSTER_ID=volc.bigasr.sauc.duration\n\n# TTS (文本转语音) 配置\n# 是否启用 TTS 功能\nTTS_ENABLED=false\n# TTS 提供商 (openai, siliconflow, volcengine)\nTTS_PROVIDER=openai\n# TTS 通用配置 (默认复用 AI_API_KEY)\nTTS_API_KEY=\nTTS_ENDPOINT=\nTTS_DEFAULT_MODEL=tts-1\nTTS_DEFAULT_VOICE=alloy\n\n# TTS 前端直连模式(显式启用,默认在 Serverless 环境自动降级到火山引擎直连)\n# TTS_FRONTEND_DIRECT=false\n# TTS 前端直连凭证有效期(秒),默认 600(10 分钟),范围 [300, 43200]\n# TTS_CREDENTIAL_TTL_SECONDS=600\n\n# --- 厂商专项凭据 (可被上述 ASR/TTS 引用) ---\n\n# 火山引擎 (豆包语音) 统一凭据\nVOLCENGINE_APP_ID=\nVOLCENGINE_ACCESS_KEY=\nVOLCENGINE_SECRET_KEY=\n\n# ------------------------------------------\n# 6. 邮件发送系统 (SMTP)\n# ------------------------------------------\n\n# SMTP 服务器地址\nEMAIL_HOST=\n# SMTP 端口\nEMAIL_PORT=587\n# 是否使用 SSL/TLS (默认 false 会尝试 STARTTLS)\nEMAIL_SECURE=false\nEMAIL_USER=\nEMAIL_PASS=\n# 默认邮件发送者 (格式示例: \"Momei Blog\" <admin@example.com>)\nEMAIL_FROM=\n# 是否要求邮箱验证码验证后才允许登录\nEMAIL_REQUIRE_VERIFICATION=false\n\n# 邮件限流与周期配置 (可选)\n# EMAIL_DAILY_LIMIT=100\n# EMAIL_SINGLE_USER_DAILY_LIMIT=5\n# EMAIL_LIMIT_WINDOW=86400\n# EMAIL_EXPIRES_IN=300\n\n# 临时邮箱域拦截配置 (可选)\n# TEMP_EMAIL_DOMAIN_NAME=example.com\n\n# ------------------------------------------\n# 7. 对象存储系统 (Storage & Upload)\n# ------------------------------------------\n\n# 存储引擎 (local, s3, r2, vercel_blob;兼容旧值 vercel-blob)\nSTORAGE_TYPE=local\n\n# 路径前缀(所有上传文件均会携带此目录前缀)\nBUCKET_PREFIX=momei/\n\n# 全局公共访问域名 / 对象前缀(可选,优先级高于驱动级 BaseURL/Prefix)\n# ASSET_PUBLIC_BASE_URL=https://cdn.example.com/assets\n# ASSET_OBJECT_PREFIX=momei-blog/\n\n# 1. 本地存储配置 (STORAGE_TYPE=local)\nLOCAL_STORAGE_DIR=public/uploads\nNUXT_PUBLIC_LOCAL_STORAGE_BASE_URL=/uploads\n\n# 2. S3 兼容存储 (STORAGE_TYPE=s3, 适用于 R2, AWS S3, MinIO)\nS3_ENDPOINT=\nS3_BUCKET_NAME=\nS3_REGION=auto\nS3_ACCESS_KEY_ID=\nS3_SECRET_ACCESS_KEY=\nS3_BASE_URL=\n\n# 3. Vercel Blob (STORAGE_TYPE=vercel_blob)\nBLOB_READ_WRITE_TOKEN=\n\n# 4. Cloudflare R2 专用配置 (也可通过 S3 变量配置)\n# CLOUDFLARE_R2_ACCOUNT_ID=\n# CLOUDFLARE_R2_ACCESS_KEY=\n# CLOUDFLARE_R2_SECRET_KEY=\n# CLOUDFLARE_R2_BUCKET=\n# CLOUDFLARE_R2_BASE_URL=\n\n# 文件大小限制调节 (可选)\n# NUXT_PUBLIC_MAX_UPLOAD_SIZE=4.5MiB\n# NUXT_PUBLIC_MAX_AUDIO_UPLOAD_SIZE=100MiB\n# LOCAL_STORAGE_MIN_FREE_SPACE=100MiB\n\n# ------------------------------------------\n# 7.1 listmonk Newsletter 分发\n# ------------------------------------------\n\nLISTMONK_ENABLED=false\nLISTMONK_INSTANCE_URL=\nLISTMONK_USERNAME=\nLISTMONK_ACCESS_TOKEN=\nLISTMONK_DEFAULT_LIST_IDS=\n# JSON 示例: {\"backend\":[3],\"frontend\":[4]}\nLISTMONK_CATEGORY_LIST_MAP=\n# JSON 示例: {\"nuxt\":[5],\"newsletter\":[6]}\nLISTMONK_TAG_LIST_MAP=\nLISTMONK_TEMPLATE_ID=\n\n# Hexo 风格文章仓库同步(GitHub / Gitee)\nHEXO_SYNC_ENABLED=false\n# 支持 github / gitee\nHEXO_SYNC_PROVIDER=github\nHEXO_SYNC_OWNER=\nHEXO_SYNC_REPO=\nHEXO_SYNC_BRANCH=main\nHEXO_SYNC_POSTS_DIR=source/_posts\n# 仅服务端读取,不进入后台数据库\nHEXO_SYNC_ACCESS_TOKEN=\n\n# ------------------------------------------\n# 8. 运维、监控与自动化 (Operations)\n# ------------------------------------------\n\n# 管理员用户 ID 列表 (逗号分隔,注册后在此提权)\nADMIN_USER_IDS=\n\n# Vercel Cron 专用鉴权密钥\n# Vercel 会自动以 Authorization: Bearer <CRON_SECRET> 触发定时任务端点\nCRON_SECRET=\n\n# 定时任务鉴权令牌 (用于手动触发 Scheduled Tasks Webhook / 旧版集成)\nTASKS_TOKEN=\n\n# Webhook HMAC 签名密钥 (推荐独立配置,默认使用 TASKS_TOKEN)\n# 用于外部调度器 / GitHub Actions / Cloudflare / Serverless 等场景的 HMAC 验签\nWEBHOOK_SECRET=\n\n# 自部署环境 Cron 表达式 (默认每 5 分钟执行一次)\n# 仅在非 Serverless 环境中生效\n# TASK_CRON_EXPRESSION=*/5 * * * *\n\n# 显式禁用自部署环境 Cron\n# DISABLE_CRON_JOB=false\n\n# Webhook 时间戳容差 (毫秒)\n# 说明:当前版本预留该变量名,Webhook 校验默认固定 5 分钟容差\n# WEBHOOK_TIMESTAMP_TOLERANCE=300000\n\n# Sentry 异常监控\nNUXT_PUBLIC_SENTRY_DSN=\nNUXT_PUBLIC_SENTRY_ENVIRONMENT=production\n\n# 站长流量统计 (填入对应统计 ID)\nNUXT_PUBLIC_BAIDU_ANALYTICS_ID=\nNUXT_PUBLIC_GOOGLE_ANALYTICS_ID=\nNUXT_PUBLIC_CLARITY_PROJECT_ID=\n# Umami 统计配置(JSON 字符串,示例: {\"websiteId\":\"xxx\",\"scriptUrl\":\"https://analytics.example.com/script.js\"})\n# NUXT_PUBLIC_UMAMI_ANALYTICS=\n# 若使用 Docker 自托管 Umami,可参考仓库根目录 `umami.env.example` 与 `docker-compose.umami.yml`\n\n# 站点验证标签 (可选)\n# NUXT_PUBLIC_GOOGLE_SITE_VERIFICATION=\n# NUXT_PUBLIC_BING_SITE_VERIFICATION=\n\n# ------------------------------------------\n# 9. 视觉特效与内容组件 (Features)\n# ------------------------------------------\n\n# 站点元数据\nNUXT_PUBLIC_SITE_LOGO=\nNUXT_PUBLIC_SITE_FAVICON=\nNUXT_PUBLIC_SITE_OPERATOR=\nNUXT_PUBLIC_CONTACT_EMAIL=admin@example.com\n\n# 主题系统默认值 (可选,仅在未通过后台配置覆盖时生效)\n# THEME_PRESET=\n# THEME_PRIMARY_COLOR=\n# THEME_ACCENT_COLOR=\n# THEME_SURFACE_COLOR=\n# THEME_TEXT_COLOR=\n# THEME_DARK_PRIMARY_COLOR=\n# THEME_DARK_ACCENT_COLOR=\n# THEME_DARK_SURFACE_COLOR=\n# THEME_DARK_TEXT_COLOR=\n# THEME_BORDER_RADIUS=\n# THEME_MOURNING_MODE=false\n# THEME_BACKGROUND_TYPE=\n# THEME_BACKGROUND_VALUE=\n\n# 验证码集成 (提供商: cloudflare-turnstile, google-recaptcha, hcaptcha, captchafox)\nENABLE_CAPTCHA=false\nNUXT_PUBLIC_AUTH_CAPTCHA_PROVIDER=\nNUXT_PUBLIC_AUTH_CAPTCHA_SITE_KEY=\nAUTH_CAPTCHA_SECRET_KEY=\n\n# 评论审核与风控\nENABLE_COMMENT_REVIEW=false\n# 关键词黑名单 (英文逗号分隔)\nBLACKLISTED_KEYWORDS=\n\n# 页脚自定义注入代码\nNUXT_PUBLIC_FOOTER_CODE=\n\n# 动态视觉特效控制\nNUXT_PUBLIC_LIVE2D_ENABLED=false\n# NUXT_PUBLIC_LIVE2D_SCRIPT_URL=https://unpkg.com/live2d-widgets@1.0.0/dist/\n# NUXT_PUBLIC_LIVE2D_MODEL_URL=\n# NUXT_PUBLIC_LIVE2D_OPTIONS_JSON={}\n# NUXT_PUBLIC_LIVE2D_MOBILE_ENABLED=false\n# NUXT_PUBLIC_LIVE2D_MIN_WIDTH=1024\n# NUXT_PUBLIC_LIVE2D_DATA_SAVER_BLOCK=true\nNUXT_PUBLIC_CANVAS_NEST_ENABLED=false\n# NUXT_PUBLIC_CANVAS_NEST_OPTIONS_JSON={}\n# NUXT_PUBLIC_CANVAS_NEST_MOBILE_ENABLED=false\n# NUXT_PUBLIC_CANVAS_NEST_MIN_WIDTH=1024\n# NUXT_PUBLIC_CANVAS_NEST_DATA_SAVER_BLOCK=true\n# 全局性能卫兵:是否允许移动端加载特效\nNUXT_PUBLIC_EFFECTS_MOBILE_ENABLED=false\n# NUXT_PUBLIC_EFFECTS_MIN_WIDTH=768\n# NUXT_PUBLIC_EFFECTS_DATA_SAVER_BLOCK=true\n\n# 公开限制项 (可选,会同步给前端)\n# NUXT_PUBLIC_ALLOWED_FILE_TYPES=image/jpeg,image/png,image/webp,image/gif\n# NUXT_PUBLIC_COMMENT_INTERVAL=60\n# NUXT_PUBLIC_POSTS_PER_PAGE=10\n\n# 上传限流 (可选)\n# UPLOAD_DAILY_LIMIT=100\n# UPLOAD_SINGLE_USER_DAILY_LIMIT=20\n# UPLOAD_LIMIT_WINDOW=86400\n\n# ------------------------------------------\n# 10. 合规与外部资源安全 (Compliance & Security)\n# ------------------------------------------\n\n# 中国大陆备案信息显示\nNUXT_PUBLIC_SHOW_COMPLIANCE_INFO=false\nNUXT_PUBLIC_ICP_LICENSE_NUMBER=\nNUXT_PUBLIC_PUBLIC_SECURITY_NUMBER=\n\n# 安全:外部资源域名白名单 (逗号分隔,防止某些代理环境下图片加载失败)\nNUXT_PUBLIC_SECURITY_URL_WHITELIST=\n\n# Hugging Face 镜像代理地址 (用于部署在大陆环境时拉取资源)\nNUXT_PUBLIC_HF_PROXY=https://huggingface.co\n\n# ------------------------------------------\n# 11. 商业化与第三方平台集成 (Commercial & Third-party)\n# ------------------------------------------\n\n# 全局商业化默认配置 (JSON 字符串)\n# 仅当需要通过环境变量锁定全局社交/打赏配置时使用\n# COMMERCIAL_SPONSORSHIP_JSON={\"enabled\":true,\"donationLinks\":[],\"socialLinks\":[]}\n\n# Memos 生活流同步\nMEMOS_ENABLED=false\nMEMOS_INSTANCE_URL=\nMEMOS_ACCESS_TOKEN=\nMEMOS_DEFAULT_VISIBILITY=PRIVATE\n\n# ------------------------------------------\n# 12. 日志、调试与 Demo 模式 (Logging & Debug)\n# ------------------------------------------\n\n# 日志输出等级 (silly, debug, http, info, warn, error)\nLOG_LEVEL=info\n# 是否开启文件日志记录 (默认 false,Serverless 环境必须设为 false)\nLOGFILES=false\n# LOG_DIR=logs\n\n# Axiom 日志集成\n# AXIOM_DATASET_NAME=\n# AXIOM_API_TOKEN=\n\n# 演示模式 (内存 DB 运行,限制写操作)\nNUXT_PUBLIC_DEMO_MODE=false\n# NUXT_PUBLIC_DEMO_USER_EMAIL=admin@example.com\n# NUXT_PUBLIC_DEMO_PASSWORD=momei123456\n\n# 安装锁定标志(系统首次运行后会自动生成/读取,通常建议初始化后手动修改为 true 并重启系统)\n# MOMEI_INSTALLED=true\n"}, "8e9d1cc363e8b573c9afd6bda388dfda11910c1f": {"t": 1785749528.6075733, "n": 11557, "h": "d851c0d1c4acc7cd", "c": "# ==========================================\n# 墨梅博客 (Momei) 环境变量完整示例文件\n# ==========================================\n\n# ------------------------------------------\n# 1. 基础核心配置 (Essential)\n# ------------------------------------------\n\n# 应用名称\nNUXT_PUBLIC_APP_NAME=墨梅博客\n\n# 站点 SEO 描述\nNUXT_PUBLIC_SITE_DESCRIPTION=一个基于 Nuxt 4 构建的现代化 AI 驱动博客平台\n\n# 站点 SEO 关键词 (逗号分隔)\nNUXT_PUBLIC_SITE_KEYWORDS=Nuxt,Vue,Blog,AI,TypeScript\n\n# 默认文章版权协议类型 (例如 all-rights-reserved, cc-by-nc-sa)\nNUXT_PUBLIC_POST_COPYRIGHT=all-rights-reserved\n\n# 站点版权展示信息 (用于页脚版权行)\nNUXT_PUBLIC_SITE_COPYRIGHT_OWNER=XX博客版权所有\nNUXT_PUBLIC_SITE_COPYRIGHT_START_YEAR=2026\n\n# 兼容旧变量名,建议迁移到新的 POST_/SITE_ 命名\n# NUXT_PUBLIC_DEFAULT_COPYRIGHT=all-rights-reserved\n# NUXT_PUBLIC_FOOTER_COPYRIGHT_OWNER=\n# NUXT_PUBLIC_FOOTER_COPYRIGHT_START_YEAR=\n\n# 默认语言 (en-US, zh-CN)\nNUXT_PUBLIC_DEFAULT_LANGUAGE=zh-CN\n\n# 站点 URL(注意:公开访问的站点地址,用于 SEO 和 RSS 生成)\nNUXT_PUBLIC_SITE_URL=http://localhost:3000\n\n# Better Auth 的基础 URL(必需,用于认证回调重定向,推荐与 SITE_URL 一致)\nNUXT_PUBLIC_AUTH_BASE_URL=http://localhost:3000\n\n# 用于加密、签名和哈希的密钥。生产环境必须设置!\n# 可以使用 `openssl rand -hex 32` 生成。开发环境下会自动生成随机值。\nAUTH_SECRET=\n\n# 雪花算法机器 ID (0-1023),用于生成分布式唯一 ID。默认自动获取进程 PID 对 1024 取余\n# MACHINE_ID=\n\n# ------------------------------------------\n# 2. 数据库与高性能配置 (Database & Cache)\n# ------------------------------------------\n\n# 数据库连接 URL (支持 SQLite, MySQL, PostgreSQL)\n# 支持智能推断:\n# - SQLite (推荐): sqlite://database/momei.sqlite (或 file://database/momei.sqlite)\n# - MySQL: mysql://user:pass@host:3306/db\n# - PostgreSQL: postgres://user:pass@host:5432/db\n# 如果未配置,默认将使用本地 SQLite\nDATABASE_URL=sqlite://database/momei.sqlite\n\n# 手动指定数据库类型 (可选,通常由 URL 自动推断: sqlite, mysql, postgres)\n# DATABASE_TYPE=sqlite\n\n# SQLite 数据库路径 (兼容旧版,不推荐手动设置)\n# DATABASE_PATH=database/momei.sqlite\n\n# 是否自动同步数据库表结构 (生产环境建议固定为 false,仅手动控制迁移)\nDATABASE_SYNCHRONIZE=false\n\n# 数据库连接调节 (可选)\n# DATABASE_SSL=false\n# DATABASE_CHARSET=utf8_general_ci\n# DATABASE_TIMEZONE=local\n# DATABASE_ENTITY_PREFIX=momei_\n\n# Redis 连接地址 (可选,配置后将启用基于 Redis 的缓存或限流)\n# REDIS_URL=redis://localhost:6379\n\n# Vercel KV 持久化缓存 (可选,用于 ISR/SWR 跨实例共享缓存)\n# 在 Vercel 项目设置中启用 KV 存储后,以下环境变量会自动配置\n# KV_URL=\n# KV_REST_API_URL=\n# KV_REST_API_TOKEN=\n# KV_REST_API_READ_ONLY_TOKEN=\n\n# ------------------------------------------\n# 3. 认证与社交登录 (Authentication)\n# ------------------------------------------\n\n# 是否允许新用户注册\nALLOW_REGISTRATION=true\n\n# 是否启用匿名登录 (无需邮箱密码即可登录)\nANONYMOUS_LOGIN_ENABLED=false\n\n# GitHub 配置 (OAuth)\nNUXT_PUBLIC_GITHUB_CLIENT_ID=\nGITHUB_CLIENT_SECRET=\n\n# Google 配置 (OAuth)\nNUXT_PUBLIC_GOOGLE_CLIENT_ID=\nGOOGLE_CLIENT_SECRET=\n\n# ------------------------------------------\n# 4. AI 核心引擎 (AI Integration - Text & Image)\n# ------------------------------------------\n\n# 是否启用 AI 功能\nAI_ENABLED=true\n\n# 主 AI 提供商 (openai, anthropic, deepseek, doubao, siliconflow, gemini, volcengine)\nAI_PROVIDER=openai\n\n# AI API 密钥\nAI_API_KEY=\n\n# 默认模型名称 (如 gpt-4o, claude-3-5-sonnet, deepseek-chat)\nAI_MODEL=gpt-4o\n\n# API 代理端点 (可选,用于 OpenAI 兼容服务)\nAI_API_ENDPOINT=\n\n# AI 生成参数控制 (可选,默认内置优化值)\n# AI_MAX_TOKENS=2048\n# AI_TEMPERATURE=0.7\n# AI_MAX_CONTENT_LENGTH=50000\n# AI_CHUNK_SIZE=4000\n# AI_TEXT_DIRECT_RETURN_MAX_CHARS=1000\n# AI_TEXT_TASK_CHUNK_SIZE=4000\n# AI_TEXT_TASK_CONCURRENCY=3\n# AI 重任务超时(用于 TTS / ASR / 图片生成等耗时任务)\nAI_HEAVY_TASK_TIMEOUT=5m\n\n# Gemini 专用令牌 (如果 provider 为 gemini 且需要独立令牌鉴权)\n# GEMINI_API_TOKEN=\n\n# AI 图像生成配置\nAI_IMAGE_ENABLED=false\nAI_IMAGE_PROVIDER=openai\nAI_IMAGE_API_KEY=\nAI_IMAGE_MODEL=dall-e-3\nAI_IMAGE_ENDPOINT=\n\n# AI 配额治理 (可选,支持直接复用后台设置页导出的 JSON)\n# AI_QUOTA_ENABLED=false\n# AI_QUOTA_POLICIES=[{\"subjectType\":\"global\",\"subjectValue\":\"default\",\"scope\":\"all\",\"period\":\"day\",\"maxRequests\":100,\"maxQuotaUnits\":200,\"enabled\":true}]\n# AI_ALERT_THRESHOLDS={\"enabled\":true,\"quotaUsageRatios\":[0.5,0.8,1],\"costUsageRatios\":[0.8,1],\"failureBurst\":{\"enabled\":true,\"windowMinutes\":10,\"maxFailures\":3,\"categories\":[\"image\",\"asr\",\"tts\",\"podcast\"]},\"dedupeWindowMinutes\":1440,\"maxAlerts\":10}\n\n# ------------------------------------------\n# 5. AI 多模态音频 (ASR & TTS)\n# ------------------------------------------\n\n# ASR (语音识别) 配置\n# 是否启用 ASR 功能\nASR_ENABLED=false\n# ASR 提供商 (openai, siliconflow, volcengine)\nASR_PROVIDER=siliconflow\n# ASR 通用配置\nASR_API_KEY=\nASR_MODEL=FunAudioLLM/SenseVoiceSmall\nASR_ENDPOINT=\n\n# SiliconFlow ASR 专用配置 (可选,优先级高于通用 ASR_API_KEY / ASR_MODEL)\nASR_SILICONFLOW_API_KEY=\nASR_SILICONFLOW_MODEL=FunAudioLLM/SenseVoiceSmall\n\n# 火山引擎 ASR 专用配置 (可选,优先级高于通用 VOLCENGINE_* 配置)\nASR_VOLCENGINE_APP_ID=\nASR_VOLCENGINE_ACCESS_KEY=\nASR_VOLCENGINE_SECRET_KEY=\nASR_VOLCENGINE_CLUSTER_ID=volc.bigasr.sauc.duration\n\n# TTS (文本转语音) 配置\n# 是否启用 TTS 功能\nTTS_ENABLED=false\n# TTS 提供商 (openai, siliconflow, volcengine)\nTTS_PROVIDER=openai\n# TTS 通用配置 (默认复用 AI_API_KEY)\nTTS_API_KEY=\nTTS_ENDPOINT=\nTTS_DEFAULT_MODEL=tts-1\nTTS_DEFAULT_VOICE=alloy\n\n# TTS 前端直连模式(显式启用,默认在 Serverless 环境自动降级到火山引擎直连)\n# TTS_FRONTEND_DIRECT=false\n# TTS 前端直连凭证有效期(秒),默认 600(10 分钟),范围 [300, 43200]\n# TTS_CREDENTIAL_TTL_SECONDS=600\n\n# --- 厂商专项凭据 (可被上述 ASR/TTS 引用) ---\n\n# 火山引擎 (豆包语音) 统一凭据\nVOLCENGINE_APP_ID=\nVOLCENGINE_ACCESS_KEY=\nVOLCENGINE_SECRET_KEY=\n\n# ------------------------------------------\n# 6. 邮件发送系统 (SMTP)\n# ------------------------------------------\n\n# SMTP 服务器地址\nEMAIL_HOST=\n# SMTP 端口\nEMAIL_PORT=587\n# 是否使用 SSL/TLS (默认 false 会尝试 STARTTLS)\nEMAIL_SECURE=false\nEMAIL_USER=\nEMAIL_PASS=\n# 默认邮件发送者 (格式示例: \"Momei Blog\" <admin@example.com>)\nEMAIL_FROM=\n# 是否要求邮箱验证码验证后才允许登录\nEMAIL_REQUIRE_VERIFICATION=false\n\n# 邮件限流与周期配置 (可选)\n# EMAIL_DAILY_LIMIT=100\n# EMAIL_SINGLE_USER_DAILY_LIMIT=5\n# EMAIL_LIMIT_WINDOW=86400\n# EMAIL_EXPIRES_IN=300\n\n# 临时邮箱域拦截配置 (可选)\n# TEMP_EMAIL_DOMAIN_NAME=example.com\n\n# ------------------------------------------\n# 7. 对象存储系统 (Storage & Upload)\n# ------------------------------------------\n\n# 存储引擎 (local, s3, r2, vercel_blob;兼容旧值 vercel-blob)\nSTORAGE_TYPE=local\n\n# 路径前缀(所有上传文件均会携带此目录前缀)\nBUCKET_PREFIX=momei/\n\n# 全局公共访问域名 / 对象前缀(可选,优先级高于驱动级 BaseURL/Prefix)\n# ASSET_PUBLIC_BASE_URL=https://cdn.example.com/assets\n# ASSET_OBJECT_PREFIX=momei-blog/\n\n# 1. 本地存储配置 (STORAGE_TYPE=local)\nLOCAL_STORAGE_DIR=public/uploads\nNUXT_PUBLIC_LOCAL_STORAGE_BASE_URL=/uploads\n\n# 2. S3 兼容存储 (STORAGE_TYPE=s3, 适用于 R2, AWS S3, MinIO)\nS3_ENDPOINT=\nS3_BUCKET_NAME=\nS3_REGION=auto\nS3_ACCESS_KEY_ID=\nS3_SECRET_ACCESS_KEY=\nS3_BASE_URL=\n\n# 3. Vercel Blob (STORAGE_TYPE=vercel_blob)\nBLOB_READ_WRITE_TOKEN=\n\n# 4. Cloudflare R2 专用配置 (也可通过 S3 变量配置)\n# CLOUDFLARE_R2_ACCOUNT_ID=\n# CLOUDFLARE_R2_ACCESS_KEY=\n# CLOUDFLARE_R2_SECRET_KEY=\n# CLOUDFLARE_R2_BUCKET=\n# CLOUDFLARE_R2_BASE_URL=\n\n# 文件大小限制调节 (可选)\n# NUXT_PUBLIC_MAX_UPLOAD_SIZE=4.5MiB\n# NUXT_PUBLIC_MAX_AUDIO_UPLOAD_SIZE=100MiB\n# LOCAL_STORAGE_MIN_FREE_SPACE=100MiB\n\n# ------------------------------------------\n# 7.1 listmonk Newsletter 分发\n# ------------------------------------------\n\nLISTMONK_ENABLED=false\nLISTMONK_INSTANCE_URL=\nLISTMONK_USERNAME=\nLISTMONK_ACCESS_TOKEN=\nLISTMONK_DEFAULT_LIST_IDS=\n# JSON 示例: {\"backend\":[3],\"frontend\":[4]}\nLISTMONK_CATEGORY_LIST_MAP=\n# JSON 示例: {\"nuxt\":[5],\"newsletter\":[6]}\nLISTMONK_TAG_LIST_MAP=\nLISTMONK_TEMPLATE_ID=\n\n# Hexo 风格文章仓库同步(GitHub / Gitee)\nHEXO_SYNC_ENABLED=false\n# 支持 github / gitee\nHEXO_SYNC_PROVIDER=github\nHEXO_SYNC_OWNER=\nHEXO_SYNC_REPO=\nHEXO_SYNC_BRANCH=main\nHEXO_SYNC_POSTS_DIR=source/_posts\n# 仅服务端读取,不进入后台数据库\nHEXO_SYNC_ACCESS_TOKEN=\n\n# ------------------------------------------\n# 8. 运维、监控与自动化 (Operations)\n# ------------------------------------------\n\n# 管理员用户 ID 列表 (逗号分隔,注册后在此提权)\nADMIN_USER_IDS=\n\n# Vercel Cron 专用鉴权密钥\n# Vercel 会自动以 Authorization: Bearer <CRON_SECRET> 触发定时任务端点\nCRON_SECRET=\n\n# 定时任务鉴权令牌 (用于手动触发 Scheduled Tasks Webhook / 旧版集成)\nTASKS_TOKEN=\n\n# Webhook HMAC 签名密钥 (推荐独立配置,默认使用 TASKS_TOKEN)\n# 用于外部调度器 / GitHub Actions / Cloudflare / Serverless 等场景的 HMAC 验签\nWEBHOOK_SECRET=\n\n# 自部署环境 Cron 表达式 (默认每 5 分钟执行一次)\n# 仅在非 Serverless 环境中生效\n# TASK_CRON_EXPRESSION=*/5 * * * *\n\n# 显式禁用自部署环境 Cron\n# DISABLE_CRON_JOB=false\n\n# Webhook 时间戳容差 (毫秒)\n# 说明:当前版本预留该变量名,Webhook 校验默认固定 5 分钟容差\n# WEBHOOK_TIMESTAMP_TOLERANCE=300000\n\n# Sentry 异常监控\nNUXT_PUBLIC_SENTRY_DSN=\nNUXT_PUBLIC_SENTRY_ENVIRONMENT=production\n\n# 站长流量统计 (填入对应统计 ID)\nNUXT_PUBLIC_BAIDU_ANALYTICS_ID=\nNUXT_PUBLIC_GOOGLE_ANALYTICS_ID=\nNUXT_PUBLIC_CLARITY_PROJECT_ID=\n# Umami 统计配置(JSON 字符串,示例: {\"websiteId\":\"xxx\",\"scriptUrl\":\"https://analytics.example.com/script.js\"})\n# NUXT_PUBLIC_UMAMI_ANALYTICS=\n# 若使用 Docker 自托管 Umami,可参考仓库根目录 `umami.env.example` 与 `docker-compose.umami.yml`\n\n# 站点验证标签 (可选)\n# NUXT_PUBLIC_GOOGLE_SITE_VERIFICATION=\n# NUXT_PUBLIC_BING_SITE_VERIFICATION=\n\n# ------------------------------------------\n# 9. 视觉特效与内容组件 (Features)\n# ------------------------------------------\n\n# 站点元数据\nNUXT_PUBLIC_SITE_LOGO=\nNUXT_PUBLIC_SITE_FAVICON=\nNUXT_PUBLIC_SITE_OPERATOR=\nNUXT_PUBLIC_CONTACT_EMAIL=admin@example.com\n\n# 主题系统默认值 (可选,仅在未通过后台配置覆盖时生效)\n# THEME_PRESET=\n# THEME_PRIMARY_COLOR=\n# THEME_ACCENT_COLOR=\n# THEME_SURFACE_COLOR=\n# THEME_TEXT_COLOR=\n# THEME_DARK_PRIMARY_COLOR=\n# THEME_DARK_ACCENT_COLOR=\n# THEME_DARK_SURFACE_COLOR=\n# THEME_DARK_TEXT_COLOR=\n# THEME_BORDER_RADIUS=\n# THEME_MOURNING_MODE=false\n# THEME_BACKGROUND_TYPE=\n# THEME_BACKGROUND_VALUE=\n\n# 验证码集成 (提供商: cloudflare-turnstile, google-recaptcha, hcaptcha, captchafox)\nENABLE_CAPTCHA=false\nNUXT_PUBLIC_AUTH_CAPTCHA_PROVIDER=\nNUXT_PUBLIC_AUTH_CAPTCHA_SITE_KEY=\nAUTH_CAPTCHA_SECRET_KEY=\n\n# 评论审核与风控\nENABLE_COMMENT_REVIEW=false\n# 关键词黑名单 (英文逗号分隔)\nBLACKLISTED_KEYWORDS=\n\n# 页脚自定义注入代码\nNUXT_PUBLIC_FOOTER_CODE=\n\n# 动态视觉特效控制\nNUXT_PUBLIC_LIVE2D_ENABLED=false\n# NUXT_PUBLIC_LIVE2D_SCRIPT_URL=https://unpkg.com/live2d-widgets@1.0.0/dist/\n# NUXT_PUBLIC_LIVE2D_MODEL_URL=\n# NUXT_PUBLIC_LIVE2D_OPTIONS_JSON={}\n# NUXT_PUBLIC_LIVE2D_MOBILE_ENABLED=false\n# NUXT_PUBLIC_LIVE2D_MIN_WIDTH=1024\n# NUXT_PUBLIC_LIVE2D_DATA_SAVER_BLOCK=true\nNUXT_PUBLIC_CANVAS_NEST_ENABLED=false\n# NUXT_PUBLIC_CANVAS_NEST_OPTIONS_JSON={}\n# NUXT_PUBLIC_CANVAS_NEST_MOBILE_ENABLED=false\n# NUXT_PUBLIC_CANVAS_NEST_MIN_WIDTH=1024\n# NUXT_PUBLIC_CANVAS_NEST_DATA_SAVER_BLOCK=true\n# 全局性能卫兵:是否允许移动端加载特效\nNUXT_PUBLIC_EFFECTS_MOBILE_ENABLED=false\n# NUXT_PUBLIC_EFFECTS_MIN_WIDTH=768\n# NUXT_PUBLIC_EFFECTS_DATA_SAVER_BLOCK=true\n\n# 公开限制项 (可选,会同步给前端)\n# NUXT_PUBLIC_ALLOWED_FILE_TYPES=image/jpeg,image/png,image/webp,image/gif\n# NUXT_PUBLIC_COMMENT_INTERVAL=60\n# NUXT_PUBLIC_POSTS_PER_PAGE=10\n\n# 上传限流 (可选)\n# UPLOAD_DAILY_LIMIT=100\n# UPLOAD_SINGLE_USER_DAILY_LIMIT=20\n# UPLOAD_LIMIT_WINDOW=86400\n\n# ------------------------------------------\n# 10. 合规与外部资源安全 (Compliance & Security)\n# ------------------------------------------\n\n# 中国大陆备案信息显示\nNUXT_PUBLIC_SHOW_COMPLIANCE_INFO=false\nNUXT_PUBLIC_ICP_LICENSE_NUMBER=\nNUXT_PUBLIC_PUBLIC_SECURITY_NUMBER=\n\n# 安全:外部资源域名白名单 (逗号分隔,防止某些代理环境下图片加载失败)\nNUXT_PUBLIC_SECURITY_URL_WHITELIST=\n\n# Hugging Face 镜像代理地址 (用于部署在大陆环境时拉取资源)\nNUXT_PUBLIC_HF_PROXY=https://huggingface.co\n\n# ------------------------------------------\n# 11. 商业化与第三方平台集成 (Commercial & Third-party)\n# ------------------------------------------\n\n# 全局商业化默认配置 (JSON 字符串)\n# 仅当需要通过环境变量锁定全局社交/打赏配置时使用\n# COMMERCIAL_SPONSORSHIP_JSON={\"enabled\":true,\"donationLinks\":[],\"socialLinks\":[]}\n\n# Memos 生活流同步\nMEMOS_ENABLED=false\nMEMOS_INSTANCE_URL=\nMEMOS_ACCESS_TOKEN=\nMEMOS_DEFAULT_VISIBILITY=PRIVATE\n\n# ------------------------------------------\n# 12. 日志、调试与 Demo 模式 (Logging & Debug)\n# ------------------------------------------\n\n# 日志输出等级 (silly, debug, http, info, warn, error)\nLOG_LEVEL=info\n# 是否开启文件日志记录 (默认 false,Serverless 环境必须设为 false)\nLOGFILES=false\n# LOG_DIR=logs\n\n# Axiom 日志集成\n# AXIOM_DATASET_NAME=\n# AXIOM_API_TOKEN=\n\n# 演示模式 (内存 DB 运行,限制写操作)\nNUXT_PUBLIC_DEMO_MODE=false\n# NUXT_PUBLIC_DEMO_USER_EMAIL=admin@example.com\n# NUXT_PUBLIC_DEMO_PASSWORD=momei123456\n\n# 安装锁定标志(系统首次运行后会自动生成/读取,通常建议初始化后手动修改为 true 并重启系统)\n# MOMEI_INSTALLED=true\n"}, "efe4712f91fe95fda4efd1827450b1706eb96464": {"t": 1785749529.8851504, "n": 11395, "h": "1c29e2ccdddcfa7e", "c": "# ==========================================\n# 墨梅博客 (Momei) 环境变量完整示例文件\n# ==========================================\n\n# ------------------------------------------\n# 1. 基础核心配置 (Essential)\n# ------------------------------------------\n\n# 应用名称\nNUXT_PUBLIC_APP_NAME=墨梅博客\n\n# 站点 SEO 描述\nNUXT_PUBLIC_SITE_DESCRIPTION=一个基于 Nuxt 4 构建的现代化 AI 驱动博客平台\n\n# 站点 SEO 关键词 (逗号分隔)\nNUXT_PUBLIC_SITE_KEYWORDS=Nuxt,Vue,Blog,AI,TypeScript\n\n# 默认文章版权协议类型 (例如 all-rights-reserved, cc-by-nc-sa)\nNUXT_PUBLIC_POST_COPYRIGHT=all-rights-reserved\n\n# 站点版权展示信息 (用于页脚版权行)\nNUXT_PUBLIC_SITE_COPYRIGHT_OWNER=XX博客版权所有\nNUXT_PUBLIC_SITE_COPYRIGHT_START_YEAR=2026\n\n# 兼容旧变量名,建议迁移到新的 POST_/SITE_ 命名\n# NUXT_PUBLIC_DEFAULT_COPYRIGHT=all-rights-reserved\n# NUXT_PUBLIC_FOOTER_COPYRIGHT_OWNER=\n# NUXT_PUBLIC_FOOTER_COPYRIGHT_START_YEAR=\n\n# 默认语言 (en-US, zh-CN)\nNUXT_PUBLIC_DEFAULT_LANGUAGE=zh-CN\n\n# 站点 URL(注意:公开访问的站点地址,用于 SEO 和 RSS 生成)\nNUXT_PUBLIC_SITE_URL=http://localhost:3000\n\n# Better Auth 的基础 URL(必需,用于认证回调重定向,推荐与 SITE_URL 一致)\nNUXT_PUBLIC_AUTH_BASE_URL=http://localhost:3000\n\n# 用于加密、签名和哈希的密钥。生产环境必须设置!\n# 可以使用 `openssl rand -hex 32` 生成。开发环境下会自动生成随机值。\nAUTH_SECRET=\n\n# 雪花算法机器 ID (0-1023),用于生成分布式唯一 ID。默认自动获取进程 PID 对 1024 取余\n# MACHINE_ID=\n\n# ------------------------------------------\n# 2. 数据库与高性能配置 (Database & Cache)\n# ------------------------------------------\n\n# 数据库连接 URL (支持 SQLite, MySQL, PostgreSQL)\n# 支持智能推断:\n# - SQLite (推荐): sqlite://database/momei.sqlite (或 file://database/momei.sqlite)\n# - MySQL: mysql://user:pass@host:3306/db\n# - PostgreSQL: postgres://user:pass@host:5432/db\n# 如果未配置,默认将使用本地 SQLite\nDATABASE_URL=sqlite://database/momei.sqlite\n\n# 手动指定数据库类型 (可选,通常由 URL 自动推断: sqlite, mysql, postgres)\n# DATABASE_TYPE=sqlite\n\n# SQLite 数据库路径 (兼容旧版,不推荐手动设置)\n# DATABASE_PATH=database/momei.sqlite\n\n# 是否自动同步数据库表结构 (生产环境建议固定为 false,仅手动控制迁移)\nDATABASE_SYNCHRONIZE=false\n\n# 数据库连接调节 (可选)\n# DATABASE_SSL=false\n# DATABASE_CHARSET=utf8_general_ci\n# DATABASE_TIMEZONE=local\n# DATABASE_ENTITY_PREFIX=momei_\n\n# Redis 连接地址 (可选,配置后将启用基于 Redis 的缓存或限流)\n# REDIS_URL=redis://localhost:6379\n\n# ------------------------------------------\n# 3. 认证与社交登录 (Authentication)\n# ------------------------------------------\n\n# 是否允许新用户注册\nALLOW_REGISTRATION=true\n\n# 是否启用匿名登录 (无需邮箱密码即可登录)\nANONYMOUS_LOGIN_ENABLED=false\n\n# GitHub 配置 (OAuth)\nNUXT_PUBLIC_GITHUB_CLIENT_ID=\nGITHUB_CLIENT_SECRET=\n\n# Google 配置 (OAuth)\nNUXT_PUBLIC_GOOGLE_CLIENT_ID=\nGOOGLE_CLIENT_SECRET=\n\n# ------------------------------------------\n# 4. AI 核心引擎 (AI Integration - Text & Image)\n# ------------------------------------------\n\n# 是否启用 AI 功能\nAI_ENABLED=true\n\n# 主 AI 提供商 (openai, anthropic, deepseek, doubao, siliconflow, gemini, volcengine)\nAI_PROVIDER=openai\n\n# AI API 密钥\nAI_API_KEY=\n\n# 默认模型名称 (如 gpt-4o, claude-3-5-sonnet, deepseek-chat)\nAI_MODEL=gpt-4o\n\n# API 代理端点 (可选,用于 OpenAI 兼容服务)\nAI_API_ENDPOINT=\n\n# AI 生成参数控制 (可选,默认内置优化值)\n# AI_MAX_TOKENS=2048\n# AI_TEMPERATURE=0.7\n# AI_MAX_CONTENT_LENGTH=50000\n# AI_CHUNK_SIZE=4000\n# AI_TEXT_DIRECT_RETURN_MAX_CHARS=1000\n# AI_TEXT_TASK_CHUNK_SIZE=4000\n# AI_TEXT_TASK_CONCURRENCY=3\n# AI 重任务超时(用于 TTS / ASR / 图片生成等耗时任务)\nAI_HEAVY_TASK_TIMEOUT=5m\n\n# Gemini 专用令牌 (如果 provider 为 gemini 且需要独立令牌鉴权)\n# GEMINI_API_TOKEN=\n\n# AI 图像生成配置\nAI_IMAGE_ENABLED=false\nAI_IMAGE_PROVIDER=openai\nAI_IMAGE_API_KEY=\nAI_IMAGE_MODEL=dall-e-3\nAI_IMAGE_ENDPOINT=\n\n# AI 配额治理 (可选,支持直接复用后台设置页导出的 JSON)\n# AI_QUOTA_ENABLED=false\n# AI_QUOTA_POLICIES=[{\"subjectType\":\"global\",\"subjectValue\":\"default\",\"scope\":\"all\",\"period\":\"day\",\"maxRequests\":100,\"maxQuotaUnits\":200,\"enabled\":true}]\n# AI_ALERT_THRESHOLDS={\"enabled\":true,\"quotaUsageRatios\":[0.5,0.8,1],\"costUsageRatios\":[0.8,1],\"failureBurst\":{\"enabled\":true,\"windowMinutes\":10,\"maxFailures\":3,\"categories\":[\"image\",\"asr\",\"tts\",\"podcast\"]},\"dedupeWindowMinutes\":1440,\"maxAlerts\":10}\n\n# ------------------------------------------\n# 5. AI 多模态音频 (ASR & TTS)\n# ------------------------------------------\n\n# ASR (语音识别) 配置\n# 是否启用 ASR 功能\nASR_ENABLED=false\n# ASR 提供商 (openai, siliconflow, volcengine)\nASR_PROVIDER=siliconflow\n# ASR 通用配置\nASR_API_KEY=\nASR_MODEL=FunAudioLLM/SenseVoiceSmall\nASR_ENDPOINT=\n\n# SiliconFlow ASR 专用配置 (可选,优先级高于通用 ASR_API_KEY / ASR_MODEL)\nASR_SILICONFLOW_API_KEY=\nASR_SILICONFLOW_MODEL=FunAudioLLM/SenseVoiceSmall\n\n# 火山引擎 ASR 专用配置 (可选,优先级高于通用 VOLCENGINE_* 配置)\nASR_VOLCENGINE_APP_ID=\nASR_VOLCENGINE_ACCESS_KEY=\nASR_VOLCENGINE_SECRET_KEY=\nASR_VOLCENGINE_CLUSTER_ID=volc.bigasr.sauc.duration\n\n# TTS (文本转语音) 配置\n# 是否启用 TTS 功能\nTTS_ENABLED=false\n# TTS 提供商 (openai, siliconflow, volcengine)\nTTS_PROVIDER=openai\n# TTS 通用配置 (默认复用 AI_API_KEY)\nTTS_API_KEY=\nTTS_ENDPOINT=\nTTS_DEFAULT_MODEL=tts-1\nTTS_DEFAULT_VOICE=alloy\n\n# TTS 前端直连模式(显式启用,默认在 Serverless 环境自动降级到火山引擎直连)\n# TTS_FRONTEND_DIRECT=false\n# TTS 前端直连凭证有效期(秒),默认 600(10 分钟),范围 [300, 43200]\n# TTS_CREDENTIAL_TTL_SECONDS=600\n\n# --- 厂商专项凭据 (可被上述 ASR/TTS 引用) ---\n\n# 火山引擎 (豆包语音) 统一凭据\nVOLCENGINE_APP_ID=\nVOLCENGINE_ACCESS_KEY=\nVOLCENGINE_SECRET_KEY=\n\n# ------------------------------------------\n# 6. 邮件发送系统 (SMTP)\n# ------------------------------------------\n\n# SMTP 服务器地址\nEMAIL_HOST=\n# SMTP 端口\nEMAIL_PORT=587\n# 是否使用 SSL/TLS (默认 false 会尝试 STARTTLS)\nEMAIL_SECURE=false\nEMAIL_USER=\nEMAIL_PASS=\n# 默认邮件发送者 (格式示例: \"Momei Blog\" <admin@example.com>)\nEMAIL_FROM=\n# 是否要求邮箱验证码验证后才允许登录\nEMAIL_REQUIRE_VERIFICATION=false\n\n# 邮件限流与周期配置 (可选)\n# EMAIL_DAILY_LIMIT=100\n# EMAIL_SINGLE_USER_DAILY_LIMIT=5\n# EMAIL_LIMIT_WINDOW=86400\n# EMAIL_EXPIRES_IN=300\n\n# 临时邮箱域拦截配置 (可选)\n# TEMP_EMAIL_DOMAIN_NAME=example.com\n\n# ------------------------------------------\n# 7. 对象存储系统 (Storage & Upload)\n# ------------------------------------------\n\n# 存储引擎 (local, s3, r2, vercel_blob;兼容旧值 vercel-blob)\nSTORAGE_TYPE=local\n\n# 路径前缀(所有上传文件均会携带此目录前缀)\nBUCKET_PREFIX=momei/\n\n# 全局公共访问域名 / 对象前缀(可选,优先级高于驱动级 BaseURL/Prefix)\n# ASSET_PUBLIC_BASE_URL=https://cdn.example.com/assets\n# ASSET_OBJECT_PREFIX=momei-blog/\n\n# 1. 本地存储配置 (STORAGE_TYPE=local)\nLOCAL_STORAGE_DIR=public/uploads\nNUXT_PUBLIC_LOCAL_STORAGE_BASE_URL=/uploads\n\n# 2. S3 兼容存储 (STORAGE_TYPE=s3, 适用于 R2, AWS S3, MinIO)\nS3_ENDPOINT=\nS3_BUCKET_NAME=\nS3_REGION=auto\nS3_ACCESS_KEY_ID=\nS3_SECRET_ACCESS_KEY=\nS3_BASE_URL=\n\n# 3. Vercel Blob (STORAGE_TYPE=vercel_blob)\nBLOB_READ_WRITE_TOKEN=\n\n# 4. Cloudflare R2 专用配置 (也可通过 S3 变量配置)\n# CLOUDFLARE_R2_ACCOUNT_ID=\n# CLOUDFLARE_R2_ACCESS_KEY=\n# CLOUDFLARE_R2_SECRET_KEY=\n# CLOUDFLARE_R2_BUCKET=\n# CLOUDFLARE_R2_BASE_URL=\n\n# 文件大小限制调节 (可选)\n# NUXT_PUBLIC_MAX_UPLOAD_SIZE=4.5MiB\n# NUXT_PUBLIC_MAX_AUDIO_UPLOAD_SIZE=100MiB\n# LOCAL_STORAGE_MIN_FREE_SPACE=100MiB\n\n# ------------------------------------------\n# 7.1 listmonk Newsletter 分发\n# ------------------------------------------\n\nLISTMONK_ENABLED=false\nLISTMONK_INSTANCE_URL=\nLISTMONK_USERNAME=\nLISTMONK_ACCESS_TOKEN=\nLISTMONK_DEFAULT_LIST_IDS=\n# JSON 示例: {\"backend\":[3],\"frontend\":[4]}\nLISTMONK_CATEGORY_LIST_MAP=\n# JSON 示例: {\"nuxt\":[5],\"newsletter\":[6]}\nLISTMONK_TAG_LIST_MAP=\nLISTMONK_TEMPLATE_ID=\n\n# Hexo 风格文章仓库同步(GitHub / Gitee)\nHEXO_SYNC_ENABLED=false\n# 支持 github / gitee\nHEXO_SYNC_PROVIDER=github\nHEXO_SYNC_OWNER=\nHEXO_SYNC_REPO=\nHEXO_SYNC_BRANCH=main\nHEXO_SYNC_POSTS_DIR=source/_posts\n# 仅服务端读取,不进入后台数据库\nHEXO_SYNC_ACCESS_TOKEN=\n\n# ------------------------------------------\n# 8. 运维、监控与自动化 (Operations)\n# ------------------------------------------\n\n# 管理员用户 ID 列表 (逗号分隔,注册后在此提权)\nADMIN_USER_IDS=\n\n# Vercel Cron 专用鉴权密钥\n# Vercel 会自动以 Authorization: Bearer <CRON_SECRET> 触发定时任务端点\nCRON_SECRET=\n\n# 定时任务鉴权令牌 (用于手动触发 Scheduled Tasks Webhook / 旧版集成)\nTASKS_TOKEN=\n\n# Webhook HMAC 签名密钥 (推荐独立配置,默认使用 TASKS_TOKEN)\n# 用于外部调度器 / GitHub Actions / Cloudflare / Serverless 等场景的 HMAC 验签\nWEBHOOK_SECRET=\n\n# 自部署环境 Cron 表达式 (默认每 5 分钟执行一次)\n# 仅在非 Serverless 环境中生效\n# TASK_CRON_EXPRESSION=*/5 * * * *\n\n# 显式禁用自部署环境 Cron\n# DISABLE_CRON_JOB=false\n\n# Webhook 时间戳容差 (毫秒)\n# 说明:当前版本预留该变量名,Webhook 校验默认固定 5 分钟容差\n# WEBHOOK_TIMESTAMP_TOLERANCE=300000\n\n# Sentry 异常监控\nNUXT_PUBLIC_SENTRY_DSN=\nNUXT_PUBLIC_SENTRY_ENVIRONMENT=production\n\n# 站长流量统计 (填入对应统计 ID)\nNUXT_PUBLIC_BAIDU_ANALYTICS_ID=\nNUXT_PUBLIC_GOOGLE_ANALYTICS_ID=\nNUXT_PUBLIC_CLARITY_PROJECT_ID=\n# Umami 统计配置(JSON 字符串,示例: {\"websiteId\":\"xxx\",\"scriptUrl\":\"https://analytics.example.com/script.js\"})\n# NUXT_PUBLIC_UMAMI_ANALYTICS=\n# 若使用 Docker 自托管 Umami,可参考仓库根目录 `umami.env.example` 与 `docker-compose.umami.yml`\n\n# 站点验证标签 (可选)\n# NUXT_PUBLIC_GOOGLE_SITE_VERIFICATION=\n# NUXT_PUBLIC_BING_SITE_VERIFICATION=\n\n# ------------------------------------------\n# 9. 视觉特效与内容组件 (Features)\n# ------------------------------------------\n\n# 站点元数据\nNUXT_PUBLIC_SITE_LOGO=\nNUXT_PUBLIC_SITE_FAVICON=\nNUXT_PUBLIC_SITE_OPERATOR=\nNUXT_PUBLIC_CONTACT_EMAIL=admin@example.com\n\n# 主题系统默认值 (可选,仅在未通过后台配置覆盖时生效)\n# THEME_PRESET=\n# THEME_PRIMARY_COLOR=\n# THEME_ACCENT_COLOR=\n# THEME_SURFACE_COLOR=\n# THEME_TEXT_COLOR=\n# THEME_DARK_PRIMARY_COLOR=\n# THEME_DARK_ACCENT_COLOR=\n# THEME_DARK_SURFACE_COLOR=\n# THEME_DARK_TEXT_COLOR=\n# THEME_BORDER_RADIUS=\n# THEME_MOURNING_MODE=false\n# THEME_BACKGROUND_TYPE=\n# THEME_BACKGROUND_VALUE=\n\n# 验证码集成 (提供商: cloudflare-turnstile, google-recaptcha, hcaptcha, captchafox)\nENABLE_CAPTCHA=false\nNUXT_PUBLIC_AUTH_CAPTCHA_PROVIDER=\nNUXT_PUBLIC_AUTH_CAPTCHA_SITE_KEY=\nAUTH_CAPTCHA_SECRET_KEY=\n\n# 评论审核与风控\nENABLE_COMMENT_REVIEW=false\n# 关键词黑名单 (英文逗号分隔)\nBLACKLISTED_KEYWORDS=\n\n# 页脚自定义注入代码\nNUXT_PUBLIC_FOOTER_CODE=\n\n# 动态视觉特效控制\nNUXT_PUBLIC_LIVE2D_ENABLED=false\n# NUXT_PUBLIC_LIVE2D_SCRIPT_URL=https://unpkg.com/live2d-widgets@1.0.0/dist/\n# NUXT_PUBLIC_LIVE2D_MODEL_URL=\n# NUXT_PUBLIC_LIVE2D_OPTIONS_JSON={}\n# NUXT_PUBLIC_LIVE2D_MOBILE_ENABLED=false\n# NUXT_PUBLIC_LIVE2D_MIN_WIDTH=1024\n# NUXT_PUBLIC_LIVE2D_DATA_SAVER_BLOCK=true\nNUXT_PUBLIC_CANVAS_NEST_ENABLED=false\n# NUXT_PUBLIC_CANVAS_NEST_OPTIONS_JSON={}\n# NUXT_PUBLIC_CANVAS_NEST_MOBILE_ENABLED=false\n# NUXT_PUBLIC_CANVAS_NEST_MIN_WIDTH=1024\n# NUXT_PUBLIC_CANVAS_NEST_DATA_SAVER_BLOCK=true\n# 全局性能卫兵:是否允许移动端加载特效\nNUXT_PUBLIC_EFFECTS_MOBILE_ENABLED=false\n# NUXT_PUBLIC_EFFECTS_MIN_WIDTH=768\n# NUXT_PUBLIC_EFFECTS_DATA_SAVER_BLOCK=true\n\n# 公开限制项 (可选,会同步给前端)\n# NUXT_PUBLIC_ALLOWED_FILE_TYPES=image/jpeg,image/png,image/webp,image/gif\n# NUXT_PUBLIC_COMMENT_INTERVAL=60\n# NUXT_PUBLIC_POSTS_PER_PAGE=10\n\n# 上传限流 (可选)\n# UPLOAD_DAILY_LIMIT=100\n# UPLOAD_SINGLE_USER_DAILY_LIMIT=20\n# UPLOAD_LIMIT_WINDOW=86400\n\n# ------------------------------------------\n# 10. 合规与外部资源安全 (Compliance & Security)\n# ------------------------------------------\n\n# 中国大陆备案信息显示\nNUXT_PUBLIC_SHOW_COMPLIANCE_INFO=false\nNUXT_PUBLIC_ICP_LICENSE_NUMBER=\nNUXT_PUBLIC_PUBLIC_SECURITY_NUMBER=\n\n# 安全:外部资源域名白名单 (逗号分隔,防止某些代理环境下图片加载失败)\nNUXT_PUBLIC_SECURITY_URL_WHITELIST=\n\n# Hugging Face 镜像代理地址 (用于部署在大陆环境时拉取资源)\nNUXT_PUBLIC_HF_PROXY=https://huggingface.co\n\n# ------------------------------------------\n# 11. 商业化与第三方平台集成 (Commercial & Third-party)\n# ------------------------------------------\n\n# 全局商业化默认配置 (JSON 字符串)\n# 仅当需要通过环境变量锁定全局社交/打赏配置时使用\n# COMMERCIAL_SPONSORSHIP_JSON={\"enabled\":true,\"donationLinks\":[],\"socialLinks\":[]}\n\n# Memos 生活流同步\nMEMOS_ENABLED=false\nMEMOS_INSTANCE_URL=\nMEMOS_ACCESS_TOKEN=\nMEMOS_DEFAULT_VISIBILITY=PRIVATE\n\n# ------------------------------------------\n# 12. 日志、调试与 Demo 模式 (Logging & Debug)\n# ------------------------------------------\n\n# 日志输出等级 (silly, debug, http, info, warn, error)\nLOG_LEVEL=info\n# 是否开启文件日志记录 (默认 false,Serverless 环境必须设为 false)\nLOGFILES=false\n# LOG_DIR=logs\n\n# Axiom 日志集成\n# AXIOM_DATASET_NAME=\n# AXIOM_API_TOKEN=\n\n# 演示模式 (内存 DB 运行,限制写操作)\nNUXT_PUBLIC_DEMO_MODE=false\n# NUXT_PUBLIC_DEMO_USER_EMAIL=admin@example.com\n# NUXT_PUBLIC_DEMO_PASSWORD=momei123456\n\n# 安装锁定标志(系统首次运行后会自动生成/读取,通常建议初始化后手动修改为 true 并重启系统)\n# MOMEI_INSTALLED=true\n"}, "d4a6e74b0597be6d969e009447b42e6fc22e2007": {"t": 1785749530.99354, "n": 11314, "h": "1b5d269b771e4350", "c": "# ==========================================\n# 墨梅博客 (Momei) 环境变量完整示例文件\n# ==========================================\n\n# ------------------------------------------\n# 1. 基础核心配置 (Essential)\n# ------------------------------------------\n\n# 应用名称\nNUXT_PUBLIC_APP_NAME=墨梅博客\n\n# 站点 SEO 描述\nNUXT_PUBLIC_SITE_DESCRIPTION=一个基于 Nuxt 4 构建的现代化 AI 驱动博客平台\n\n# 站点 SEO 关键词 (逗号分隔)\nNUXT_PUBLIC_SITE_KEYWORDS=Nuxt,Vue,Blog,AI,TypeScript\n\n# 默认文章版权协议类型 (例如 all-rights-reserved, cc-by-nc-sa)\nNUXT_PUBLIC_POST_COPYRIGHT=all-rights-reserved\n\n# 站点版权展示信息 (用于页脚版权行)\nNUXT_PUBLIC_SITE_COPYRIGHT_OWNER=XX博客版权所有\nNUXT_PUBLIC_SITE_COPYRIGHT_START_YEAR=2026\n\n# 兼容旧变量名,建议迁移到新的 POST_/SITE_ 命名\n# NUXT_PUBLIC_DEFAULT_COPYRIGHT=all-rights-reserved\n# NUXT_PUBLIC_FOOTER_COPYRIGHT_OWNER=\n# NUXT_PUBLIC_FOOTER_COPYRIGHT_START_YEAR=\n\n# 默认语言 (en-US, zh-CN)\nNUXT_PUBLIC_DEFAULT_LANGUAGE=zh-CN\n\n# 站点 URL(注意:公开访问的站点地址,用于 SEO 和 RSS 生成)\nNUXT_PUBLIC_SITE_URL=http://localhost:3000\n\n# Better Auth 的基础 URL(必需,用于认证回调重定向,推荐与 SITE_URL 一致)\nNUXT_PUBLIC_AUTH_BASE_URL=http://localhost:3000\n\n# 用于加密、签名和哈希的密钥。生产环境必须设置!\n# 可以使用 `openssl rand -hex 32` 生成。开发环境下会自动生成随机值。\nAUTH_SECRET=\n\n# 雪花算法机器 ID (0-1023),用于生成分布式唯一 ID。默认自动获取进程 PID 对 1024 取余\n# MACHINE_ID=\n\n# ------------------------------------------\n# 2. 数据库与高性能配置 (Database & Cache)\n# ------------------------------------------\n\n# 数据库连接 URL (支持 SQLite, MySQL, PostgreSQL)\n# 支持智能推断:\n# - SQLite (推荐): sqlite://database/momei.sqlite (或 file://database/momei.sqlite)\n# - MySQL: mysql://user:pass@host:3306/db\n# - PostgreSQL: postgres://user:pass@host:5432/db\n# 如果未配置,默认将使用本地 SQLite\nDATABASE_URL=sqlite://database/momei.sqlite\n\n# 手动指定数据库类型 (可选,通常由 URL 自动推断: sqlite, mysql, postgres)\n# DATABASE_TYPE=sqlite\n\n# SQLite 数据库路径 (兼容旧版,不推荐手动设置)\n# DATABASE_PATH=database/momei.sqlite\n\n# 是否自动同步数据库表结构 (生产环境建议固定为 false,仅手动控制迁移)\nDATABASE_SYNCHRONIZE=false\n\n# 数据库连接调节 (可选)\n# DATABASE_SSL=false\n# DATABASE_CHARSET=utf8_general_ci\n# DATABASE_TIMEZONE=local\n# DATABASE_ENTITY_PREFIX=momei_\n\n# Redis 连接地址 (可选,配置后将启用基于 Redis 的缓存或限流)\n# REDIS_URL=redis://localhost:6379\n\n# ------------------------------------------\n# 3. 认证与社交登录 (Authentication)\n# ------------------------------------------\n\n# 是否允许新用户注册\nALLOW_REGISTRATION=true\n\n# 是否启用匿名登录 (无需邮箱密码即可登录)\nANONYMOUS_LOGIN_ENABLED=false\n\n# GitHub 配置 (OAuth)\nNUXT_PUBLIC_GITHUB_CLIENT_ID=\nGITHUB_CLIENT_SECRET=\n\n# Google 配置 (OAuth)\nNUXT_PUBLIC_GOOGLE_CLIENT_ID=\nGOOGLE_CLIENT_SECRET=\n\n# ------------------------------------------\n# 4. AI 核心引擎 (AI Integration - Text & Image)\n# ------------------------------------------\n\n# 是否启用 AI 功能\nAI_ENABLED=true\n\n# 主 AI 提供商 (openai, anthropic, deepseek, doubao, siliconflow, gemini, volcengine)\nAI_PROVIDER=openai\n\n# AI API 密钥\nAI_API_KEY=\n\n# 默认模型名称 (如 gpt-4o, claude-3-5-sonnet, deepseek-chat)\nAI_MODEL=gpt-4o\n\n# API 代理端点 (可选,用于 OpenAI 兼容服务)\nAI_API_ENDPOINT=\n\n# AI 生成参数控制 (可选,默认内置优化值)\n# AI_MAX_TOKENS=2048\n# AI_TEMPERATURE=0.7\n# AI_MAX_CONTENT_LENGTH=50000\n# AI_CHUNK_SIZE=4000\n# AI_TEXT_DIRECT_RETURN_MAX_CHARS=1000\n# AI_TEXT_TASK_CHUNK_SIZE=4000\n# AI_TEXT_TASK_CONCURRENCY=3\n# AI 重任务超时(用于 TTS / ASR / 图片生成等耗时任务)\nAI_HEAVY_TASK_TIMEOUT=5m\n\n# Gemini 专用令牌 (如果 provider 为 gemini 且需要独立令牌鉴权)\n# GEMINI_API_TOKEN=\n\n# AI 图像生成配置\nAI_IMAGE_ENABLED=false\nAI_IMAGE_PROVIDER=openai\nAI_IMAGE_API_KEY=\nAI_IMAGE_MODEL=dall-e-3\nAI_IMAGE_ENDPOINT=\n\n# AI 配额治理 (可选,支持直接复用后台设置页导出的 JSON)\n# AI_QUOTA_ENABLED=false\n# AI_QUOTA_POLICIES=[{\"subjectType\":\"global\",\"subjectValue\":\"default\",\"scope\":\"all\",\"period\":\"day\",\"maxRequests\":100,\"maxQuotaUnits\":200,\"enabled\":true}]\n# AI_ALERT_THRESHOLDS={\"enabled\":true,\"quotaUsageRatios\":[0.5,0.8,1],\"costUsageRatios\":[0.8,1],\"failureBurst\":{\"enabled\":true,\"windowMinutes\":10,\"maxFailures\":3,\"categories\":[\"image\",\"asr\",\"tts\",\"podcast\"]},\"dedupeWindowMinutes\":1440,\"maxAlerts\":10}\n\n# ------------------------------------------\n# 5. AI 多模态音频 (ASR & TTS)\n# ------------------------------------------\n\n# ASR (语音识别) 配置\n# 是否启用 ASR 功能\nASR_ENABLED=false\n# ASR 提供商 (openai, siliconflow, volcengine)\nASR_PROVIDER=siliconflow\n# ASR 通用配置\nASR_API_KEY=\nASR_MODEL=FunAudioLLM/SenseVoiceSmall\nASR_ENDPOINT=\n\n# SiliconFlow ASR 专用配置 (可选,优先级高于通用 ASR_API_KEY / ASR_MODEL)\nASR_SILICONFLOW_API_KEY=\nASR_SILICONFLOW_MODEL=FunAudioLLM/SenseVoiceSmall\n\n# 火山引擎 ASR 专用配置 (可选,优先级高于通用 VOLCENGINE_* 配置)\nASR_VOLCENGINE_APP_ID=\nASR_VOLCENGINE_ACCESS_KEY=\nASR_VOLCENGINE_SECRET_KEY=\nASR_VOLCENGINE_CLUSTER_ID=volc.bigasr.sauc.duration\n\n# TTS (文本转语音) 配置\n# 是否启用 TTS 功能\nTTS_ENABLED=false\n# TTS 提供商 (openai, siliconflow, volcengine)\nTTS_PROVIDER=openai\n# TTS 通用配置 (默认复用 AI_API_KEY)\nTTS_API_KEY=\nTTS_ENDPOINT=\nTTS_DEFAULT_MODEL=tts-1\nTTS_DEFAULT_VOICE=alloy\n\n# TTS 前端直连模式(显式启用,默认在 Serverless 环境自动降级到火山引擎直连)\n# TTS_FRONTEND_DIRECT=false\n# TTS 前端直连凭证有效期(秒),默认 600(10 分钟),范围 [300, 43200]\n# TTS_CREDENTIAL_TTL_SECONDS=600\n\n# --- 厂商专项凭据 (可被上述 ASR/TTS 引用) ---\n\n# 火山引擎 (豆包语音) 统一凭据\nVOLCENGINE_APP_ID=\nVOLCENGINE_ACCESS_KEY=\nVOLCENGINE_SECRET_KEY=\n\n# ------------------------------------------\n# 6. 邮件发送系统 (SMTP)\n# ------------------------------------------\n\n# SMTP 服务器地址\nEMAIL_HOST=\n# SMTP 端口\nEMAIL_PORT=587\n# 是否使用 SSL/TLS (默认 false 会尝试 STARTTLS)\nEMAIL_SECURE=false\nEMAIL_USER=\nEMAIL_PASS=\n# 默认邮件发送者 (格式示例: \"Momei Blog\" <admin@example.com>)\nEMAIL_FROM=\n# 是否要求邮箱验证码验证后才允许登录\nEMAIL_REQUIRE_VERIFICATION=false\n\n# 邮件限流与周期配置 (可选)\n# EMAIL_DAILY_LIMIT=100\n# EMAIL_SINGLE_USER_DAILY_LIMIT=5\n# EMAIL_LIMIT_WINDOW=86400\n# EMAIL_EXPIRES_IN=300\n\n# 临时邮箱域拦截配置 (可选)\n# TEMP_EMAIL_DOMAIN_NAME=example.com\n\n# ------------------------------------------\n# 7. 对象存储系统 (Storage & Upload)\n# ------------------------------------------\n\n# 存储引擎 (local, s3, r2, vercel_blob;兼容旧值 vercel-blob)\nSTORAGE_TYPE=local\n\n# 路径前缀(所有上传文件均会携带此目录前缀)\nBUCKET_PREFIX=momei/\n\n# 全局公共访问域名 / 对象前缀(可选,优先级高于驱动级 BaseURL/Prefix)\n# ASSET_PUBLIC_BASE_URL=https://cdn.example.com/assets\n# ASSET_OBJECT_PREFIX=momei-blog/\n\n# 1. 本地存储配置 (STORAGE_TYPE=local)\nLOCAL_STORAGE_DIR=public/uploads\nNUXT_PUBLIC_LOCAL_STORAGE_BASE_URL=/uploads\n\n# 2. S3 兼容存储 (STORAGE_TYPE=s3, 适用于 R2, AWS S3, MinIO)\nS3_ENDPOINT=\nS3_BUCKET_NAME=\nS3_REGION=auto\nS3_ACCESS_KEY_ID=\nS3_SECRET_ACCESS_KEY=\nS3_BASE_URL=\n\n# 3. Vercel Blob (STORAGE_TYPE=vercel_blob)\nBLOB_READ_WRITE_TOKEN=\n\n# 4. Cloudflare R2 专用配置 (也可通过 S3 变量配置)\n# CLOUDFLARE_R2_ACCOUNT_ID=\n# CLOUDFLARE_R2_ACCESS_KEY=\n# CLOUDFLARE_R2_SECRET_KEY=\n# CLOUDFLARE_R2_BUCKET=\n# CLOUDFLARE_R2_BASE_URL=\n\n# 文件大小限制调节 (可选)\n# NUXT_PUBLIC_MAX_UPLOAD_SIZE=4.5MiB\n# NUXT_PUBLIC_MAX_AUDIO_UPLOAD_SIZE=100MiB\n# LOCAL_STORAGE_MIN_FREE_SPACE=100MiB\n\n# ------------------------------------------\n# 7.1 listmonk Newsletter 分发\n# ------------------------------------------\n\nLISTMONK_ENABLED=false\nLISTMONK_INSTANCE_URL=\nLISTMONK_USERNAME=\nLISTMONK_ACCESS_TOKEN=\nLISTMONK_DEFAULT_LIST_IDS=\n# JSON 示例: {\"backend\":[3],\"frontend\":[4]}\nLISTMONK_CATEGORY_LIST_MAP=\n# JSON 示例: {\"nuxt\":[5],\"newsletter\":[6]}\nLISTMONK_TAG_LIST_MAP=\nLISTMONK_TEMPLATE_ID=\n\n# Hexo 风格文章仓库同步(GitHub / Gitee)\nHEXO_SYNC_ENABLED=false\n# 支持 github / gitee\nHEXO_SYNC_PROVIDER=github\nHEXO_SYNC_OWNER=\nHEXO_SYNC_REPO=\nHEXO_SYNC_BRANCH=main\nHEXO_SYNC_POSTS_DIR=source/_posts\n# 仅服务端读取,不进入后台数据库\nHEXO_SYNC_ACCESS_TOKEN=\n\n# ------------------------------------------\n# 8. 运维、监控与自动化 (Operations)\n# ------------------------------------------\n\n# 管理员用户 ID 列表 (逗号分隔,注册后在此提权)\nADMIN_USER_IDS=\n\n# Vercel Cron 专用鉴权密钥\n# Vercel 会自动以 Authorization: Bearer <CRON_SECRET> 触发定时任务端点\nCRON_SECRET=\n\n# 定时任务鉴权令牌 (用于手动触发 Scheduled Tasks Webhook / 旧版集成)\nTASKS_TOKEN=\n\n# Webhook HMAC 签名密钥 (推荐独立配置,默认使用 TASKS_TOKEN)\n# 用于外部调度器 / GitHub Actions / Cloudflare / Serverless 等场景的 HMAC 验签\nWEBHOOK_SECRET=\n\n# 自部署环境 Cron 表达式 (默认每 5 分钟执行一次)\n# 仅在非 Serverless 环境中生效\n# TASK_CRON_EXPRESSION=*/5 * * * *\n\n# 显式禁用自部署环境 Cron\n# DISABLE_CRON_JOB=false\n\n# Webhook 时间戳容差 (毫秒)\n# 说明:当前版本预留该变量名,Webhook 校验默认固定 5 分钟容差\n# WEBHOOK_TIMESTAMP_TOLERANCE=300000\n\n# Sentry 异常监控\nNUXT_PUBLIC_SENTRY_DSN=\nNUXT_PUBLIC_SENTRY_ENVIRONMENT=production\n\n# 站长流量统计 (填入对应统计 ID)\nNUXT_PUBLIC_BAIDU_ANALYTICS_ID=\nNUXT_PUBLIC_GOOGLE_ANALYTICS_ID=\nNUXT_PUBLIC_CLARITY_PROJECT_ID=\n# Umami 统计配置(JSON 字符串,示例: {\"websiteId\":\"xxx\",\"scriptUrl\":\"https://analytics.example.com/script.js\"})\n# NUXT_PUBLIC_UMAMI_ANALYTICS=\n\n# 站点验证标签 (可选)\n# NUXT_PUBLIC_GOOGLE_SITE_VERIFICATION=\n# NUXT_PUBLIC_BING_SITE_VERIFICATION=\n\n# ------------------------------------------\n# 9. 视觉特效与内容组件 (Features)\n# ------------------------------------------\n\n# 站点元数据\nNUXT_PUBLIC_SITE_LOGO=\nNUXT_PUBLIC_SITE_FAVICON=\nNUXT_PUBLIC_SITE_OPERATOR=\nNUXT_PUBLIC_CONTACT_EMAIL=admin@example.com\n\n# 主题系统默认值 (可选,仅在未通过后台配置覆盖时生效)\n# THEME_PRESET=\n# THEME_PRIMARY_COLOR=\n# THEME_ACCENT_COLOR=\n# THEME_SURFACE_COLOR=\n# THEME_TEXT_COLOR=\n# THEME_DARK_PRIMARY_COLOR=\n# THEME_DARK_ACCENT_COLOR=\n# THEME_DARK_SURFACE_COLOR=\n# THEME_DARK_TEXT_COLOR=\n# THEME_BORDER_RADIUS=\n# THEME_MOURNING_MODE=false\n# THEME_BACKGROUND_TYPE=\n# THEME_BACKGROUND_VALUE=\n\n# 验证码集成 (提供商: cloudflare-turnstile, google-recaptcha, hcaptcha, captchafox)\nENABLE_CAPTCHA=false\nNUXT_PUBLIC_AUTH_CAPTCHA_PROVIDER=\nNUXT_PUBLIC_AUTH_CAPTCHA_SITE_KEY=\nAUTH_CAPTCHA_SECRET_KEY=\n\n# 评论审核与风控\nENABLE_COMMENT_REVIEW=false\n# 关键词黑名单 (英文逗号分隔)\nBLACKLISTED_KEYWORDS=\n\n# 页脚自定义注入代码\nNUXT_PUBLIC_FOOTER_CODE=\n\n# 动态视觉特效控制\nNUXT_PUBLIC_LIVE2D_ENABLED=false\n# NUXT_PUBLIC_LIVE2D_SCRIPT_URL=https://unpkg.com/live2d-widgets@1.0.0/dist/\n# NUXT_PUBLIC_LIVE2D_MODEL_URL=\n# NUXT_PUBLIC_LIVE2D_OPTIONS_JSON={}\n# NUXT_PUBLIC_LIVE2D_MOBILE_ENABLED=false\n# NUXT_PUBLIC_LIVE2D_MIN_WIDTH=1024\n# NUXT_PUBLIC_LIVE2D_DATA_SAVER_BLOCK=true\nNUXT_PUBLIC_CANVAS_NEST_ENABLED=false\n# NUXT_PUBLIC_CANVAS_NEST_OPTIONS_JSON={}\n# NUXT_PUBLIC_CANVAS_NEST_MOBILE_ENABLED=false\n# NUXT_PUBLIC_CANVAS_NEST_MIN_WIDTH=1024\n# NUXT_PUBLIC_CANVAS_NEST_DATA_SAVER_BLOCK=true\n# 全局性能卫兵:是否允许移动端加载特效\nNUXT_PUBLIC_EFFECTS_MOBILE_ENABLED=false\n# NUXT_PUBLIC_EFFECTS_MIN_WIDTH=768\n# NUXT_PUBLIC_EFFECTS_DATA_SAVER_BLOCK=true\n\n# 公开限制项 (可选,会同步给前端)\n# NUXT_PUBLIC_ALLOWED_FILE_TYPES=image/jpeg,image/png,image/webp,image/gif\n# NUXT_PUBLIC_COMMENT_INTERVAL=60\n# NUXT_PUBLIC_POSTS_PER_PAGE=10\n\n# 上传限流 (可选)\n# UPLOAD_DAILY_LIMIT=100\n# UPLOAD_SINGLE_USER_DAILY_LIMIT=20\n# UPLOAD_LIMIT_WINDOW=86400\n\n# ------------------------------------------\n# 10. 合规与外部资源安全 (Compliance & Security)\n# ------------------------------------------\n\n# 中国大陆备案信息显示\nNUXT_PUBLIC_SHOW_COMPLIANCE_INFO=false\nNUXT_PUBLIC_ICP_LICENSE_NUMBER=\nNUXT_PUBLIC_PUBLIC_SECURITY_NUMBER=\n\n# 安全:外部资源域名白名单 (逗号分隔,防止某些代理环境下图片加载失败)\nNUXT_PUBLIC_SECURITY_URL_WHITELIST=\n\n# Hugging Face 镜像代理地址 (用于部署在大陆环境时拉取资源)\nNUXT_PUBLIC_HF_PROXY=https://huggingface.co\n\n# ------------------------------------------\n# 11. 商业化与第三方平台集成 (Commercial & Third-party)\n# ------------------------------------------\n\n# 全局商业化默认配置 (JSON 字符串)\n# 仅当需要通过环境变量锁定全局社交/打赏配置时使用\n# COMMERCIAL_SPONSORSHIP_JSON={\"enabled\":true,\"donationLinks\":[],\"socialLinks\":[]}\n\n# Memos 生活流同步\nMEMOS_ENABLED=false\nMEMOS_INSTANCE_URL=\nMEMOS_ACCESS_TOKEN=\nMEMOS_DEFAULT_VISIBILITY=PRIVATE\n\n# ------------------------------------------\n# 12. 日志、调试与 Demo 模式 (Logging & Debug)\n# ------------------------------------------\n\n# 日志输出等级 (silly, debug, http, info, warn, error)\nLOG_LEVEL=info\n# 是否开启文件日志记录 (默认 false,Serverless 环境必须设为 false)\nLOGFILES=false\n# LOG_DIR=logs\n\n# Axiom 日志集成\n# AXIOM_DATASET_NAME=\n# AXIOM_API_TOKEN=\n\n# 演示模式 (内存 DB 运行,限制写操作)\nNUXT_PUBLIC_DEMO_MODE=false\n# NUXT_PUBLIC_DEMO_USER_EMAIL=admin@example.com\n# NUXT_PUBLIC_DEMO_PASSWORD=momei123456\n\n# 安装锁定标志(系统首次运行后会自动生成/读取,通常建议初始化后手动修改为 true 并重启系统)\n# MOMEI_INSTALLED=true\n"}, "d3d270e772c22bc063d2970d02f6f3167ba8bab4": {"t": 1785749532.256759, "n": 11182, "h": "883c9f1acdf06b9c", "c": "# ==========================================\n# 墨梅博客 (Momei) 环境变量完整示例文件\n# ==========================================\n\n# ------------------------------------------\n# 1. 基础核心配置 (Essential)\n# ------------------------------------------\n\n# 应用名称\nNUXT_PUBLIC_APP_NAME=墨梅博客\n\n# 站点 SEO 描述\nNUXT_PUBLIC_SITE_DESCRIPTION=一个基于 Nuxt 4 构建的现代化 AI 驱动博客平台\n\n# 站点 SEO 关键词 (逗号分隔)\nNUXT_PUBLIC_SITE_KEYWORDS=Nuxt,Vue,Blog,AI,TypeScript\n\n# 默认文章版权协议类型 (例如 all-rights-reserved, cc-by-nc-sa)\nNUXT_PUBLIC_POST_COPYRIGHT=all-rights-reserved\n\n# 站点版权展示信息 (用于页脚版权行)\nNUXT_PUBLIC_SITE_COPYRIGHT_OWNER=XX博客版权所有\nNUXT_PUBLIC_SITE_COPYRIGHT_START_YEAR=2026\n\n# 兼容旧变量名,建议迁移到新的 POST_/SITE_ 命名\n# NUXT_PUBLIC_DEFAULT_COPYRIGHT=all-rights-reserved\n# NUXT_PUBLIC_FOOTER_COPYRIGHT_OWNER=\n# NUXT_PUBLIC_FOOTER_COPYRIGHT_START_YEAR=\n\n# 默认语言 (en-US, zh-CN)\nNUXT_PUBLIC_DEFAULT_LANGUAGE=zh-CN\n\n# 站点 URL(注意:公开访问的站点地址,用于 SEO 和 RSS 生成)\nNUXT_PUBLIC_SITE_URL=http://localhost:3000\n\n# Better Auth 的基础 URL(必需,用于认证回调重定向,推荐与 SITE_URL 一致)\nNUXT_PUBLIC_AUTH_BASE_URL=http://localhost:3000\n\n# 用于加密、签名和哈希的密钥。生产环境必须设置!\n# 可以使用 `openssl rand -hex 32` 生成。开发环境下会自动生成随机值。\nAUTH_SECRET=\n\n# 雪花算法机器 ID (0-1023),用于生成分布式唯一 ID。默认自动获取进程 PID 对 1024 取余\n# MACHINE_ID=\n\n# ------------------------------------------\n# 2. 数据库与高性能配置 (Database & Cache)\n# ------------------------------------------\n\n# 数据库连接 URL (支持 SQLite, MySQL, PostgreSQL)\n# 支持智能推断:\n# - SQLite (推荐): sqlite://database/momei.sqlite (或 file://database/momei.sqlite)\n# - MySQL: mysql://user:pass@host:3306/db\n# - PostgreSQL: postgres://user:pass@host:5432/db\n# 如果未配置,默认将使用本地 SQLite\nDATABASE_URL=sqlite://database/momei.sqlite\n\n# 手动指定数据库类型 (可选,通常由 URL 自动推断: sqlite, mysql, postgres)\n# DATABASE_TYPE=sqlite\n\n# SQLite 数据库路径 (兼容旧版,不推荐手动设置)\n# DATABASE_PATH=database/momei.sqlite\n\n# 是否自动同步数据库表结构 (生产环境建议固定为 false,仅手动控制迁移)\nDATABASE_SYNCHRONIZE=false\n\n# 数据库连接调节 (可选)\n# DATABASE_SSL=false\n# DATABASE_CHARSET=utf8_general_ci\n# DATABASE_TIMEZONE=local\n# DATABASE_ENTITY_PREFIX=momei_\n\n# Redis 连接地址 (可选,配置后将启用基于 Redis 的缓存或限流)\n# REDIS_URL=redis://localhost:6379\n\n# ------------------------------------------\n# 3. 认证与社交登录 (Authentication)\n# ------------------------------------------\n\n# 是否允许新用户注册\nALLOW_REGISTRATION=true\n\n# 是否启用匿名登录 (无需邮箱密码即可登录)\nANONYMOUS_LOGIN_ENABLED=false\n\n# GitHub 配置 (OAuth)\nNUXT_PUBLIC_GITHUB_CLIENT_ID=\nGITHUB_CLIENT_SECRET=\n\n# Google 配置 (OAuth)\nNUXT_PUBLIC_GOOGLE_CLIENT_ID=\nGOOGLE_CLIENT_SECRET=\n\n# ------------------------------------------\n# 4. AI 核心引擎 (AI Integration - Text & Image)\n# ------------------------------------------\n\n# 是否启用 AI 功能\nAI_ENABLED=true\n\n# 主 AI 提供商 (openai, anthropic, deepseek, doubao, siliconflow, gemini, volcengine)\nAI_PROVIDER=openai\n\n# AI API 密钥\nAI_API_KEY=\n\n# 默认模型名称 (如 gpt-4o, claude-3-5-sonnet, deepseek-chat)\nAI_MODEL=gpt-4o\n\n# API 代理端点 (可选,用于 OpenAI 兼容服务)\nAI_API_ENDPOINT=\n\n# AI 生成参数控制 (可选,默认内置优化值)\n# AI_MAX_TOKENS=2048\n# AI_TEMPERATURE=0.7\n# AI_MAX_CONTENT_LENGTH=50000\n# AI_CHUNK_SIZE=4000\n# AI_TEXT_DIRECT_RETURN_MAX_CHARS=1000\n# AI_TEXT_TASK_CHUNK_SIZE=4000\n# AI_TEXT_TASK_CONCURRENCY=3\n# AI 重任务超时(用于 TTS / ASR / 图片生成等耗时任务)\nAI_HEAVY_TASK_TIMEOUT=5m\n\n# Gemini 专用令牌 (如果 provider 为 gemini 且需要独立令牌鉴权)\n# GEMINI_API_TOKEN=\n\n# AI 图像生成配置\nAI_IMAGE_ENABLED=false\nAI_IMAGE_PROVIDER=openai\nAI_IMAGE_API_KEY=\nAI_IMAGE_MODEL=dall-e-3\nAI_IMAGE_ENDPOINT=\n\n# AI 配额治理 (可选,支持直接复用后台设置页导出的 JSON)\n# AI_QUOTA_ENABLED=false\n# AI_QUOTA_POLICIES=[{\"subjectType\":\"global\",\"subjectValue\":\"default\",\"scope\":\"all\",\"period\":\"day\",\"maxRequests\":100,\"maxQuotaUnits\":200,\"enabled\":true}]\n# AI_ALERT_THRESHOLDS={\"enabled\":true,\"quotaUsageRatios\":[0.5,0.8,1],\"costUsageRatios\":[0.8,1],\"failureBurst\":{\"enabled\":true,\"windowMinutes\":10,\"maxFailures\":3,\"categories\":[\"image\",\"asr\",\"tts\",\"podcast\"]},\"dedupeWindowMinutes\":1440,\"maxAlerts\":10}\n\n# ------------------------------------------\n# 5. AI 多模态音频 (ASR & TTS)\n# ------------------------------------------\n\n# ASR (语音识别) 配置\n# 是否启用 ASR 功能\nASR_ENABLED=false\n# ASR 提供商 (openai, siliconflow, volcengine)\nASR_PROVIDER=siliconflow\n# ASR 通用配置\nASR_API_KEY=\nASR_MODEL=FunAudioLLM/SenseVoiceSmall\nASR_ENDPOINT=\n\n# SiliconFlow ASR 专用配置 (可选,优先级高于通用 ASR_API_KEY / ASR_MODEL)\nASR_SILICONFLOW_API_KEY=\nASR_SILICONFLOW_MODEL=FunAudioLLM/SenseVoiceSmall\n\n# 火山引擎 ASR 专用配置 (可选,优先级高于通用 VOLCENGINE_* 配置)\nASR_VOLCENGINE_APP_ID=\nASR_VOLCENGINE_ACCESS_KEY=\nASR_VOLCENGINE_SECRET_KEY=\nASR_VOLCENGINE_CLUSTER_ID=volc.bigasr.sauc.duration\n\n# TTS (文本转语音) 配置\n# 是否启用 TTS 功能\nTTS_ENABLED=false\n# TTS 提供商 (openai, siliconflow, volcengine)\nTTS_PROVIDER=openai\n# TTS 通用配置 (默认复用 AI_API_KEY)\nTTS_API_KEY=\nTTS_ENDPOINT=\nTTS_DEFAULT_MODEL=tts-1\nTTS_DEFAULT_VOICE=alloy\n\n# TTS 前端直连模式(显式启用,默认在 Serverless 环境自动降级到火山引擎直连)\n# TTS_FRONTEND_DIRECT=false\n# TTS 前端直连凭证有效期(秒),默认 600(10 分钟),范围 [300, 43200]\n# TTS_CREDENTIAL_TTL_SECONDS=600\n\n# --- 厂商专项凭据 (可被上述 ASR/TTS 引用) ---\n\n# 火山引擎 (豆包语音) 统一凭据\nVOLCENGINE_APP_ID=\nVOLCENGINE_ACCESS_KEY=\nVOLCENGINE_SECRET_KEY=\n\n# ------------------------------------------\n# 6. 邮件发送系统 (SMTP)\n# ------------------------------------------\n\n# SMTP 服务器地址\nEMAIL_HOST=\n# SMTP 端口\nEMAIL_PORT=587\n# 是否使用 SSL/TLS (默认 false 会尝试 STARTTLS)\nEMAIL_SECURE=false\nEMAIL_USER=\nEMAIL_PASS=\n# 默认邮件发送者 (格式示例: \"Momei Blog\" <admin@example.com>)\nEMAIL_FROM=\n# 是否要求邮箱验证码验证后才允许登录\nEMAIL_REQUIRE_VERIFICATION=false\n\n# 邮件限流与周期配置 (可选)\n# EMAIL_DAILY_LIMIT=100\n# EMAIL_SINGLE_USER_DAILY_LIMIT=5\n# EMAIL_LIMIT_WINDOW=86400\n# EMAIL_EXPIRES_IN=300\n\n# 临时邮箱域拦截配置 (可选)\n# TEMP_EMAIL_DOMAIN_NAME=example.com\n\n# ------------------------------------------\n# 7. 对象存储系统 (Storage & Upload)\n# ------------------------------------------\n\n# 存储引擎 (local, s3, r2, vercel_blob;兼容旧值 vercel-blob)\nSTORAGE_TYPE=local\n\n# 路径前缀(所有上传文件均会携带此目录前缀)\nBUCKET_PREFIX=momei/\n\n# 全局公共访问域名 / 对象前缀(可选,优先级高于驱动级 BaseURL/Prefix)\n# ASSET_PUBLIC_BASE_URL=https://cdn.example.com/assets\n# ASSET_OBJECT_PREFIX=momei-blog/\n\n# 1. 本地存储配置 (STORAGE_TYPE=local)\nLOCAL_STORAGE_DIR=public/uploads\nNUXT_PUBLIC_LOCAL_STORAGE_BASE_URL=/uploads\n\n# 2. S3 兼容存储 (STORAGE_TYPE=s3, 适用于 R2, AWS S3, MinIO)\nS3_ENDPOINT=\nS3_BUCKET_NAME=\nS3_REGION=auto\nS3_ACCESS_KEY_ID=\nS3_SECRET_ACCESS_KEY=\nS3_BASE_URL=\n\n# 3. Vercel Blob (STORAGE_TYPE=vercel_blob)\nBLOB_READ_WRITE_TOKEN=\n\n# 4. Cloudflare R2 专用配置 (也可通过 S3 变量配置)\n# CLOUDFLARE_R2_ACCOUNT_ID=\n# CLOUDFLARE_R2_ACCESS_KEY=\n# CLOUDFLARE_R2_SECRET_KEY=\n# CLOUDFLARE_R2_BUCKET=\n# CLOUDFLARE_R2_BASE_URL=\n\n# 文件大小限制调节 (可选)\n# NUXT_PUBLIC_MAX_UPLOAD_SIZE=4.5MiB\n# NUXT_PUBLIC_MAX_AUDIO_UPLOAD_SIZE=100MiB\n# LOCAL_STORAGE_MIN_FREE_SPACE=100MiB\n\n# ------------------------------------------\n# 7.1 listmonk Newsletter 分发\n# ------------------------------------------\n\nLISTMONK_ENABLED=false\nLISTMONK_INSTANCE_URL=\nLISTMONK_USERNAME=\nLISTMONK_ACCESS_TOKEN=\nLISTMONK_DEFAULT_LIST_IDS=\n# JSON 示例: {\"backend\":[3],\"frontend\":[4]}\nLISTMONK_CATEGORY_LIST_MAP=\n# JSON 示例: {\"nuxt\":[5],\"newsletter\":[6]}\nLISTMONK_TAG_LIST_MAP=\nLISTMONK_TEMPLATE_ID=\n\n# Hexo 风格文章仓库同步(GitHub / Gitee)\nHEXO_SYNC_ENABLED=false\n# 支持 github / gitee\nHEXO_SYNC_PROVIDER=github\nHEXO_SYNC_OWNER=\nHEXO_SYNC_REPO=\nHEXO_SYNC_BRANCH=main\nHEXO_SYNC_POSTS_DIR=source/_posts\n# 仅服务端读取,不进入后台数据库\nHEXO_SYNC_ACCESS_TOKEN=\n\n# ------------------------------------------\n# 8. 运维、监控与自动化 (Operations)\n# ------------------------------------------\n\n# 管理员用户 ID 列表 (逗号分隔,注册后在此提权)\nADMIN_USER_IDS=\n\n# Vercel Cron 专用鉴权密钥\n# Vercel 会自动以 Authorization: Bearer <CRON_SECRET> 触发定时任务端点\nCRON_SECRET=\n\n# 定时任务鉴权令牌 (用于手动触发 Scheduled Tasks Webhook / 旧版集成)\nTASKS_TOKEN=\n\n# Webhook HMAC 签名密钥 (推荐独立配置,默认使用 TASKS_TOKEN)\n# 用于外部调度器 / GitHub Actions / Cloudflare / Serverless 等场景的 HMAC 验签\nWEBHOOK_SECRET=\n\n# 自部署环境 Cron 表达式 (默认每 5 分钟执行一次)\n# 仅在非 Serverless 环境中生效\n# TASK_CRON_EXPRESSION=*/5 * * * *\n\n# 显式禁用自部署环境 Cron\n# DISABLE_CRON_JOB=false\n\n# Webhook 时间戳容差 (毫秒)\n# 说明:当前版本预留该变量名,Webhook 校验默认固定 5 分钟容差\n# WEBHOOK_TIMESTAMP_TOLERANCE=300000\n\n# Sentry 异常监控\nNUXT_PUBLIC_SENTRY_DSN=\nNUXT_PUBLIC_SENTRY_ENVIRONMENT=production\n\n# 站长流量统计 (填入对应统计 ID)\nNUXT_PUBLIC_BAIDU_ANALYTICS_ID=\nNUXT_PUBLIC_GOOGLE_ANALYTICS_ID=\nNUXT_PUBLIC_CLARITY_PROJECT_ID=\n\n# 站点验证标签 (可选)\n# NUXT_PUBLIC_GOOGLE_SITE_VERIFICATION=\n# NUXT_PUBLIC_BING_SITE_VERIFICATION=\n\n# ------------------------------------------\n# 9. 视觉特效与内容组件 (Features)\n# ------------------------------------------\n\n# 站点元数据\nNUXT_PUBLIC_SITE_LOGO=\nNUXT_PUBLIC_SITE_FAVICON=\nNUXT_PUBLIC_SITE_OPERATOR=\nNUXT_PUBLIC_CONTACT_EMAIL=admin@example.com\n\n# 主题系统默认值 (可选,仅在未通过后台配置覆盖时生效)\n# THEME_PRESET=\n# THEME_PRIMARY_COLOR=\n# THEME_ACCENT_COLOR=\n# THEME_SURFACE_COLOR=\n# THEME_TEXT_COLOR=\n# THEME_DARK_PRIMARY_COLOR=\n# THEME_DARK_ACCENT_COLOR=\n# THEME_DARK_SURFACE_COLOR=\n# THEME_DARK_TEXT_COLOR=\n# THEME_BORDER_RADIUS=\n# THEME_MOURNING_MODE=false\n# THEME_BACKGROUND_TYPE=\n# THEME_BACKGROUND_VALUE=\n\n# 验证码集成 (提供商: cloudflare-turnstile, google-recaptcha, hcaptcha, captchafox)\nENABLE_CAPTCHA=false\nNUXT_PUBLIC_AUTH_CAPTCHA_PROVIDER=\nNUXT_PUBLIC_AUTH_CAPTCHA_SITE_KEY=\nAUTH_CAPTCHA_SECRET_KEY=\n\n# 评论审核与风控\nENABLE_COMMENT_REVIEW=false\n# 关键词黑名单 (英文逗号分隔)\nBLACKLISTED_KEYWORDS=\n\n# 页脚自定义注入代码\nNUXT_PUBLIC_FOOTER_CODE=\n\n# 动态视觉特效控制\nNUXT_PUBLIC_LIVE2D_ENABLED=false\n# NUXT_PUBLIC_LIVE2D_SCRIPT_URL=https://unpkg.com/live2d-widgets@1.0.0/dist/\n# NUXT_PUBLIC_LIVE2D_MODEL_URL=\n# NUXT_PUBLIC_LIVE2D_OPTIONS_JSON={}\n# NUXT_PUBLIC_LIVE2D_MOBILE_ENABLED=false\n# NUXT_PUBLIC_LIVE2D_MIN_WIDTH=1024\n# NUXT_PUBLIC_LIVE2D_DATA_SAVER_BLOCK=true\nNUXT_PUBLIC_CANVAS_NEST_ENABLED=false\n# NUXT_PUBLIC_CANVAS_NEST_OPTIONS_JSON={}\n# NUXT_PUBLIC_CANVAS_NEST_MOBILE_ENABLED=false\n# NUXT_PUBLIC_CANVAS_NEST_MIN_WIDTH=1024\n# NUXT_PUBLIC_CANVAS_NEST_DATA_SAVER_BLOCK=true\n# 全局性能卫兵:是否允许移动端加载特效\nNUXT_PUBLIC_EFFECTS_MOBILE_ENABLED=false\n# NUXT_PUBLIC_EFFECTS_MIN_WIDTH=768\n# NUXT_PUBLIC_EFFECTS_DATA_SAVER_BLOCK=true\n\n# 公开限制项 (可选,会同步给前端)\n# NUXT_PUBLIC_ALLOWED_FILE_TYPES=image/jpeg,image/png,image/webp,image/gif\n# NUXT_PUBLIC_COMMENT_INTERVAL=60\n# NUXT_PUBLIC_POSTS_PER_PAGE=10\n\n# 上传限流 (可选)\n# UPLOAD_DAILY_LIMIT=100\n# UPLOAD_SINGLE_USER_DAILY_LIMIT=20\n# UPLOAD_LIMIT_WINDOW=86400\n\n# ------------------------------------------\n# 10. 合规与外部资源安全 (Compliance & Security)\n# ------------------------------------------\n\n# 中国大陆备案信息显示\nNUXT_PUBLIC_SHOW_COMPLIANCE_INFO=false\nNUXT_PUBLIC_ICP_LICENSE_NUMBER=\nNUXT_PUBLIC_PUBLIC_SECURITY_NUMBER=\n\n# 安全:外部资源域名白名单 (逗号分隔,防止某些代理环境下图片加载失败)\nNUXT_PUBLIC_SECURITY_URL_WHITELIST=\n\n# Hugging Face 镜像代理地址 (用于部署在大陆环境时拉取资源)\nNUXT_PUBLIC_HF_PROXY=https://huggingface.co\n\n# ------------------------------------------\n# 11. 商业化与第三方平台集成 (Commercial & Third-party)\n# ------------------------------------------\n\n# 全局商业化默认配置 (JSON 字符串)\n# 仅当需要通过环境变量锁定全局社交/打赏配置时使用\n# COMMERCIAL_SPONSORSHIP_JSON={\"enabled\":true,\"donationLinks\":[],\"socialLinks\":[]}\n\n# Memos 生活流同步\nMEMOS_ENABLED=false\nMEMOS_INSTANCE_URL=\nMEMOS_ACCESS_TOKEN=\nMEMOS_DEFAULT_VISIBILITY=PRIVATE\n\n# ------------------------------------------\n# 12. 日志、调试与 Demo 模式 (Logging & Debug)\n# ------------------------------------------\n\n# 日志输出等级 (silly, debug, http, info, warn, error)\nLOG_LEVEL=info\n# 是否开启文件日志记录 (默认 false,Serverless 环境必须设为 false)\nLOGFILES=false\n# LOG_DIR=logs\n\n# Axiom 日志集成\n# AXIOM_DATASET_NAME=\n# AXIOM_API_TOKEN=\n\n# 演示模式 (内存 DB 运行,限制写操作)\nNUXT_PUBLIC_DEMO_MODE=false\n# NUXT_PUBLIC_DEMO_USER_EMAIL=admin@example.com\n# NUXT_PUBLIC_DEMO_PASSWORD=momei123456\n\n# 安装锁定标志(系统首次运行后会自动生成/读取,通常建议初始化后手动修改为 true 并重启系统)\n# MOMEI_INSTALLED=true\n"}, "b77a9fd2dca60c19f1e8d2f3f76cae5fb5659245": {"t": 1785749533.488334, "n": 11023, "h": "cc9e53cc08aa1f51", "c": "# ==========================================\n# 墨梅博客 (Momei) 环境变量完整示例文件\n# ==========================================\n\n# ------------------------------------------\n# 1. 基础核心配置 (Essential)\n# ------------------------------------------\n\n# 应用名称\nNUXT_PUBLIC_APP_NAME=墨梅博客\n\n# 站点 SEO 描述\nNUXT_PUBLIC_SITE_DESCRIPTION=一个基于 Nuxt 4 构建的现代化 AI 驱动博客平台\n\n# 站点 SEO 关键词 (逗号分隔)\nNUXT_PUBLIC_SITE_KEYWORDS=Nuxt,Vue,Blog,AI,TypeScript\n\n# 默认文章版权协议类型 (例如 all-rights-reserved, cc-by-nc-sa)\nNUXT_PUBLIC_POST_COPYRIGHT=all-rights-reserved\n\n# 站点版权展示信息 (用于页脚版权行)\nNUXT_PUBLIC_SITE_COPYRIGHT_OWNER=XX博客版权所有\nNUXT_PUBLIC_SITE_COPYRIGHT_START_YEAR=2026\n\n# 兼容旧变量名,建议迁移到新的 POST_/SITE_ 命名\n# NUXT_PUBLIC_DEFAULT_COPYRIGHT=all-rights-reserved\n# NUXT_PUBLIC_FOOTER_COPYRIGHT_OWNER=\n# NUXT_PUBLIC_FOOTER_COPYRIGHT_START_YEAR=\n\n# 默认语言 (en-US, zh-CN)\nNUXT_PUBLIC_DEFAULT_LANGUAGE=zh-CN\n\n# 站点 URL(注意:公开访问的站点地址,用于 SEO 和 RSS 生成)\nNUXT_PUBLIC_SITE_URL=http://localhost:3000\n\n# Better Auth 的基础 URL(必需,用于认证回调重定向,推荐与 SITE_URL 一致)\nNUXT_PUBLIC_AUTH_BASE_URL=http://localhost:3000\n\n# 用于加密、签名和哈希的密钥。生产环境必须设置!\n# 可以使用 `openssl rand -hex 32` 生成。开发环境下会自动生成随机值。\nAUTH_SECRET=\n\n# 雪花算法机器 ID (0-1023),用于生成分布式唯一 ID。默认自动获取进程 PID 对 1024 取余\n# MACHINE_ID=\n\n# ------------------------------------------\n# 2. 数据库与高性能配置 (Database & Cache)\n# ------------------------------------------\n\n# 数据库连接 URL (支持 SQLite, MySQL, PostgreSQL)\n# 支持智能推断:\n# - SQLite (推荐): sqlite://database/momei.sqlite (或 file://database/momei.sqlite)\n# - MySQL: mysql://user:pass@host:3306/db\n# - PostgreSQL: postgres://user:pass@host:5432/db\n# 如果未配置,默认将使用本地 SQLite\nDATABASE_URL=sqlite://database/momei.sqlite\n\n# 手动指定数据库类型 (可选,通常由 URL 自动推断: sqlite, mysql, postgres)\n# DATABASE_TYPE=sqlite\n\n# SQLite 数据库路径 (兼容旧版,不推荐手动设置)\n# DATABASE_PATH=database/momei.sqlite\n\n# 是否自动同步数据库表结构 (生产环境建议固定为 false,仅手动控制迁移)\nDATABASE_SYNCHRONIZE=false\n\n# 数据库连接调节 (可选)\n# DATABASE_SSL=false\n# DATABASE_CHARSET=utf8_general_ci\n# DATABASE_TIMEZONE=local\n# DATABASE_ENTITY_PREFIX=momei_\n\n# Redis 连接地址 (可选,配置后将启用基于 Redis 的缓存或限流)\n# REDIS_URL=redis://localhost:6379\n\n# ------------------------------------------\n# 3. 认证与社交登录 (Authentication)\n# ------------------------------------------\n\n# 是否允许新用户注册\nALLOW_REGISTRATION=true\n\n# 是否启用匿名登录 (无需邮箱密码即可登录)\nANONYMOUS_LOGIN_ENABLED=false\n\n# GitHub 配置 (OAuth)\nNUXT_PUBLIC_GITHUB_CLIENT_ID=\nGITHUB_CLIENT_SECRET=\n\n# Google 配置 (OAuth)\nNUXT_PUBLIC_GOOGLE_CLIENT_ID=\nGOOGLE_CLIENT_SECRET=\n\n# ------------------------------------------\n# 4. AI 核心引擎 (AI Integration - Text & Image)\n# ------------------------------------------\n\n# 是否启用 AI 功能\nAI_ENABLED=true\n\n# 主 AI 提供商 (openai, anthropic, deepseek, doubao, siliconflow, gemini, volcengine)\nAI_PROVIDER=openai\n\n# AI API 密钥\nAI_API_KEY=\n\n# 默认模型名称 (如 gpt-4o, claude-3-5-sonnet, deepseek-chat)\nAI_MODEL=gpt-4o\n\n# API 代理端点 (可选,用于 OpenAI 兼容服务)\nAI_API_ENDPOINT=\n\n# AI 生成参数控制 (可选,默认内置优化值)\n# AI_MAX_TOKENS=2048\n# AI_TEMPERATURE=0.7\n# AI_MAX_CONTENT_LENGTH=50000\n# AI_CHUNK_SIZE=4000\n# AI_TEXT_DIRECT_RETURN_MAX_CHARS=1000\n# AI_TEXT_TASK_CHUNK_SIZE=4000\n# AI_TEXT_TASK_CONCURRENCY=3\n# AI 重任务超时(用于 TTS / ASR / 图片生成等耗时任务)\nAI_HEAVY_TASK_TIMEOUT=5m\n\n# Gemini 专用令牌 (如果 provider 为 gemini 且需要独立令牌鉴权)\n# GEMINI_API_TOKEN=\n\n# AI 图像生成配置\nAI_IMAGE_ENABLED=false\nAI_IMAGE_PROVIDER=openai\nAI_IMAGE_API_KEY=\nAI_IMAGE_MODEL=dall-e-3\nAI_IMAGE_ENDPOINT=\n\n# AI 配额治理 (可选,支持直接复用后台设置页导出的 JSON)\n# AI_QUOTA_ENABLED=false\n# AI_QUOTA_POLICIES=[{\"subjectType\":\"global\",\"subjectValue\":\"default\",\"scope\":\"all\",\"period\":\"day\",\"maxRequests\":100,\"maxQuotaUnits\":200,\"enabled\":true}]\n# AI_ALERT_THRESHOLDS={\"enabled\":true,\"quotaUsageRatios\":[0.5,0.8,1],\"costUsageRatios\":[0.8,1],\"failureBurst\":{\"enabled\":true,\"windowMinutes\":10,\"maxFailures\":3,\"categories\":[\"image\",\"asr\",\"tts\",\"podcast\"]},\"dedupeWindowMinutes\":1440,\"maxAlerts\":10}\n\n# ------------------------------------------\n# 5. AI 多模态音频 (ASR & TTS)\n# ------------------------------------------\n\n# ASR (语音识别) 配置\n# 是否启用 ASR 功能\nASR_ENABLED=false\n# ASR 提供商 (openai, siliconflow, volcengine)\nASR_PROVIDER=siliconflow\n# ASR 通用配置\nASR_API_KEY=\nASR_MODEL=FunAudioLLM/SenseVoiceSmall\nASR_ENDPOINT=\n\n# SiliconFlow ASR 专用配置 (可选,优先级高于通用 ASR_API_KEY / ASR_MODEL)\nASR_SILICONFLOW_API_KEY=\nASR_SILICONFLOW_MODEL=FunAudioLLM/SenseVoiceSmall\n\n# 火山引擎 ASR 专用配置 (可选,优先级高于通用 VOLCENGINE_* 配置)\nASR_VOLCENGINE_APP_ID=\nASR_VOLCENGINE_ACCESS_KEY=\nASR_VOLCENGINE_SECRET_KEY=\nASR_VOLCENGINE_CLUSTER_ID=volc.bigasr.sauc.duration\n\n# TTS (文本转语音) 配置\n# 是否启用 TTS 功能\nTTS_ENABLED=false\n# TTS 提供商 (openai, siliconflow, volcengine)\nTTS_PROVIDER=openai\n# TTS 通用配置 (默认复用 AI_API_KEY)\nTTS_API_KEY=\nTTS_ENDPOINT=\nTTS_DEFAULT_MODEL=tts-1\nTTS_DEFAULT_VOICE=alloy\n\n# --- 厂商专项凭据 (可被上述 ASR/TTS 引用) ---\n\n# 火山引擎 (豆包语音) 统一凭据\nVOLCENGINE_APP_ID=\nVOLCENGINE_ACCESS_KEY=\nVOLCENGINE_SECRET_KEY=\n\n# ------------------------------------------\n# 6. 邮件发送系统 (SMTP)\n# ------------------------------------------\n\n# SMTP 服务器地址\nEMAIL_HOST=\n# SMTP 端口\nEMAIL_PORT=587\n# 是否使用 SSL/TLS (默认 false 会尝试 STARTTLS)\nEMAIL_SECURE=false\nEMAIL_USER=\nEMAIL_PASS=\n# 默认邮件发送者 (格式示例: \"Momei Blog\" <admin@example.com>)\nEMAIL_FROM=\n# 是否要求邮箱验证码验证后才允许登录\nEMAIL_REQUIRE_VERIFICATION=false\n\n# 邮件限流与周期配置 (可选)\n# EMAIL_DAILY_LIMIT=100\n# EMAIL_SINGLE_USER_DAILY_LIMIT=5\n# EMAIL_LIMIT_WINDOW=86400\n# EMAIL_EXPIRES_IN=300\n\n# 临时邮箱域拦截配置 (可选)\n# TEMP_EMAIL_DOMAIN_NAME=example.com\n\n# ------------------------------------------\n# 7. 对象存储系统 (Storage & Upload)\n# ------------------------------------------\n\n# 存储引擎 (local, s3, r2, vercel_blob;兼容旧值 vercel-blob)\nSTORAGE_TYPE=local\n\n# 路径前缀(所有上传文件均会携带此目录前缀)\nBUCKET_PREFIX=momei/\n\n# 全局公共访问域名 / 对象前缀(可选,优先级高于驱动级 BaseURL/Prefix)\n# ASSET_PUBLIC_BASE_URL=https://cdn.example.com/assets\n# ASSET_OBJECT_PREFIX=momei-blog/\n\n# 1. 本地存储配置 (STORAGE_TYPE=local)\nLOCAL_STORAGE_DIR=public/uploads\nNUXT_PUBLIC_LOCAL_STORAGE_BASE_URL=/uploads\n\n# 2. S3 兼容存储 (STORAGE_TYPE=s3, 适用于 R2, AWS S3, MinIO)\nS3_ENDPOINT=\nS3_BUCKET_NAME=\nS3_REGION=auto\nS3_ACCESS_KEY_ID=\nS3_SECRET_ACCESS_KEY=\nS3_BASE_URL=\n\n# 3. Vercel Blob (STORAGE_TYPE=vercel_blob)\nBLOB_READ_WRITE_TOKEN=\n\n# 4. Cloudflare R2 专用配置 (也可通过 S3 变量配置)\n# CLOUDFLARE_R2_ACCOUNT_ID=\n# CLOUDFLARE_R2_ACCESS_KEY=\n# CLOUDFLARE_R2_SECRET_KEY=\n# CLOUDFLARE_R2_BUCKET=\n# CLOUDFLARE_R2_BASE_URL=\n\n# 文件大小限制调节 (可选)\n# NUXT_PUBLIC_MAX_UPLOAD_SIZE=4.5MiB\n# NUXT_PUBLIC_MAX_AUDIO_UPLOAD_SIZE=100MiB\n# LOCAL_STORAGE_MIN_FREE_SPACE=100MiB\n\n# ------------------------------------------\n# 7.1 listmonk Newsletter 分发\n# ------------------------------------------\n\nLISTMONK_ENABLED=false\nLISTMONK_INSTANCE_URL=\nLISTMONK_USERNAME=\nLISTMONK_ACCESS_TOKEN=\nLISTMONK_DEFAULT_LIST_IDS=\n# JSON 示例: {\"backend\":[3],\"frontend\":[4]}\nLISTMONK_CATEGORY_LIST_MAP=\n# JSON 示例: {\"nuxt\":[5],\"newsletter\":[6]}\nLISTMONK_TAG_LIST_MAP=\nLISTMONK_TEMPLATE_ID=\n\n# Hexo 风格文章仓库同步(GitHub / Gitee)\nHEXO_SYNC_ENABLED=false\n# 支持 github / gitee\nHEXO_SYNC_PROVIDER=github\nHEXO_SYNC_OWNER=\nHEXO_SYNC_REPO=\nHEXO_SYNC_BRANCH=main\nHEXO_SYNC_POSTS_DIR=source/_posts\n# 仅服务端读取,不进入后台数据库\nHEXO_SYNC_ACCESS_TOKEN=\n\n# ------------------------------------------\n# 8. 运维、监控与自动化 (Operations)\n# ------------------------------------------\n\n# 管理员用户 ID 列表 (逗号分隔,注册后在此提权)\nADMIN_USER_IDS=\n\n# Vercel Cron 专用鉴权密钥\n# Vercel 会自动以 Authorization: Bearer <CRON_SECRET> 触发定时任务端点\nCRON_SECRET=\n\n# 定时任务鉴权令牌 (用于手动触发 Scheduled Tasks Webhook / 旧版集成)\nTASKS_TOKEN=\n\n# Webhook HMAC 签名密钥 (推荐独立配置,默认使用 TASKS_TOKEN)\n# 用于外部调度器 / GitHub Actions / Cloudflare / Serverless 等场景的 HMAC 验签\nWEBHOOK_SECRET=\n\n# 自部署环境 Cron 表达式 (默认每 5 分钟执行一次)\n# 仅在非 Serverless 环境中生效\n# TASK_CRON_EXPRESSION=*/5 * * * *\n\n# 显式禁用自部署环境 Cron\n# DISABLE_CRON_JOB=false\n\n# Webhook 时间戳容差 (毫秒)\n# 说明:当前版本预留该变量名,Webhook 校验默认固定 5 分钟容差\n# WEBHOOK_TIMESTAMP_TOLERANCE=300000\n\n# Sentry 异常监控\nNUXT_PUBLIC_SENTRY_DSN=\nNUXT_PUBLIC_SENTRY_ENVIRONMENT=production\n\n# 站长流量统计 (填入对应统计 ID)\nNUXT_PUBLIC_BAIDU_ANALYTICS_ID=\nNUXT_PUBLIC_GOOGLE_ANALYTICS_ID=\nNUXT_PUBLIC_CLARITY_PROJECT_ID=\n\n# 站点验证标签 (可选)\n# NUXT_PUBLIC_GOOGLE_SITE_VERIFICATION=\n# NUXT_PUBLIC_BING_SITE_VERIFICATION=\n\n# ------------------------------------------\n# 9. 视觉特效与内容组件 (Features)\n# ------------------------------------------\n\n# 站点元数据\nNUXT_PUBLIC_SITE_LOGO=\nNUXT_PUBLIC_SITE_FAVICON=\nNUXT_PUBLIC_SITE_OPERATOR=\nNUXT_PUBLIC_CONTACT_EMAIL=admin@example.com\n\n# 主题系统默认值 (可选,仅在未通过后台配置覆盖时生效)\n# THEME_PRESET=\n# THEME_PRIMARY_COLOR=\n# THEME_ACCENT_COLOR=\n# THEME_SURFACE_COLOR=\n# THEME_TEXT_COLOR=\n# THEME_DARK_PRIMARY_COLOR=\n# THEME_DARK_ACCENT_COLOR=\n# THEME_DARK_SURFACE_COLOR=\n# THEME_DARK_TEXT_COLOR=\n# THEME_BORDER_RADIUS=\n# THEME_MOURNING_MODE=false\n# THEME_BACKGROUND_TYPE=\n# THEME_BACKGROUND_VALUE=\n\n# 验证码集成 (提供商: cloudflare-turnstile, google-recaptcha, hcaptcha, captchafox)\nENABLE_CAPTCHA=false\nNUXT_PUBLIC_AUTH_CAPTCHA_PROVIDER=\nNUXT_PUBLIC_AUTH_CAPTCHA_SITE_KEY=\nAUTH_CAPTCHA_SECRET_KEY=\n\n# 评论审核与风控\nENABLE_COMMENT_REVIEW=false\n# 关键词黑名单 (英文逗号分隔)\nBLACKLISTED_KEYWORDS=\n\n# 页脚自定义注入代码\nNUXT_PUBLIC_FOOTER_CODE=\n\n# 动态视觉特效控制\nNUXT_PUBLIC_LIVE2D_ENABLED=false\n# NUXT_PUBLIC_LIVE2D_SCRIPT_URL=https://unpkg.com/live2d-widgets@1.0.0/dist/\n# NUXT_PUBLIC_LIVE2D_MODEL_URL=\n# NUXT_PUBLIC_LIVE2D_OPTIONS_JSON={}\n# NUXT_PUBLIC_LIVE2D_MOBILE_ENABLED=false\n# NUXT_PUBLIC_LIVE2D_MIN_WIDTH=1024\n# NUXT_PUBLIC_LIVE2D_DATA_SAVER_BLOCK=true\nNUXT_PUBLIC_CANVAS_NEST_ENABLED=false\n# NUXT_PUBLIC_CANVAS_NEST_OPTIONS_JSON={}\n# NUXT_PUBLIC_CANVAS_NEST_MOBILE_ENABLED=false\n# NUXT_PUBLIC_CANVAS_NEST_MIN_WIDTH=1024\n# NUXT_PUBLIC_CANVAS_NEST_DATA_SAVER_BLOCK=true\n# 全局性能卫兵:是否允许移动端加载特效\nNUXT_PUBLIC_EFFECTS_MOBILE_ENABLED=false\n# NUXT_PUBLIC_EFFECTS_MIN_WIDTH=768\n# NUXT_PUBLIC_EFFECTS_DATA_SAVER_BLOCK=true\n\n# 公开限制项 (可选,会同步给前端)\n# NUXT_PUBLIC_ALLOWED_FILE_TYPES=image/jpeg,image/png,image/webp,image/gif\n# NUXT_PUBLIC_COMMENT_INTERVAL=60\n# NUXT_PUBLIC_POSTS_PER_PAGE=10\n\n# 上传限流 (可选)\n# UPLOAD_DAILY_LIMIT=100\n# UPLOAD_SINGLE_USER_DAILY_LIMIT=20\n# UPLOAD_LIMIT_WINDOW=86400\n\n# ------------------------------------------\n# 10. 合规与外部资源安全 (Compliance & Security)\n# ------------------------------------------\n\n# 中国大陆备案信息显示\nNUXT_PUBLIC_SHOW_COMPLIANCE_INFO=false\nNUXT_PUBLIC_ICP_LICENSE_NUMBER=\nNUXT_PUBLIC_PUBLIC_SECURITY_NUMBER=\n\n# 安全:外部资源域名白名单 (逗号分隔,防止某些代理环境下图片加载失败)\nNUXT_PUBLIC_SECURITY_URL_WHITELIST=\n\n# Hugging Face 镜像代理地址 (用于部署在大陆环境时拉取资源)\nNUXT_PUBLIC_HF_PROXY=https://huggingface.co\n\n# ------------------------------------------\n# 11. 商业化与第三方平台集成 (Commercial & Third-party)\n# ------------------------------------------\n\n# 全局商业化默认配置 (JSON 字符串)\n# 仅当需要通过环境变量锁定全局社交/打赏配置时使用\n# COMMERCIAL_SPONSORSHIP_JSON={\"enabled\":true,\"donationLinks\":[],\"socialLinks\":[]}\n\n# Memos 生活流同步\nMEMOS_ENABLED=false\nMEMOS_INSTANCE_URL=\nMEMOS_ACCESS_TOKEN=\nMEMOS_DEFAULT_VISIBILITY=PRIVATE\n\n# ------------------------------------------\n# 12. 日志、调试与 Demo 模式 (Logging & Debug)\n# ------------------------------------------\n\n# 日志输出等级 (silly, debug, http, info, warn, error)\nLOG_LEVEL=info\n# 是否开启文件日志记录 (默认 false,Serverless 环境必须设为 false)\nLOGFILES=false\n# LOG_DIR=logs\n\n# Axiom 日志集成\n# AXIOM_DATASET_NAME=\n# AXIOM_API_TOKEN=\n\n# 演示模式 (内存 DB 运行,限制写操作)\nNUXT_PUBLIC_DEMO_MODE=false\n# NUXT_PUBLIC_DEMO_USER_EMAIL=admin@example.com\n# NUXT_PUBLIC_DEMO_PASSWORD=momei123456\n\n# 安装锁定标志(系统首次运行后会自动生成/读取,通常建议初始化后手动修改为 true 并重启系统)\n# MOMEI_INSTALLED=true\n"}, "02b75115fad41f25ba25d23f6a559eed20a1ad61": {"t": 1785749534.930319, "n": 10789, "h": "a1db426e2d9eb0b9", "c": "# ==========================================\n# 墨梅博客 (Momei) 环境变量完整示例文件\n# ==========================================\n\n# ------------------------------------------\n# 1. 基础核心配置 (Essential)\n# ------------------------------------------\n\n# 应用名称\nNUXT_PUBLIC_APP_NAME=墨梅博客\n\n# 站点 SEO 描述\nNUXT_PUBLIC_SITE_DESCRIPTION=一个基于 Nuxt 4 构建的现代化 AI 驱动博客平台\n\n# 站点 SEO 关键词 (逗号分隔)\nNUXT_PUBLIC_SITE_KEYWORDS=Nuxt,Vue,Blog,AI,TypeScript\n\n# 默认文章版权协议类型 (例如 all-rights-reserved, cc-by-nc-sa)\nNUXT_PUBLIC_POST_COPYRIGHT=all-rights-reserved\n\n# 站点版权展示信息 (用于页脚版权行)\nNUXT_PUBLIC_SITE_COPYRIGHT_OWNER=XX博客版权所有\nNUXT_PUBLIC_SITE_COPYRIGHT_START_YEAR=2026\n\n# 兼容旧变量名,建议迁移到新的 POST_/SITE_ 命名\n# NUXT_PUBLIC_DEFAULT_COPYRIGHT=all-rights-reserved\n# NUXT_PUBLIC_FOOTER_COPYRIGHT_OWNER=\n# NUXT_PUBLIC_FOOTER_COPYRIGHT_START_YEAR=\n\n# 默认语言 (en-US, zh-CN)\nNUXT_PUBLIC_DEFAULT_LANGUAGE=zh-CN\n\n# 站点 URL(注意:公开访问的站点地址,用于 SEO 和 RSS 生成)\nNUXT_PUBLIC_SITE_URL=http://localhost:3000\n\n# Better Auth 的基础 URL(必需,用于认证回调重定向,推荐与 SITE_URL 一致)\nNUXT_PUBLIC_AUTH_BASE_URL=http://localhost:3000\n\n# 用于加密、签名和哈希的密钥。生产环境必须设置!\n# 可以使用 `openssl rand -hex 32` 生成。开发环境下会自动生成随机值。\nAUTH_SECRET=\n\n# 雪花算法机器 ID (0-1023),用于生成分布式唯一 ID。默认自动获取进程 PID 对 1024 取余\n# MACHINE_ID=\n\n# ------------------------------------------\n# 2. 数据库与高性能配置 (Database & Cache)\n# ------------------------------------------\n\n# 数据库连接 URL (支持 SQLite, MySQL, PostgreSQL)\n# 支持智能推断:\n# - SQLite (推荐): sqlite://database/momei.sqlite (或 file://database/momei.sqlite)\n# - MySQL: mysql://user:pass@host:3306/db\n# - PostgreSQL: postgres://user:pass@host:5432/db\n# 如果未配置,默认将使用本地 SQLite\nDATABASE_URL=sqlite://database/momei.sqlite\n\n# 手动指定数据库类型 (可选,通常由 URL 自动推断: sqlite, mysql, postgres)\n# DATABASE_TYPE=sqlite\n\n# SQLite 数据库路径 (兼容旧版,不推荐手动设置)\n# DATABASE_PATH=database/momei.sqlite\n\n# 是否自动同步数据库表结构 (生产环境建议固定为 false,仅手动控制迁移)\nDATABASE_SYNCHRONIZE=false\n\n# 数据库连接调节 (可选)\n# DATABASE_SSL=false\n# DATABASE_CHARSET=utf8_general_ci\n# DATABASE_TIMEZONE=local\n# DATABASE_ENTITY_PREFIX=momei_\n\n# Redis 连接地址 (可选,配置后将启用基于 Redis 的缓存或限流)\n# REDIS_URL=redis://localhost:6379\n\n# ------------------------------------------\n# 3. 认证与社交登录 (Authentication)\n# ------------------------------------------\n\n# 是否允许新用户注册\nALLOW_REGISTRATION=true\n\n# 是否启用匿名登录 (无需邮箱密码即可登录)\nANONYMOUS_LOGIN_ENABLED=false\n\n# GitHub 配置 (OAuth)\nNUXT_PUBLIC_GITHUB_CLIENT_ID=\nGITHUB_CLIENT_SECRET=\n\n# Google 配置 (OAuth)\nNUXT_PUBLIC_GOOGLE_CLIENT_ID=\nGOOGLE_CLIENT_SECRET=\n\n# ------------------------------------------\n# 4. AI 核心引擎 (AI Integration - Text & Image)\n# ------------------------------------------\n\n# 是否启用 AI 功能\nAI_ENABLED=true\n\n# 主 AI 提供商 (openai, anthropic, deepseek, doubao, siliconflow, gemini, volcengine)\nAI_PROVIDER=openai\n\n# AI API 密钥\nAI_API_KEY=\n\n# 默认模型名称 (如 gpt-4o, claude-3-5-sonnet, deepseek-chat)\nAI_MODEL=gpt-4o\n\n# API 代理端点 (可选,用于 OpenAI 兼容服务)\nAI_API_ENDPOINT=\n\n# AI 生成参数控制 (可选,默认内置优化值)\n# AI_MAX_TOKENS=2048\n# AI_TEMPERATURE=0.7\n# AI_MAX_CONTENT_LENGTH=50000\n# AI_CHUNK_SIZE=4000\n# AI_TEXT_DIRECT_RETURN_MAX_CHARS=1000\n# AI_TEXT_TASK_CHUNK_SIZE=4000\n# AI_TEXT_TASK_CONCURRENCY=3\n# AI 重任务超时(用于 TTS / ASR / 图片生成等耗时任务)\nAI_HEAVY_TASK_TIMEOUT=5m\n\n# Gemini 专用令牌 (如果 provider 为 gemini 且需要独立令牌鉴权)\n# GEMINI_API_TOKEN=\n\n# AI 图像生成配置\nAI_IMAGE_ENABLED=false\nAI_IMAGE_PROVIDER=openai\nAI_IMAGE_API_KEY=\nAI_IMAGE_MODEL=dall-e-3\nAI_IMAGE_ENDPOINT=\n\n# AI 配额治理 (可选,支持直接复用后台设置页导出的 JSON)\n# AI_QUOTA_ENABLED=false\n# AI_QUOTA_POLICIES=[{\"subjectType\":\"global\",\"subjectValue\":\"default\",\"scope\":\"all\",\"period\":\"day\",\"maxRequests\":100,\"maxQuotaUnits\":200,\"enabled\":true}]\n# AI_ALERT_THRESHOLDS={\"enabled\":true,\"quotaUsageRatios\":[0.5,0.8,1],\"costUsageRatios\":[0.8,1],\"failureBurst\":{\"enabled\":true,\"windowMinutes\":10,\"maxFailures\":3,\"categories\":[\"image\",\"asr\",\"tts\",\"podcast\"]},\"dedupeWindowMinutes\":1440,\"maxAlerts\":10}\n\n# ------------------------------------------\n# 5. AI 多模态音频 (ASR & TTS)\n# ------------------------------------------\n\n# ASR (语音识别) 配置\n# 是否启用 ASR 功能\nASR_ENABLED=false\n# ASR 提供商 (openai, siliconflow, volcengine)\nASR_PROVIDER=siliconflow\n# ASR 通用配置\nASR_API_KEY=\nASR_MODEL=FunAudioLLM/SenseVoiceSmall\nASR_ENDPOINT=\n\n# SiliconFlow ASR 专用配置 (可选,优先级高于通用 ASR_API_KEY / ASR_MODEL)\nASR_SILICONFLOW_API_KEY=\nASR_SILICONFLOW_MODEL=FunAudioLLM/SenseVoiceSmall\n\n# 火山引擎 ASR 专用配置 (可选,优先级高于通用 VOLCENGINE_* 配置)\nASR_VOLCENGINE_APP_ID=\nASR_VOLCENGINE_ACCESS_KEY=\nASR_VOLCENGINE_SECRET_KEY=\nASR_VOLCENGINE_CLUSTER_ID=volc.bigasr.sauc.duration\n\n# TTS (文本转语音) 配置\n# 是否启用 TTS 功能\nTTS_ENABLED=false\n# TTS 提供商 (openai, siliconflow, volcengine)\nTTS_PROVIDER=openai\n# TTS 通用配置 (默认复用 AI_API_KEY)\nTTS_API_KEY=\nTTS_ENDPOINT=\nTTS_DEFAULT_MODEL=tts-1\nTTS_DEFAULT_VOICE=alloy\n\n# --- 厂商专项凭据 (可被上述 ASR/TTS 引用) ---\n\n# 火山引擎 (豆包语音) 统一凭据\nVOLCENGINE_APP_ID=\nVOLCENGINE_ACCESS_KEY=\nVOLCENGINE_SECRET_KEY=\n\n# ------------------------------------------\n# 6. 邮件发送系统 (SMTP)\n# ------------------------------------------\n\n# SMTP 服务器地址\nEMAIL_HOST=\n# SMTP 端口\nEMAIL_PORT=587\n# 是否使用 SSL/TLS (默认 false 会尝试 STARTTLS)\nEMAIL_SECURE=false\nEMAIL_USER=\nEMAIL_PASS=\n# 默认邮件发送者 (格式示例: \"Momei Blog\" <admin@example.com>)\nEMAIL_FROM=\n# 是否要求邮箱验证码验证后才允许登录\nEMAIL_REQUIRE_VERIFICATION=false\n\n# 邮件限流与周期配置 (可选)\n# EMAIL_DAILY_LIMIT=100\n# EMAIL_SINGLE_USER_DAILY_LIMIT=5\n# EMAIL_LIMIT_WINDOW=86400\n# EMAIL_EXPIRES_IN=300\n\n# 临时邮箱域拦截配置 (可选)\n# TEMP_EMAIL_DOMAIN_NAME=example.com\n\n# ------------------------------------------\n# 7. 对象存储系统 (Storage & Upload)\n# ------------------------------------------\n\n# 存储引擎 (local, s3, r2, vercel_blob;兼容旧值 vercel-blob)\nSTORAGE_TYPE=local\n\n# 路径前缀(所有上传文件均会携带此目录前缀)\nBUCKET_PREFIX=momei/\n\n# 全局公共访问域名 / 对象前缀(可选,优先级高于驱动级 BaseURL/Prefix)\n# ASSET_PUBLIC_BASE_URL=https://cdn.example.com/assets\n# ASSET_OBJECT_PREFIX=momei-blog/\n\n# 1. 本地存储配置 (STORAGE_TYPE=local)\nLOCAL_STORAGE_DIR=public/uploads\nNUXT_PUBLIC_LOCAL_STORAGE_BASE_URL=/uploads\n\n# 2. S3 兼容存储 (STORAGE_TYPE=s3, 适用于 R2, AWS S3, MinIO)\nS3_ENDPOINT=\nS3_BUCKET_NAME=\nS3_REGION=auto\nS3_ACCESS_KEY_ID=\nS3_SECRET_ACCESS_KEY=\nS3_BASE_URL=\n\n# 3. Vercel Blob (STORAGE_TYPE=vercel_blob)\nBLOB_READ_WRITE_TOKEN=\n\n# 4. Cloudflare R2 专用配置 (也可通过 S3 变量配置)\n# CLOUDFLARE_R2_ACCOUNT_ID=\n# CLOUDFLARE_R2_ACCESS_KEY=\n# CLOUDFLARE_R2_SECRET_KEY=\n# CLOUDFLARE_R2_BUCKET=\n# CLOUDFLARE_R2_BASE_URL=\n\n# 文件大小限制调节 (可选)\n# NUXT_PUBLIC_MAX_UPLOAD_SIZE=4.5MiB\n# NUXT_PUBLIC_MAX_AUDIO_UPLOAD_SIZE=100MiB\n# LOCAL_STORAGE_MIN_FREE_SPACE=100MiB\n\n# ------------------------------------------\n# 7.1 listmonk Newsletter 分发\n# ------------------------------------------\n\nLISTMONK_ENABLED=false\nLISTMONK_INSTANCE_URL=\nLISTMONK_USERNAME=\nLISTMONK_ACCESS_TOKEN=\nLISTMONK_DEFAULT_LIST_IDS=\n# JSON 示例: {\"backend\":[3],\"frontend\":[4]}\nLISTMONK_CATEGORY_LIST_MAP=\n# JSON 示例: {\"nuxt\":[5],\"newsletter\":[6]}\nLISTMONK_TAG_LIST_MAP=\nLISTMONK_TEMPLATE_ID=\n\n# ------------------------------------------\n# 8. 运维、监控与自动化 (Operations)\n# ------------------------------------------\n\n# 管理员用户 ID 列表 (逗号分隔,注册后在此提权)\nADMIN_USER_IDS=\n\n# Vercel Cron 专用鉴权密钥\n# Vercel 会自动以 Authorization: Bearer <CRON_SECRET> 触发定时任务端点\nCRON_SECRET=\n\n# 定时任务鉴权令牌 (用于手动触发 Scheduled Tasks Webhook / 旧版集成)\nTASKS_TOKEN=\n\n# Webhook HMAC 签名密钥 (推荐独立配置,默认使用 TASKS_TOKEN)\n# 用于外部调度器 / GitHub Actions / Cloudflare / Serverless 等场景的 HMAC 验签\nWEBHOOK_SECRET=\n\n# 自部署环境 Cron 表达式 (默认每 5 分钟执行一次)\n# 仅在非 Serverless 环境中生效\n# TASK_CRON_EXPRESSION=*/5 * * * *\n\n# 显式禁用自部署环境 Cron\n# DISABLE_CRON_JOB=false\n\n# Webhook 时间戳容差 (毫秒)\n# 说明:当前版本预留该变量名,Webhook 校验默认固定 5 分钟容差\n# WEBHOOK_TIMESTAMP_TOLERANCE=300000\n\n# Sentry 异常监控\nNUXT_PUBLIC_SENTRY_DSN=\nNUXT_PUBLIC_SENTRY_ENVIRONMENT=production\n\n# 站长流量统计 (填入对应统计 ID)\nNUXT_PUBLIC_BAIDU_ANALYTICS_ID=\nNUXT_PUBLIC_GOOGLE_ANALYTICS_ID=\nNUXT_PUBLIC_CLARITY_PROJECT_ID=\n\n# 站点验证标签 (可选)\n# NUXT_PUBLIC_GOOGLE_SITE_VERIFICATION=\n# NUXT_PUBLIC_BING_SITE_VERIFICATION=\n\n# ------------------------------------------\n# 9. 视觉特效与内容组件 (Features)\n# ------------------------------------------\n\n# 站点元数据\nNUXT_PUBLIC_SITE_LOGO=\nNUXT_PUBLIC_SITE_FAVICON=\nNUXT_PUBLIC_SITE_OPERATOR=\nNUXT_PUBLIC_CONTACT_EMAIL=admin@example.com\n\n# 主题系统默认值 (可选,仅在未通过后台配置覆盖时生效)\n# THEME_PRESET=\n# THEME_PRIMARY_COLOR=\n# THEME_ACCENT_COLOR=\n# THEME_SURFACE_COLOR=\n# THEME_TEXT_COLOR=\n# THEME_DARK_PRIMARY_COLOR=\n# THEME_DARK_ACCENT_COLOR=\n# THEME_DARK_SURFACE_COLOR=\n# THEME_DARK_TEXT_COLOR=\n# THEME_BORDER_RADIUS=\n# THEME_MOURNING_MODE=false\n# THEME_BACKGROUND_TYPE=\n# THEME_BACKGROUND_VALUE=\n\n# 验证码集成 (提供商: cloudflare-turnstile, google-recaptcha, hcaptcha, captchafox)\nENABLE_CAPTCHA=false\nNUXT_PUBLIC_AUTH_CAPTCHA_PROVIDER=\nNUXT_PUBLIC_AUTH_CAPTCHA_SITE_KEY=\nAUTH_CAPTCHA_SECRET_KEY=\n\n# 评论审核与风控\nENABLE_COMMENT_REVIEW=false\n# 关键词黑名单 (英文逗号分隔)\nBLACKLISTED_KEYWORDS=\n\n# 页脚自定义注入代码\nNUXT_PUBLIC_FOOTER_CODE=\n\n# 动态视觉特效控制\nNUXT_PUBLIC_LIVE2D_ENABLED=false\n# NUXT_PUBLIC_LIVE2D_SCRIPT_URL=https://unpkg.com/live2d-widgets@1.0.0/dist/\n# NUXT_PUBLIC_LIVE2D_MODEL_URL=\n# NUXT_PUBLIC_LIVE2D_OPTIONS_JSON={}\n# NUXT_PUBLIC_LIVE2D_MOBILE_ENABLED=false\n# NUXT_PUBLIC_LIVE2D_MIN_WIDTH=1024\n# NUXT_PUBLIC_LIVE2D_DATA_SAVER_BLOCK=true\nNUXT_PUBLIC_CANVAS_NEST_ENABLED=false\n# NUXT_PUBLIC_CANVAS_NEST_OPTIONS_JSON={}\n# NUXT_PUBLIC_CANVAS_NEST_MOBILE_ENABLED=false\n# NUXT_PUBLIC_CANVAS_NEST_MIN_WIDTH=1024\n# NUXT_PUBLIC_CANVAS_NEST_DATA_SAVER_BLOCK=true\n# 全局性能卫兵:是否允许移动端加载特效\nNUXT_PUBLIC_EFFECTS_MOBILE_ENABLED=false\n# NUXT_PUBLIC_EFFECTS_MIN_WIDTH=768\n# NUXT_PUBLIC_EFFECTS_DATA_SAVER_BLOCK=true\n\n# 公开限制项 (可选,会同步给前端)\n# NUXT_PUBLIC_ALLOWED_FILE_TYPES=image/jpeg,image/png,image/webp,image/gif\n# NUXT_PUBLIC_COMMENT_INTERVAL=60\n# NUXT_PUBLIC_POSTS_PER_PAGE=10\n\n# 上传限流 (可选)\n# UPLOAD_DAILY_LIMIT=100\n# UPLOAD_SINGLE_USER_DAILY_LIMIT=20\n# UPLOAD_LIMIT_WINDOW=86400\n\n# ------------------------------------------\n# 10. 合规与外部资源安全 (Compliance & Security)\n# ------------------------------------------\n\n# 中国大陆备案信息显示\nNUXT_PUBLIC_SHOW_COMPLIANCE_INFO=false\nNUXT_PUBLIC_ICP_LICENSE_NUMBER=\nNUXT_PUBLIC_PUBLIC_SECURITY_NUMBER=\n\n# 安全:外部资源域名白名单 (逗号分隔,防止某些代理环境下图片加载失败)\nNUXT_PUBLIC_SECURITY_URL_WHITELIST=\n\n# Hugging Face 镜像代理地址 (用于部署在大陆环境时拉取资源)\nNUXT_PUBLIC_HF_PROXY=https://huggingface.co\n\n# ------------------------------------------\n# 11. 商业化与第三方平台集成 (Commercial & Third-party)\n# ------------------------------------------\n\n# 全局商业化默认配置 (JSON 字符串)\n# 仅当需要通过环境变量锁定全局社交/打赏配置时使用\n# COMMERCIAL_SPONSORSHIP_JSON={\"enabled\":true,\"donationLinks\":[],\"socialLinks\":[]}\n\n# Memos 生活流同步\nMEMOS_ENABLED=false\nMEMOS_INSTANCE_URL=\nMEMOS_ACCESS_TOKEN=\nMEMOS_DEFAULT_VISIBILITY=PRIVATE\n\n# ------------------------------------------\n# 12. 日志、调试与 Demo 模式 (Logging & Debug)\n# ------------------------------------------\n\n# 日志输出等级 (silly, debug, http, info, warn, error)\nLOG_LEVEL=info\n# 是否开启文件日志记录 (默认 false,Serverless 环境必须设为 false)\nLOGFILES=false\n# LOG_DIR=logs\n\n# Axiom 日志集成\n# AXIOM_DATASET_NAME=\n# AXIOM_API_TOKEN=\n\n# 演示模式 (内存 DB 运行,限制写操作)\nNUXT_PUBLIC_DEMO_MODE=false\n# NUXT_PUBLIC_DEMO_USER_EMAIL=admin@example.com\n# NUXT_PUBLIC_DEMO_PASSWORD=momei123456\n\n# 安装锁定标志(系统首次运行后会自动生成/读取,通常建议初始化后手动修改为 true 并重启系统)\n# MOMEI_INSTALLED=true\n"}, "c2247fee3767ffe66e3739a2bea20de314854360": {"t": 1785749536.052252, "n": 10397, "h": "3526e40e925bc988", "c": "# ==========================================\n# 墨梅博客 (Momei) 环境变量完整示例文件\n# ==========================================\n\n# ------------------------------------------\n# 1. 基础核心配置 (Essential)\n# ------------------------------------------\n\n# 应用名称\nNUXT_PUBLIC_APP_NAME=墨梅博客\n\n# 站点 SEO 描述\nNUXT_PUBLIC_SITE_DESCRIPTION=一个基于 Nuxt 4 构建的现代化 AI 驱动博客平台\n\n# 站点 SEO 关键词 (逗号分隔)\nNUXT_PUBLIC_SITE_KEYWORDS=Nuxt,Vue,Blog,AI,TypeScript\n\n# 默认文章版权协议类型 (例如 all-rights-reserved, cc-by-nc-sa)\nNUXT_PUBLIC_POST_COPYRIGHT=all-rights-reserved\n\n# 站点版权展示信息 (用于页脚版权行)\nNUXT_PUBLIC_SITE_COPYRIGHT_OWNER=XX博客版权所有\nNUXT_PUBLIC_SITE_COPYRIGHT_START_YEAR=2026\n\n# 兼容旧变量名,建议迁移到新的 POST_/SITE_ 命名\n# NUXT_PUBLIC_DEFAULT_COPYRIGHT=all-rights-reserved\n# NUXT_PUBLIC_FOOTER_COPYRIGHT_OWNER=\n# NUXT_PUBLIC_FOOTER_COPYRIGHT_START_YEAR=\n\n# 默认语言 (en-US, zh-CN)\nNUXT_PUBLIC_DEFAULT_LANGUAGE=zh-CN\n\n# 站点 URL(注意:公开访问的站点地址,用于 SEO 和 RSS 生成)\nNUXT_PUBLIC_SITE_URL=http://localhost:3000\n\n# Better Auth 的基础 URL(必需,用于认证回调重定向,推荐与 SITE_URL 一致)\nNUXT_PUBLIC_AUTH_BASE_URL=http://localhost:3000\n\n# 用于加密、签名和哈希的密钥。生产环境必须设置!\n# 可以使用 `openssl rand -hex 32` 生成。开发环境下会自动生成随机值。\nAUTH_SECRET=\n\n# 雪花算法机器 ID (0-1023),用于生成分布式唯一 ID。默认自动获取进程 PID 对 1024 取余\n# MACHINE_ID=\n\n# ------------------------------------------\n# 2. 数据库与高性能配置 (Database & Cache)\n# ------------------------------------------\n\n# 数据库连接 URL (支持 SQLite, MySQL, PostgreSQL)\n# 支持智能推断:\n# - SQLite (推荐): sqlite://database/momei.sqlite (或 file://database/momei.sqlite)\n# - MySQL: mysql://user:pass@host:3306/db\n# - PostgreSQL: postgres://user:pass@host:5432/db\n# 如果未配置,默认将使用本地 SQLite\nDATABASE_URL=sqlite://database/momei.sqlite\n\n# 手动指定数据库类型 (可选,通常由 URL 自动推断: sqlite, mysql, postgres)\n# DATABASE_TYPE=sqlite\n\n# SQLite 数据库路径 (兼容旧版,不推荐手动设置)\n# DATABASE_PATH=database/momei.sqlite\n\n# 是否自动同步数据库表结构 (生产环境建议固定为 false,仅手动控制迁移)\nDATABASE_SYNCHRONIZE=false\n\n# 数据库连接调节 (可选)\n# DATABASE_SSL=false\n# DATABASE_CHARSET=utf8_general_ci\n# DATABASE_TIMEZONE=local\n# DATABASE_ENTITY_PREFIX=momei_\n\n# Redis 连接地址 (可选,配置后将启用基于 Redis 的缓存或限流)\n# REDIS_URL=redis://localhost:6379\n\n# ------------------------------------------\n# 3. 认证与社交登录 (Authentication)\n# ------------------------------------------\n\n# 是否允许新用户注册\nALLOW_REGISTRATION=true\n\n# 是否启用匿名登录 (无需邮箱密码即可登录)\nANONYMOUS_LOGIN_ENABLED=false\n\n# GitHub 配置 (OAuth)\nNUXT_PUBLIC_GITHUB_CLIENT_ID=\nGITHUB_CLIENT_SECRET=\n\n# Google 配置 (OAuth)\nNUXT_PUBLIC_GOOGLE_CLIENT_ID=\nGOOGLE_CLIENT_SECRET=\n\n# ------------------------------------------\n# 4. AI 核心引擎 (AI Integration - Text & Image)\n# ------------------------------------------\n\n# 是否启用 AI 功能\nAI_ENABLED=true\n\n# 主 AI 提供商 (openai, anthropic, deepseek, doubao, siliconflow, gemini, volcengine)\nAI_PROVIDER=openai\n\n# AI API 密钥\nAI_API_KEY=\n\n# 默认模型名称 (如 gpt-4o, claude-3-5-sonnet, deepseek-chat)\nAI_MODEL=gpt-4o\n\n# API 代理端点 (可选,用于 OpenAI 兼容服务)\nAI_API_ENDPOINT=\n\n# AI 生成参数控制 (可选,默认内置优化值)\n# AI_MAX_TOKENS=2048\n# AI_TEMPERATURE=0.7\n# AI_MAX_CONTENT_LENGTH=50000\n# AI_CHUNK_SIZE=4000\n# AI_TEXT_DIRECT_RETURN_MAX_CHARS=1000\n# AI_TEXT_TASK_CHUNK_SIZE=4000\n# AI_TEXT_TASK_CONCURRENCY=3\n# AI 重任务超时(用于 TTS / ASR / 图片生成等耗时任务)\nAI_HEAVY_TASK_TIMEOUT=5m\n\n# Gemini 专用令牌 (如果 provider 为 gemini 且需要独立令牌鉴权)\n# GEMINI_API_TOKEN=\n\n# AI 图像生成配置\nAI_IMAGE_ENABLED=false\nAI_IMAGE_PROVIDER=openai\nAI_IMAGE_API_KEY=\nAI_IMAGE_MODEL=dall-e-3\nAI_IMAGE_ENDPOINT=\n\n# AI 配额治理 (可选,支持直接复用后台设置页导出的 JSON)\n# AI_QUOTA_ENABLED=false\n# AI_QUOTA_POLICIES=[{\"subjectType\":\"global\",\"subjectValue\":\"default\",\"scope\":\"all\",\"period\":\"day\",\"maxRequests\":100,\"maxQuotaUnits\":200,\"enabled\":true}]\n# AI_ALERT_THRESHOLDS={\"enabled\":true,\"quotaUsageRatios\":[0.5,0.8,1],\"costUsageRatios\":[0.8,1],\"failureBurst\":{\"enabled\":true,\"windowMinutes\":10,\"maxFailures\":3,\"categories\":[\"image\",\"asr\",\"tts\",\"podcast\"]},\"dedupeWindowMinutes\":1440,\"maxAlerts\":10}\n\n# ------------------------------------------\n# 5. AI 多模态音频 (ASR & TTS)\n# ------------------------------------------\n\n# ASR (语音识别) 配置\n# 是否启用 ASR 功能\nASR_ENABLED=false\n# ASR 提供商 (openai, siliconflow, volcengine)\nASR_PROVIDER=siliconflow\n# ASR 通用配置\nASR_API_KEY=\nASR_MODEL=FunAudioLLM/SenseVoiceSmall\nASR_ENDPOINT=\n\n# SiliconFlow ASR 专用配置 (可选,优先级高于通用 ASR_API_KEY / ASR_MODEL)\nASR_SILICONFLOW_API_KEY=\nASR_SILICONFLOW_MODEL=FunAudioLLM/SenseVoiceSmall\n\n# 火山引擎 ASR 专用配置 (可选,优先级高于通用 VOLCENGINE_* 配置)\nASR_VOLCENGINE_APP_ID=\nASR_VOLCENGINE_ACCESS_KEY=\nASR_VOLCENGINE_SECRET_KEY=\nASR_VOLCENGINE_CLUSTER_ID=volc.bigasr.sauc.duration\n\n# TTS (文本转语音) 配置\n# 是否启用 TTS 功能\nTTS_ENABLED=false\n# TTS 提供商 (openai, siliconflow, volcengine)\nTTS_PROVIDER=openai\n# TTS 通用配置 (默认复用 AI_API_KEY)\nTTS_API_KEY=\nTTS_ENDPOINT=\nTTS_DEFAULT_MODEL=tts-1\nTTS_DEFAULT_VOICE=alloy\n\n# --- 厂商专项凭据 (可被上述 ASR/TTS 引用) ---\n\n# 火山引擎 (豆包语音) 统一凭据\nVOLCENGINE_APP_ID=\nVOLCENGINE_ACCESS_KEY=\nVOLCENGINE_SECRET_KEY=\n\n# ------------------------------------------\n# 6. 邮件发送系统 (SMTP)\n# ------------------------------------------\n\n# SMTP 服务器地址\nEMAIL_HOST=\n# SMTP 端口\nEMAIL_PORT=587\n# 是否使用 SSL/TLS (默认 false 会尝试 STARTTLS)\nEMAIL_SECURE=false\nEMAIL_USER=\nEMAIL_PASS=\n# 默认邮件发送者 (格式示例: \"Momei Blog\" <admin@example.com>)\nEMAIL_FROM=\n# 是否要求邮箱验证码验证后才允许登录\nEMAIL_REQUIRE_VERIFICATION=false\n\n# 邮件限流与周期配置 (可选)\n# EMAIL_DAILY_LIMIT=100\n# EMAIL_SINGLE_USER_DAILY_LIMIT=5\n# EMAIL_LIMIT_WINDOW=86400\n# EMAIL_EXPIRES_IN=300\n\n# 临时邮箱域拦截配置 (可选)\n# TEMP_EMAIL_DOMAIN_NAME=example.com\n\n# ------------------------------------------\n# 7. 对象存储系统 (Storage & Upload)\n# ------------------------------------------\n\n# 存储引擎 (local, s3, r2, vercel_blob;兼容旧值 vercel-blob)\nSTORAGE_TYPE=local\n\n# 路径前缀(所有上传文件均会携带此目录前缀)\nBUCKET_PREFIX=momei/\n\n# 全局公共访问域名 / 对象前缀(可选,优先级高于驱动级 BaseURL/Prefix)\n# ASSET_PUBLIC_BASE_URL=https://cdn.example.com/assets\n# ASSET_OBJECT_PREFIX=momei-blog/\n\n# 1. 本地存储配置 (STORAGE_TYPE=local)\nLOCAL_STORAGE_DIR=public/uploads\nNUXT_PUBLIC_LOCAL_STORAGE_BASE_URL=/uploads\n\n# 2. S3 兼容存储 (STORAGE_TYPE=s3, 适用于 R2, AWS S3, MinIO)\nS3_ENDPOINT=\nS3_BUCKET_NAME=\nS3_REGION=auto\nS3_ACCESS_KEY_ID=\nS3_SECRET_ACCESS_KEY=\nS3_BASE_URL=\n\n# 3. Vercel Blob (STORAGE_TYPE=vercel_blob)\nBLOB_READ_WRITE_TOKEN=\n\n# 4. Cloudflare R2 专用配置 (也可通过 S3 变量配置)\n# CLOUDFLARE_R2_ACCOUNT_ID=\n# CLOUDFLARE_R2_ACCESS_KEY=\n# CLOUDFLARE_R2_SECRET_KEY=\n# CLOUDFLARE_R2_BUCKET=\n# CLOUDFLARE_R2_BASE_URL=\n\n# 文件大小限制调节 (可选)\n# NUXT_PUBLIC_MAX_UPLOAD_SIZE=4.5MiB\n# NUXT_PUBLIC_MAX_AUDIO_UPLOAD_SIZE=100MiB\n# LOCAL_STORAGE_MIN_FREE_SPACE=100MiB\n\n# ------------------------------------------\n# 8. 运维、监控与自动化 (Operations)\n# ------------------------------------------\n\n# 管理员用户 ID 列表 (逗号分隔,注册后在此提权)\nADMIN_USER_IDS=\n\n# Vercel Cron 专用鉴权密钥\n# Vercel 会自动以 Authorization: Bearer <CRON_SECRET> 触发定时任务端点\nCRON_SECRET=\n\n# 定时任务鉴权令牌 (用于手动触发 Scheduled Tasks Webhook / 旧版集成)\nTASKS_TOKEN=\n\n# Webhook HMAC 签名密钥 (推荐独立配置,默认使用 TASKS_TOKEN)\n# 用于外部调度器 / GitHub Actions / Cloudflare / Serverless 等场景的 HMAC 验签\nWEBHOOK_SECRET=\n\n# 自部署环境 Cron 表达式 (默认每 5 分钟执行一次)\n# 仅在非 Serverless 环境中生效\n# TASK_CRON_EXPRESSION=*/5 * * * *\n\n# 显式禁用自部署环境 Cron\n# DISABLE_CRON_JOB=false\n\n# Webhook 时间戳容差 (毫秒)\n# 说明:当前版本预留该变量名,Webhook 校验默认固定 5 分钟容差\n# WEBHOOK_TIMESTAMP_TOLERANCE=300000\n\n# Sentry 异常监控\nNUXT_PUBLIC_SENTRY_DSN=\nNUXT_PUBLIC_SENTRY_ENVIRONMENT=production\n\n# 站长流量统计 (填入对应统计 ID)\nNUXT_PUBLIC_BAIDU_ANALYTICS_ID=\nNUXT_PUBLIC_GOOGLE_ANALYTICS_ID=\nNUXT_PUBLIC_CLARITY_PROJECT_ID=\n\n# 站点验证标签 (可选)\n# NUXT_PUBLIC_GOOGLE_SITE_VERIFICATION=\n# NUXT_PUBLIC_BING_SITE_VERIFICATION=\n\n# ------------------------------------------\n# 9. 视觉特效与内容组件 (Features)\n# ------------------------------------------\n\n# 站点元数据\nNUXT_PUBLIC_SITE_LOGO=\nNUXT_PUBLIC_SITE_FAVICON=\nNUXT_PUBLIC_SITE_OPERATOR=\nNUXT_PUBLIC_CONTACT_EMAIL=admin@example.com\n\n# 主题系统默认值 (可选,仅在未通过后台配置覆盖时生效)\n# THEME_PRESET=\n# THEME_PRIMARY_COLOR=\n# THEME_ACCENT_COLOR=\n# THEME_SURFACE_COLOR=\n# THEME_TEXT_COLOR=\n# THEME_DARK_PRIMARY_COLOR=\n# THEME_DARK_ACCENT_COLOR=\n# THEME_DARK_SURFACE_COLOR=\n# THEME_DARK_TEXT_COLOR=\n# THEME_BORDER_RADIUS=\n# THEME_MOURNING_MODE=false\n# THEME_BACKGROUND_TYPE=\n# THEME_BACKGROUND_VALUE=\n\n# 验证码集成 (提供商: cloudflare-turnstile, google-recaptcha, hcaptcha, captchafox)\nENABLE_CAPTCHA=false\nNUXT_PUBLIC_AUTH_CAPTCHA_PROVIDER=\nNUXT_PUBLIC_AUTH_CAPTCHA_SITE_KEY=\nAUTH_CAPTCHA_SECRET_KEY=\n\n# 评论审核与风控\nENABLE_COMMENT_REVIEW=false\n# 关键词黑名单 (英文逗号分隔)\nBLACKLISTED_KEYWORDS=\n\n# 页脚自定义注入代码\nNUXT_PUBLIC_FOOTER_CODE=\n\n# 动态视觉特效控制\nNUXT_PUBLIC_LIVE2D_ENABLED=false\n# NUXT_PUBLIC_LIVE2D_SCRIPT_URL=https://unpkg.com/live2d-widgets@1.0.0/dist/\n# NUXT_PUBLIC_LIVE2D_MODEL_URL=\n# NUXT_PUBLIC_LIVE2D_OPTIONS_JSON={}\n# NUXT_PUBLIC_LIVE2D_MOBILE_ENABLED=false\n# NUXT_PUBLIC_LIVE2D_MIN_WIDTH=1024\n# NUXT_PUBLIC_LIVE2D_DATA_SAVER_BLOCK=true\nNUXT_PUBLIC_CANVAS_NEST_ENABLED=false\n# NUXT_PUBLIC_CANVAS_NEST_OPTIONS_JSON={}\n# NUXT_PUBLIC_CANVAS_NEST_MOBILE_ENABLED=false\n# NUXT_PUBLIC_CANVAS_NEST_MIN_WIDTH=1024\n# NUXT_PUBLIC_CANVAS_NEST_DATA_SAVER_BLOCK=true\n# 全局性能卫兵:是否允许移动端加载特效\nNUXT_PUBLIC_EFFECTS_MOBILE_ENABLED=false\n# NUXT_PUBLIC_EFFECTS_MIN_WIDTH=768\n# NUXT_PUBLIC_EFFECTS_DATA_SAVER_BLOCK=true\n\n# 公开限制项 (可选,会同步给前端)\n# NUXT_PUBLIC_ALLOWED_FILE_TYPES=image/jpeg,image/png,image/webp,image/gif\n# NUXT_PUBLIC_COMMENT_INTERVAL=60\n# NUXT_PUBLIC_POSTS_PER_PAGE=10\n\n# 上传限流 (可选)\n# UPLOAD_DAILY_LIMIT=100\n# UPLOAD_SINGLE_USER_DAILY_LIMIT=20\n# UPLOAD_LIMIT_WINDOW=86400\n\n# ------------------------------------------\n# 10. 合规与外部资源安全 (Compliance & Security)\n# ------------------------------------------\n\n# 中国大陆备案信息显示\nNUXT_PUBLIC_SHOW_COMPLIANCE_INFO=false\nNUXT_PUBLIC_ICP_LICENSE_NUMBER=\nNUXT_PUBLIC_PUBLIC_SECURITY_NUMBER=\n\n# 安全:外部资源域名白名单 (逗号分隔,防止某些代理环境下图片加载失败)\nNUXT_PUBLIC_SECURITY_URL_WHITELIST=\n\n# Hugging Face 镜像代理地址 (用于部署在大陆环境时拉取资源)\nNUXT_PUBLIC_HF_PROXY=https://huggingface.co\n\n# ------------------------------------------\n# 11. 商业化与第三方平台集成 (Commercial & Third-party)\n# ------------------------------------------\n\n# 全局商业化默认配置 (JSON 字符串)\n# 仅当需要通过环境变量锁定全局社交/打赏配置时使用\n# COMMERCIAL_SPONSORSHIP_JSON={\"enabled\":true,\"donationLinks\":[],\"socialLinks\":[]}\n\n# Memos 生活流同步\nMEMOS_ENABLED=false\nMEMOS_INSTANCE_URL=\nMEMOS_ACCESS_TOKEN=\nMEMOS_DEFAULT_VISIBILITY=PRIVATE\n\n# ------------------------------------------\n# 12. 日志、调试与 Demo 模式 (Logging & Debug)\n# ------------------------------------------\n\n# 日志输出等级 (silly, debug, http, info, warn, error)\nLOG_LEVEL=info\n# 是否开启文件日志记录 (默认 false,Serverless 环境必须设为 false)\nLOGFILES=false\n# LOG_DIR=logs\n\n# Axiom 日志集成\n# AXIOM_DATASET_NAME=\n# AXIOM_API_TOKEN=\n\n# 演示模式 (内存 DB 运行,限制写操作)\nNUXT_PUBLIC_DEMO_MODE=false\n# NUXT_PUBLIC_DEMO_USER_EMAIL=admin@example.com\n# NUXT_PUBLIC_DEMO_PASSWORD=momei123456\n\n# 安装锁定标志(系统首次运行后会自动生成/读取,通常建议初始化后手动修改为 true 并重启系统)\n# MOMEI_INSTALLED=true\n"}, "25b0ba83ddd5dfed52235e3f93a99d828f08577e": {"t": 1785749537.1767893, "n": 10125, "h": "7a3ef608fece0a10", "c": "# ==========================================\n# 墨梅博客 (Momei) 环境变量完整示例文件\n# ==========================================\n\n# ------------------------------------------\n# 1. 基础核心配置 (Essential)\n# ------------------------------------------\n\n# 应用名称\nNUXT_PUBLIC_APP_NAME=墨梅博客\n\n# 站点 SEO 描述\nNUXT_PUBLIC_SITE_DESCRIPTION=一个基于 Nuxt 4 构建的现代化 AI 驱动博客平台\n\n# 站点 SEO 关键词 (逗号分隔)\nNUXT_PUBLIC_SITE_KEYWORDS=Nuxt,Vue,Blog,AI,TypeScript\n\n# 默认版权声明类型 (例如 all-rights-reserved, cc-by-nc-sa)\nNUXT_PUBLIC_DEFAULT_COPYRIGHT=all-rights-reserved\n\n# 默认语言 (en-US, zh-CN)\nNUXT_PUBLIC_DEFAULT_LANGUAGE=zh-CN\n\n# 站点 URL(注意:公开访问的站点地址,用于 SEO 和 RSS 生成)\nNUXT_PUBLIC_SITE_URL=http://localhost:3000\n\n# Better Auth 的基础 URL(必需,用于认证回调重定向,推荐与 SITE_URL 一致)\nNUXT_PUBLIC_AUTH_BASE_URL=http://localhost:3000\n\n# 用于加密、签名和哈希的密钥。生产环境必须设置!\n# 可以使用 `openssl rand -hex 32` 生成。开发环境下会自动生成随机值。\nAUTH_SECRET=\n\n# 雪花算法机器 ID (0-1023),用于生成分布式唯一 ID。默认自动获取进程 PID 对 1024 取余\n# MACHINE_ID=\n\n# ------------------------------------------\n# 2. 数据库与高性能配置 (Database & Cache)\n# ------------------------------------------\n\n# 数据库连接 URL (支持 SQLite, MySQL, PostgreSQL)\n# 支持智能推断:\n# - SQLite (推荐): sqlite://database/momei.sqlite (或 file://database/momei.sqlite)\n# - MySQL: mysql://user:pass@host:3306/db\n# - PostgreSQL: postgres://user:pass@host:5432/db\n# 如果未配置,默认将使用本地 SQLite\nDATABASE_URL=sqlite://database/momei.sqlite\n\n# 手动指定数据库类型 (可选,通常由 URL 自动推断: sqlite, mysql, postgres)\n# DATABASE_TYPE=sqlite\n\n# SQLite 数据库路径 (兼容旧版,不推荐手动设置)\n# DATABASE_PATH=database/momei.sqlite\n\n# 是否自动同步数据库表结构 (生产环境建议固定为 false,仅手动控制迁移)\nDATABASE_SYNCHRONIZE=false\n\n# 数据库连接调节 (可选)\n# DATABASE_SSL=false\n# DATABASE_CHARSET=utf8_general_ci\n# DATABASE_TIMEZONE=local\n# DATABASE_ENTITY_PREFIX=momei_\n\n# Redis 连接地址 (可选,配置后将启用基于 Redis 的缓存或限流)\n# REDIS_URL=redis://localhost:6379\n\n# ------------------------------------------\n# 3. 认证与社交登录 (Authentication)\n# ------------------------------------------\n\n# 是否允许新用户注册\nALLOW_REGISTRATION=true\n\n# 是否启用匿名登录 (无需邮箱密码即可登录)\nANONYMOUS_LOGIN_ENABLED=false\n\n# GitHub 配置 (OAuth)\nNUXT_PUBLIC_GITHUB_CLIENT_ID=\nGITHUB_CLIENT_SECRET=\n\n# Google 配置 (OAuth)\nNUXT_PUBLIC_GOOGLE_CLIENT_ID=\nGOOGLE_CLIENT_SECRET=\n\n# ------------------------------------------\n# 4. AI 核心引擎 (AI Integration - Text & Image)\n# ------------------------------------------\n\n# 是否启用 AI 功能\nAI_ENABLED=true\n\n# 主 AI 提供商 (openai, anthropic, deepseek, doubao, siliconflow, gemini, volcengine)\nAI_PROVIDER=openai\n\n# AI API 密钥\nAI_API_KEY=\n\n# 默认模型名称 (如 gpt-4o, claude-3-5-sonnet, deepseek-chat)\nAI_MODEL=gpt-4o\n\n# API 代理端点 (可选,用于 OpenAI 兼容服务)\nAI_API_ENDPOINT=\n\n# AI 生成参数控制 (可选,默认内置优化值)\n# AI_MAX_TOKENS=2048\n# AI_TEMPERATURE=0.7\n# AI_MAX_CONTENT_LENGTH=50000\n# AI_CHUNK_SIZE=4000\n# AI_TEXT_DIRECT_RETURN_MAX_CHARS=1000\n# AI_TEXT_TASK_CHUNK_SIZE=4000\n# AI_TEXT_TASK_CONCURRENCY=3\n# AI 重任务超时(用于 TTS / ASR / 图片生成等耗时任务)\nAI_HEAVY_TASK_TIMEOUT=5m\n\n# Gemini 专用令牌 (如果 provider 为 gemini 且需要独立令牌鉴权)\n# GEMINI_API_TOKEN=\n\n# AI 图像生成配置\nAI_IMAGE_ENABLED=false\nAI_IMAGE_PROVIDER=openai\nAI_IMAGE_API_KEY=\nAI_IMAGE_MODEL=dall-e-3\nAI_IMAGE_ENDPOINT=\n\n# AI 配额治理 (可选,支持直接复用后台设置页导出的 JSON)\n# AI_QUOTA_ENABLED=false\n# AI_QUOTA_POLICIES=[{\"subjectType\":\"global\",\"subjectValue\":\"default\",\"scope\":\"all\",\"period\":\"day\",\"maxRequests\":100,\"maxQuotaUnits\":200,\"enabled\":true}]\n# AI_ALERT_THRESHOLDS={\"enabled\":true,\"quotaUsageRatios\":[0.5,0.8,1],\"costUsageRatios\":[0.8,1],\"failureBurst\":{\"enabled\":true,\"windowMinutes\":10,\"maxFailures\":3,\"categories\":[\"image\",\"asr\",\"tts\",\"podcast\"]},\"dedupeWindowMinutes\":1440,\"maxAlerts\":10}\n\n# ------------------------------------------\n# 5. AI 多模态音频 (ASR & TTS)\n# ------------------------------------------\n\n# ASR (语音识别) 配置\n# 是否启用 ASR 功能\nASR_ENABLED=false\n# ASR 提供商 (openai, siliconflow, volcengine)\nASR_PROVIDER=siliconflow\n# ASR 通用配置\nASR_API_KEY=\nASR_MODEL=FunAudioLLM/SenseVoiceSmall\nASR_ENDPOINT=\n\n# SiliconFlow ASR 专用配置 (可选,优先级高于通用 ASR_API_KEY / ASR_MODEL)\nASR_SILICONFLOW_API_KEY=\nASR_SILICONFLOW_MODEL=FunAudioLLM/SenseVoiceSmall\n\n# 火山引擎 ASR 专用配置 (可选,优先级高于通用 VOLCENGINE_* 配置)\nASR_VOLCENGINE_APP_ID=\nASR_VOLCENGINE_ACCESS_KEY=\nASR_VOLCENGINE_SECRET_KEY=\nASR_VOLCENGINE_CLUSTER_ID=volc.bigasr.sauc.duration\n\n# TTS (文本转语音) 配置\n# 是否启用 TTS 功能\nTTS_ENABLED=false\n# TTS 提供商 (openai, siliconflow, volcengine)\nTTS_PROVIDER=openai\n# TTS 通用配置 (默认复用 AI_API_KEY)\nTTS_API_KEY=\nTTS_ENDPOINT=\nTTS_DEFAULT_MODEL=tts-1\nTTS_DEFAULT_VOICE=alloy\n\n# --- 厂商专项凭据 (可被上述 ASR/TTS 引用) ---\n\n# 火山引擎 (豆包语音) 统一凭据\nVOLCENGINE_APP_ID=\nVOLCENGINE_ACCESS_KEY=\nVOLCENGINE_SECRET_KEY=\n\n# ------------------------------------------\n# 6. 邮件发送系统 (SMTP)\n# ------------------------------------------\n\n# SMTP 服务器地址\nEMAIL_HOST=\n# SMTP 端口\nEMAIL_PORT=587\n# 是否使用 SSL/TLS (默认 false 会尝试 STARTTLS)\nEMAIL_SECURE=false\nEMAIL_USER=\nEMAIL_PASS=\n# 默认邮件发送者 (格式示例: \"Momei Blog\" <admin@example.com>)\nEMAIL_FROM=\n# 是否要求邮箱验证码验证后才允许登录\nEMAIL_REQUIRE_VERIFICATION=false\n\n# 邮件限流与周期配置 (可选)\n# EMAIL_DAILY_LIMIT=100\n# EMAIL_SINGLE_USER_DAILY_LIMIT=5\n# EMAIL_LIMIT_WINDOW=86400\n# EMAIL_EXPIRES_IN=300\n\n# 临时邮箱域拦截配置 (可选)\n# TEMP_EMAIL_DOMAIN_NAME=example.com\n\n# ------------------------------------------\n# 7. 对象存储系统 (Storage & Upload)\n# ------------------------------------------\n\n# 存储引擎 (local, s3, r2, vercel_blob;兼容旧值 vercel-blob)\nSTORAGE_TYPE=local\n\n# 路径前缀(所有上传文件均会携带此目录前缀)\nBUCKET_PREFIX=momei/\n\n# 全局公共访问域名 / 对象前缀(可选,优先级高于驱动级 BaseURL/Prefix)\n# ASSET_PUBLIC_BASE_URL=https://cdn.example.com/assets\n# ASSET_OBJECT_PREFIX=momei-blog/\n\n# 1. 本地存储配置 (STORAGE_TYPE=local)\nLOCAL_STORAGE_DIR=public/uploads\nNUXT_PUBLIC_LOCAL_STORAGE_BASE_URL=/uploads\n\n# 2. S3 兼容存储 (STORAGE_TYPE=s3, 适用于 R2, AWS S3, MinIO)\nS3_ENDPOINT=\nS3_BUCKET_NAME=\nS3_REGION=auto\nS3_ACCESS_KEY_ID=\nS3_SECRET_ACCESS_KEY=\nS3_BASE_URL=\n\n# 3. Vercel Blob (STORAGE_TYPE=vercel_blob)\nBLOB_READ_WRITE_TOKEN=\n\n# 4. Cloudflare R2 专用配置 (也可通过 S3 变量配置)\n# CLOUDFLARE_R2_ACCOUNT_ID=\n# CLOUDFLARE_R2_ACCESS_KEY=\n# CLOUDFLARE_R2_SECRET_KEY=\n# CLOUDFLARE_R2_BUCKET=\n# CLOUDFLARE_R2_BASE_URL=\n\n# 文件大小限制调节 (可选)\n# NUXT_PUBLIC_MAX_UPLOAD_SIZE=4.5MiB\n# NUXT_PUBLIC_MAX_AUDIO_UPLOAD_SIZE=100MiB\n# LOCAL_STORAGE_MIN_FREE_SPACE=100MiB\n\n# ------------------------------------------\n# 8. 运维、监控与自动化 (Operations)\n# ------------------------------------------\n\n# 管理员用户 ID 列表 (逗号分隔,注册后在此提权)\nADMIN_USER_IDS=\n\n# Vercel Cron 专用鉴权密钥\n# Vercel 会自动以 Authorization: Bearer <CRON_SECRET> 触发定时任务端点\nCRON_SECRET=\n\n# 定时任务鉴权令牌 (用于手动触发 Scheduled Tasks Webhook / 旧版集成)\nTASKS_TOKEN=\n\n# Webhook HMAC 签名密钥 (推荐独立配置,默认使用 TASKS_TOKEN)\n# 用于外部调度器 / GitHub Actions / Cloudflare / Serverless 等场景的 HMAC 验签\nWEBHOOK_SECRET=\n\n# 自部署环境 Cron 表达式 (默认每 5 分钟执行一次)\n# 仅在非 Serverless 环境中生效\n# TASK_CRON_EXPRESSION=*/5 * * * *\n\n# 显式禁用自部署环境 Cron\n# DISABLE_CRON_JOB=false\n\n# Webhook 时间戳容差 (毫秒)\n# 说明:当前版本预留该变量名,Webhook 校验默认固定 5 分钟容差\n# WEBHOOK_TIMESTAMP_TOLERANCE=300000\n\n# Sentry 异常监控\nNUXT_PUBLIC_SENTRY_DSN=\nNUXT_PUBLIC_SENTRY_ENVIRONMENT=production\n\n# 站长流量统计 (填入对应统计 ID)\nNUXT_PUBLIC_BAIDU_ANALYTICS_ID=\nNUXT_PUBLIC_GOOGLE_ANALYTICS_ID=\nNUXT_PUBLIC_CLARITY_PROJECT_ID=\n\n# 站点验证标签 (可选)\n# NUXT_PUBLIC_GOOGLE_SITE_VERIFICATION=\n# NUXT_PUBLIC_BING_SITE_VERIFICATION=\n\n# ------------------------------------------\n# 9. 视觉特效与内容组件 (Features)\n# ------------------------------------------\n\n# 站点元数据\nNUXT_PUBLIC_SITE_LOGO=\nNUXT_PUBLIC_SITE_FAVICON=\nNUXT_PUBLIC_SITE_OPERATOR=\nNUXT_PUBLIC_CONTACT_EMAIL=admin@example.com\n\n# 主题系统默认值 (可选,仅在未通过后台配置覆盖时生效)\n# THEME_PRESET=\n# THEME_PRIMARY_COLOR=\n# THEME_ACCENT_COLOR=\n# THEME_SURFACE_COLOR=\n# THEME_TEXT_COLOR=\n# THEME_DARK_PRIMARY_COLOR=\n# THEME_DARK_ACCENT_COLOR=\n# THEME_DARK_SURFACE_COLOR=\n# THEME_DARK_TEXT_COLOR=\n# THEME_BORDER_RADIUS=\n# THEME_MOURNING_MODE=false\n# THEME_BACKGROUND_TYPE=\n# THEME_BACKGROUND_VALUE=\n\n# 验证码集成 (提供商: cloudflare-turnstile, google-recaptcha, hcaptcha, captchafox)\nENABLE_CAPTCHA=false\nNUXT_PUBLIC_AUTH_CAPTCHA_PROVIDER=\nNUXT_PUBLIC_AUTH_CAPTCHA_SITE_KEY=\nAUTH_CAPTCHA_SECRET_KEY=\n\n# 评论审核与风控\nENABLE_COMMENT_REVIEW=false\n# 关键词黑名单 (英文逗号分隔)\nBLACKLISTED_KEYWORDS=\n\n# 页脚自定义注入代码\nNUXT_PUBLIC_FOOTER_CODE=\n\n# 动态视觉特效控制\nNUXT_PUBLIC_LIVE2D_ENABLED=false\n# NUXT_PUBLIC_LIVE2D_SCRIPT_URL=https://unpkg.com/live2d-widgets@1.0.0/dist/\n# NUXT_PUBLIC_LIVE2D_MODEL_URL=\n# NUXT_PUBLIC_LIVE2D_OPTIONS_JSON={}\n# NUXT_PUBLIC_LIVE2D_MOBILE_ENABLED=false\n# NUXT_PUBLIC_LIVE2D_MIN_WIDTH=1024\n# NUXT_PUBLIC_LIVE2D_DATA_SAVER_BLOCK=true\nNUXT_PUBLIC_CANVAS_NEST_ENABLED=false\n# NUXT_PUBLIC_CANVAS_NEST_OPTIONS_JSON={}\n# NUXT_PUBLIC_CANVAS_NEST_MOBILE_ENABLED=false\n# NUXT_PUBLIC_CANVAS_NEST_MIN_WIDTH=1024\n# NUXT_PUBLIC_CANVAS_NEST_DATA_SAVER_BLOCK=true\n# 全局性能卫兵:是否允许移动端加载特效\nNUXT_PUBLIC_EFFECTS_MOBILE_ENABLED=false\n# NUXT_PUBLIC_EFFECTS_MIN_WIDTH=768\n# NUXT_PUBLIC_EFFECTS_DATA_SAVER_BLOCK=true\n\n# 公开限制项 (可选,会同步给前端)\n# NUXT_PUBLIC_ALLOWED_FILE_TYPES=image/jpeg,image/png,image/webp,image/gif\n# NUXT_PUBLIC_COMMENT_INTERVAL=60\n# NUXT_PUBLIC_POSTS_PER_PAGE=10\n\n# 上传限流 (可选)\n# UPLOAD_DAILY_LIMIT=100\n# UPLOAD_SINGLE_USER_DAILY_LIMIT=20\n# UPLOAD_LIMIT_WINDOW=86400\n\n# ------------------------------------------\n# 10. 合规与外部资源安全 (Compliance & Security)\n# ------------------------------------------\n\n# 中国大陆备案信息显示\nNUXT_PUBLIC_SHOW_COMPLIANCE_INFO=false\nNUXT_PUBLIC_ICP_LICENSE_NUMBER=\nNUXT_PUBLIC_PUBLIC_SECURITY_NUMBER=\n\n# 安全:外部资源域名白名单 (逗号分隔,防止某些代理环境下图片加载失败)\nNUXT_PUBLIC_SECURITY_URL_WHITELIST=\n\n# Hugging Face 镜像代理地址 (用于部署在大陆环境时拉取资源)\nNUXT_PUBLIC_HF_PROXY=https://huggingface.co\n\n# ------------------------------------------\n# 11. 商业化与第三方平台集成 (Commercial & Third-party)\n# ------------------------------------------\n\n# 全局商业化默认配置 (JSON 字符串)\n# 仅当需要通过环境变量锁定全局社交/打赏配置时使用\n# COMMERCIAL_SPONSORSHIP_JSON={\"enabled\":true,\"donationLinks\":[],\"socialLinks\":[]}\n\n# Memos 生活流同步\nMEMOS_ENABLED=false\nMEMOS_INSTANCE_URL=\nMEMOS_ACCESS_TOKEN=\nMEMOS_DEFAULT_VISIBILITY=PRIVATE\n\n# ------------------------------------------\n# 12. 日志、调试与 Demo 模式 (Logging & Debug)\n# ------------------------------------------\n\n# 日志输出等级 (silly, debug, http, info, warn, error)\nLOG_LEVEL=info\n# 是否开启文件日志记录 (默认 false,Serverless 环境必须设为 false)\nLOGFILES=false\n# LOG_DIR=logs\n\n# Axiom 日志集成\n# AXIOM_DATASET_NAME=\n# AXIOM_API_TOKEN=\n\n# 演示模式 (内存 DB 运行,限制写操作)\nNUXT_PUBLIC_DEMO_MODE=false\n# NUXT_PUBLIC_DEMO_USER_EMAIL=admin@example.com\n# NUXT_PUBLIC_DEMO_PASSWORD=momei123456\n\n# 安装锁定标志(系统首次运行后会自动生成/读取,通常建议初始化后手动修改为 true 并重启系统)\n# MOMEI_INSTALLED=true\n"}, "08d16b9308bb5dc9e1b16fc633dba0b0c0547c39": {"t": 1785749538.47244, "n": 10110, "h": "ae3e9c8e6921e49b", "c": "# ==========================================\n# 墨梅博客 (Momei) 环境变量完整示例文件\n# ==========================================\n\n# ------------------------------------------\n# 1. 基础核心配置 (Essential)\n# ------------------------------------------\n\n# 应用名称\nNUXT_PUBLIC_APP_NAME=墨梅博客\n\n# 站点 SEO 描述\nNUXT_PUBLIC_SITE_DESCRIPTION=一个基于 Nuxt 4 构建的现代化 AI 驱动博客平台\n\n# 站点 SEO 关键词 (逗号分隔)\nNUXT_PUBLIC_SITE_KEYWORDS=Nuxt,Vue,Blog,AI,TypeScript\n\n# 默认版权声明类型 (例如 all-rights-reserved, cc-by-nc-sa)\nNUXT_PUBLIC_DEFAULT_COPYRIGHT=all-rights-reserved\n\n# 默认语言 (en-US, zh-CN)\nNUXT_PUBLIC_DEFAULT_LANGUAGE=zh-CN\n\n# 站点 URL(注意:公开访问的站点地址,用于 SEO 和 RSS 生成)\nNUXT_PUBLIC_SITE_URL=http://localhost:3000\n\n# Better Auth 的基础 URL(必需,用于认证回调重定向,推荐与 SITE_URL 一致)\nNUXT_PUBLIC_AUTH_BASE_URL=http://localhost:3000\n\n# 用于加密、签名和哈希的密钥。生产环境必须设置!\n# 可以使用 `openssl rand -hex 32` 生成。开发环境下会自动生成随机值。\nAUTH_SECRET=\n\n# 雪花算法机器 ID (0-1023),用于生成分布式唯一 ID。默认自动获取进程 PID 对 1024 取余\n# MACHINE_ID=\n\n# ------------------------------------------\n# 2. 数据库与高性能配置 (Database & Cache)\n# ------------------------------------------\n\n# 数据库连接 URL (支持 SQLite, MySQL, PostgreSQL)\n# 支持智能推断:\n# - SQLite (推荐): sqlite://database/momei.sqlite (或 file://database/momei.sqlite)\n# - MySQL: mysql://user:pass@host:3306/db\n# - PostgreSQL: postgres://user:pass@host:5432/db\n# 如果未配置,默认将使用本地 SQLite\nDATABASE_URL=sqlite://database/momei.sqlite\n\n# 手动指定数据库类型 (可选,通常由 URL 自动推断: sqlite, mysql, postgres)\n# DATABASE_TYPE=sqlite\n\n# SQLite 数据库路径 (兼容旧版,不推荐手动设置)\n# DATABASE_PATH=database/momei.sqlite\n\n# 是否自动同步数据库表结构 (生产环境建议固定为 false,仅手动控制迁移)\nDATABASE_SYNCHRONIZE=false\n\n# 数据库连接调节 (可选)\n# DATABASE_SSL=false\n# DATABASE_CHARSET=utf8_general_ci\n# DATABASE_TIMEZONE=local\n# DATABASE_ENTITY_PREFIX=momei_\n\n# Redis 连接地址 (可选,配置后将启用基于 Redis 的缓存或限流)\n# REDIS_URL=redis://localhost:6379\n\n# ------------------------------------------\n# 3. 认证与社交登录 (Authentication)\n# ------------------------------------------\n\n# 是否允许新用户注册\nALLOW_REGISTRATION=true\n\n# 是否启用匿名登录 (无需邮箱密码即可登录)\nANONYMOUS_LOGIN_ENABLED=false\n\n# GitHub 配置 (OAuth)\nNUXT_PUBLIC_GITHUB_CLIENT_ID=\nGITHUB_CLIENT_SECRET=\n\n# Google 配置 (OAuth)\nNUXT_PUBLIC_GOOGLE_CLIENT_ID=\nGOOGLE_CLIENT_SECRET=\n\n# ------------------------------------------\n# 4. AI 核心引擎 (AI Integration - Text & Image)\n# ------------------------------------------\n\n# 是否启用 AI 功能\nAI_ENABLED=true\n\n# 主 AI 提供商 (openai, anthropic, deepseek, doubao, siliconflow, gemini, volcengine)\nAI_PROVIDER=openai\n\n# AI API 密钥\nAI_API_KEY=\n\n# 默认模型名称 (如 gpt-4o, claude-3-5-sonnet, deepseek-chat)\nAI_MODEL=gpt-4o\n\n# API 代理端点 (可选,用于 OpenAI 兼容服务)\nAI_API_ENDPOINT=\n\n# AI 生成参数控制 (可选,默认内置优化值)\n# AI_MAX_TOKENS=2048\n# AI_TEMPERATURE=0.7\n# AI_MAX_CONTENT_LENGTH=50000\n# AI_CHUNK_SIZE=4000\n# AI_TEXT_DIRECT_RETURN_MAX_CHARS=1000\n# AI_TEXT_TASK_CHUNK_SIZE=4000\n# AI_TEXT_TASK_CONCURRENCY=3\n# AI 重任务超时(用于 TTS / ASR / 图片生成等耗时任务)\nAI_HEAVY_TASK_TIMEOUT=5m\n\n# Gemini 专用令牌 (如果 provider 为 gemini 且需要独立令牌鉴权)\n# GEMINI_API_TOKEN=\n\n# AI 图像生成配置\nAI_IMAGE_ENABLED=false\nAI_IMAGE_PROVIDER=openai\nAI_IMAGE_API_KEY=\nAI_IMAGE_MODEL=dall-e-3\nAI_IMAGE_ENDPOINT=\n\n# AI 配额治理 (可选,支持直接复用后台设置页导出的 JSON)\n# AI_QUOTA_ENABLED=false\n# AI_QUOTA_POLICIES=[{\"subjectType\":\"global\",\"subjectValue\":\"default\",\"scope\":\"all\",\"period\":\"day\",\"maxRequests\":100,\"maxQuotaUnits\":200,\"enabled\":true}]\n# AI_ALERT_THRESHOLDS={\"enabled\":true,\"quotaUsageRatios\":[0.5,0.8,1],\"costUsageRatios\":[0.8,1],\"failureBurst\":{\"enabled\":true,\"windowMinutes\":10,\"maxFailures\":3,\"categories\":[\"image\",\"asr\",\"tts\",\"podcast\"]},\"dedupeWindowMinutes\":1440,\"maxAlerts\":10}\n\n# ------------------------------------------\n# 5. AI 多模态音频 (ASR & TTS)\n# ------------------------------------------\n\n# ASR (语音识别) 配置\n# 是否启用 ASR 功能\nASR_ENABLED=false\n# ASR 提供商 (openai, siliconflow, volcengine)\nASR_PROVIDER=siliconflow\n# ASR 通用配置\nASR_API_KEY=\nASR_MODEL=FunAudioLLM/SenseVoiceSmall\nASR_ENDPOINT=\n\n# SiliconFlow ASR 专用配置 (可选,优先级高于通用 ASR_API_KEY / ASR_MODEL)\nASR_SILICONFLOW_API_KEY=\nASR_SILICONFLOW_MODEL=FunAudioLLM/SenseVoiceSmall\n\n# 火山引擎 ASR 专用配置 (可选,优先级高于通用 VOLCENGINE_* 配置)\nASR_VOLCENGINE_APP_ID=\nASR_VOLCENGINE_ACCESS_KEY=\nASR_VOLCENGINE_SECRET_KEY=\nASR_VOLCENGINE_CLUSTER_ID=volc.bigasr.sauc.duration\n\n# TTS (文本转语音) 配置\n# 是否启用 TTS 功能\nTTS_ENABLED=false\n# TTS 提供商 (openai, siliconflow, volcengine)\nTTS_PROVIDER=openai\n# TTS 通用配置 (默认复用 AI_API_KEY)\nTTS_API_KEY=\nTTS_ENDPOINT=\nTTS_DEFAULT_MODEL=tts-1\nTTS_DEFAULT_VOICE=alloy\n\n# --- 厂商专项凭据 (可被上述 ASR/TTS 引用) ---\n\n# 火山引擎 (豆包语音) 统一凭据\nVOLCENGINE_APP_ID=\nVOLCENGINE_ACCESS_KEY=\nVOLCENGINE_SECRET_KEY=\n\n# ------------------------------------------\n# 6. 邮件发送系统 (SMTP)\n# ------------------------------------------\n\n# SMTP 服务器地址\nEMAIL_HOST=\n# SMTP 端口\nEMAIL_PORT=587\n# 是否使用 SSL/TLS (默认 false 会尝试 STARTTLS)\nEMAIL_SECURE=false\nEMAIL_USER=\nEMAIL_PASS=\n# 默认邮件发送者 (格式示例: \"Momei Blog\" <admin@example.com>)\nEMAIL_FROM=\n# 是否要求邮箱验证码验证后才允许登录\nEMAIL_REQUIRE_VERIFICATION=false\n\n# 邮件限流与周期配置 (可选)\n# EMAIL_DAILY_LIMIT=100\n# EMAIL_SINGLE_USER_DAILY_LIMIT=5\n# EMAIL_LIMIT_WINDOW=86400\n# EMAIL_EXPIRES_IN=300\n\n# 临时邮箱域拦截配置 (可选)\n# TEMP_EMAIL_DOMAIN_NAME=example.com\n\n# ------------------------------------------\n# 7. 对象存储系统 (Storage & Upload)\n# ------------------------------------------\n\n# 存储引擎 (local, s3, r2, vercel_blob;兼容旧值 vercel-blob)\nSTORAGE_TYPE=local\n\n# 路径前缀(所有上传文件均会携带此目录前缀)\nBUCKET_PREFIX=momei/\n\n# 全局公共访问域名 / 对象前缀(可选,优先级高于驱动级 BaseURL/Prefix)\n# ASSET_PUBLIC_BASE_URL=https://cdn.example.com/assets\n# ASSET_OBJECT_PREFIX=momei-blog/\n\n# 1. 本地存储配置 (STORAGE_TYPE=local)\nLOCAL_STORAGE_DIR=public/uploads\nNUXT_PUBLIC_LOCAL_STORAGE_BASE_URL=/uploads\n\n# 2. S3 兼容存储 (STORAGE_TYPE=s3, 适用于 R2, AWS S3, MinIO)\nS3_ENDPOINT=\nS3_BUCKET_NAME=\nS3_REGION=auto\nS3_ACCESS_KEY_ID=\nS3_SECRET_ACCESS_KEY=\nS3_BASE_URL=\n\n# 3. Vercel Blob (STORAGE_TYPE=vercel_blob)\nBLOB_READ_WRITE_TOKEN=\n\n# 4. Cloudflare R2 专用配置 (也可通过 S3 变量配置)\n# CLOUDFLARE_R2_ACCOUNT_ID=\n# CLOUDFLARE_R2_ACCESS_KEY=\n# CLOUDFLARE_R2_SECRET_KEY=\n# CLOUDFLARE_R2_BUCKET=\n# CLOUDFLARE_R2_BASE_URL=\n\n# 文件大小限制调节 (可选)\n# NUXT_PUBLIC_MAX_UPLOAD_SIZE=4.5MiB\n# NUXT_PUBLIC_MAX_AUDIO_UPLOAD_SIZE=100MiB\n# LOCAL_STORAGE_MIN_FREE_SPACE=100MiB\n\n# ------------------------------------------\n# 8. 运维、监控与自动化 (Operations)\n# ------------------------------------------\n\n# 管理员用户 ID 列表 (逗号分隔,注册后在此提权)\nADMIN_USER_IDS=\n\n# Vercel Cron 专用鉴权密钥\n# Vercel 会自动以 Authorization: Bearer <CRON_SECRET> 触发定时任务端点\nCRON_SECRET=\n\n# 定时任务鉴权令牌 (用于手动触发 Scheduled Tasks Webhook / 旧版集成)\nTASKS_TOKEN=\n\n# Webhook HMAC 签名密钥 (推荐独立配置,默认使用 TASKS_TOKEN)\n# 用于外部调度器 / GitHub Actions / Cloudflare / Serverless 等场景的 HMAC 验签\nWEBHOOK_SECRET=\n\n# 自部署环境 Cron 表达式 (默认每 5 分钟执行一次)\n# 仅在非 Serverless 环境中生效\n# TASK_CRON_EXPRESSION=*/5 * * * *\n\n# 显式禁用自部署环境 Cron\n# DISABLE_CRON_JOB=false\n\n# Webhook 时间戳容差 (毫秒)\n# 说明:当前版本预留该变量名,Webhook 校验默认固定 5 分钟容差\n# WEBHOOK_TIMESTAMP_TOLERANCE=300000\n\n# Sentry 异常监控\nNUXT_PUBLIC_SENTRY_DSN=\nNUXT_PUBLIC_SENTRY_ENVIRONMENT=production\n\n# 站长流量统计 (填入对应统计 ID)\nNUXT_PUBLIC_BAIDU_ANALYTICS_ID=\nNUXT_PUBLIC_GOOGLE_ANALYTICS_ID=\nNUXT_PUBLIC_CLARITY_PROJECT_ID=\n\n# 站点验证标签 (可选)\n# NUXT_PUBLIC_GOOGLE_SITE_VERIFICATION=\n# NUXT_PUBLIC_BING_SITE_VERIFICATION=\n\n# ------------------------------------------\n# 9. 视觉特效与内容组件 (Features)\n# ------------------------------------------\n\n# 站点元数据\nNUXT_PUBLIC_SITE_LOGO=\nNUXT_PUBLIC_SITE_FAVICON=\nNUXT_PUBLIC_SITE_OPERATOR=\nNUXT_PUBLIC_CONTACT_EMAIL=admin@example.com\n\n# 主题系统默认值 (可选,仅在未通过后台配置覆盖时生效)\n# THEME_PRESET=\n# THEME_PRIMARY_COLOR=\n# THEME_ACCENT_COLOR=\n# THEME_SURFACE_COLOR=\n# THEME_TEXT_COLOR=\n# THEME_DARK_PRIMARY_COLOR=\n# THEME_DARK_ACCENT_COLOR=\n# THEME_DARK_SURFACE_COLOR=\n# THEME_DARK_TEXT_COLOR=\n# THEME_BORDER_RADIUS=\n# THEME_MOURNING_MODE=false\n# THEME_BACKGROUND_TYPE=\n# THEME_BACKGROUND_VALUE=\n\n# 验证码集成 (提供商: cloudflare-turnstile, google-recaptcha, hcaptcha, captchafox)\nENABLE_CAPTCHA=false\nNUXT_PUBLIC_AUTH_CAPTCHA_PROVIDER=\nNUXT_PUBLIC_AUTH_CAPTCHA_SITE_KEY=\nAUTH_CAPTCHA_SECRET_KEY=\n\n# 评论审核与风控\nENABLE_COMMENT_REVIEW=false\n# 关键词黑名单 (英文逗号分隔)\nBLACKLISTED_KEYWORDS=\n\n# 页脚自定义注入代码\nNUXT_PUBLIC_FOOTER_CODE=\n\n# 动态视觉特效控制\nNUXT_PUBLIC_LIVE2D_ENABLED=false\n# NUXT_PUBLIC_LIVE2D_SCRIPT_URL=https://unpkg.com/live2d-widgets@1.0.0/dist/\n# NUXT_PUBLIC_LIVE2D_MODEL_URL=\n# NUXT_PUBLIC_LIVE2D_OPTIONS_JSON={}\n# NUXT_PUBLIC_LIVE2D_MOBILE_ENABLED=false\n# NUXT_PUBLIC_LIVE2D_MIN_WIDTH=1024\n# NUXT_PUBLIC_LIVE2D_DATA_SAVER_BLOCK=true\nNUXT_PUBLIC_CANVAS_NEST_ENABLED=false\n# NUXT_PUBLIC_CANVAS_NEST_OPTIONS_JSON={}\n# NUXT_PUBLIC_CANVAS_NEST_MOBILE_ENABLED=false\n# NUXT_PUBLIC_CANVAS_NEST_MIN_WIDTH=1024\n# NUXT_PUBLIC_CANVAS_NEST_DATA_SAVER_BLOCK=true\n# 全局性能卫兵:是否允许移动端加载特效\nNUXT_PUBLIC_EFFECTS_MOBILE_ENABLED=false\n# NUXT_PUBLIC_EFFECTS_MIN_WIDTH=768\n# NUXT_PUBLIC_EFFECTS_DATA_SAVER_BLOCK=true\n\n# 公开限制项 (可选,会同步给前端)\n# NUXT_PUBLIC_ALLOWED_FILE_TYPES=image/jpeg,image/png,image/webp,image/gif\n# NUXT_PUBLIC_COMMENT_INTERVAL=60\n# NUXT_PUBLIC_POSTS_PER_PAGE=10\n\n# 上传限流 (可选)\n# UPLOAD_DAILY_LIMIT=100\n# UPLOAD_SINGLE_USER_DAILY_LIMIT=20\n# UPLOAD_LIMIT_WINDOW=86400\n\n# ------------------------------------------\n# 10. 合规与外部资源安全 (Compliance & Security)\n# ------------------------------------------\n\n# 中国大陆备案信息显示\nNUXT_PUBLIC_SHOW_COMPLIANCE_INFO=false\nNUXT_PUBLIC_ICP_LICENSE_NUMBER=\nNUXT_PUBLIC_PUBLIC_SECURITY_NUMBER=\n\n# 安全:外部资源域名白名单 (逗号分隔,防止某些代理环境下图片加载失败)\nNUXT_PUBLIC_SECURITY_URL_WHITELIST=\n\n# Hugging Face 镜像代理地址 (用于部署在大陆环境时拉取资源)\nNUXT_PUBLIC_HF_PROXY=https://huggingface.co\n\n# ------------------------------------------\n# 11. 商业化与第三方平台集成 (Commercial & Third-party)\n# ------------------------------------------\n\n# 全局商业化默认配置 (JSON 字符串)\n# 仅当需要通过环境变量锁定全局社交/打赏配置时使用\n# COMMERCIAL_SPONSORSHIP_JSON={\"enabled\":true,\"donationLinks\":[],\"socialLinks\":[]}\n\n# Memos 生活流同步\nMEMOS_ENABLED=false\nMEMOS_INSTANCE_URL=\nMEMOS_ACCESS_TOKEN=\nMEMOS_DEFAULT_VISIBILITY=PRIVATE\n\n# ------------------------------------------\n# 12. 日志、调试与 Demo 模式 (Logging & Debug)\n# ------------------------------------------\n\n# 日志输出等级 (silly, debug, http, info, warn, error)\nLOG_LEVEL=info\n# 是否开启文件日志记录 (默认 false,Serverless 环境必须设为 false)\nLOGFILES=false\n# LOG_DIR=logs\n\n# Axiom 日志集成\n# AXIOM_DATASET_NAME=\n# AXIOM_API_TOKEN=\n\n# 演示模式 (内存 DB 运行,限制写操作)\nNUXT_PUBLIC_DEMO_MODE=false\n# NUXT_PUBLIC_DEMO_USER_EMAIL=admin@example.com\n# NUXT_PUBLIC_DEMO_PASSWORD=momei123456\n\n# 安装锁定标志(系统首次运行后会自动生成/读取,通常不建议手动修改)\n# MOMEI_INSTALLED=true\n"}, "c4885084bdeaa659997bbd3de7b95330c66933a1": {"t": 1785749539.5614522, "n": 9996, "h": "21345b0069ce3b33", "c": "# ==========================================\n# 墨梅博客 (Momei) 环境变量完整示例文件\n# ==========================================\n\n# ------------------------------------------\n# 1. 基础核心配置 (Essential)\n# ------------------------------------------\n\n# 应用名称\nNUXT_PUBLIC_APP_NAME=墨梅博客\n\n# 站点 SEO 描述\nNUXT_PUBLIC_SITE_DESCRIPTION=一个基于 Nuxt 4 构建的现代化 AI 驱动博客平台\n\n# 站点 SEO 关键词 (逗号分隔)\nNUXT_PUBLIC_SITE_KEYWORDS=Nuxt,Vue,Blog,AI,TypeScript\n\n# 默认版权声明类型 (例如 all-rights-reserved, cc-by-nc-sa)\nNUXT_PUBLIC_DEFAULT_COPYRIGHT=all-rights-reserved\n\n# 默认语言 (en-US, zh-CN)\nNUXT_PUBLIC_DEFAULT_LANGUAGE=zh-CN\n\n# 站点 URL(注意:公开访问的站点地址,用于 SEO 和 RSS 生成)\nNUXT_PUBLIC_SITE_URL=http://localhost:3000\n\n# Better Auth 的基础 URL(必需,用于认证回调重定向,推荐与 SITE_URL 一致)\nNUXT_PUBLIC_AUTH_BASE_URL=http://localhost:3000\n\n# 用于加密、签名和哈希的密钥。生产环境必须设置!\n# 可以使用 `openssl rand -hex 32` 生成。开发环境下会自动生成随机值。\nAUTH_SECRET=\n\n# 雪花算法机器 ID (0-1023),用于生成分布式唯一 ID。默认自动获取进程 PID 对 1024 取余\n# MACHINE_ID=\n\n# ------------------------------------------\n# 2. 数据库与高性能配置 (Database & Cache)\n# ------------------------------------------\n\n# 数据库连接 URL (支持 SQLite, MySQL, PostgreSQL)\n# 支持智能推断:\n# - SQLite (推荐): sqlite://database/momei.sqlite (或 file://database/momei.sqlite)\n# - MySQL: mysql://user:pass@host:3306/db\n# - PostgreSQL: postgres://user:pass@host:5432/db\n# 如果未配置,默认将使用本地 SQLite\nDATABASE_URL=sqlite://database/momei.sqlite\n\n# 手动指定数据库类型 (可选,通常由 URL 自动推断: sqlite, mysql, postgres)\n# DATABASE_TYPE=sqlite\n\n# SQLite 数据库路径 (兼容旧版,不推荐手动设置)\n# DATABASE_PATH=database/momei.sqlite\n\n# 是否自动同步数据库表结构 (生产环境建议固定为 false,仅手动控制迁移)\nDATABASE_SYNCHRONIZE=false\n\n# 数据库连接调节 (可选)\n# DATABASE_SSL=false\n# DATABASE_CHARSET=utf8_general_ci\n# DATABASE_TIMEZONE=local\n# DATABASE_ENTITY_PREFIX=momei_\n\n# Redis 连接地址 (可选,配置后将启用基于 Redis 的缓存或限流)\n# REDIS_URL=redis://localhost:6379\n\n# ------------------------------------------\n# 3. 认证与社交登录 (Authentication)\n# ------------------------------------------\n\n# 是否允许新用户注册\nALLOW_REGISTRATION=true\n\n# 是否启用匿名登录 (无需邮箱密码即可登录)\nANONYMOUS_LOGIN_ENABLED=false\n\n# GitHub 配置 (OAuth)\nNUXT_PUBLIC_GITHUB_CLIENT_ID=\nGITHUB_CLIENT_SECRET=\n\n# Google 配置 (OAuth)\nNUXT_PUBLIC_GOOGLE_CLIENT_ID=\nGOOGLE_CLIENT_SECRET=\n\n# ------------------------------------------\n# 4. AI 核心引擎 (AI Integration - Text & Image)\n# ------------------------------------------\n\n# 是否启用 AI 功能\nAI_ENABLED=true\n\n# 主 AI 提供商 (openai, anthropic, deepseek, doubao, siliconflow, gemini, volcengine)\nAI_PROVIDER=openai\n\n# AI API 密钥\nAI_API_KEY=\n\n# 默认模型名称 (如 gpt-4o, claude-3-5-sonnet, deepseek-chat)\nAI_MODEL=gpt-4o\n\n# API 代理端点 (可选,用于 OpenAI 兼容服务)\nAI_API_ENDPOINT=\n\n# AI 生成参数控制 (可选,默认内置优化值)\n# AI_MAX_TOKENS=2048\n# AI_TEMPERATURE=0.7\n# AI_MAX_CONTENT_LENGTH=50000\n# AI_CHUNK_SIZE=4000\n# AI_TEXT_DIRECT_RETURN_MAX_CHARS=1000\n# AI_TEXT_TASK_CHUNK_SIZE=4000\n# AI_TEXT_TASK_CONCURRENCY=3\n# AI 重任务超时(用于 TTS / ASR / 图片生成等耗时任务)\nAI_HEAVY_TASK_TIMEOUT=5m\n\n# Gemini 专用令牌 (如果 provider 为 gemini 且需要独立令牌鉴权)\n# GEMINI_API_TOKEN=\n\n# AI 图像生成配置\nAI_IMAGE_ENABLED=false\nAI_IMAGE_PROVIDER=openai\nAI_IMAGE_API_KEY=\nAI_IMAGE_MODEL=dall-e-3\nAI_IMAGE_ENDPOINT=\n\n# AI 配额治理 (可选,支持直接复用后台设置页导出的 JSON)\n# AI_QUOTA_ENABLED=false\n# AI_QUOTA_POLICIES=[{\"subjectType\":\"global\",\"subjectValue\":\"default\",\"scope\":\"all\",\"period\":\"day\",\"maxRequests\":100,\"maxQuotaUnits\":200,\"enabled\":true}]\n# AI_ALERT_THRESHOLDS={\"enabled\":true,\"quotaUsageRatios\":[0.5,0.8,1],\"costUsageRatios\":[0.8,1],\"failureBurst\":{\"enabled\":true,\"windowMinutes\":10,\"maxFailures\":3,\"categories\":[\"image\",\"asr\",\"tts\",\"podcast\"]},\"dedupeWindowMinutes\":1440,\"maxAlerts\":10}\n\n# ------------------------------------------\n# 5. AI 多模态音频 (ASR & TTS)\n# ------------------------------------------\n\n# ASR (语音识别) 配置\n# 是否启用 ASR 功能\nASR_ENABLED=false\n# ASR 提供商 (openai, siliconflow, volcengine)\nASR_PROVIDER=siliconflow\n# ASR 通用配置\nASR_API_KEY=\nASR_MODEL=FunAudioLLM/SenseVoiceSmall\nASR_ENDPOINT=\n\n# SiliconFlow ASR 专用配置 (可选,优先级高于通用 ASR_API_KEY / ASR_MODEL)\nASR_SILICONFLOW_API_KEY=\nASR_SILICONFLOW_MODEL=FunAudioLLM/SenseVoiceSmall\n\n# 火山引擎 ASR 专用配置 (可选,优先级高于通用 VOLCENGINE_* 配置)\nASR_VOLCENGINE_APP_ID=\nASR_VOLCENGINE_ACCESS_KEY=\nASR_VOLCENGINE_SECRET_KEY=\nASR_VOLCENGINE_CLUSTER_ID=volc.bigasr.sauc.duration\n\n# TTS (文本转语音) 配置\n# 是否启用 TTS 功能\nTTS_ENABLED=false\n# TTS 提供商 (openai, siliconflow, volcengine)\nTTS_PROVIDER=openai\n# TTS 通用配置 (默认复用 AI_API_KEY)\nTTS_API_KEY=\nTTS_ENDPOINT=\nTTS_DEFAULT_MODEL=tts-1\nTTS_DEFAULT_VOICE=alloy\n\n# --- 厂商专项凭据 (可被上述 ASR/TTS 引用) ---\n\n# 火山引擎 (豆包语音) 统一凭据\nVOLCENGINE_APP_ID=\nVOLCENGINE_ACCESS_KEY=\nVOLCENGINE_SECRET_KEY=\n\n# ------------------------------------------\n# 6. 邮件发送系统 (SMTP)\n# ------------------------------------------\n\n# SMTP 服务器地址\nEMAIL_HOST=\n# SMTP 端口\nEMAIL_PORT=587\n# 是否使用 SSL/TLS (默认 false 会尝试 STARTTLS)\nEMAIL_SECURE=false\nEMAIL_USER=\nEMAIL_PASS=\n# 默认邮件发送者 (格式示例: \"Momei Blog\" <admin@example.com>)\nEMAIL_FROM=\n# 是否要求邮箱验证码验证后才允许登录\nEMAIL_REQUIRE_VERIFICATION=false\n\n# 邮件限流与周期配置 (可选)\n# EMAIL_DAILY_LIMIT=100\n# EMAIL_SINGLE_USER_DAILY_LIMIT=5\n# EMAIL_LIMIT_WINDOW=86400\n# EMAIL_EXPIRES_IN=300\n\n# 临时邮箱域拦截配置 (可选)\n# TEMP_EMAIL_DOMAIN_NAME=example.com\n\n# ------------------------------------------\n# 7. 对象存储系统 (Storage & Upload)\n# ------------------------------------------\n\n# 存储引擎 (local, s3, r2, vercel_blob;兼容旧值 vercel-blob)\nSTORAGE_TYPE=local\n\n# 路径前缀(所有上传文件均会携带此目录前缀)\nBUCKET_PREFIX=momei/\n\n# 全局公共访问域名 / 对象前缀(可选,优先级高于驱动级 BaseURL/Prefix)\n# ASSET_PUBLIC_BASE_URL=https://cdn.example.com/assets\n# ASSET_OBJECT_PREFIX=momei-blog/\n\n# 1. 本地存储配置 (STORAGE_TYPE=local)\nLOCAL_STORAGE_DIR=public/uploads\nNUXT_PUBLIC_LOCAL_STORAGE_BASE_URL=/uploads\n\n# 2. S3 兼容存储 (STORAGE_TYPE=s3, 适用于 R2, AWS S3, MinIO)\nS3_ENDPOINT=\nS3_BUCKET_NAME=\nS3_REGION=auto\nS3_ACCESS_KEY_ID=\nS3_SECRET_ACCESS_KEY=\nS3_BASE_URL=\n\n# 3. Vercel Blob (STORAGE_TYPE=vercel_blob)\nBLOB_READ_WRITE_TOKEN=\n\n# 4. Cloudflare R2 专用配置 (也可通过 S3 变量配置)\n# CLOUDFLARE_R2_ACCOUNT_ID=\n# CLOUDFLARE_R2_ACCESS_KEY=\n# CLOUDFLARE_R2_SECRET_KEY=\n# CLOUDFLARE_R2_BUCKET=\n# CLOUDFLARE_R2_BASE_URL=\n\n# 文件大小限制调节 (可选)\n# NUXT_PUBLIC_MAX_UPLOAD_SIZE=4.5MiB\n# NUXT_PUBLIC_MAX_AUDIO_UPLOAD_SIZE=100MiB\n# LOCAL_STORAGE_MIN_FREE_SPACE=100MiB\n\n# ------------------------------------------\n# 8. 运维、监控与自动化 (Operations)\n# ------------------------------------------\n\n# 管理员用户 ID 列表 (逗号分隔,注册后在此提权)\nADMIN_USER_IDS=\n\n# 定时任务鉴权令牌 (必需设置,用于安全触发 Scheduled Tasks Webhook)\nTASKS_TOKEN=\n\n# Webhook HMAC 签名密钥 (推荐独立配置,默认使用 TASKS_TOKEN)\n# 用于 Vercel/Cloudflare 等 Serverless 环境的定时任务触发验证\nWEBHOOK_SECRET=\n\n# 自部署环境 Cron 表达式 (默认每 5 分钟执行一次)\n# 仅在非 Serverless 环境中生效\n# TASK_CRON_EXPRESSION=*/5 * * * *\n\n# 显式禁用自部署环境 Cron\n# DISABLE_CRON_JOB=false\n\n# Webhook 时间戳容差 (毫秒)\n# 说明:当前版本预留该变量名,Webhook 校验默认固定 5 分钟容差\n# WEBHOOK_TIMESTAMP_TOLERANCE=300000\n\n# Sentry 异常监控\nNUXT_PUBLIC_SENTRY_DSN=\nNUXT_PUBLIC_SENTRY_ENVIRONMENT=production\n\n# 站长流量统计 (填入对应统计 ID)\nNUXT_PUBLIC_BAIDU_ANALYTICS_ID=\nNUXT_PUBLIC_GOOGLE_ANALYTICS_ID=\nNUXT_PUBLIC_CLARITY_PROJECT_ID=\n\n# 站点验证标签 (可选)\n# NUXT_PUBLIC_GOOGLE_SITE_VERIFICATION=\n# NUXT_PUBLIC_BING_SITE_VERIFICATION=\n\n# ------------------------------------------\n# 9. 视觉特效与内容组件 (Features)\n# ------------------------------------------\n\n# 站点元数据\nNUXT_PUBLIC_SITE_LOGO=\nNUXT_PUBLIC_SITE_FAVICON=\nNUXT_PUBLIC_SITE_OPERATOR=\nNUXT_PUBLIC_CONTACT_EMAIL=admin@example.com\n\n# 主题系统默认值 (可选,仅在未通过后台配置覆盖时生效)\n# THEME_PRESET=\n# THEME_PRIMARY_COLOR=\n# THEME_ACCENT_COLOR=\n# THEME_SURFACE_COLOR=\n# THEME_TEXT_COLOR=\n# THEME_DARK_PRIMARY_COLOR=\n# THEME_DARK_ACCENT_COLOR=\n# THEME_DARK_SURFACE_COLOR=\n# THEME_DARK_TEXT_COLOR=\n# THEME_BORDER_RADIUS=\n# THEME_MOURNING_MODE=false\n# THEME_BACKGROUND_TYPE=\n# THEME_BACKGROUND_VALUE=\n\n# 验证码集成 (提供商: cloudflare-turnstile, google-recaptcha, hcaptcha, captchafox)\nENABLE_CAPTCHA=false\nNUXT_PUBLIC_AUTH_CAPTCHA_PROVIDER=\nNUXT_PUBLIC_AUTH_CAPTCHA_SITE_KEY=\nAUTH_CAPTCHA_SECRET_KEY=\n\n# 评论审核与风控\nENABLE_COMMENT_REVIEW=false\n# 关键词黑名单 (英文逗号分隔)\nBLACKLISTED_KEYWORDS=\n\n# 页脚自定义注入代码\nNUXT_PUBLIC_FOOTER_CODE=\n\n# 动态视觉特效控制\nNUXT_PUBLIC_LIVE2D_ENABLED=false\n# NUXT_PUBLIC_LIVE2D_SCRIPT_URL=https://unpkg.com/live2d-widgets@1.0.0/dist/\n# NUXT_PUBLIC_LIVE2D_MODEL_URL=\n# NUXT_PUBLIC_LIVE2D_OPTIONS_JSON={}\n# NUXT_PUBLIC_LIVE2D_MOBILE_ENABLED=false\n# NUXT_PUBLIC_LIVE2D_MIN_WIDTH=1024\n# NUXT_PUBLIC_LIVE2D_DATA_SAVER_BLOCK=true\nNUXT_PUBLIC_CANVAS_NEST_ENABLED=false\n# NUXT_PUBLIC_CANVAS_NEST_OPTIONS_JSON={}\n# NUXT_PUBLIC_CANVAS_NEST_MOBILE_ENABLED=false\n# NUXT_PUBLIC_CANVAS_NEST_MIN_WIDTH=1024\n# NUXT_PUBLIC_CANVAS_NEST_DATA_SAVER_BLOCK=true\n# 全局性能卫兵:是否允许移动端加载特效\nNUXT_PUBLIC_EFFECTS_MOBILE_ENABLED=false\n# NUXT_PUBLIC_EFFECTS_MIN_WIDTH=768\n# NUXT_PUBLIC_EFFECTS_DATA_SAVER_BLOCK=true\n\n# 公开限制项 (可选,会同步给前端)\n# NUXT_PUBLIC_ALLOWED_FILE_TYPES=image/jpeg,image/png,image/webp,image/gif\n# NUXT_PUBLIC_COMMENT_INTERVAL=60\n# NUXT_PUBLIC_POSTS_PER_PAGE=10\n\n# 上传限流 (可选)\n# UPLOAD_DAILY_LIMIT=100\n# UPLOAD_SINGLE_USER_DAILY_LIMIT=20\n# UPLOAD_LIMIT_WINDOW=86400\n\n# ------------------------------------------\n# 10. 合规与外部资源安全 (Compliance & Security)\n# ------------------------------------------\n\n# 中国大陆备案信息显示\nNUXT_PUBLIC_SHOW_COMPLIANCE_INFO=false\nNUXT_PUBLIC_ICP_LICENSE_NUMBER=\nNUXT_PUBLIC_PUBLIC_SECURITY_NUMBER=\n\n# 安全:外部资源域名白名单 (逗号分隔,防止某些代理环境下图片加载失败)\nNUXT_PUBLIC_SECURITY_URL_WHITELIST=\n\n# Hugging Face 镜像代理地址 (用于部署在大陆环境时拉取资源)\nNUXT_PUBLIC_HF_PROXY=https://huggingface.co\n\n# ------------------------------------------\n# 11. 商业化与第三方平台集成 (Commercial & Third-party)\n# ------------------------------------------\n\n# 全局商业化默认配置 (JSON 字符串)\n# 仅当需要通过环境变量锁定全局社交/打赏配置时使用\n# COMMERCIAL_SPONSORSHIP_JSON={\"enabled\":true,\"donationLinks\":[],\"socialLinks\":[]}\n\n# Memos 生活流同步\nMEMOS_ENABLED=false\nMEMOS_INSTANCE_URL=\nMEMOS_ACCESS_TOKEN=\nMEMOS_DEFAULT_VISIBILITY=PRIVATE\n\n# ------------------------------------------\n# 12. 日志、调试与 Demo 模式 (Logging & Debug)\n# ------------------------------------------\n\n# 日志输出等级 (silly, debug, http, info, warn, error)\nLOG_LEVEL=info\n# 是否开启文件日志记录 (默认 false,Serverless 环境必须设为 false)\nLOGFILES=false\n# LOG_DIR=logs\n\n# Axiom 日志集成\n# AXIOM_DATASET_NAME=\n# AXIOM_API_TOKEN=\n\n# 演示模式 (内存 DB 运行,限制写操作)\nNUXT_PUBLIC_DEMO_MODE=false\n# NUXT_PUBLIC_DEMO_USER_EMAIL=admin@example.com\n# NUXT_PUBLIC_DEMO_PASSWORD=momei123456\n\n# 安装锁定标志(系统首次运行后会自动生成/读取,通常不建议手动修改)\n# MOMEI_INSTALLED=true\n"}, "347b15fd5c896c5ba50a51b89ed45f0bfa8f384d": {"t": 1785749540.8328009, "n": 10040, "h": "774c5da06dbd2e38", "c": "# ==========================================\n# 墨梅博客 (Momei) 环境变量完整示例文件\n# ==========================================\n\n# ------------------------------------------\n# 1. 基础核心配置 (Essential)\n# ------------------------------------------\n\n# 应用名称\nNUXT_PUBLIC_APP_NAME=墨梅博客\n\n# 站点 SEO 描述\nNUXT_PUBLIC_SITE_DESCRIPTION=一个基于 Nuxt 4 构建的现代化 AI 驱动博客平台\n\n# 站点 SEO 关键词 (逗号分隔)\nNUXT_PUBLIC_SITE_KEYWORDS=Nuxt,Vue,Blog,AI,TypeScript\n\n# 默认版权声明类型 (例如 all-rights-reserved, cc-by-nc-sa)\nNUXT_PUBLIC_DEFAULT_COPYRIGHT=all-rights-reserved\n\n# 默认语言 (en-US, zh-CN)\nNUXT_PUBLIC_DEFAULT_LANGUAGE=zh-CN\n\n# 站点 URL(注意:公开访问的站点地址,用于 SEO 和 RSS 生成)\nNUXT_PUBLIC_SITE_URL=http://localhost:3000\n\n# Better Auth 的基础 URL(必需,用于认证回调重定向,推荐与 SITE_URL 一致)\nNUXT_PUBLIC_AUTH_BASE_URL=http://localhost:3000\n\n# 用于加密、签名和哈希的密钥。生产环境必须设置!\n# 可以使用 `openssl rand -hex 32` 生成。开发环境下会自动生成随机值。\nAUTH_SECRET=\n\n# 雪花算法机器 ID (0-1023),用于生成分布式唯一 ID。默认自动获取进程 PID 对 1024 取余\n# MACHINE_ID=\n\n# ------------------------------------------\n# 2. 数据库与高性能配置 (Database & Cache)\n# ------------------------------------------\n\n# 数据库连接 URL (支持 SQLite, MySQL, PostgreSQL)\n# 支持智能推断:\n# - SQLite (推荐): sqlite://database/momei.sqlite (或 file://database/momei.sqlite)\n# - MySQL: mysql://user:pass@host:3306/db\n# - PostgreSQL: postgres://user:pass@host:5432/db\n# 如果未配置,默认将使用本地 SQLite\nDATABASE_URL=sqlite://database/momei.sqlite\n\n# 手动指定数据库类型 (可选,通常由 URL 自动推断: sqlite, mysql, postgres)\n# DATABASE_TYPE=sqlite\n\n# SQLite 数据库路径 (兼容旧版,不推荐手动设置)\n# DATABASE_PATH=database/momei.sqlite\n\n# 是否自动同步数据库表结构 (生产环境建议固定为 false,仅手动控制迁移)\nDATABASE_SYNCHRONIZE=false\n\n# 数据库连接调节 (可选)\n# DATABASE_SSL=false\n# DATABASE_CHARSET=utf8_general_ci\n# DATABASE_TIMEZONE=local\n# DATABASE_ENTITY_PREFIX=momei_\n\n# Redis 连接地址 (可选,配置后将启用基于 Redis 的缓存或限流)\n# REDIS_URL=redis://localhost:6379\n\n# ------------------------------------------\n# 3. 认证与社交登录 (Authentication)\n# ------------------------------------------\n\n# 是否允许新用户注册\nALLOW_REGISTRATION=true\n\n# 是否启用匿名登录 (无需邮箱密码即可登录)\nANONYMOUS_LOGIN_ENABLED=false\n\n# GitHub 配置 (OAuth)\nNUXT_PUBLIC_GITHUB_CLIENT_ID=\nGITHUB_CLIENT_SECRET=\n\n# Google 配置 (OAuth)\nNUXT_PUBLIC_GOOGLE_CLIENT_ID=\nGOOGLE_CLIENT_SECRET=\n\n# ------------------------------------------\n# 4. AI 核心引擎 (AI Integration - Text & Image)\n# ------------------------------------------\n\n# 是否启用 AI 功能\nAI_ENABLED=true\n\n# 主 AI 提供商 (openai, anthropic, deepseek, doubao, siliconflow, gemini, volcengine)\nAI_PROVIDER=openai\n\n# AI API 密钥\nAI_API_KEY=\n\n# 默认模型名称 (如 gpt-4o, claude-3-5-sonnet, deepseek-chat)\nAI_MODEL=gpt-4o\n\n# API 代理端点 (可选,用于 OpenAI 兼容服务)\nAI_API_ENDPOINT=\n\n# AI 生成参数控制 (可选,默认内置优化值)\n# AI_MAX_TOKENS=2048\n# AI_TEMPERATURE=0.7\n# AI_MAX_CONTENT_LENGTH=50000\n# AI_CHUNK_SIZE=4000\n# AI_TEXT_DIRECT_RETURN_MAX_CHARS=1000\n# AI_TEXT_TASK_CHUNK_SIZE=4000\n# AI_TEXT_TASK_CONCURRENCY=3\n# AI 重任务超时(用于 TTS / ASR / 图片生成等耗时任务)\nAI_HEAVY_TASK_TIMEOUT=5m\n\n# Gemini 专用令牌 (如果 provider 为 gemini 且需要独立令牌鉴权)\n# GEMINI_API_TOKEN=\n\n# AI 图像生成配置\nAI_IMAGE_ENABLED=false\nAI_IMAGE_PROVIDER=openai\nAI_IMAGE_API_KEY=\nAI_IMAGE_MODEL=dall-e-3\nAI_IMAGE_ENDPOINT=\n\n# AI 配额治理 (可选,支持直接复用后台设置页导出的 JSON)\n# AI_QUOTA_ENABLED=false\n# AI_QUOTA_POLICIES=[{\"subjectType\":\"global\",\"subjectValue\":\"default\",\"scope\":\"all\",\"period\":\"day\",\"maxRequests\":100,\"maxQuotaUnits\":200,\"enabled\":true}]\n# AI_ALERT_THRESHOLDS={\"enabled\":true,\"quotaUsageRatios\":[0.5,0.8,1],\"costUsageRatios\":[0.8,1],\"failureBurst\":{\"enabled\":true,\"windowMinutes\":10,\"maxFailures\":3,\"categories\":[\"image\",\"asr\",\"tts\",\"podcast\"]},\"dedupeWindowMinutes\":1440,\"maxAlerts\":10}\n\n# ------------------------------------------\n# 5. AI 多模态音频 (ASR & TTS)\n# ------------------------------------------\n\n# ASR (语音识别) 配置\n# 是否启用 ASR 功能\nASR_ENABLED=false\n# ASR 提供商 (openai, siliconflow, volcengine)\nASR_PROVIDER=siliconflow\n# ASR 通用配置\nASR_API_KEY=\nASR_MODEL=FunAudioLLM/SenseVoiceSmall\nASR_ENDPOINT=\n\n# SiliconFlow ASR 专用配置 (可选,优先级高于通用 ASR_API_KEY / ASR_MODEL)\nASR_SILICONFLOW_API_KEY=\nASR_SILICONFLOW_MODEL=FunAudioLLM/SenseVoiceSmall\n\n# 火山引擎 ASR 专用配置 (可选,优先级高于通用 VOLCENGINE_* 配置)\nASR_VOLCENGINE_APP_ID=\nASR_VOLCENGINE_ACCESS_KEY=\nASR_VOLCENGINE_SECRET_KEY=\nASR_VOLCENGINE_CLUSTER_ID=volc.bigasr.sauc.duration\n\n# TTS (文本转语音) 配置\n# 是否启用 TTS 功能\nTTS_ENABLED=false\n# TTS 提供商 (openai, siliconflow, volcengine)\nTTS_PROVIDER=openai\n# TTS 通用配置 (默认复用 AI_API_KEY)\nTTS_API_KEY=\nTTS_ENDPOINT=\nTTS_DEFAULT_MODEL=tts-1\nTTS_DEFAULT_VOICE=alloy\n\n# --- 厂商专项凭据 (可被上述 ASR/TTS 引用) ---\n\n# 火山引擎 (豆包语音) 统一凭据\nVOLCENGINE_APP_ID=\nVOLCENGINE_ACCESS_KEY=\nVOLCENGINE_SECRET_KEY=\n\n# ------------------------------------------\n# 6. 邮件发送系统 (SMTP)\n# ------------------------------------------\n\n# SMTP 服务器地址\nEMAIL_HOST=\n# SMTP 端口\nEMAIL_PORT=587\n# 是否使用 SSL/TLS (默认 false 会尝试 STARTTLS)\nEMAIL_SECURE=false\nEMAIL_USER=\nEMAIL_PASS=\n# 默认邮件发送者 (格式示例: \"Momei Blog\" <admin@example.com>)\nEMAIL_FROM=\n# 是否要求邮箱验证码验证后才允许登录\nEMAIL_REQUIRE_VERIFICATION=false\n\n# 邮件限流与周期配置 (可选)\n# EMAIL_DAILY_LIMIT=100\n# EMAIL_SINGLE_USER_DAILY_LIMIT=5\n# EMAIL_LIMIT_WINDOW=86400\n# EMAIL_EXPIRES_IN=300\n\n# 匿名邮箱域拦截配置 (可选)\n# ANONYMOUS_EMAIL_DOMAIN_NAME=anonymous.com\n# TEMP_EMAIL_DOMAIN_NAME=example.com\n\n# ------------------------------------------\n# 7. 对象存储系统 (Storage & Upload)\n# ------------------------------------------\n\n# 存储引擎 (local, s3, r2, vercel_blob;兼容旧值 vercel-blob)\nSTORAGE_TYPE=local\n\n# 路径前缀(所有上传文件均会携带此目录前缀)\nBUCKET_PREFIX=momei/\n\n# 全局公共访问域名 / 对象前缀(可选,优先级高于驱动级 BaseURL/Prefix)\n# ASSET_PUBLIC_BASE_URL=https://cdn.example.com/assets\n# ASSET_OBJECT_PREFIX=momei-blog/\n\n# 1. 本地存储配置 (STORAGE_TYPE=local)\nLOCAL_STORAGE_DIR=public/uploads\nNUXT_PUBLIC_LOCAL_STORAGE_BASE_URL=/uploads\n\n# 2. S3 兼容存储 (STORAGE_TYPE=s3, 适用于 R2, AWS S3, MinIO)\nS3_ENDPOINT=\nS3_BUCKET_NAME=\nS3_REGION=auto\nS3_ACCESS_KEY_ID=\nS3_SECRET_ACCESS_KEY=\nS3_BASE_URL=\n\n# 3. Vercel Blob (STORAGE_TYPE=vercel_blob)\nBLOB_READ_WRITE_TOKEN=\n\n# 4. Cloudflare R2 专用配置 (也可通过 S3 变量配置)\n# CLOUDFLARE_R2_ACCOUNT_ID=\n# CLOUDFLARE_R2_ACCESS_KEY=\n# CLOUDFLARE_R2_SECRET_KEY=\n# CLOUDFLARE_R2_BUCKET=\n# CLOUDFLARE_R2_BASE_URL=\n\n# 文件大小限制调节 (可选)\n# NUXT_PUBLIC_MAX_UPLOAD_SIZE=4.5MiB\n# NUXT_PUBLIC_MAX_AUDIO_UPLOAD_SIZE=100MiB\n# LOCAL_STORAGE_MIN_FREE_SPACE=100MiB\n\n# ------------------------------------------\n# 8. 运维、监控与自动化 (Operations)\n# ------------------------------------------\n\n# 管理员用户 ID 列表 (逗号分隔,注册后在此提权)\nADMIN_USER_IDS=\n\n# 定时任务鉴权令牌 (必需设置,用于安全触发 Scheduled Tasks Webhook)\nTASKS_TOKEN=\n\n# Webhook HMAC 签名密钥 (推荐独立配置,默认使用 TASKS_TOKEN)\n# 用于 Vercel/Cloudflare 等 Serverless 环境的定时任务触发验证\nWEBHOOK_SECRET=\n\n# 自部署环境 Cron 表达式 (默认每 5 分钟执行一次)\n# 仅在非 Serverless 环境中生效\n# TASK_CRON_EXPRESSION=*/5 * * * *\n\n# 显式禁用自部署环境 Cron\n# DISABLE_CRON_JOB=false\n\n# Webhook 时间戳容差 (毫秒)\n# 说明:当前版本预留该变量名,Webhook 校验默认固定 5 分钟容差\n# WEBHOOK_TIMESTAMP_TOLERANCE=300000\n\n# Sentry 异常监控\nNUXT_PUBLIC_SENTRY_DSN=\nNUXT_PUBLIC_SENTRY_ENVIRONMENT=production\n\n# 站长流量统计 (填入对应统计 ID)\nNUXT_PUBLIC_BAIDU_ANALYTICS_ID=\nNUXT_PUBLIC_GOOGLE_ANALYTICS_ID=\nNUXT_PUBLIC_CLARITY_PROJECT_ID=\n\n# 站点验证标签 (可选)\n# NUXT_PUBLIC_GOOGLE_SITE_VERIFICATION=\n# NUXT_PUBLIC_BING_SITE_VERIFICATION=\n\n# ------------------------------------------\n# 9. 视觉特效与内容组件 (Features)\n# ------------------------------------------\n\n# 站点元数据\nNUXT_PUBLIC_SITE_LOGO=\nNUXT_PUBLIC_SITE_FAVICON=\nNUXT_PUBLIC_SITE_OPERATOR=\nNUXT_PUBLIC_CONTACT_EMAIL=admin@example.com\n\n# 主题系统默认值 (可选,仅在未通过后台配置覆盖时生效)\n# THEME_PRESET=\n# THEME_PRIMARY_COLOR=\n# THEME_ACCENT_COLOR=\n# THEME_SURFACE_COLOR=\n# THEME_TEXT_COLOR=\n# THEME_DARK_PRIMARY_COLOR=\n# THEME_DARK_ACCENT_COLOR=\n# THEME_DARK_SURFACE_COLOR=\n# THEME_DARK_TEXT_COLOR=\n# THEME_BORDER_RADIUS=\n# THEME_MOURNING_MODE=false\n# THEME_BACKGROUND_TYPE=\n# THEME_BACKGROUND_VALUE=\n\n# 验证码集成 (提供商: cloudflare-turnstile, google-recaptcha, hcaptcha, captchafox)\nENABLE_CAPTCHA=false\nNUXT_PUBLIC_AUTH_CAPTCHA_PROVIDER=\nNUXT_PUBLIC_AUTH_CAPTCHA_SITE_KEY=\nAUTH_CAPTCHA_SECRET_KEY=\n\n# 评论审核与风控\nENABLE_COMMENT_REVIEW=false\n# 关键词黑名单 (英文逗号分隔)\nBLACKLISTED_KEYWORDS=\n\n# 页脚自定义注入代码\nNUXT_PUBLIC_FOOTER_CODE=\n\n# 动态视觉特效控制\nNUXT_PUBLIC_LIVE2D_ENABLED=false\n# NUXT_PUBLIC_LIVE2D_SCRIPT_URL=https://unpkg.com/live2d-widgets@1.0.0/dist/\n# NUXT_PUBLIC_LIVE2D_MODEL_URL=\n# NUXT_PUBLIC_LIVE2D_OPTIONS_JSON={}\n# NUXT_PUBLIC_LIVE2D_MOBILE_ENABLED=false\n# NUXT_PUBLIC_LIVE2D_MIN_WIDTH=1024\n# NUXT_PUBLIC_LIVE2D_DATA_SAVER_BLOCK=true\nNUXT_PUBLIC_CANVAS_NEST_ENABLED=false\n# NUXT_PUBLIC_CANVAS_NEST_OPTIONS_JSON={}\n# NUXT_PUBLIC_CANVAS_NEST_MOBILE_ENABLED=false\n# NUXT_PUBLIC_CANVAS_NEST_MIN_WIDTH=1024\n# NUXT_PUBLIC_CANVAS_NEST_DATA_SAVER_BLOCK=true\n# 全局性能卫兵:是否允许移动端加载特效\nNUXT_PUBLIC_EFFECTS_MOBILE_ENABLED=false\n# NUXT_PUBLIC_EFFECTS_MIN_WIDTH=768\n# NUXT_PUBLIC_EFFECTS_DATA_SAVER_BLOCK=true\n\n# 公开限制项 (可选,会同步给前端)\n# NUXT_PUBLIC_ALLOWED_FILE_TYPES=image/jpeg,image/png,image/webp,image/gif\n# NUXT_PUBLIC_COMMENT_INTERVAL=60\n# NUXT_PUBLIC_POSTS_PER_PAGE=10\n\n# 上传限流 (可选)\n# UPLOAD_DAILY_LIMIT=100\n# UPLOAD_SINGLE_USER_DAILY_LIMIT=20\n# UPLOAD_LIMIT_WINDOW=86400\n\n# ------------------------------------------\n# 10. 合规与外部资源安全 (Compliance & Security)\n# ------------------------------------------\n\n# 中国大陆备案信息显示\nNUXT_PUBLIC_SHOW_COMPLIANCE_INFO=false\nNUXT_PUBLIC_ICP_LICENSE_NUMBER=\nNUXT_PUBLIC_PUBLIC_SECURITY_NUMBER=\n\n# 安全:外部资源域名白名单 (逗号分隔,防止某些代理环境下图片加载失败)\nNUXT_PUBLIC_SECURITY_URL_WHITELIST=\n\n# Hugging Face 镜像代理地址 (用于部署在大陆环境时拉取资源)\nNUXT_PUBLIC_HF_PROXY=https://huggingface.co\n\n# ------------------------------------------\n# 11. 商业化与第三方平台集成 (Commercial & Third-party)\n# ------------------------------------------\n\n# 全局商业化默认配置 (JSON 字符串)\n# 仅当需要通过环境变量锁定全局社交/打赏配置时使用\n# COMMERCIAL_SPONSORSHIP_JSON={\"enabled\":true,\"donationLinks\":[],\"socialLinks\":[]}\n\n# Memos 生活流同步\nMEMOS_ENABLED=false\nMEMOS_INSTANCE_URL=\nMEMOS_ACCESS_TOKEN=\nMEMOS_DEFAULT_VISIBILITY=PRIVATE\n\n# ------------------------------------------\n# 12. 日志、调试与 Demo 模式 (Logging & Debug)\n# ------------------------------------------\n\n# 日志输出等级 (silly, debug, http, info, warn, error)\nLOG_LEVEL=info\n# 是否开启文件日志记录 (默认 false,Serverless 环境必须设为 false)\nLOGFILES=false\n# LOG_DIR=logs\n\n# Axiom 日志集成\n# AXIOM_DATASET_NAME=\n# AXIOM_API_TOKEN=\n\n# 演示模式 (内存 DB 运行,限制写操作)\nNUXT_PUBLIC_DEMO_MODE=false\n# NUXT_PUBLIC_DEMO_USER_EMAIL=admin@example.com\n# NUXT_PUBLIC_DEMO_PASSWORD=momei123456\n\n# 安装锁定标志(系统首次运行后会自动生成/读取,通常不建议手动修改)\n# MOMEI_INSTALLED=true\n"}, "042e3c239a0b6471b03ec94a4848cf447c5dfe20": {"t": 1785749541.9430346, "n": 9319, "h": "e92fce357dd1b009", "c": "# ==========================================\n# 墨梅博客 (Momei) 环境变量完整示例文件\n# ==========================================\n\n# ------------------------------------------\n# 1. 基础核心配置 (Essential)\n# ------------------------------------------\n\n# 应用名称\nNUXT_PUBLIC_APP_NAME=墨梅博客\n\n# 站点 SEO 描述\nNUXT_PUBLIC_SITE_DESCRIPTION=一个基于 Nuxt 4 构建的现代化 AI 驱动博客平台\n\n# 站点 SEO 关键词 (逗号分隔)\nNUXT_PUBLIC_SITE_KEYWORDS=Nuxt,Vue,Blog,AI,TypeScript\n\n# 默认版权声明类型 (例如 all-rights-reserved, cc-by-nc-sa)\nNUXT_PUBLIC_DEFAULT_COPYRIGHT=all-rights-reserved\n\n# 默认语言 (en-US, zh-CN)\nNUXT_PUBLIC_DEFAULT_LANGUAGE=zh-CN\n\n# 站点 URL(注意:公开访问的站点地址,用于 SEO 和 RSS 生成)\nNUXT_PUBLIC_SITE_URL=http://localhost:3000\n\n# Better Auth 的基础 URL(必需,用于认证回调重定向,推荐与 SITE_URL 一致)\nNUXT_PUBLIC_AUTH_BASE_URL=http://localhost:3000\n\n# 用于加密、签名和哈希的密钥。生产环境必须设置!\n# 可以使用 `openssl rand -hex 32` 生成。开发环境下会自动生成随机值。\nAUTH_SECRET=\n\n# 雪花算法机器 ID (0-1023),用于生成分布式唯一 ID。默认自动获取进程 PID 对 1024 取余\n# MACHINE_ID=\n\n# ------------------------------------------\n# 2. 数据库与高性能配置 (Database & Cache)\n# ------------------------------------------\n\n# 数据库连接 URL (支持 SQLite, MySQL, PostgreSQL)\n# 支持智能推断:\n# - SQLite (推荐): sqlite://database/momei.sqlite (或 file://database/momei.sqlite)\n# - MySQL: mysql://user:pass@host:3306/db\n# - PostgreSQL: postgres://user:pass@host:5432/db\n# 如果未配置,默认将使用本地 SQLite\nDATABASE_URL=sqlite://database/momei.sqlite\n\n# 手动指定数据库类型 (可选,通常由 URL 自动推断: sqlite, mysql, postgres)\n# DATABASE_TYPE=sqlite\n\n# SQLite 数据库路径 (兼容旧版,不推荐手动设置)\n# DATABASE_PATH=database/momei.sqlite\n\n# 是否自动同步数据库表结构 (生产环境建议固定为 false,仅手动控制迁移)\nDATABASE_SYNCHRONIZE=false\n\n# 数据库连接调节 (可选)\n# DATABASE_SSL=false\n# DATABASE_CHARSET=utf8_general_ci\n# DATABASE_TIMEZONE=local\n# DATABASE_ENTITY_PREFIX=momei_\n\n# Redis 连接地址 (可选,配置后将启用基于 Redis 的缓存或限流)\n# REDIS_URL=redis://localhost:6379\n\n# ------------------------------------------\n# 3. 认证与社交登录 (Authentication)\n# ------------------------------------------\n\n# 是否允许新用户注册\nALLOW_REGISTRATION=true\n\n# 是否启用匿名登录 (无需邮箱密码即可登录)\nANONYMOUS_LOGIN_ENABLED=false\n\n# GitHub 配置 (OAuth)\nNUXT_PUBLIC_GITHUB_CLIENT_ID=\nGITHUB_CLIENT_SECRET=\n\n# Google 配置 (OAuth)\nNUXT_PUBLIC_GOOGLE_CLIENT_ID=\nGOOGLE_CLIENT_SECRET=\n\n# ------------------------------------------\n# 4. AI 核心引擎 (AI Integration - Text & Image)\n# ------------------------------------------\n\n# 是否启用 AI 功能\nAI_ENABLED=true\n\n# 主 AI 提供商 (openai, anthropic, deepseek, doubao, siliconflow, gemini, volcengine)\nAI_PROVIDER=openai\n\n# AI API 密钥\nAI_API_KEY=\n\n# 默认模型名称 (如 gpt-4o, claude-3-5-sonnet, deepseek-chat)\nAI_MODEL=gpt-4o\n\n# API 代理端点 (可选,用于 OpenAI 兼容服务)\nAI_API_ENDPOINT=\n\n# AI 生成参数控制 (可选,默认内置优化值)\n# AI_MAX_TOKENS=2048\n# AI_TEMPERATURE=0.7\n# AI_MAX_CONTENT_LENGTH=50000\n# AI_CHUNK_SIZE=4000\n# AI 重任务超时(用于 TTS / ASR / 图片生成等耗时任务)\nAI_HEAVY_TASK_TIMEOUT=5m\n\n# Gemini 专用令牌 (如果 provider 为 gemini 且需要独立令牌鉴权)\n# GEMINI_API_TOKEN=\n\n# AI 图像生成配置\nAI_IMAGE_ENABLED=false\nAI_IMAGE_PROVIDER=openai\nAI_IMAGE_API_KEY=\nAI_IMAGE_MODEL=dall-e-3\nAI_IMAGE_ENDPOINT=\n\n# ------------------------------------------\n# 5. AI 多模态音频 (ASR & TTS)\n# ------------------------------------------\n\n# ASR (语音识别) 配置\n# 是否启用 ASR 功能\nASR_ENABLED=false\n# ASR 提供商 (openai, siliconflow, volcengine)\nASR_PROVIDER=siliconflow\n# ASR 通用配置\nASR_API_KEY=\nASR_MODEL=FunAudioLLM/SenseVoiceSmall\nASR_ENDPOINT=\n\n# SiliconFlow ASR 专用配置 (可选,优先级高于通用 ASR_API_KEY / ASR_MODEL)\nASR_SILICONFLOW_API_KEY=\nASR_SILICONFLOW_MODEL=FunAudioLLM/SenseVoiceSmall\n\n# 火山引擎 ASR 专用配置 (可选,优先级高于通用 VOLCENGINE_* 配置)\nASR_VOLCENGINE_APP_ID=\nASR_VOLCENGINE_ACCESS_KEY=\nASR_VOLCENGINE_SECRET_KEY=\nASR_VOLCENGINE_CLUSTER_ID=volc.bigasr.sauc.duration\n\n# TTS (文本转语音) 配置\n# 是否启用 TTS 功能\nTTS_ENABLED=false\n# TTS 提供商 (openai, siliconflow, volcengine)\nTTS_PROVIDER=openai\n# TTS 通用配置 (默认复用 AI_API_KEY)\nTTS_API_KEY=\nTTS_ENDPOINT=\nTTS_DEFAULT_MODEL=tts-1\nTTS_DEFAULT_VOICE=alloy\n\n# --- 厂商专项凭据 (可被上述 ASR/TTS 引用) ---\n\n# 火山引擎 (豆包语音) 统一凭据\nVOLCENGINE_APP_ID=\nVOLCENGINE_ACCESS_KEY=\nVOLCENGINE_SECRET_KEY=\n\n# ------------------------------------------\n# 6. 邮件发送系统 (SMTP)\n# ------------------------------------------\n\n# SMTP 服务器地址\nEMAIL_HOST=\n# SMTP 端口\nEMAIL_PORT=587\n# 是否使用 SSL/TLS (默认 false 会尝试 STARTTLS)\nEMAIL_SECURE=false\nEMAIL_USER=\nEMAIL_PASS=\n# 默认邮件发送者 (格式示例: \"Momei Blog\" <admin@example.com>)\nEMAIL_FROM=\n# 是否要求邮箱验证码验证后才允许登录\nEMAIL_REQUIRE_VERIFICATION=false\n\n# 邮件限流与周期配置 (可选)\n# EMAIL_DAILY_LIMIT=100\n# EMAIL_SINGLE_USER_DAILY_LIMIT=5\n# EMAIL_LIMIT_WINDOW=86400\n# EMAIL_EXPIRES_IN=300\n\n# 匿名邮箱域拦截配置 (可选)\n# ANONYMOUS_EMAIL_DOMAIN_NAME=anonymous.com\n# TEMP_EMAIL_DOMAIN_NAME=example.com\n\n# ------------------------------------------\n# 7. 对象存储系统 (Storage & Upload)\n# ------------------------------------------\n\n# 存储引擎 (local, s3, vercel-blob)\nSTORAGE_TYPE=local\n\n# 路径前缀(所有上传文件均会携带此目录前缀)\nBUCKET_PREFIX=momei/\n\n# 1. 本地存储配置 (STORAGE_TYPE=local)\nLOCAL_STORAGE_DIR=public/uploads\nNUXT_PUBLIC_LOCAL_STORAGE_BASE_URL=/uploads\n\n# 2. S3 兼容存储 (STORAGE_TYPE=s3, 适用于 R2, AWS S3, MinIO)\nS3_ENDPOINT=\nS3_BUCKET_NAME=\nS3_REGION=auto\nS3_ACCESS_KEY_ID=\nS3_SECRET_ACCESS_KEY=\nS3_BASE_URL=\n\n# 3. Vercel Blob (STORAGE_TYPE=vercel-blob)\nBLOB_READ_WRITE_TOKEN=\n\n# 4. Cloudflare R2 专用配置 (也可通过 S3 变量配置)\n# CLOUDFLARE_R2_ACCOUNT_ID=\n# CLOUDFLARE_R2_ACCESS_KEY=\n# CLOUDFLARE_R2_SECRET_KEY=\n# CLOUDFLARE_R2_BUCKET=\n# CLOUDFLARE_R2_BASE_URL=\n\n# 文件大小限制调节 (可选)\n# NUXT_PUBLIC_MAX_UPLOAD_SIZE=4.5MiB\n# NUXT_PUBLIC_MAX_AUDIO_UPLOAD_SIZE=100MiB\n# LOCAL_STORAGE_MIN_FREE_SPACE=100MiB\n\n# ------------------------------------------\n# 8. 运维、监控与自动化 (Operations)\n# ------------------------------------------\n\n# 管理员用户 ID 列表 (逗号分隔,注册后在此提权)\nADMIN_USER_IDS=\n\n# 定时任务鉴权令牌 (必需设置,用于安全触发 Scheduled Tasks Webhook)\nTASKS_TOKEN=\n\n# Webhook HMAC 签名密钥 (推荐独立配置,默认使用 TASKS_TOKEN)\n# 用于 Vercel/Cloudflare 等 Serverless 环境的定时任务触发验证\nWEBHOOK_SECRET=\n\n# 自部署环境 Cron 表达式 (默认每 5 分钟执行一次)\n# 仅在非 Serverless 环境中生效\n# TASK_CRON_EXPRESSION=*/5 * * * *\n\n# 显式禁用自部署环境 Cron\n# DISABLE_CRON_JOB=false\n\n# Webhook 时间戳容差 (毫秒)\n# 说明:当前版本预留该变量名,Webhook 校验默认固定 5 分钟容差\n# WEBHOOK_TIMESTAMP_TOLERANCE=300000\n\n# Sentry 异常监控\nNUXT_PUBLIC_SENTRY_DSN=\nNUXT_PUBLIC_SENTRY_ENVIRONMENT=production\n\n# 站长流量统计 (填入对应统计 ID)\nNUXT_PUBLIC_BAIDU_ANALYTICS_ID=\nNUXT_PUBLIC_GOOGLE_ANALYTICS_ID=\nNUXT_PUBLIC_CLARITY_PROJECT_ID=\n\n# 站点验证标签 (可选)\n# NUXT_PUBLIC_GOOGLE_SITE_VERIFICATION=\n# NUXT_PUBLIC_BING_SITE_VERIFICATION=\n\n# ------------------------------------------\n# 9. 视觉特效与内容组件 (Features)\n# ------------------------------------------\n\n# 站点元数据\nNUXT_PUBLIC_SITE_LOGO=\nNUXT_PUBLIC_SITE_FAVICON=\nNUXT_PUBLIC_SITE_OPERATOR=\nNUXT_PUBLIC_CONTACT_EMAIL=admin@example.com\n\n# 主题系统默认值 (可选,仅在未通过后台配置覆盖时生效)\n# THEME_PRESET=\n# THEME_PRIMARY_COLOR=\n# THEME_ACCENT_COLOR=\n# THEME_SURFACE_COLOR=\n# THEME_TEXT_COLOR=\n# THEME_DARK_PRIMARY_COLOR=\n# THEME_DARK_ACCENT_COLOR=\n# THEME_DARK_SURFACE_COLOR=\n# THEME_DARK_TEXT_COLOR=\n# THEME_BORDER_RADIUS=\n# THEME_MOURNING_MODE=false\n# THEME_BACKGROUND_TYPE=\n# THEME_BACKGROUND_VALUE=\n\n# 验证码集成 (提供商: cloudflare-turnstile, google-recaptcha, hcaptcha, captchafox)\nENABLE_CAPTCHA=false\nNUXT_PUBLIC_AUTH_CAPTCHA_PROVIDER=\nNUXT_PUBLIC_AUTH_CAPTCHA_SITE_KEY=\nAUTH_CAPTCHA_SECRET_KEY=\n\n# 评论审核与风控\nENABLE_COMMENT_REVIEW=false\n# 关键词黑名单 (英文逗号分隔)\nBLACKLISTED_KEYWORDS=\n\n# 页脚自定义注入代码\nNUXT_PUBLIC_FOOTER_CODE=\n\n# 动态视觉特效控制\nNUXT_PUBLIC_LIVE2D_ENABLED=false\n# NUXT_PUBLIC_LIVE2D_SCRIPT_URL=https://unpkg.com/live2d-widgets@1.0.0/dist/\n# NUXT_PUBLIC_LIVE2D_MODEL_URL=\n# NUXT_PUBLIC_LIVE2D_OPTIONS_JSON={}\n# NUXT_PUBLIC_LIVE2D_MOBILE_ENABLED=false\n# NUXT_PUBLIC_LIVE2D_MIN_WIDTH=1024\n# NUXT_PUBLIC_LIVE2D_DATA_SAVER_BLOCK=true\nNUXT_PUBLIC_CANVAS_NEST_ENABLED=false\n# NUXT_PUBLIC_CANVAS_NEST_OPTIONS_JSON={}\n# NUXT_PUBLIC_CANVAS_NEST_MOBILE_ENABLED=false\n# NUXT_PUBLIC_CANVAS_NEST_MIN_WIDTH=1024\n# NUXT_PUBLIC_CANVAS_NEST_DATA_SAVER_BLOCK=true\n# 全局性能卫兵:是否允许移动端加载特效\nNUXT_PUBLIC_EFFECTS_MOBILE_ENABLED=false\n# NUXT_PUBLIC_EFFECTS_MIN_WIDTH=768\n# NUXT_PUBLIC_EFFECTS_DATA_SAVER_BLOCK=true\n\n# 公开限制项 (可选,会同步给前端)\n# NUXT_PUBLIC_ALLOWED_FILE_TYPES=image/jpeg,image/png,image/webp,image/gif\n# NUXT_PUBLIC_COMMENT_INTERVAL=60\n# NUXT_PUBLIC_POSTS_PER_PAGE=10\n\n# 上传限流 (可选)\n# UPLOAD_DAILY_LIMIT=100\n# UPLOAD_SINGLE_USER_DAILY_LIMIT=20\n# UPLOAD_LIMIT_WINDOW=86400\n\n# ------------------------------------------\n# 10. 合规与外部资源安全 (Compliance & Security)\n# ------------------------------------------\n\n# 中国大陆备案信息显示\nNUXT_PUBLIC_SHOW_COMPLIANCE_INFO=false\nNUXT_PUBLIC_ICP_LICENSE_NUMBER=\nNUXT_PUBLIC_PUBLIC_SECURITY_NUMBER=\n\n# 安全:外部资源域名白名单 (逗号分隔,防止某些代理环境下图片加载失败)\nNUXT_PUBLIC_SECURITY_URL_WHITELIST=\n\n# Hugging Face 镜像代理地址 (用于部署在大陆环境时拉取资源)\nNUXT_PUBLIC_HF_PROXY=https://huggingface.co\n\n# ------------------------------------------\n# 11. 商业化与第三方平台集成 (Commercial & Third-party)\n# ------------------------------------------\n\n# 全局商业化默认配置 (JSON 字符串)\n# 仅当需要通过环境变量锁定全局社交/打赏配置时使用\n# COMMERCIAL_SPONSORSHIP_JSON={\"enabled\":true,\"donationLinks\":[],\"socialLinks\":[]}\n\n# Memos 生活流同步\nMEMOS_ENABLED=false\nMEMOS_INSTANCE_URL=\nMEMOS_ACCESS_TOKEN=\nMEMOS_DEFAULT_VISIBILITY=PRIVATE\n\n# ------------------------------------------\n# 12. 日志、调试与 Demo 模式 (Logging & Debug)\n# ------------------------------------------\n\n# 日志输出等级 (silly, debug, http, info, warn, error)\nLOG_LEVEL=info\n# 是否开启文件日志记录 (默认 false,Serverless 环境必须设为 false)\nLOGFILES=false\n# LOG_DIR=logs\n\n# Axiom 日志集成\n# AXIOM_DATASET_NAME=\n# AXIOM_API_TOKEN=\n\n# 演示模式 (内存 DB 运行,限制写操作)\nNUXT_PUBLIC_DEMO_MODE=false\n# NUXT_PUBLIC_DEMO_USER_EMAIL=admin@example.com\n# NUXT_PUBLIC_DEMO_PASSWORD=momei123456\n\n# 安装锁定标志(系统首次运行后会自动生成/读取,通常不建议手动修改)\n# MOMEI_INSTALLED=true\n"}, "2b0171a26a59d79c83221311c9517d12297bfa9b": {"t": 1785749543.034718, "n": 7414, "h": "69d6af53a2f9906d", "c": "# ==========================================\n# 墨梅博客 (Momei) 环境变量完整示例文件\n# ==========================================\n\n# ------------------------------------------\n# 1. 基础核心配置 (Essential)\n# ------------------------------------------\n\n# 应用名称\nNUXT_PUBLIC_APP_NAME=墨梅博客\n\n# 站点 SEO 描述\nNUXT_PUBLIC_SITE_DESCRIPTION=一个基于 Nuxt 4 构建的现代化 AI 驱动博客平台\n\n# 站点 SEO 关键词 (逗号分隔)\nNUXT_PUBLIC_SITE_KEYWORDS=Nuxt,Vue,Blog,AI,TypeScript\n\n# 默认语言 (en-US, zh-CN)\nNUXT_PUBLIC_DEFAULT_LANGUAGE=zh-CN\n\n# 站点 URL(注意:公开访问的站点地址,用于 SEO 和 RSS 生成)\nNUXT_PUBLIC_SITE_URL=http://localhost:3000\n\n# Better Auth 的基础 URL(必需,用于认证回调重定向,推荐与 SITE_URL 一致)\nNUXT_PUBLIC_AUTH_BASE_URL=http://localhost:3000\n\n# 用于加密、签名和哈希的密钥。生产环境必须设置!\n# 可以使用 `openssl rand -hex 32` 生成。开发环境下会自动生成随机值。\nAUTH_SECRET=\n\n# 雪花算法机器 ID (0-1023),用于生成分布式唯一 ID。默认自动获取进程 PID 对 1024 取余\n# MACHINE_ID=\n\n# ------------------------------------------\n# 2. 数据库与高性能配置 (Database & Cache)\n# ------------------------------------------\n\n# 数据库连接 URL (支持 SQLite, MySQL, PostgreSQL)\n# 支持智能推断:\n# - SQLite (推荐): sqlite://database/momei.sqlite (或 file://database/momei.sqlite)\n# - MySQL: mysql://user:pass@host:3306/db\n# - PostgreSQL: postgres://user:pass@host:5432/db\n# 如果未配置,默认将使用本地 SQLite\nDATABASE_URL=sqlite://database/momei.sqlite\n\n# 手动指定数据库类型 (可选,通常由 URL 自动推断: sqlite, mysql, postgres)\n# DATABASE_TYPE=sqlite\n\n# SQLite 数据库路径 (兼容旧版,不推荐手动设置)\n# DATABASE_PATH=database/momei.sqlite\n\n# 是否自动同步数据库表结构 (生产环境建议固定为 false,仅手动控制迁移)\nDATABASE_SYNCHRONIZE=false\n\n# 数据库连接调节 (可选)\n# DATABASE_SSL=false\n# DATABASE_CHARSET=utf8_general_ci\n# DATABASE_TIMEZONE=local\n# DATABASE_ENTITY_PREFIX=momei_\n\n# Redis 连接地址 (可选,配置后将启用基于 Redis 的缓存或限流)\n# REDIS_URL=redis://localhost:6379\n\n# ------------------------------------------\n# 3. 认证与社交登录 (Authentication)\n# ------------------------------------------\n\n# 是否允许新用户注册\nALLOW_REGISTRATION=true\n\n# 是否启用匿名登录 (无需邮箱密码即可登录)\nANONYMOUS_LOGIN_ENABLED=false\n\n# GitHub 配置 (OAuth)\nNUXT_PUBLIC_GITHUB_CLIENT_ID=\nGITHUB_CLIENT_SECRET=\n\n# Google 配置 (OAuth)\nNUXT_PUBLIC_GOOGLE_CLIENT_ID=\nGOOGLE_CLIENT_SECRET=\n\n# ------------------------------------------\n# 4. AI 核心引擎 (AI Integration - Text & Image)\n# ------------------------------------------\n\n# 是否启用 AI 功能\nAI_ENABLED=true\n\n# 主 AI 提供商 (openai, anthropic, deepseek, doubao, siliconflow, gemini, volcengine)\nAI_PROVIDER=openai\n\n# AI API 密钥\nAI_API_KEY=\n\n# 默认模型名称 (如 gpt-4o, claude-3-5-sonnet, deepseek-chat)\nAI_MODEL=gpt-4o\n\n# API 代理端点 (可选,用于 OpenAI 兼容服务)\nAI_API_ENDPOINT=\n\n# AI 生成参数控制 (可选,默认内置优化值)\n# AI_MAX_TOKENS=2048\n# AI_TEMPERATURE=0.7\n# AI_MAX_CONTENT_LENGTH=50000\n# AI_CHUNK_SIZE=4000\n# AI 重任务超时(用于 TTS / ASR / 图片生成等耗时任务)\nAI_HEAVY_TASK_TIMEOUT=5m\n\n# Gemini 专用令牌 (如果 provider 为 gemini 且需要独立令牌鉴权)\n# GEMINI_API_TOKEN=\n\n# AI 图像生成配置\nAI_IMAGE_ENABLED=false\nAI_IMAGE_PROVIDER=openai\nAI_IMAGE_API_KEY=\nAI_IMAGE_MODEL=dall-e-3\nAI_IMAGE_ENDPOINT=\n\n# ------------------------------------------\n# 5. AI 多模态音频 (ASR & TTS)\n# ------------------------------------------\n\n# ASR (语音识别) 配置\n# 是否启用 ASR 功能\nASR_ENABLED=false\n# ASR 提供商 (openai, siliconflow, volcengine)\nASR_PROVIDER=siliconflow\n# ASR 通用配置\nASR_API_KEY=\nASR_MODEL=FunAudioLLM/SenseVoiceSmall\nASR_ENDPOINT=\n\n# TTS (文本转语音) 配置\n# 是否启用 TTS 功能\nTTS_ENABLED=false\n# TTS 提供商 (openai, siliconflow, volcengine)\nTTS_PROVIDER=openai\n# TTS 通用配置 (默认复用 AI_API_KEY)\nTTS_API_KEY=\nTTS_ENDPOINT=\nTTS_DEFAULT_MODEL=tts-1\nTTS_DEFAULT_VOICE=alloy\n\n# --- 厂商专项凭据 (可被上述 ASR/TTS 引用) ---\n\n# 火山引擎 (豆包语音) 统一凭据\nVOLCENGINE_APP_ID=\nVOLCENGINE_ACCESS_KEY=\nVOLCENGINE_SECRET_KEY=\n\n# ------------------------------------------\n# 6. 邮件发送系统 (SMTP)\n# ------------------------------------------\n\n# SMTP 服务器地址\nEMAIL_HOST=\n# SMTP 端口\nEMAIL_PORT=587\n# 是否使用 SSL/TLS (默认 false 会尝试 STARTTLS)\nEMAIL_SECURE=false\nEMAIL_USER=\nEMAIL_PASS=\n# 默认邮件发送者 (格式示例: \"Momei Blog\" <admin@example.com>)\nEMAIL_FROM=\n# 是否要求邮箱验证码验证后才允许登录\nEMAIL_REQUIRE_VERIFICATION=false\n\n# 邮件限流与周期配置 (可选)\n# EMAIL_DAILY_LIMIT=100\n# EMAIL_SINGLE_USER_DAILY_LIMIT=5\n# EMAIL_LIMIT_WINDOW=86400\n# EMAIL_EXPIRES_IN=300\n\n# 匿名邮箱域拦截配置 (可选)\n# ANONYMOUS_EMAIL_DOMAIN_NAME=anonymous.com\n# TEMP_EMAIL_DOMAIN_NAME=example.com\n\n# ------------------------------------------\n# 7. 对象存储系统 (Storage & Upload)\n# ------------------------------------------\n\n# 存储引擎 (local, s3, vercel-blob)\nSTORAGE_TYPE=local\n\n# 路径前缀(所有上传文件均会携带此目录前缀)\nBUCKET_PREFIX=momei/\n\n# 1. 本地存储配置 (STORAGE_TYPE=local)\nLOCAL_STORAGE_DIR=public/uploads\nNUXT_PUBLIC_LOCAL_STORAGE_BASE_URL=/uploads\n\n# 2. S3 兼容存储 (STORAGE_TYPE=s3, 适用于 R2, AWS S3, MinIO)\nS3_ENDPOINT=\nS3_BUCKET_NAME=\nS3_REGION=auto\nS3_ACCESS_KEY_ID=\nS3_SECRET_ACCESS_KEY=\nS3_BASE_URL=\n\n# 3. Vercel Blob (STORAGE_TYPE=vercel-blob)\nBLOB_READ_WRITE_TOKEN=\n\n# 4. Cloudflare R2 专用配置 (也可通过 S3 变量配置)\n# CLOUDFLARE_R2_ACCOUNT_ID=\n# CLOUDFLARE_R2_ACCESS_KEY=\n# CLOUDFLARE_R2_SECRET_KEY=\n# CLOUDFLARE_R2_BUCKET=\n# CLOUDFLARE_R2_BASE_URL=\n\n# 文件大小限制调节 (可选)\n# NUXT_PUBLIC_MAX_UPLOAD_SIZE=4.5MiB\n# NUXT_PUBLIC_MAX_AUDIO_UPLOAD_SIZE=100MiB\n# LOCAL_STORAGE_MIN_FREE_SPACE=100MiB\n\n# ------------------------------------------\n# 8. 运维、监控与自动化 (Operations)\n# ------------------------------------------\n\n# 管理员用户 ID 列表 (逗号分隔,注册后在此提权)\nADMIN_USER_IDS=\n\n# 定时任务鉴权令牌 (必需设置,用于安全触发 Scheduled Tasks Webhook)\nTASKS_TOKEN=\n\n# Webhook HMAC 签名密钥 (推荐独立配置,默认使用 TASKS_TOKEN)\n# 用于 Vercel/Cloudflare 等 Serverless 环境的定时任务触发验证\nWEBHOOK_SECRET=\n\n# Webhook 时间戳容差 (毫秒,默认 300000 即 5 分钟)\n# 用于防止重放攻击\n# WEBHOOK_TIMESTAMP_TOLERANCE=300000\n\n# Sentry 异常监控\nNUXT_PUBLIC_SENTRY_DSN=\nNUXT_PUBLIC_SENTRY_ENVIRONMENT=production\n\n# 站长流量统计 (填入对应统计 ID)\nNUXT_PUBLIC_BAIDU_ANALYTICS_ID=\nNUXT_PUBLIC_GOOGLE_ANALYTICS_ID=\nNUXT_PUBLIC_CLARITY_PROJECT_ID=\n\n# 站点验证标签 (可选)\n# NUXT_PUBLIC_GOOGLE_SITE_VERIFICATION=\n# NUXT_PUBLIC_BING_SITE_VERIFICATION=\n\n# ------------------------------------------\n# 9. 视觉特效与内容组件 (Features)\n# ------------------------------------------\n\n# 站点元数据\nNUXT_PUBLIC_SITE_LOGO=\nNUXT_PUBLIC_SITE_FAVICON=\nNUXT_PUBLIC_SITE_OPERATOR=\n\n# 验证码集成 (提供商: cloudflare-turnstile, google-recaptcha, hcaptcha, captchafox)\nNUXT_PUBLIC_AUTH_CAPTCHA_PROVIDER=\nNUXT_PUBLIC_AUTH_CAPTCHA_SITE_KEY=\nAUTH_CAPTCHA_SECRET_KEY=\n\n# 评论审核与风控\nENABLE_COMMENT_REVIEW=false\n# 关键词黑名单 (英文逗号分隔)\nBLACKLISTED_KEYWORDS=\n\n# 页脚自定义注入代码\nNUXT_PUBLIC_FOOTER_CODE=\n\n# 动态视觉特效控制\nNUXT_PUBLIC_LIVE2D_ENABLED=false\nNUXT_PUBLIC_CANVAS_NEST_ENABLED=false\n# 全局性能卫兵:是否允许移动端加载特效\nNUXT_PUBLIC_EFFECTS_MOBILE_ENABLED=false\n\n# ------------------------------------------\n# 10. 合规与外部资源安全 (Compliance & Security)\n# ------------------------------------------\n\n# 中国大陆备案信息显示\nNUXT_PUBLIC_SHOW_COMPLIANCE_INFO=false\nNUXT_PUBLIC_ICP_LICENSE_NUMBER=\nNUXT_PUBLIC_PUBLIC_SECURITY_NUMBER=\n\n# 安全:外部资源域名白名单 (逗号分隔,防止某些代理环境下图片加载失败)\nNUXT_PUBLIC_SECURITY_URL_WHITELIST=\n\n# Hugging Face 镜像代理地址 (用于部署在大陆环境时拉取资源)\nNUXT_PUBLIC_HF_PROXY=https://huggingface.co\n\n# ------------------------------------------\n# 11. 第三方平台集成 (Third-party)\n# ------------------------------------------\n\n# Memos 生活流同步\nMEMOS_ENABLED=false\nMEMOS_INSTANCE_URL=\nMEMOS_ACCESS_TOKEN=\nMEMOS_DEFAULT_VISIBILITY=PRIVATE\n\n# ------------------------------------------\n# 12. 日志、调试与 Demo 模式 (Logging & Debug)\n# ------------------------------------------\n\n# 日志输出等级 (silly, debug, http, info, warn, error)\nLOG_LEVEL=info\n# 是否开启文件日志记录 (默认 false,Serverless 环境必须设为 false)\nLOGFILES=false\n# LOG_DIR=logs\n\n# Axiom 日志集成\n# AXIOM_DATASET_NAME=\n# AXIOM_API_TOKEN=\n\n# 演示模式 (内存 DB 运行,限制写操作)\nNUXT_PUBLIC_DEMO_MODE=false\n# NUXT_PUBLIC_DEMO_USER_EMAIL=admin@example.com\n# NUXT_PUBLIC_DEMO_PASSWORD=momei123456\n\n# 安装锁定标志(系统首次运行后会自动生成/读取,通常不建议手动修改)\n# MOMEI_INSTALLED=true\n"}, "b273ccf141d651e063595470f18766efaa0732de": {"t": 1785749544.1604528, "n": 7216, "h": "54fb1ce4c358619a", "c": "# ==========================================\n# 墨梅博客 (Momei) 环境变量完整示例文件\n# ==========================================\n\n# ------------------------------------------\n# 1. 基础核心配置 (Essential)\n# ------------------------------------------\n\n# 应用名称\nNUXT_PUBLIC_APP_NAME=墨梅博客\n\n# 站点 SEO 描述\nNUXT_PUBLIC_SITE_DESCRIPTION=一个基于 Nuxt 4 构建的现代化 AI 驱动博客平台\n\n# 站点 SEO 关键词 (逗号分隔)\nNUXT_PUBLIC_SITE_KEYWORDS=Nuxt,Vue,Blog,AI,TypeScript\n\n# 默认语言 (en-US, zh-CN)\nNUXT_PUBLIC_DEFAULT_LANGUAGE=zh-CN\n\n# 站点 URL(注意:公开访问的站点地址,用于 SEO 和 RSS 生成)\nNUXT_PUBLIC_SITE_URL=http://localhost:3000\n\n# Better Auth 的基础 URL(必需,用于认证回调重定向,推荐与 SITE_URL 一致)\nNUXT_PUBLIC_AUTH_BASE_URL=http://localhost:3000\n\n# 用于加密、签名和哈希的密钥。生产环境必须设置!\n# 可以使用 `openssl rand -hex 32` 生成。开发环境下会自动生成随机值。\nAUTH_SECRET=\n\n# 雪花算法机器 ID (0-1023),用于生成分布式唯一 ID。默认自动获取进程 PID 对 1024 取余\n# MACHINE_ID=\n\n# ------------------------------------------\n# 2. 数据库与高性能配置 (Database & Cache)\n# ------------------------------------------\n\n# 数据库连接 URL (支持 SQLite, MySQL, PostgreSQL)\n# 支持智能推断:\n# - SQLite (推荐): sqlite://database/momei.sqlite (或 file://database/momei.sqlite)\n# - MySQL: mysql://user:pass@host:3306/db\n# - PostgreSQL: postgres://user:pass@host:5432/db\n# 如果未配置,默认将使用本地 SQLite\nDATABASE_URL=sqlite://database/momei.sqlite\n\n# 手动指定数据库类型 (可选,通常由 URL 自动推断: sqlite, mysql, postgres)\n# DATABASE_TYPE=sqlite\n\n# SQLite 数据库路径 (兼容旧版,不推荐手动设置)\n# DATABASE_PATH=database/momei.sqlite\n\n# 是否自动同步数据库表结构 (生产环境建议固定为 false,仅手动控制迁移)\nDATABASE_SYNCHRONIZE=false\n\n# 数据库连接调节 (可选)\n# DATABASE_SSL=false\n# DATABASE_CHARSET=utf8_general_ci\n# DATABASE_TIMEZONE=local\n# DATABASE_ENTITY_PREFIX=momei_\n\n# Redis 连接地址 (可选,配置后将启用基于 Redis 的缓存或限流)\n# REDIS_URL=redis://localhost:6379\n\n# ------------------------------------------\n# 3. 认证与社交登录 (Authentication)\n# ------------------------------------------\n\n# 是否允许新用户注册\nALLOW_REGISTRATION=true\n\n# 是否启用匿名登录 (无需邮箱密码即可登录)\nANONYMOUS_LOGIN_ENABLED=false\n\n# GitHub 配置 (OAuth)\nNUXT_PUBLIC_GITHUB_CLIENT_ID=\nGITHUB_CLIENT_SECRET=\n\n# Google 配置 (OAuth)\nNUXT_PUBLIC_GOOGLE_CLIENT_ID=\nGOOGLE_CLIENT_SECRET=\n\n# ------------------------------------------\n# 4. AI 核心引擎 (AI Integration - Text & Image)\n# ------------------------------------------\n\n# 是否启用 AI 功能\nAI_ENABLED=true\n\n# 主 AI 提供商 (openai, anthropic, deepseek, doubao, siliconflow, gemini, volcengine)\nAI_PROVIDER=openai\n\n# AI API 密钥\nAI_API_KEY=\n\n# 默认模型名称 (如 gpt-4o, claude-3-5-sonnet, deepseek-chat)\nAI_MODEL=gpt-4o\n\n# API 代理端点 (可选,用于 OpenAI 兼容服务)\nAI_API_ENDPOINT=\n\n# AI 生成参数控制 (可选,默认内置优化值)\n# AI_MAX_TOKENS=2048\n# AI_TEMPERATURE=0.7\n# AI_MAX_CONTENT_LENGTH=50000\n# AI_CHUNK_SIZE=4000\n# AI 重任务超时(用于 TTS / ASR / 图片生成等耗时任务)\nAI_HEAVY_TASK_TIMEOUT=5m\n\n# Gemini 专用令牌 (如果 provider 为 gemini 且需要独立令牌鉴权)\n# GEMINI_API_TOKEN=\n\n# AI 图像生成配置\nAI_IMAGE_ENABLED=false\nAI_IMAGE_PROVIDER=openai\nAI_IMAGE_API_KEY=\nAI_IMAGE_MODEL=dall-e-3\nAI_IMAGE_ENDPOINT=\n\n# ------------------------------------------\n# 5. AI 多模态音频 (ASR & TTS)\n# ------------------------------------------\n\n# ASR (语音识别) 配置\n# 是否启用 ASR 功能\nASR_ENABLED=false\n# ASR 提供商 (openai, siliconflow, volcengine)\nASR_PROVIDER=siliconflow\n# ASR 通用配置\nASR_API_KEY=\nASR_MODEL=FunAudioLLM/SenseVoiceSmall\nASR_ENDPOINT=\n\n# TTS (文本转语音) 配置\n# 是否启用 TTS 功能\nTTS_ENABLED=false\n# TTS 提供商 (openai, siliconflow, volcengine)\nTTS_PROVIDER=openai\n# TTS 通用配置 (默认复用 AI_API_KEY)\nTTS_API_KEY=\nTTS_ENDPOINT=\nTTS_DEFAULT_MODEL=tts-1\nTTS_DEFAULT_VOICE=alloy\n\n# --- 厂商专项凭据 (可被上述 ASR/TTS 引用) ---\n\n# 火山引擎 (豆包语音) 统一凭据\nVOLCENGINE_APP_ID=\nVOLCENGINE_ACCESS_KEY=\nVOLCENGINE_SECRET_KEY=\n\n# ------------------------------------------\n# 6. 邮件发送系统 (SMTP)\n# ------------------------------------------\n\n# SMTP 服务器地址\nEMAIL_HOST=\n# SMTP 端口\nEMAIL_PORT=587\n# 是否使用 SSL/TLS (默认 false 会尝试 STARTTLS)\nEMAIL_SECURE=false\nEMAIL_USER=\nEMAIL_PASS=\n# 默认邮件发送者 (格式示例: \"Momei Blog\" <admin@example.com>)\nEMAIL_FROM=\n# 是否要求邮箱验证码验证后才允许登录\nEMAIL_REQUIRE_VERIFICATION=false\n\n# 邮件限流与周期配置 (可选)\n# EMAIL_DAILY_LIMIT=100\n# EMAIL_SINGLE_USER_DAILY_LIMIT=5\n# EMAIL_LIMIT_WINDOW=86400\n# EMAIL_EXPIRES_IN=300\n\n# 匿名邮箱域拦截配置 (可选)\n# ANONYMOUS_EMAIL_DOMAIN_NAME=anonymous.com\n# TEMP_EMAIL_DOMAIN_NAME=example.com\n\n# ------------------------------------------\n# 7. 对象存储系统 (Storage & Upload)\n# ------------------------------------------\n\n# 存储引擎 (local, s3, vercel-blob)\nSTORAGE_TYPE=local\n\n# 路径前缀(所有上传文件均会携带此目录前缀)\nBUCKET_PREFIX=momei/\n\n# 1. 本地存储配置 (STORAGE_TYPE=local)\nLOCAL_STORAGE_DIR=public/uploads\nNUXT_PUBLIC_LOCAL_STORAGE_BASE_URL=/uploads\n\n# 2. S3 兼容存储 (STORAGE_TYPE=s3, 适用于 R2, AWS S3, MinIO)\nS3_ENDPOINT=\nS3_BUCKET_NAME=\nS3_REGION=auto\nS3_ACCESS_KEY_ID=\nS3_SECRET_ACCESS_KEY=\nS3_BASE_URL=\n\n# 3. Vercel Blob (STORAGE_TYPE=vercel-blob)\nBLOB_READ_WRITE_TOKEN=\n\n# 4. Cloudflare R2 专用配置 (也可通过 S3 变量配置)\n# CLOUDFLARE_R2_ACCOUNT_ID=\n# CLOUDFLARE_R2_ACCESS_KEY=\n# CLOUDFLARE_R2_SECRET_KEY=\n# CLOUDFLARE_R2_BUCKET=\n# CLOUDFLARE_R2_BASE_URL=\n\n# 文件大小限制调节 (可选)\n# NUXT_PUBLIC_MAX_UPLOAD_SIZE=4.5MiB\n# NUXT_PUBLIC_MAX_AUDIO_UPLOAD_SIZE=100MiB\n# LOCAL_STORAGE_MIN_FREE_SPACE=100MiB\n\n# ------------------------------------------\n# 8. 运维、监控与自动化 (Operations)\n# ------------------------------------------\n\n# 管理员用户 ID 列表 (逗号分隔,注册后在此提权)\nADMIN_USER_IDS=\n\n# 定时任务鉴权令牌 (必需设置,用于安全触发 Scheduled Tasks Webhook)\nTASKS_TOKEN=\n\n# Sentry 异常监控\nNUXT_PUBLIC_SENTRY_DSN=\nNUXT_PUBLIC_SENTRY_ENVIRONMENT=production\n\n# 站长流量统计 (填入对应统计 ID)\nNUXT_PUBLIC_BAIDU_ANALYTICS_ID=\nNUXT_PUBLIC_GOOGLE_ANALYTICS_ID=\nNUXT_PUBLIC_CLARITY_PROJECT_ID=\n\n# 站点验证标签 (可选)\n# NUXT_PUBLIC_GOOGLE_SITE_VERIFICATION=\n# NUXT_PUBLIC_BING_SITE_VERIFICATION=\n\n# ------------------------------------------\n# 9. 视觉特效与内容组件 (Features)\n# ------------------------------------------\n\n# 站点元数据\nNUXT_PUBLIC_SITE_LOGO=\nNUXT_PUBLIC_SITE_FAVICON=\nNUXT_PUBLIC_SITE_OPERATOR=\n\n# 验证码集成 (提供商: cloudflare-turnstile, google-recaptcha, hcaptcha, captchafox)\nNUXT_PUBLIC_AUTH_CAPTCHA_PROVIDER=\nNUXT_PUBLIC_AUTH_CAPTCHA_SITE_KEY=\nAUTH_CAPTCHA_SECRET_KEY=\n\n# 评论审核与风控\nENABLE_COMMENT_REVIEW=false\n# 关键词黑名单 (英文逗号分隔)\nBLACKLISTED_KEYWORDS=\n\n# 页脚自定义注入代码\nNUXT_PUBLIC_FOOTER_CODE=\n\n# 动态视觉特效控制\nNUXT_PUBLIC_LIVE2D_ENABLED=false\nNUXT_PUBLIC_CANVAS_NEST_ENABLED=false\n# 全局性能卫兵:是否允许移动端加载特效\nNUXT_PUBLIC_EFFECTS_MOBILE_ENABLED=false\n\n# ------------------------------------------\n# 10. 合规与外部资源安全 (Compliance & Security)\n# ------------------------------------------\n\n# 中国大陆备案信息显示\nNUXT_PUBLIC_SHOW_COMPLIANCE_INFO=false\nNUXT_PUBLIC_ICP_LICENSE_NUMBER=\nNUXT_PUBLIC_PUBLIC_SECURITY_NUMBER=\n\n# 安全:外部资源域名白名单 (逗号分隔,防止某些代理环境下图片加载失败)\nNUXT_PUBLIC_SECURITY_URL_WHITELIST=\n\n# Hugging Face 镜像代理地址 (用于部署在大陆环境时拉取资源)\nNUXT_PUBLIC_HF_PROXY=https://huggingface.co\n\n# ------------------------------------------\n# 11. 第三方平台集成 (Third-party)\n# ------------------------------------------\n\n# Memos 生活流同步\nMEMOS_ENABLED=false\nMEMOS_INSTANCE_URL=\nMEMOS_ACCESS_TOKEN=\nMEMOS_DEFAULT_VISIBILITY=PRIVATE\n\n# ------------------------------------------\n# 12. 日志、调试与 Demo 模式 (Logging & Debug)\n# ------------------------------------------\n\n# 日志输出等级 (silly, debug, http, info, warn, error)\nLOG_LEVEL=info\n# 是否开启文件日志记录 (默认 false,Serverless 环境必须设为 false)\nLOGFILES=false\n# LOG_DIR=logs\n\n# Axiom 日志集成\n# AXIOM_DATASET_NAME=\n# AXIOM_API_TOKEN=\n\n# 演示模式 (内存 DB 运行,限制写操作)\nNUXT_PUBLIC_DEMO_MODE=false\n# NUXT_PUBLIC_DEMO_USER_EMAIL=admin@example.com\n# NUXT_PUBLIC_DEMO_PASSWORD=momei123456\n\n# 安装锁定标志(系统首次运行后会自动生成/读取,通常不建议手动修改)\n# MOMEI_INSTALLED=true\n"}, "48e4f655958bf6e926dd98afd25e013a7aa770d0": {"t": 1785749545.4170408, "n": 7155, "h": "90bbeb8d31d6114d", "c": "# ==========================================\n# 墨梅博客 (Momei) 环境变量完整示例文件\n# ==========================================\n\n# ------------------------------------------\n# 1. 基础核心配置 (Essential)\n# ------------------------------------------\n\n# 应用名称\nNUXT_PUBLIC_APP_NAME=墨梅博客\n\n# 站点 SEO 描述\nNUXT_PUBLIC_SITE_DESCRIPTION=一个基于 Nuxt 4 构建的现代化 AI 驱动博客平台\n\n# 站点 SEO 关键词 (逗号分隔)\nNUXT_PUBLIC_SITE_KEYWORDS=Nuxt,Vue,Blog,AI,TypeScript\n\n# 默认语言 (en-US, zh-CN)\nNUXT_PUBLIC_DEFAULT_LANGUAGE=zh-CN\n\n# 站点 URL(注意:公开访问的站点地址,用于 SEO 和 RSS 生成)\nNUXT_PUBLIC_SITE_URL=http://localhost:3000\n\n# Better Auth 的基础 URL(必需,用于认证回调重定向,推荐与 SITE_URL 一致)\nNUXT_PUBLIC_AUTH_BASE_URL=http://localhost:3000\n\n# 用于加密、签名和哈希的密钥。生产环境必须设置!\n# 可以使用 `openssl rand -hex 32` 生成。开发环境下会自动生成随机值。\nAUTH_SECRET=\n\n# 雪花算法机器 ID (0-1023),用于生成分布式唯一 ID。默认自动获取进程 PID 对 1024 取余\n# MACHINE_ID=\n\n# ------------------------------------------\n# 2. 数据库与高性能配置 (Database & Cache)\n# ------------------------------------------\n\n# 数据库连接 URL (支持 SQLite, MySQL, PostgreSQL)\n# 支持智能推断:\n# - SQLite (推荐): sqlite://database/momei.sqlite (或 file://database/momei.sqlite)\n# - MySQL: mysql://user:pass@host:3306/db\n# - PostgreSQL: postgres://user:pass@host:5432/db\n# 如果未配置,默认将使用本地 SQLite\nDATABASE_URL=sqlite://database/momei.sqlite\n\n# 手动指定数据库类型 (可选,通常由 URL 自动推断: sqlite, mysql, postgres)\n# DATABASE_TYPE=sqlite\n\n# SQLite 数据库路径 (兼容旧版,不推荐手动设置)\n# DATABASE_PATH=database/momei.sqlite\n\n# 是否自动同步数据库表结构 (生产环境建议固定为 false,仅手动控制迁移)\nDATABASE_SYNCHRONIZE=false\n\n# 数据库连接调节 (可选)\n# DATABASE_SSL=false\n# DATABASE_CHARSET=utf8_general_ci\n# DATABASE_TIMEZONE=local\n# DATABASE_ENTITY_PREFIX=momei_\n\n# Redis 连接地址 (可选,配置后将启用基于 Redis 的缓存或限流)\n# REDIS_URL=redis://localhost:6379\n\n# ------------------------------------------\n# 3. 认证与社交登录 (Authentication)\n# ------------------------------------------\n\n# 是否允许新用户注册\nALLOW_REGISTRATION=true\n\n# 是否启用匿名登录 (无需邮箱密码即可登录)\nANONYMOUS_LOGIN_ENABLED=false\n\n# GitHub 配置 (OAuth)\nNUXT_PUBLIC_GITHUB_CLIENT_ID=\nGITHUB_CLIENT_SECRET=\n\n# Google 配置 (OAuth)\nNUXT_PUBLIC_GOOGLE_CLIENT_ID=\nGOOGLE_CLIENT_SECRET=\n\n# ------------------------------------------\n# 4. AI 核心引擎 (AI Integration - Text & Image)\n# ------------------------------------------\n\n# 是否启用 AI 功能\nAI_ENABLED=true\n\n# 主 AI 提供商 (openai, anthropic, deepseek, doubao, siliconflow, gemini, volcengine)\nAI_PROVIDER=openai\n\n# AI API 密钥\nAI_API_KEY=\n\n# 默认模型名称 (如 gpt-4o, claude-3-5-sonnet, deepseek-chat)\nAI_MODEL=gpt-4o\n\n# API 代理端点 (可选,用于 OpenAI 兼容服务)\nAI_API_ENDPOINT=\n\n# AI 生成参数控制 (可选,默认内置优化值)\n# AI_MAX_TOKENS=2048\n# AI_TEMPERATURE=0.7\n# AI_MAX_CONTENT_LENGTH=50000\n# AI_CHUNK_SIZE=4000\n\n# Gemini 专用令牌 (如果 provider 为 gemini 且需要独立令牌鉴权)\n# GEMINI_API_TOKEN=\n\n# AI 图像生成配置\nAI_IMAGE_ENABLED=false\nAI_IMAGE_PROVIDER=openai\nAI_IMAGE_API_KEY=\nAI_IMAGE_MODEL=dall-e-3\nAI_IMAGE_ENDPOINT=\n\n# ------------------------------------------\n# 5. AI 多模态音频 (ASR & TTS)\n# ------------------------------------------\n\n# ASR (语音识别) 配置\n# 是否启用 ASR 功能\nASR_ENABLED=false\n# ASR 提供商 (openai, siliconflow, volcengine)\nASR_PROVIDER=siliconflow\n# ASR 通用配置\nASR_API_KEY=\nASR_MODEL=FunAudioLLM/SenseVoiceSmall\nASR_ENDPOINT=\n\n# TTS (文本转语音) 配置\n# 是否启用 TTS 功能\nTTS_ENABLED=false\n# TTS 提供商 (openai, siliconflow, volcengine)\nTTS_PROVIDER=openai\n# TTS 通用配置 (默认复用 AI_API_KEY)\nTTS_API_KEY=\nTTS_ENDPOINT=\nTTS_DEFAULT_MODEL=tts-1\nTTS_DEFAULT_VOICE=alloy\n\n# --- 厂商专项凭据 (可被上述 ASR/TTS 引用) ---\n\n# 火山引擎 (豆包语音) 统一凭据\nVOLCENGINE_APP_ID=\nVOLCENGINE_ACCESS_KEY=\nVOLCENGINE_SECRET_KEY=\n\n# ------------------------------------------\n# 6. 邮件发送系统 (SMTP)\n# ------------------------------------------\n\n# SMTP 服务器地址\nEMAIL_HOST=\n# SMTP 端口\nEMAIL_PORT=587\n# 是否使用 SSL/TLS (默认 false 会尝试 STARTTLS)\nEMAIL_SECURE=false\nEMAIL_USER=\nEMAIL_PASS=\n# 默认邮件发送者 (格式示例: \"Momei Blog\" <admin@example.com>)\nEMAIL_FROM=\n# 是否要求邮箱验证码验证后才允许登录\nEMAIL_REQUIRE_VERIFICATION=false\n\n# 邮件限流与周期配置 (可选)\n# EMAIL_DAILY_LIMIT=100\n# EMAIL_SINGLE_USER_DAILY_LIMIT=5\n# EMAIL_LIMIT_WINDOW=86400\n# EMAIL_EXPIRES_IN=300\n\n# 匿名邮箱域拦截配置 (可选)\n# ANONYMOUS_EMAIL_DOMAIN_NAME=anonymous.com\n# TEMP_EMAIL_DOMAIN_NAME=example.com\n\n# ------------------------------------------\n# 7. 对象存储系统 (Storage & Upload)\n# ------------------------------------------\n\n# 存储引擎 (local, s3, vercel-blob)\nSTORAGE_TYPE=local\n\n# 路径前缀(所有上传文件均会携带此目录前缀)\nBUCKET_PREFIX=momei/\n\n# 1. 本地存储配置 (STORAGE_TYPE=local)\nLOCAL_STORAGE_DIR=public/uploads\nNUXT_PUBLIC_LOCAL_STORAGE_BASE_URL=/uploads\n\n# 2. S3 兼容存储 (STORAGE_TYPE=s3, 适用于 R2, AWS S3, MinIO)\nS3_ENDPOINT=\nS3_BUCKET_NAME=\nS3_REGION=auto\nS3_ACCESS_KEY_ID=\nS3_SECRET_ACCESS_KEY=\nS3_BASE_URL=\n\n# 3. Vercel Blob (STORAGE_TYPE=vercel-blob)\nBLOB_READ_WRITE_TOKEN=\n\n# 4. Cloudflare R2 专用配置 (也可通过 S3 变量配置)\n# CLOUDFLARE_R2_ACCOUNT_ID=\n# CLOUDFLARE_R2_ACCESS_KEY=\n# CLOUDFLARE_R2_SECRET_KEY=\n# CLOUDFLARE_R2_BUCKET=\n# CLOUDFLARE_R2_BASE_URL=\n\n# 文件大小限制调节 (可选)\n# NUXT_PUBLIC_MAX_UPLOAD_SIZE=4.5MiB\n# NUXT_PUBLIC_MAX_AUDIO_UPLOAD_SIZE=100MiB\n# LOCAL_STORAGE_MIN_FREE_SPACE=100MiB\n\n# ------------------------------------------\n# 8. 运维、监控与自动化 (Operations)\n# ------------------------------------------\n\n# 管理员用户 ID 列表 (逗号分隔,注册后在此提权)\nADMIN_USER_IDS=\n\n# 定时任务鉴权令牌 (必需设置,用于安全触发 Scheduled Tasks Webhook)\nTASKS_TOKEN=\n\n# Sentry 异常监控\nNUXT_PUBLIC_SENTRY_DSN=\nNUXT_PUBLIC_SENTRY_ENVIRONMENT=production\n\n# 站长流量统计 (填入对应统计 ID)\nNUXT_PUBLIC_BAIDU_ANALYTICS_ID=\nNUXT_PUBLIC_GOOGLE_ANALYTICS_ID=\nNUXT_PUBLIC_CLARITY_PROJECT_ID=\n\n# 站点验证标签 (可选)\n# NUXT_PUBLIC_GOOGLE_SITE_VERIFICATION=\n# NUXT_PUBLIC_BING_SITE_VERIFICATION=\n\n# ------------------------------------------\n# 9. 视觉特效与内容组件 (Features)\n# ------------------------------------------\n\n# 站点元数据\nNUXT_PUBLIC_SITE_LOGO=\nNUXT_PUBLIC_SITE_FAVICON=\nNUXT_PUBLIC_SITE_OPERATOR=\n\n# 验证码集成 (提供商: cloudflare-turnstile, google-recaptcha, hcaptcha, captchafox)\nNUXT_PUBLIC_AUTH_CAPTCHA_PROVIDER=\nNUXT_PUBLIC_AUTH_CAPTCHA_SITE_KEY=\nAUTH_CAPTCHA_SECRET_KEY=\n\n# 评论审核与风控\nENABLE_COMMENT_REVIEW=false\n# 关键词黑名单 (英文逗号分隔)\nBLACKLISTED_KEYWORDS=\n\n# 页脚自定义注入代码\nNUXT_PUBLIC_FOOTER_CODE=\n\n# 动态视觉特效控制\nNUXT_PUBLIC_LIVE2D_ENABLED=false\nNUXT_PUBLIC_CANVAS_NEST_ENABLED=false\n# 全局性能卫兵:是否允许移动端加载特效\nNUXT_PUBLIC_EFFECTS_MOBILE_ENABLED=false\n\n# ------------------------------------------\n# 10. 合规与外部资源安全 (Compliance & Security)\n# ------------------------------------------\n\n# 中国大陆备案信息显示\nNUXT_PUBLIC_SHOW_COMPLIANCE_INFO=false\nNUXT_PUBLIC_ICP_LICENSE_NUMBER=\nNUXT_PUBLIC_PUBLIC_SECURITY_NUMBER=\n\n# 安全:外部资源域名白名单 (逗号分隔,防止某些代理环境下图片加载失败)\nNUXT_PUBLIC_SECURITY_URL_WHITELIST=\n\n# Hugging Face 镜像代理地址 (用于部署在大陆环境时拉取资源)\nNUXT_PUBLIC_HF_PROXY=https://huggingface.co\n\n# ------------------------------------------\n# 11. 第三方平台集成 (Third-party)\n# ------------------------------------------\n\n# Memos 生活流同步\nMEMOS_ENABLED=false\nMEMOS_INSTANCE_URL=\nMEMOS_ACCESS_TOKEN=\nMEMOS_DEFAULT_VISIBILITY=PRIVATE\n\n# ------------------------------------------\n# 12. 日志、调试与 Demo 模式 (Logging & Debug)\n# ------------------------------------------\n\n# 日志输出等级 (silly, debug, http, info, warn, error)\nLOG_LEVEL=info\n# 是否开启文件日志记录 (默认 false,Serverless 环境必须设为 false)\nLOGFILES=false\n# LOG_DIR=logs\n\n# Axiom 日志集成\n# AXIOM_DATASET_NAME=\n# AXIOM_API_TOKEN=\n\n# 演示模式 (内存 DB 运行,限制写操作)\nNUXT_PUBLIC_DEMO_MODE=false\n# NUXT_PUBLIC_DEMO_USER_EMAIL=admin@example.com\n# NUXT_PUBLIC_DEMO_PASSWORD=momei123456\n\n# 安装锁定标志(系统首次运行后会自动生成/读取,通常不建议手动修改)\n# MOMEI_INSTALLED=true\r\n"}, "29492ee9ff34e232fba044353a604fc659e6dfa2": {"t": 1785749546.880219, "n": 8126, "h": "be79c3dcf7a016dd", "c": "# ==========================================\n# 墨梅博客 (Momei) 环境变量完整示例文件\n# ==========================================\n\n# ------------------------------------------\n# 1. 基础核心配置 (Essential)\n# ------------------------------------------\n\n# 应用名称\nNUXT_PUBLIC_APP_NAME=墨梅博客\n\n# 站点 URL(推荐与下方 AUTH_BASE_URL 保持一致)\n# 注意:设置中心中的“站点 URL”当前由 NUXT_PUBLIC_AUTH_BASE_URL 锁定\nNUXT_PUBLIC_SITE_URL=http://localhost:3000\n\n# Better Auth 的基础 URL(也作为设置中心中的站点 URL 来源)\nNUXT_PUBLIC_AUTH_BASE_URL=http://localhost:3000\n\n# 用于加密、签名和哈希的密钥。生产环境必须设置!\n# 可以使用 `openssl rand -hex 32` 生成。开发环境下会自动生成随机值。\nAUTH_SECRET=\n\n# 雪花算法机器 ID (0-1023),用于生成分布式唯一 ID。默认自动获取进程 PID\n# MACHINE_ID=\n\n# ------------------------------------------\n# 2. 数据库配置 (Database)\n# ------------------------------------------\n\n# 数据库连接 URL (SQLite, MySQL, PostgreSQL)\n# 支持智能推断:\n# - SQLite (推荐): sqlite://database/momei.sqlite (或 file://database/momei.sqlite)\n# - MySQL: mysql://user:pass@host:3306/db\n# - PostgreSQL: postgres://user:pass@host:5432/db\n# 如果未配置,默认将使用本地 SQLite (database/momei.sqlite)\nDATABASE_URL=sqlite://database/momei.sqlite\n\n# 手动指定数据库类型 (sqlite, mysql, postgres)\n# DATABASE_TYPE=sqlite\n\n# SQLite 数据库路径 (兼容旧版,不推荐使用)\n# DATABASE_PATH=database/momei.sqlite\n\n# 数据库高级配置 (可选)\n# DATABASE_SSL=false\n# DATABASE_CHARSET=utf8_general_ci\n# DATABASE_TIMEZONE=local\n# DATABASE_ENTITY_PREFIX=momei_\n# DATABASE_SYNCHRONIZE=false\n\n# Redis 连接地址 (可选,用于缓存或限流)\n# REDIS_URL=\n\n# ------------------------------------------\n# 3. 社交登录配置 (Social Auth)\n# ------------------------------------------\n\n# GitHub 配置\nNUXT_PUBLIC_GITHUB_CLIENT_ID=\nGITHUB_CLIENT_SECRET=\n\n# Google 配置\nNUXT_PUBLIC_GOOGLE_CLIENT_ID=\nGOOGLE_CLIENT_SECRET=\n\n# 是否启用匿名登录 (无需邮箱密码即可登录)\nANONYMOUS_LOGIN_ENABLED=false\n\n# ------------------------------------------\n# 4. AI 辅助功能 (AI Integration)\n# ------------------------------------------\n\n# AI 提供商 (openai, anthropic)\nAI_PROVIDER=openai\n# API 密钥。配置后将自动激活 AI 功能。\nAI_API_KEY=\n# 默认模型名称 (如 gpt-4o, claude-3-5-sonnet, deepseek-chat)\nAI_MODEL=gpt-4o\n# API 代理端点 (可选,用于 OpenAI 兼容服务)\nAI_API_ENDPOINT=\n\n# AI 图像生成配置 (AI Image)\n# 是否启用 AI 图像生成\nAI_IMAGE_ENABLED=false\n# AI 图像提供商 (openai, stable-diffusion, doubao, gemini, siliconflow)\nAI_IMAGE_PROVIDER=openai\n# AI 图像 API 密钥 (可选,默认复用 AI_API_KEY)\nAI_IMAGE_API_KEY=\n# AI 图像模型名称 (如 dall-e-3, sd-v1-5)\nAI_IMAGE_MODEL=dall-e-3\n# AI 图像 API 代理端点 (可选,默认复用 AI_API_ENDPOINT)\nAI_IMAGE_ENDPOINT=\n\n# AI 生成参数控制 (可选)\n# AI_MAX_TOKENS=2048\n# AI_TEMPERATURE=0.7\n# AI_MAX_CONTENT_LENGTH=50000\n# AI_CHUNK_SIZE=4000\n\n# ------------------------------------------\n# 5. AI 语音与语音识别 (AI Voice & Speech)\n# ------------------------------------------\n\n# TTS (文本转语音) 配置\n# 是否启用 TTS 功能\nTTS_ENABLED=false\n# TTS 提供商 (openai, siliconflow, volcengine)\nTTS_PROVIDER=openai\n# TTS API 密钥 (可选,默认复用 AI_API_KEY)\nTTS_API_KEY=\n# TTS API 代理端点 (可选,默认复用 AI_API_ENDPOINT)\nTTS_ENDPOINT=\n# 默认 TTS 模型 (如 tts-1)\nTTS_DEFAULT_MODEL=tts-1\n# 默认 TTS 声音 (如 alloy, echo, fable, onyx, nova, shimmer)\nTTS_DEFAULT_VOICE=alloy\n\n# SiliconFlow 专用 TTS 配置 (如果提供商选择 siliconflow)\n# SILICONFLOW_API_KEY=\n# SILICONFLOW_ENDPOINT=https://api.siliconflow.cn/v1\n# SILICONFLOW_TTS_MODEL=fishaudio/fish-speech-1.4\n\n# ASR (语音识别) 配置\n# 是否启用 ASR 功能 (true/false)\nASR_ENABLED=true\n# ASR 提供商 (siliconflow, volcengine)\nASR_PROVIDER=siliconflow\n# ASR 通用配置 (适用于 SiliconFlow 等)\nASR_API_KEY=\nASR_MODEL=FunAudioLLM/SenseVoiceSmall\nASR_ENDPOINT=\n\n# 豆包语音识别 (Volcengine) 配置(当 ASR_PROVIDER=volcengine 时)\n# 资源 ID 推荐通过 ASR_MODEL 配置(如:volc.seedasr.sauc.duration)\n\n# 接口地址(可选)\n# 双向流式优化版:wss://openspeech.bytedance.com/api/v3/sauc/bigmodel_async\n# 流式输入模式:wss://openspeech.bytedance.com/api/v3/sauc/bigmodel_nostream\n# ASR_ENDPOINT=wss://openspeech.bytedance.com/api/v3/sauc/bigmodel_async\n\n# 火山引擎 (豆包语音) 统一凭据(ASR/TTS 共用,推荐仅配置这一套)\nVOLCENGINE_APP_ID=\nVOLCENGINE_ACCESS_KEY=\n# 当前多数场景可选,预留给需要 Secret Key 的场景\nVOLCENGINE_SECRET_KEY=\n\n# 短信/手机验证码有效时间(秒)\n# PHONE_EXPIRES_IN=300\n\n# ------------------------------------------\n# 6. 站点管理与统计 (Analytics & Management)\n# ------------------------------------------\n\n# 管理员用户 ID 列表,使用逗号分隔 (注册后在此处指定 ID 提权)\nADMIN_USER_IDS=\n\n# 联系邮箱\nNUXT_PUBLIC_CONTACT_EMAIL=admin@example.com\n\n# 站点运营方名称 (显示在页脚)\n# NUXT_PUBLIC_SITE_OPERATOR=\n\n# 默认文章版权声明\n# NUXT_PUBLIC_DEFAULT_COPYRIGHT=all-rights-reserved\n\n# Microsoft Clarity 配置 (可选)\nNUXT_PUBLIC_CLARITY_PROJECT_ID=\n\n# 百度统计 ID (可选)\nNUXT_PUBLIC_BAIDU_ANALYTICS_ID=\n\n# Google Analytics ID (可选)\nNUXT_PUBLIC_GOOGLE_ANALYTICS_ID=\n\n# 站点验证 (可选)\n# NUXT_PUBLIC_GOOGLE_SITE_VERIFICATION=\n# NUXT_PUBLIC_BING_SITE_VERIFICATION=\n\n# Sentry 监控 (可选)\nNUXT_PUBLIC_SENTRY_DSN=\nNUXT_PUBLIC_SENTRY_ENVIRONMENT=production\n\n# Live2D 看板娘配置 (可选)\n# 是否启用 Live2D\nNUXT_PUBLIC_LIVE2D_ENABLED=false\n# Live2D 资源根路径(建议以 /dist/ 结尾)\nNUXT_PUBLIC_LIVE2D_SCRIPT_URL=https://unpkg.com/live2d-widgets@1.0.0/dist/\n# waifu-tips.json 地址(留空时将根据 script_url 自动推导)\nNUXT_PUBLIC_LIVE2D_MODEL_URL=\n# 高级覆盖配置(JSON 字符串)\n# 示例:{\"modelId\":0,\"tools\":[\"hitokoto\",\"switch-model\",\"switch-texture\",\"photo\",\"info\",\"quit\"],\"drag\":false,\"logLevel\":\"warn\"}\nNUXT_PUBLIC_LIVE2D_OPTIONS_JSON=\n\n# 统一视觉特效性能配置(同时作用于 Live2D 与 CanvasNest,优先级高于单项配置)\n# 是否允许在移动端/窄屏加载\nNUXT_PUBLIC_EFFECTS_MOBILE_ENABLED=false\n# 最小加载宽度(像素)\nNUXT_PUBLIC_EFFECTS_MIN_WIDTH=768\n# 在省流量/低速网络下是否禁用\nNUXT_PUBLIC_EFFECTS_DATA_SAVER_BLOCK=true\n\n# Canvas Nest 特效配置(可选)\n# NUXT_PUBLIC_CANVAS_NEST_ENABLED=false\n# NUXT_PUBLIC_CANVAS_NEST_OPTIONS_JSON=\n# NUXT_PUBLIC_CANVAS_NEST_MOBILE_ENABLED=false\n# NUXT_PUBLIC_CANVAS_NEST_MIN_WIDTH=768\n# NUXT_PUBLIC_CANVAS_NEST_DATA_SAVER_BLOCK=true\n\n# ------------------------------------------\n# 7. 邮件服务配置 (Email Service)\n# ------------------------------------------\n\n# SMTP 服务器配置\nEMAIL_HOST=\nEMAIL_PORT=587\nEMAIL_SECURE=false\nEMAIL_USER=\nEMAIL_PASS=\n# 默认邮件发送者 (格式: \"Name\" <email@example.com>)\nEMAIL_FROM=\n\n# 邮件限流与时长过长控制 (可选)\n# EMAIL_DAILY_LIMIT=100\n# EMAIL_SINGLE_USER_DAILY_LIMIT=5\n# EMAIL_LIMIT_WINDOW=86400\n# EMAIL_EXPIRES_IN=300\n\n# 匿名/临时邮箱域名配置\n# ANONYMOUS_EMAIL_DOMAIN_NAME=anonymous.com\n# TEMP_EMAIL_DOMAIN_NAME=example.com\n\n# 是否强制要求验证邮箱后才能登录\nEMAIL_REQUIRE_VERIFICATION=false\n\n# ------------------------------------------\n# 8. 文件存储与上传 (Storage & Upload)\n# ------------------------------------------\n\n# 存储类型 (s3, local)\nSTORAGE_TYPE=local\n\n# 本地存储路径 (仅 local 模式使用)\n# LOCAL_STORAGE_DIR=public/uploads\n# NUXT_PUBLIC_LOCAL_STORAGE_BASE_URL=/uploads\n\n# S3 兼容存储配置 (仅 s3 模式使用,如 Cloudflare R2)\n# S3_ENDPOINT=\n# S3_REGION=auto\n# S3_ACCESS_KEY_ID=\n# S3_SECRET_ACCESS_KEY=\n# S3_BUCKET_NAME=\n# S3_BASE_URL=\n# BUCKET_PREFIX=\n\n# Vercel Blob 存储配置 (仅 vercel-blob 模式使用)\n# VERCEL_BLOB_TOKEN=\n# BLOB_READ_WRITE_TOKEN=\n\n# 最大允许上传的常规文件大小,默认 4.5 MiB\nNUXT_PUBLIC_MAX_UPLOAD_SIZE=4.5MiB\n\n# 最大允许上传的音频大小,默认 100 MiB\nNUXT_PUBLIC_MAX_AUDIO_UPLOAD_SIZE=100MiB\n\n# 上传文件限制 (可选)\n# UPLOAD_LIMIT_WINDOW=86400\n# UPLOAD_DAILY_LIMIT=100\n# UPLOAD_SINGLE_USER_DAILY_LIMIT=5\n# LOCAL_STORAGE_MIN_FREE_SPACE=104857600\n\n# ------------------------------------------\n# 9. 合规、安全与验证码 (Compliance & Safety)\n# ------------------------------------------\n\n# 备案信息 (仅中国大陆)\nNUXT_PUBLIC_SHOW_COMPLIANCE_INFO=false\nNUXT_PUBLIC_ICP_LICENSE_NUMBER=\nNUXT_PUBLIC_PUBLIC_SECURITY_NUMBER=\n\n# 验证码 (Captcha) 提供者:cloudflare-turnstile, google-recaptcha, hcaptcha, captchafox\nNUXT_PUBLIC_AUTH_CAPTCHA_PROVIDER=\nNUXT_PUBLIC_AUTH_CAPTCHA_SITE_KEY=\nAUTH_CAPTCHA_SECRET_KEY=\n\n# 外部资源(图片等)域名白名单\n# NUXT_PUBLIC_SECURITY_URL_WHITELIST=images.unsplash.com,cdn.pixabay.com\n\n# ------------------------------------------\n# 10. 第三方集成 (Third-party Integration)\n# ------------------------------------------\n\n# Memos 同步\nMEMOS_ENABLED=false\nMEMOS_INSTANCE_URL=\nMEMOS_ACCESS_TOKEN=\n# 可选值:PRIVATE, PROTECTED, PUBLIC\nMEMOS_DEFAULT_VISIBILITY=PRIVATE\n\n# ------------------------------------------\n# 11. 日志、调试与 Demo 模式 (Logging & Debug)\n# ------------------------------------------\n\n# 日志等级 (silly, debug, http, info, warn, error)\nLOG_LEVEL=http\n# 是否写入日志到文件 (Serverless 环境建议设为 false)\nLOGFILES=false\n# LOG_DIR=logs\n\n# Axiom 日志集成 (可选)\n# AXIOM_DATASET_NAME=\n# AXIOM_API_TOKEN=\n\n# Demo 模式开关 (开启后将限制某些敏感操作)\nNUXT_PUBLIC_DEMO_MODE=false\n# Demo 账号配置\n# NUXT_PUBLIC_DEMO_USER_EMAIL=admin@example.com\n# NUXT_PUBLIC_DEMO_PASSWORD=momei123456\n\n# 测试模式 (自动化测试使用)\nNUXT_PUBLIC_TEST_MODE=false\n\n# 部署状态监控 (可选)\n# SENTRY_AUTH_TOKEN=\n\n# 已初始化标志,设置后将不再显示初始化引导页面\nMOMEI_INSTALLED=true\n"}, "7dcd01ccd50ea857a0715ce54d69591751516e4a": {"t": 1785749549.9232771, "n": 8299, "h": "4a3522776f12177a", "c": "# ==========================================\n# 墨梅博客 (Momei) 环境变量完整示例文件\n# ==========================================\n\n# ------------------------------------------\n# 1. 基础核心配置 (Essential)\n# ------------------------------------------\n\n# 应用名称\nNUXT_PUBLIC_APP_NAME=墨梅博客\n\n# 站点 URL(推荐与下方 AUTH_BASE_URL 保持一致)\n# 注意:设置中心中的“站点 URL”当前由 NUXT_PUBLIC_AUTH_BASE_URL 锁定\nNUXT_PUBLIC_SITE_URL=http://localhost:3000\n\n# Better Auth 的基础 URL(也作为设置中心中的站点 URL 来源)\nNUXT_PUBLIC_AUTH_BASE_URL=http://localhost:3000\n\n# 用于加密、签名和哈希的密钥。生产环境必须设置!\n# 可以使用 `openssl rand -hex 32` 生成。开发环境下会自动生成随机值。\nAUTH_SECRET=\n\n# 雪花算法机器 ID (0-1023),用于生成分布式唯一 ID。默认自动获取进程 PID\n# MACHINE_ID=\n\n# ------------------------------------------\n# 2. 数据库配置 (Database)\n# ------------------------------------------\n\n# 数据库连接 URL (SQLite, MySQL, PostgreSQL)\n# 支持智能推断:\n# - SQLite (推荐): sqlite://database/momei.sqlite (或 file://database/momei.sqlite)\n# - MySQL: mysql://user:pass@host:3306/db\n# - PostgreSQL: postgres://user:pass@host:5432/db\n# 如果未配置,默认将使用本地 SQLite (database/momei.sqlite)\nDATABASE_URL=sqlite://database/momei.sqlite\n\n# 手动指定数据库类型 (sqlite, mysql, postgres)\n# DATABASE_TYPE=sqlite\n\n# SQLite 数据库路径 (兼容旧版,不推荐使用)\n# DATABASE_PATH=database/momei.sqlite\n\n# 数据库高级配置 (可选)\n# DATABASE_SSL=false\n# DATABASE_CHARSET=utf8_general_ci\n# DATABASE_TIMEZONE=local\n# DATABASE_ENTITY_PREFIX=momei_\n# DATABASE_SYNCHRONIZE=false\n\n# Redis 连接地址 (可选,用于缓存或限流)\n# REDIS_URL=\n\n# ------------------------------------------\n# 3. 社交登录配置 (Social Auth)\n# ------------------------------------------\n\n# GitHub 配置\nNUXT_PUBLIC_GITHUB_CLIENT_ID=\nGITHUB_CLIENT_SECRET=\n\n# Google 配置\nNUXT_PUBLIC_GOOGLE_CLIENT_ID=\nGOOGLE_CLIENT_SECRET=\n\n# 是否启用匿名登录 (无需邮箱密码即可登录)\nANONYMOUS_LOGIN_ENABLED=false\n\n# ------------------------------------------\n# 4. AI 辅助功能 (AI Integration)\n# ------------------------------------------\n\n# AI 提供商 (openai, anthropic)\nAI_PROVIDER=openai\n# API 密钥。配置后将自动激活 AI 功能。\nAI_API_KEY=\n# 默认模型名称 (如 gpt-4o, claude-3-5-sonnet, deepseek-chat)\nAI_MODEL=gpt-4o\n# API 代理端点 (可选,用于 OpenAI 兼容服务)\nAI_API_ENDPOINT=\n\n# AI 图像生成配置 (AI Image)\n# 是否启用 AI 图像生成\nAI_IMAGE_ENABLED=false\n# AI 图像提供商 (openai, stable-diffusion, doubao, gemini, siliconflow)\nAI_IMAGE_PROVIDER=openai\n# AI 图像 API 密钥 (可选,默认复用 AI_API_KEY)\nAI_IMAGE_API_KEY=\n# AI 图像模型名称 (如 dall-e-3, sd-v1-5)\nAI_IMAGE_MODEL=dall-e-3\n# AI 图像 API 代理端点 (可选,默认复用 AI_API_ENDPOINT)\nAI_IMAGE_ENDPOINT=\n\n# AI 生成参数控制 (可选)\n# AI_MAX_TOKENS=2048\n# AI_TEMPERATURE=0.7\n# AI_MAX_CONTENT_LENGTH=50000\n# AI_CHUNK_SIZE=4000\n\n# ------------------------------------------\n# 5. AI 语音与语音识别 (AI Voice & Speech)\n# ------------------------------------------\n\n# TTS (文本转语音) 配置\n# 是否启用 TTS 功能\nTTS_ENABLED=false\n# TTS 提供商 (openai, siliconflow, volcengine)\nTTS_PROVIDER=openai\n# TTS API 密钥 (可选,默认复用 AI_API_KEY)\nTTS_API_KEY=\n# TTS API 代理端点 (可选,默认复用 AI_API_ENDPOINT)\nTTS_ENDPOINT=\n# 默认 TTS 模型 (如 tts-1)\nTTS_DEFAULT_MODEL=tts-1\n# 默认 TTS 声音 (如 alloy, echo, fable, onyx, nova, shimmer)\nTTS_DEFAULT_VOICE=alloy\n\n# SiliconFlow 专用 TTS 配置 (如果提供商选择 siliconflow)\n# SILICONFLOW_API_KEY=\n# SILICONFLOW_ENDPOINT=https://api.siliconflow.cn/v1\n# SILICONFLOW_TTS_MODEL=fishaudio/fish-speech-1.4\n\n# ASR (语音识别) 配置\n# 是否启用 ASR 功能 (true/false)\nASR_ENABLED=true\n# ASR 提供商 (siliconflow, volcengine)\nASR_PROVIDER=siliconflow\n# ASR 通用配置 (适用于 SiliconFlow 等)\nASR_API_KEY=\nASR_MODEL=FunAudioLLM/SenseVoiceSmall\nASR_ENDPOINT=\n\n# 豆包语音识别 (Volcengine) 配置(当 ASR_PROVIDER=volcengine 时)\n# APP ID(建连 Header: X-Api-App-Key)\nASR_VOLCENGINE_APP_ID=\n# Access Key(建连 Header: X-Api-Access-Key)\nASR_VOLCENGINE_ACCESS_KEY=\n# Secret Key(与 Access Key 成对使用)\nASR_VOLCENGINE_SECRET_KEY=\n# 资源 ID 推荐通过 ASR_MODEL 配置(如:volc.seedasr.sauc.duration)\n\n# 接口地址(可选)\n# 双向流式优化版:wss://openspeech.bytedance.com/api/v3/sauc/bigmodel_async\n# 流式输入模式:wss://openspeech.bytedance.com/api/v3/sauc/bigmodel_nostream\n# ASR_ENDPOINT=wss://openspeech.bytedance.com/api/v3/sauc/bigmodel_async\n\n# 火山引擎 (豆包语音) 配置 (用于 volcengine 驱动的 ASR 或 高级 TTS/AI)\n# VOLCENGINE_APP_ID=\n# VOLCENGINE_ACCESS_KEY=\n# VOLCENGINE_SECRET_KEY=\n\n# 短信/手机验证码有效时间(秒)\n# PHONE_EXPIRES_IN=300\n\n# ------------------------------------------\n# 6. 站点管理与统计 (Analytics & Management)\n# ------------------------------------------\n\n# 管理员用户 ID 列表,使用逗号分隔 (注册后在此处指定 ID 提权)\nADMIN_USER_IDS=\n\n# 联系邮箱\nNUXT_PUBLIC_CONTACT_EMAIL=admin@example.com\n\n# 站点运营方名称 (显示在页脚)\n# NUXT_PUBLIC_SITE_OPERATOR=\n\n# 默认文章版权声明\n# NUXT_PUBLIC_DEFAULT_COPYRIGHT=all-rights-reserved\n\n# Microsoft Clarity 配置 (可选)\nNUXT_PUBLIC_CLARITY_PROJECT_ID=\n\n# 百度统计 ID (可选)\nNUXT_PUBLIC_BAIDU_ANALYTICS_ID=\n\n# Google Analytics ID (可选)\nNUXT_PUBLIC_GOOGLE_ANALYTICS_ID=\n\n# 站点验证 (可选)\n# NUXT_PUBLIC_GOOGLE_SITE_VERIFICATION=\n# NUXT_PUBLIC_BING_SITE_VERIFICATION=\n\n# Sentry 监控 (可选)\nNUXT_PUBLIC_SENTRY_DSN=\nNUXT_PUBLIC_SENTRY_ENVIRONMENT=production\n\n# Live2D 看板娘配置 (可选)\n# 是否启用 Live2D\nNUXT_PUBLIC_LIVE2D_ENABLED=false\n# Live2D 资源根路径(建议以 /dist/ 结尾)\nNUXT_PUBLIC_LIVE2D_SCRIPT_URL=https://unpkg.com/live2d-widgets@1.0.0/dist/\n# waifu-tips.json 地址(留空时将根据 script_url 自动推导)\nNUXT_PUBLIC_LIVE2D_MODEL_URL=\n# 高级覆盖配置(JSON 字符串)\n# 示例:{\"modelId\":0,\"tools\":[\"hitokoto\",\"switch-model\",\"switch-texture\",\"photo\",\"info\",\"quit\"],\"drag\":false,\"logLevel\":\"warn\"}\nNUXT_PUBLIC_LIVE2D_OPTIONS_JSON=\n\n# 统一视觉特效性能配置(同时作用于 Live2D 与 CanvasNest,优先级高于单项配置)\n# 是否允许在移动端/窄屏加载\nNUXT_PUBLIC_EFFECTS_MOBILE_ENABLED=false\n# 最小加载宽度(像素)\nNUXT_PUBLIC_EFFECTS_MIN_WIDTH=768\n# 在省流量/低速网络下是否禁用\nNUXT_PUBLIC_EFFECTS_DATA_SAVER_BLOCK=true\n\n# Canvas Nest 特效配置(可选)\n# NUXT_PUBLIC_CANVAS_NEST_ENABLED=false\n# NUXT_PUBLIC_CANVAS_NEST_OPTIONS_JSON=\n# NUXT_PUBLIC_CANVAS_NEST_MOBILE_ENABLED=false\n# NUXT_PUBLIC_CANVAS_NEST_MIN_WIDTH=768\n# NUXT_PUBLIC_CANVAS_NEST_DATA_SAVER_BLOCK=true\n\n# ------------------------------------------\n# 7. 邮件服务配置 (Email Service)\n# ------------------------------------------\n\n# SMTP 服务器配置\nEMAIL_HOST=\nEMAIL_PORT=587\nEMAIL_SECURE=false\nEMAIL_USER=\nEMAIL_PASS=\n# 默认邮件发送者 (格式: \"Name\" <email@example.com>)\nEMAIL_FROM=\n\n# 邮件限流与时长过长控制 (可选)\n# EMAIL_DAILY_LIMIT=100\n# EMAIL_SINGLE_USER_DAILY_LIMIT=5\n# EMAIL_LIMIT_WINDOW=86400\n# EMAIL_EXPIRES_IN=300\n\n# 匿名/临时邮箱域名配置\n# ANONYMOUS_EMAIL_DOMAIN_NAME=anonymous.com\n# TEMP_EMAIL_DOMAIN_NAME=example.com\n\n# 是否强制要求验证邮箱后才能登录\nEMAIL_REQUIRE_VERIFICATION=false\n\n# ------------------------------------------\n# 8. 文件存储与上传 (Storage & Upload)\n# ------------------------------------------\n\n# 存储类型 (s3, local)\nSTORAGE_TYPE=local\n\n# 本地存储路径 (仅 local 模式使用)\n# LOCAL_STORAGE_DIR=public/uploads\n# NUXT_PUBLIC_LOCAL_STORAGE_BASE_URL=/uploads\n\n# S3 兼容存储配置 (仅 s3 模式使用,如 Cloudflare R2)\n# S3_ENDPOINT=\n# S3_REGION=auto\n# S3_ACCESS_KEY_ID=\n# S3_SECRET_ACCESS_KEY=\n# S3_BUCKET_NAME=\n# S3_BASE_URL=\n# BUCKET_PREFIX=\n\n# Vercel Blob 存储配置 (仅 vercel-blob 模式使用)\n# VERCEL_BLOB_TOKEN=\n# BLOB_READ_WRITE_TOKEN=\n\n# 最大允许上传的常规文件大小,默认 4.5 MiB\nNUXT_PUBLIC_MAX_UPLOAD_SIZE=4.5MiB\n\n# 最大允许上传的音频大小,默认 100 MiB\nNUXT_PUBLIC_MAX_AUDIO_UPLOAD_SIZE=100MiB\n\n# 上传文件限制 (可选)\n# UPLOAD_LIMIT_WINDOW=86400\n# UPLOAD_DAILY_LIMIT=100\n# UPLOAD_SINGLE_USER_DAILY_LIMIT=5\n# LOCAL_STORAGE_MIN_FREE_SPACE=104857600\n\n# ------------------------------------------\n# 9. 合规、安全与验证码 (Compliance & Safety)\n# ------------------------------------------\n\n# 备案信息 (仅中国大陆)\nNUXT_PUBLIC_SHOW_COMPLIANCE_INFO=false\nNUXT_PUBLIC_ICP_LICENSE_NUMBER=\nNUXT_PUBLIC_PUBLIC_SECURITY_NUMBER=\n\n# 验证码 (Captcha) 提供者:cloudflare-turnstile, google-recaptcha, hcaptcha, captchafox\nNUXT_PUBLIC_AUTH_CAPTCHA_PROVIDER=\nNUXT_PUBLIC_AUTH_CAPTCHA_SITE_KEY=\nAUTH_CAPTCHA_SECRET_KEY=\n\n# 外部资源(图片等)域名白名单\n# NUXT_PUBLIC_SECURITY_URL_WHITELIST=images.unsplash.com,cdn.pixabay.com\n\n# ------------------------------------------\n# 10. 第三方集成 (Third-party Integration)\n# ------------------------------------------\n\n# Memos 同步\nMEMOS_ENABLED=false\nMEMOS_INSTANCE_URL=\nMEMOS_ACCESS_TOKEN=\n# 可选值:PRIVATE, PROTECTED, PUBLIC\nMEMOS_DEFAULT_VISIBILITY=PRIVATE\n\n# ------------------------------------------\n# 11. 日志、调试与 Demo 模式 (Logging & Debug)\n# ------------------------------------------\n\n# 日志等级 (silly, debug, http, info, warn, error)\nLOG_LEVEL=http\n# 是否写入日志到文件 (Serverless 环境建议设为 false)\nLOGFILES=false\n# LOG_DIR=logs\n\n# Axiom 日志集成 (可选)\n# AXIOM_DATASET_NAME=\n# AXIOM_API_TOKEN=\n\n# Demo 模式开关 (开启后将限制某些敏感操作)\nNUXT_PUBLIC_DEMO_MODE=false\n# Demo 账号配置\n# NUXT_PUBLIC_DEMO_USER_EMAIL=admin@example.com\n# NUXT_PUBLIC_DEMO_PASSWORD=momei123456\n\n# 测试模式 (自动化测试使用)\nNUXT_PUBLIC_TEST_MODE=false\n\n# 部署状态监控 (可选)\n# SENTRY_AUTH_TOKEN=\n\n# 已初始化标志,设置后将不再显示初始化引导页面\nMOMEI_INSTALLED=true\n"}, "b76c9e50f9700c5560c43e1f0b6514bc66fd61c2": {"t": 1785749551.603055, "n": 7783, "h": "64258d5e0bce2c4e", "c": "# ==========================================\n# 墨梅博客 (Momei) 环境变量完整示例文件\n# ==========================================\n\n# ------------------------------------------\n# 1. 基础核心配置 (Essential)\n# ------------------------------------------\n\n# 应用名称\nNUXT_PUBLIC_APP_NAME=墨梅博客\n\n# 站点 URL (用于生成 sitemap.xml)\nNUXT_PUBLIC_SITE_URL=http://localhost:3000\n\n# Better Auth 的基础 URL (通常与 SITE_URL 相同)\nNUXT_PUBLIC_AUTH_BASE_URL=http://localhost:3000\n\n# 用于加密、签名和哈希的密钥。生产环境必须设置!\n# 可以使用 `openssl rand -hex 32` 生成。开发环境下会自动生成随机值。\nAUTH_SECRET=\n\n# 雪花算法机器 ID (0-1023),用于生成分布式唯一 ID。默认自动获取进程 PID\n# MACHINE_ID=\n\n# ------------------------------------------\n# 2. 数据库配置 (Database)\n# ------------------------------------------\n\n# 数据库连接 URL (SQLite, MySQL, PostgreSQL)\n# 支持智能推断:\n# - SQLite (推荐): sqlite://database/momei.sqlite (或 file://database/momei.sqlite)\n# - MySQL: mysql://user:pass@host:3306/db\n# - PostgreSQL: postgres://user:pass@host:5432/db\n# 如果未配置,默认将使用本地 SQLite (database/momei.sqlite)\nDATABASE_URL=sqlite://database/momei.sqlite\n\n# 手动指定数据库类型 (sqlite, mysql, postgres)\n# DATABASE_TYPE=sqlite\n\n# SQLite 数据库路径 (兼容旧版,不推荐使用)\n# DATABASE_PATH=database/momei.sqlite\n\n# 数据库高级配置 (可选)\n# DATABASE_SSL=false\n# DATABASE_CHARSET=utf8_general_ci\n# DATABASE_TIMEZONE=local\n# DATABASE_ENTITY_PREFIX=momei_\n# DATABASE_SYNCHRONIZE=false\n\n# Redis 连接地址 (可选,用于缓存或限流)\n# REDIS_URL=\n\n# ------------------------------------------\n# 3. 社交登录配置 (Social Auth)\n# ------------------------------------------\n\n# GitHub 配置\nNUXT_PUBLIC_GITHUB_CLIENT_ID=\nGITHUB_CLIENT_SECRET=\n\n# Google 配置\nNUXT_PUBLIC_GOOGLE_CLIENT_ID=\nGOOGLE_CLIENT_SECRET=\n\n# 是否启用匿名登录 (无需邮箱密码即可登录)\nANONYMOUS_LOGIN_ENABLED=false\n\n# ------------------------------------------\n# 4. AI 辅助功能 (AI Integration)\n# ------------------------------------------\n\n# AI 提供商 (openai, anthropic)\nAI_PROVIDER=openai\n# API 密钥。配置后将自动激活 AI 功能。\nAI_API_KEY=\n# 默认模型名称 (如 gpt-4o, claude-3-5-sonnet, deepseek-chat)\nAI_MODEL=gpt-4o\n# API 代理端点 (可选,用于 OpenAI 兼容服务)\nAI_API_ENDPOINT=\n\n# AI 图像生成配置 (AI Image)\n# 是否启用 AI 图像生成\nAI_IMAGE_ENABLED=false\n# AI 图像提供商 (openai, stable-diffusion, doubao, gemini, siliconflow)\nAI_IMAGE_PROVIDER=openai\n# AI 图像 API 密钥 (可选,默认复用 AI_API_KEY)\nAI_IMAGE_API_KEY=\n# AI 图像模型名称 (如 dall-e-3, sd-v1-5)\nAI_IMAGE_MODEL=dall-e-3\n# AI 图像 API 代理端点 (可选,默认复用 AI_API_ENDPOINT)\nAI_IMAGE_ENDPOINT=\n\n# AI 生成参数控制 (可选)\n# AI_MAX_TOKENS=2048\n# AI_TEMPERATURE=0.7\n# AI_MAX_CONTENT_LENGTH=50000\n# AI_CHUNK_SIZE=4000\n\n# ------------------------------------------\n# 5. AI 语音与语音识别 (AI Voice & Speech)\n# ------------------------------------------\n\n# TTS (文本转语音) 配置\n# 是否启用 TTS 功能\nTTS_ENABLED=false\n# TTS 提供商 (openai, siliconflow, volcengine)\nTTS_PROVIDER=openai\n# TTS API 密钥 (可选,默认复用 AI_API_KEY)\nTTS_API_KEY=\n# TTS API 代理端点 (可选,默认复用 AI_API_ENDPOINT)\nTTS_ENDPOINT=\n# 默认 TTS 模型 (如 tts-1)\nTTS_DEFAULT_MODEL=tts-1\n# 默认 TTS 声音 (如 alloy, echo, fable, onyx, nova, shimmer)\nTTS_DEFAULT_VOICE=alloy\n\n# SiliconFlow 专用 TTS 配置 (如果提供商选择 siliconflow)\n# SILICONFLOW_API_KEY=\n# SILICONFLOW_ENDPOINT=https://api.siliconflow.cn/v1\n# SILICONFLOW_TTS_MODEL=fishaudio/fish-speech-1.4\n\n# ASR (语音识别) 配置\n# 是否启用 ASR 功能 (true/false)\nASR_ENABLED=true\n# ASR 提供商 (siliconflow, volcengine)\nASR_PROVIDER=siliconflow\n# ASR 通用配置 (适用于 SiliconFlow 等)\nASR_API_KEY=\nASR_MODEL=FunAudioLLM/SenseVoiceSmall\nASR_ENDPOINT=\n\n# 豆包语音识别 (Volcengine) 配置(当 ASR_PROVIDER=volcengine 时)\n# APP ID(建连 Header: X-Api-App-Key)\nASR_VOLCENGINE_APP_ID=\n# Access Key(建连 Header: X-Api-Access-Key)\nASR_VOLCENGINE_ACCESS_KEY=\n# 资源 ID(建连 Header: X-Api-Resource-Id)\n# 推荐:volc.seedasr.sauc.duration(小时版)\n# 可选:volc.seedasr.sauc.concurrent(并发版)\n# 也可复用 ASR_MODEL 作为资源 ID\nASR_VOLCENGINE_CLUSTER_ID=\n\n# 接口地址(可选)\n# 双向流式优化版:wss://openspeech.bytedance.com/api/v3/sauc/bigmodel_async\n# 流式输入模式:wss://openspeech.bytedance.com/api/v3/sauc/bigmodel_nostream\n# ASR_ENDPOINT=wss://openspeech.bytedance.com/api/v3/sauc/bigmodel_async\n\n# 火山引擎 (豆包语音) 配置 (用于 volcengine 驱动的 ASR 或 高级 TTS/AI)\n# VOLCENGINE_APP_ID=\n# VOLCENGINE_ACCESS_KEY=\n# VOLCENGINE_SECRET_KEY=\n\n# 短信/手机验证码有效时间(秒)\n# PHONE_EXPIRES_IN=300\n\n# ------------------------------------------\n# 6. 站点管理与统计 (Analytics & Management)\n# ------------------------------------------\n\n# 管理员用户 ID 列表,使用逗号分隔 (注册后在此处指定 ID 提权)\nADMIN_USER_IDS=\n\n# 联系邮箱\nNUXT_PUBLIC_CONTACT_EMAIL=admin@example.com\n\n# 站点运营方名称 (显示在页脚)\n# NUXT_PUBLIC_SITE_OPERATOR=\n\n# 默认文章版权声明\n# NUXT_PUBLIC_DEFAULT_COPYRIGHT=all-rights-reserved\n\n# Microsoft Clarity 配置 (可选)\nNUXT_PUBLIC_CLARITY_PROJECT_ID=\n\n# 百度统计 ID (可选)\nNUXT_PUBLIC_BAIDU_ANALYTICS_ID=\n\n# Google Analytics ID (可选)\nNUXT_PUBLIC_GOOGLE_ANALYTICS_ID=\n\n# 站点验证 (可选)\n# NUXT_PUBLIC_GOOGLE_SITE_VERIFICATION=\n# NUXT_PUBLIC_BING_SITE_VERIFICATION=\n\n# Sentry 监控 (可选)\nNUXT_PUBLIC_SENTRY_DSN=\nNUXT_PUBLIC_SENTRY_ENVIRONMENT=production\n\n# Live2D 看板娘配置 (可选)\n# 是否启用 Live2D\nNUXT_PUBLIC_LIVE2D_ENABLED=false\n# Live2D 资源根路径(建议以 /dist/ 结尾)\nNUXT_PUBLIC_LIVE2D_SCRIPT_URL=https://unpkg.com/live2d-widgets@1.0.0/dist/\n# waifu-tips.json 地址(留空时将根据 script_url 自动推导)\nNUXT_PUBLIC_LIVE2D_MODEL_URL=\n# 高级覆盖配置(JSON 字符串)\n# 示例:{\"modelId\":0,\"tools\":[\"hitokoto\",\"switch-model\",\"switch-texture\",\"photo\",\"info\",\"quit\"],\"drag\":false,\"logLevel\":\"warn\"}\nNUXT_PUBLIC_LIVE2D_OPTIONS_JSON=\n\n# 统一视觉特效性能配置(同时作用于 Live2D 与 CanvasNest,优先级高于单项配置)\n# 是否允许在移动端/窄屏加载\nNUXT_PUBLIC_EFFECTS_MOBILE_ENABLED=false\n# 最小加载宽度(像素)\nNUXT_PUBLIC_EFFECTS_MIN_WIDTH=768\n# 在省流量/低速网络下是否禁用\nNUXT_PUBLIC_EFFECTS_DATA_SAVER_BLOCK=true\n\n# ------------------------------------------\n# 7. 邮件服务配置 (Email Service)\n# ------------------------------------------\n\n# SMTP 服务器配置\nEMAIL_HOST=\nEMAIL_PORT=587\nEMAIL_SECURE=false\nEMAIL_USER=\nEMAIL_PASS=\n# 默认邮件发送者 (格式: \"Name\" <email@example.com>)\nEMAIL_FROM=\n\n# 邮件限流与时长过长控制 (可选)\n# EMAIL_DAILY_LIMIT=100\n# EMAIL_SINGLE_USER_DAILY_LIMIT=5\n# EMAIL_LIMIT_WINDOW=86400\n# EMAIL_EXPIRES_IN=300\n\n# 匿名/临时邮箱域名配置\n# ANONYMOUS_EMAIL_DOMAIN_NAME=anonymous.com\n# TEMP_EMAIL_DOMAIN_NAME=example.com\n\n# 是否强制要求验证邮箱后才能登录\nEMAIL_REQUIRE_VERIFICATION=false\n\n# ------------------------------------------\n# 8. 文件存储与上传 (Storage & Upload)\n# ------------------------------------------\n\n# 存储类型 (s3, local)\nSTORAGE_TYPE=local\n\n# 本地存储路径 (仅 local 模式使用)\n# LOCAL_STORAGE_DIR=public/uploads\n# NUXT_PUBLIC_LOCAL_STORAGE_BASE_URL=/uploads\n\n# S3 兼容存储配置 (仅 s3 模式使用,如 Cloudflare R2)\n# S3_ENDPOINT=\n# S3_REGION=auto\n# S3_ACCESS_KEY_ID=\n# S3_SECRET_ACCESS_KEY=\n# S3_BUCKET_NAME=\n# S3_BASE_URL=\n# BUCKET_PREFIX=\n\n# Vercel Blob 存储配置 (仅 vercel-blob 模式使用)\n# VERCEL_BLOB_TOKEN=\n# BLOB_READ_WRITE_TOKEN=\n\n# 最大允许上传的常规文件大小,默认 4.5 MiB\nNUXT_PUBLIC_MAX_UPLOAD_SIZE=4.5MiB\n\n# 最大允许上传的音频大小,默认 100 MiB\nNUXT_PUBLIC_MAX_AUDIO_UPLOAD_SIZE=100MiB\n\n# 上传文件限制 (可选)\n# UPLOAD_LIMIT_WINDOW=86400\n# UPLOAD_DAILY_LIMIT=100\n# UPLOAD_SINGLE_USER_DAILY_LIMIT=5\n# LOCAL_STORAGE_MIN_FREE_SPACE=104857600\n\n# ------------------------------------------\n# 9. 合规、安全与验证码 (Compliance & Safety)\n# ------------------------------------------\n\n# 备案信息 (仅中国大陆)\nNUXT_PUBLIC_SHOW_COMPLIANCE_INFO=false\nNUXT_PUBLIC_ICP_LICENSE_NUMBER=\nNUXT_PUBLIC_PUBLIC_SECURITY_NUMBER=\n\n# 验证码 (Captcha) 提供者:cloudflare-turnstile, google-recaptcha, hcaptcha, captchafox\nNUXT_PUBLIC_AUTH_CAPTCHA_PROVIDER=\nNUXT_PUBLIC_AUTH_CAPTCHA_SITE_KEY=\nAUTH_CAPTCHA_SECRET_KEY=\n\n# 外部资源(图片等)域名白名单\n# NUXT_PUBLIC_SECURITY_URL_WHITELIST=images.unsplash.com,cdn.pixabay.com\n\n# ------------------------------------------\n# 10. 日志、调试与 Demo 模式 (Logging & Debug)\n# ------------------------------------------\n\n# 日志等级 (silly, debug, http, info, warn, error)\nLOG_LEVEL=http\n# 是否写入日志到文件 (Serverless 环境建议设为 false)\nLOGFILES=false\n# LOG_DIR=logs\n\n# Axiom 日志集成 (可选)\n# AXIOM_DATASET_NAME=\n# AXIOM_API_TOKEN=\n\n# Demo 模式开关 (开启后将限制某些敏感操作)\nNUXT_PUBLIC_DEMO_MODE=false\n# Demo 账号配置\n# NUXT_PUBLIC_DEMO_USER_EMAIL=admin@example.com\n# NUXT_PUBLIC_DEMO_PASSWORD=momei123456\n\n# 测试模式 (自动化测试使用)\nNUXT_PUBLIC_TEST_MODE=false\n\n# 部署状态监控 (可选)\n# SENTRY_AUTH_TOKEN=\n\n# 已初始化标志,设置后将不再显示初始化引导页面\nMOMEI_INSTALLED=true\n"}, "a50c722e8be203835b3a4df8ed04aabe2485add5": {"t": 1785749552.8710978, "n": 7729, "h": "40a1e48eaa3752c0", "c": "# ==========================================\n# 墨梅博客 (Momei) 环境变量完整示例文件\n# ==========================================\n\n# ------------------------------------------\n# 1. 基础核心配置 (Essential)\n# ------------------------------------------\n\n# 应用名称\nNUXT_PUBLIC_APP_NAME=墨梅博客\n\n# 站点 URL (用于生成 sitemap.xml)\nNUXT_PUBLIC_SITE_URL=http://localhost:3000\n\n# Better Auth 的基础 URL (通常与 SITE_URL 相同)\nNUXT_PUBLIC_AUTH_BASE_URL=http://localhost:3000\n\n# 用于加密、签名和哈希的密钥。生产环境必须设置!\n# 可以使用 `openssl rand -hex 32` 生成。开发环境下会自动生成随机值。\nAUTH_SECRET=\n\n# 雪花算法机器 ID (0-1023),用于生成分布式唯一 ID。默认自动获取进程 PID\n# MACHINE_ID=\n\n# ------------------------------------------\n# 2. 数据库配置 (Database)\n# ------------------------------------------\n\n# 数据库连接 URL (SQLite, MySQL, PostgreSQL)\n# 支持智能推断:\n# - SQLite (推荐): sqlite://database/momei.sqlite (或 file://database/momei.sqlite)\n# - MySQL: mysql://user:pass@host:3306/db\n# - PostgreSQL: postgres://user:pass@host:5432/db\n# 如果未配置,默认将使用本地 SQLite (database/momei.sqlite)\nDATABASE_URL=sqlite://database/momei.sqlite\n\n# 手动指定数据库类型 (sqlite, mysql, postgres)\n# DATABASE_TYPE=sqlite\n\n# SQLite 数据库路径 (兼容旧版,不推荐使用)\n# DATABASE_PATH=database/momei.sqlite\n\n# 数据库高级配置 (可选)\n# DATABASE_SSL=false\n# DATABASE_CHARSET=utf8_general_ci\n# DATABASE_TIMEZONE=local\n# DATABASE_ENTITY_PREFIX=momei_\n# DATABASE_SYNCHRONIZE=false\n\n# Redis 连接地址 (可选,用于缓存或限流)\n# REDIS_URL=\n\n# ------------------------------------------\n# 3. 社交登录配置 (Social Auth)\n# ------------------------------------------\n\n# GitHub 配置\nNUXT_PUBLIC_GITHUB_CLIENT_ID=\nGITHUB_CLIENT_SECRET=\n\n# Google 配置\nNUXT_PUBLIC_GOOGLE_CLIENT_ID=\nGOOGLE_CLIENT_SECRET=\n\n# 是否启用匿名登录 (无需邮箱密码即可登录)\nANONYMOUS_LOGIN_ENABLED=false\n\n# ------------------------------------------\n# 4. AI 辅助功能 (AI Integration)\n# ------------------------------------------\n\n# AI 提供商 (openai, anthropic)\nAI_PROVIDER=openai\n# API 密钥。配置后将自动激活 AI 功能。\nAI_API_KEY=\n# 默认模型名称 (如 gpt-4o, claude-3-5-sonnet, deepseek-chat)\nAI_MODEL=gpt-4o\n# API 代理端点 (可选,用于 OpenAI 兼容服务)\nAI_API_ENDPOINT=\n\n# AI 图像生成配置 (AI Image)\n# 是否启用 AI 图像生成\nAI_IMAGE_ENABLED=false\n# AI 图像提供商 (openai, stable-diffusion, doubao, gemini, siliconflow)\nAI_IMAGE_PROVIDER=openai\n# AI 图像 API 密钥 (可选,默认复用 AI_API_KEY)\nAI_IMAGE_API_KEY=\n# AI 图像模型名称 (如 dall-e-3, sd-v1-5)\nAI_IMAGE_MODEL=dall-e-3\n# AI 图像 API 代理端点 (可选,默认复用 AI_API_ENDPOINT)\nAI_IMAGE_ENDPOINT=\n\n# AI 生成参数控制 (可选)\n# AI_MAX_TOKENS=2048\n# AI_TEMPERATURE=0.7\n# AI_MAX_CONTENT_LENGTH=50000\n# AI_CHUNK_SIZE=4000\n\n# ------------------------------------------\n# 5. AI 语音与语音识别 (AI Voice & Speech)\n# ------------------------------------------\n\n# TTS (文本转语音) 配置\n# 是否启用 TTS 功能\nTTS_ENABLED=false\n# TTS 提供商 (openai, siliconflow, volcengine)\nTTS_PROVIDER=openai\n# TTS API 密钥 (可选,默认复用 AI_API_KEY)\nTTS_API_KEY=\n# TTS API 代理端点 (可选,默认复用 AI_API_ENDPOINT)\nTTS_ENDPOINT=\n# 默认 TTS 模型 (如 tts-1)\nTTS_DEFAULT_MODEL=tts-1\n# 默认 TTS 声音 (如 alloy, echo, fable, onyx, nova, shimmer)\nTTS_DEFAULT_VOICE=alloy\n\n# SiliconFlow 专用 TTS 配置 (如果提供商选择 siliconflow)\n# SILICONFLOW_API_KEY=\n# SILICONFLOW_ENDPOINT=https://api.siliconflow.cn/v1\n# SILICONFLOW_TTS_MODEL=fishaudio/fish-speech-1.4\n\n# ASR (语音识别) 配置\n# 是否启用 ASR 功能 (true/false)\nASR_ENABLED=true\n# ASR 提供商 (siliconflow, volcengine)\nASR_PROVIDER=siliconflow\n# ASR 通用配置 (适用于 SiliconFlow 等)\nASR_API_KEY=\nASR_MODEL=FunAudioLLM/SenseVoiceSmall\nASR_ENDPOINT=\n\n# 豆包语音识别 (Volcengine) 配置(当 ASR_PROVIDER=volcengine 时)\n# APP ID(建连 Header: X-Api-App-Key)\nASR_VOLCENGINE_APP_ID=\n# Access Key(建连 Header: X-Api-Access-Key)\nASR_VOLCENGINE_ACCESS_KEY=\n# 资源 ID(建连 Header: X-Api-Resource-Id)\n# 推荐:volc.seedasr.sauc.duration(小时版)\n# 可选:volc.seedasr.sauc.concurrent(并发版)\n# 也可复用 ASR_MODEL 作为资源 ID\nASR_VOLCENGINE_CLUSTER_ID=\n\n# 接口地址(可选)\n# 双向流式优化版:wss://openspeech.bytedance.com/api/v3/sauc/bigmodel_async\n# 流式输入模式:wss://openspeech.bytedance.com/api/v3/sauc/bigmodel_nostream\n# ASR_ENDPOINT=wss://openspeech.bytedance.com/api/v3/sauc/bigmodel_async\n\n# 火山引擎 (豆包语音) 配置 (用于 volcengine 驱动的 ASR 或 高级 TTS/AI)\n# VOLCENGINE_APP_ID=\n# VOLCENGINE_ACCESS_KEY=\n# VOLCENGINE_SECRET_KEY=\n\n# 短信/手机验证码有效时间(秒)\n# PHONE_EXPIRES_IN=300\n\n# ------------------------------------------\n# 6. 站点管理与统计 (Analytics & Management)\n# ------------------------------------------\n\n# 管理员用户 ID 列表,使用逗号分隔 (注册后在此处指定 ID 提权)\nADMIN_USER_IDS=\n\n# 联系邮箱\nNUXT_PUBLIC_CONTACT_EMAIL=admin@example.com\n\n# 站点运营方名称 (显示在页脚)\n# NUXT_PUBLIC_SITE_OPERATOR=\n\n# 默认文章版权声明\n# NUXT_PUBLIC_DEFAULT_COPYRIGHT=all-rights-reserved\n\n# Microsoft Clarity 配置 (可选)\nNUXT_PUBLIC_CLARITY_PROJECT_ID=\n\n# 百度统计 ID (可选)\nNUXT_PUBLIC_BAIDU_ANALYTICS_ID=\n\n# Google Analytics ID (可选)\nNUXT_PUBLIC_GOOGLE_ANALYTICS_ID=\n\n# 站点验证 (可选)\n# NUXT_PUBLIC_GOOGLE_SITE_VERIFICATION=\n# NUXT_PUBLIC_BING_SITE_VERIFICATION=\n\n# Sentry 监控 (可选)\nNUXT_PUBLIC_SENTRY_DSN=\nNUXT_PUBLIC_SENTRY_ENVIRONMENT=production\n\n# Live2D 看板娘配置 (可选)\n# 是否启用 Live2D\nNUXT_PUBLIC_LIVE2D_ENABLED=false\n# Live2D 资源根路径(建议以 /dist/ 结尾)\nNUXT_PUBLIC_LIVE2D_SCRIPT_URL=https://unpkg.com/live2d-widgets@1.0.0/dist/\n# waifu-tips.json 地址(留空时将根据 script_url 自动推导)\nNUXT_PUBLIC_LIVE2D_MODEL_URL=\n# 高级覆盖配置(JSON 字符串)\n# 示例:{\"modelId\":0,\"tools\":[\"hitokoto\",\"switch-model\",\"switch-texture\",\"photo\",\"info\",\"quit\"],\"drag\":false,\"logLevel\":\"warn\"}\nNUXT_PUBLIC_LIVE2D_OPTIONS_JSON=\n# 是否允许在移动端/窄屏加载\nNUXT_PUBLIC_LIVE2D_MOBILE_ENABLED=false\n# 最小加载宽度(像素)\nNUXT_PUBLIC_LIVE2D_MIN_WIDTH=768\n# 在省流量/低速网络下是否禁用\nNUXT_PUBLIC_LIVE2D_DATA_SAVER_BLOCK=true\n\n# ------------------------------------------\n# 7. 邮件服务配置 (Email Service)\n# ------------------------------------------\n\n# SMTP 服务器配置\nEMAIL_HOST=\nEMAIL_PORT=587\nEMAIL_SECURE=false\nEMAIL_USER=\nEMAIL_PASS=\n# 默认邮件发送者 (格式: \"Name\" <email@example.com>)\nEMAIL_FROM=\n\n# 邮件限流与时长过长控制 (可选)\n# EMAIL_DAILY_LIMIT=100\n# EMAIL_SINGLE_USER_DAILY_LIMIT=5\n# EMAIL_LIMIT_WINDOW=86400\n# EMAIL_EXPIRES_IN=300\n\n# 匿名/临时邮箱域名配置\n# ANONYMOUS_EMAIL_DOMAIN_NAME=anonymous.com\n# TEMP_EMAIL_DOMAIN_NAME=example.com\n\n# 是否强制要求验证邮箱后才能登录\nEMAIL_REQUIRE_VERIFICATION=false\n\n# ------------------------------------------\n# 8. 文件存储与上传 (Storage & Upload)\n# ------------------------------------------\n\n# 存储类型 (s3, local)\nSTORAGE_TYPE=local\n\n# 本地存储路径 (仅 local 模式使用)\n# LOCAL_STORAGE_DIR=public/uploads\n# NUXT_PUBLIC_LOCAL_STORAGE_BASE_URL=/uploads\n\n# S3 兼容存储配置 (仅 s3 模式使用,如 Cloudflare R2)\n# S3_ENDPOINT=\n# S3_REGION=auto\n# S3_ACCESS_KEY_ID=\n# S3_SECRET_ACCESS_KEY=\n# S3_BUCKET_NAME=\n# S3_BASE_URL=\n# BUCKET_PREFIX=\n\n# Vercel Blob 存储配置 (仅 vercel-blob 模式使用)\n# VERCEL_BLOB_TOKEN=\n# BLOB_READ_WRITE_TOKEN=\n\n# 最大允许上传的常规文件大小,默认 4.5 MiB\nNUXT_PUBLIC_MAX_UPLOAD_SIZE=4.5MiB\n\n# 最大允许上传的音频大小,默认 100 MiB\nNUXT_PUBLIC_MAX_AUDIO_UPLOAD_SIZE=100MiB\n\n# 上传文件限制 (可选)\n# UPLOAD_LIMIT_WINDOW=86400\n# UPLOAD_DAILY_LIMIT=100\n# UPLOAD_SINGLE_USER_DAILY_LIMIT=5\n# LOCAL_STORAGE_MIN_FREE_SPACE=104857600\n\n# ------------------------------------------\n# 9. 合规、安全与验证码 (Compliance & Safety)\n# ------------------------------------------\n\n# 备案信息 (仅中国大陆)\nNUXT_PUBLIC_SHOW_COMPLIANCE_INFO=false\nNUXT_PUBLIC_ICP_LICENSE_NUMBER=\nNUXT_PUBLIC_PUBLIC_SECURITY_NUMBER=\n\n# 验证码 (Captcha) 提供者:cloudflare-turnstile, google-recaptcha, hcaptcha, captchafox\nNUXT_PUBLIC_AUTH_CAPTCHA_PROVIDER=\nNUXT_PUBLIC_AUTH_CAPTCHA_SITE_KEY=\nAUTH_CAPTCHA_SECRET_KEY=\n\n# 外部资源(图片等)域名白名单\n# NUXT_PUBLIC_SECURITY_URL_WHITELIST=images.unsplash.com,cdn.pixabay.com\n\n# ------------------------------------------\n# 10. 日志、调试与 Demo 模式 (Logging & Debug)\n# ------------------------------------------\n\n# 日志等级 (silly, debug, http, info, warn, error)\nLOG_LEVEL=http\n# 是否写入日志到文件 (Serverless 环境建议设为 false)\nLOGFILES=false\n# LOG_DIR=logs\n\n# Axiom 日志集成 (可选)\n# AXIOM_DATASET_NAME=\n# AXIOM_API_TOKEN=\n\n# Demo 模式开关 (开启后将限制某些敏感操作)\nNUXT_PUBLIC_DEMO_MODE=false\n# Demo 账号配置\n# NUXT_PUBLIC_DEMO_USER_EMAIL=admin@example.com\n# NUXT_PUBLIC_DEMO_PASSWORD=momei123456\n\n# 测试模式 (自动化测试使用)\nNUXT_PUBLIC_TEST_MODE=false\n\n# 部署状态监控 (可选)\n# SENTRY_AUTH_TOKEN=\n\n# 已初始化标志,设置后将不再显示初始化引导页面\nMOMEI_INSTALLED=true\n"}, "24eb965fc96678047835108dbbf1d9c7bcb8e353": {"t": 1785749553.9767263, "n": 7730, "h": "da96fd89acd4e6f8", "c": "# ==========================================\n# 墨梅博客 (Momei) 环境变量完整示例文件\n# ==========================================\n\n# ------------------------------------------\n# 1. 基础核心配置 (Essential)\n# ------------------------------------------\n\n# 应用名称\nNUXT_PUBLIC_APP_NAME=墨梅博客\n\n# 站点 URL (用于生成 sitemap.xml)\nNUXT_PUBLIC_SITE_URL=http://localhost:3000\n\n# Better Auth 的基础 URL (通常与 SITE_URL 相同)\nNUXT_PUBLIC_AUTH_BASE_URL=http://localhost:3000\n\n# 用于加密、签名和哈希的密钥。生产环境必须设置!\n# 可以使用 `openssl rand -hex 32` 生成。开发环境下会自动生成随机值。\nAUTH_SECRET=\n\n# 雪花算法机器 ID (0-1023),用于生成分布式唯一 ID。默认自动获取进程 PID\n# MACHINE_ID=\n\n# ------------------------------------------\n# 2. 数据库配置 (Database)\n# ------------------------------------------\n\n# 数据库连接 URL (SQLite, MySQL, PostgreSQL)\n# 支持智能推断:\n# - SQLite (推荐): sqlite://database/momei.sqlite (或 file://database/momei.sqlite)\n# - MySQL: mysql://user:pass@host:3306/db\n# - PostgreSQL: postgres://user:pass@host:5432/db\n# 如果未配置,默认将使用本地 SQLite (database/momei.sqlite)\nDATABASE_URL=sqlite://database/momei.sqlite\n\n# 手动指定数据库类型 (sqlite, mysql, postgres)\n# DATABASE_TYPE=sqlite\n\n# SQLite 数据库路径 (兼容旧版,不推荐使用)\n# DATABASE_PATH=database/momei.sqlite\n\n# 数据库高级配置 (可选)\n# DATABASE_SSL=false\n# DATABASE_CHARSET=utf8_general_ci\n# DATABASE_TIMEZONE=local\n# DATABASE_ENTITY_PREFIX=momei_\n# DATABASE_SYNCHRONIZE=false\n\n# Redis 连接地址 (可选,用于缓存或限流)\n# REDIS_URL=\n\n# ------------------------------------------\n# 3. 社交登录配置 (Social Auth)\n# ------------------------------------------\n\n# GitHub 配置\nNUXT_PUBLIC_GITHUB_CLIENT_ID=\nGITHUB_CLIENT_SECRET=\n\n# Google 配置\nNUXT_PUBLIC_GOOGLE_CLIENT_ID=\nGOOGLE_CLIENT_SECRET=\n\n# 是否启用匿名登录 (无需邮箱密码即可登录)\nANONYMOUS_LOGIN_ENABLED=false\n\n# ------------------------------------------\n# 4. AI 辅助功能 (AI Integration)\n# ------------------------------------------\n\n# AI 提供商 (openai, anthropic)\nAI_PROVIDER=openai\n# API 密钥。配置后将自动激活 AI 功能。\nAI_API_KEY=\n# 默认模型名称 (如 gpt-4o, claude-3-5-sonnet, deepseek-chat)\nAI_MODEL=gpt-4o\n# API 代理端点 (可选,用于 OpenAI 兼容服务)\nAI_API_ENDPOINT=\n\n# AI 图像生成配置 (AI Image)\n# 是否启用 AI 图像生成\nAI_IMAGE_ENABLED=false\n# AI 图像提供商 (openai, stable-diffusion, doubao, gemini, siliconflow)\nAI_IMAGE_PROVIDER=openai\n# AI 图像 API 密钥 (可选,默认复用 AI_API_KEY)\nAI_IMAGE_API_KEY=\n# AI 图像模型名称 (如 dall-e-3, sd-v1-5)\nAI_IMAGE_MODEL=dall-e-3\n# AI 图像 API 代理端点 (可选,默认复用 AI_API_ENDPOINT)\nAI_IMAGE_ENDPOINT=\n\n# AI 生成参数控制 (可选)\n# AI_MAX_TOKENS=2048\n# AI_TEMPERATURE=0.7\n# AI_MAX_CONTENT_LENGTH=50000\n# AI_CHUNK_SIZE=4000\n\n# ------------------------------------------\n# 5. AI 语音与语音识别 (AI Voice & Speech)\n# ------------------------------------------\n\n# TTS (文本转语音) 配置\n# 是否启用 TTS 功能\nTTS_ENABLED=false\n# TTS 提供商 (openai, siliconflow, volcengine)\nTTS_PROVIDER=openai\n# TTS API 密钥 (可选,默认复用 AI_API_KEY)\nTTS_API_KEY=\n# TTS API 代理端点 (可选,默认复用 AI_API_ENDPOINT)\nTTS_ENDPOINT=\n# 默认 TTS 模型 (如 tts-1)\nTTS_DEFAULT_MODEL=tts-1\n# 默认 TTS 声音 (如 alloy, echo, fable, onyx, nova, shimmer)\nTTS_DEFAULT_VOICE=alloy\n\n# SiliconFlow 专用 TTS 配置 (如果提供商选择 siliconflow)\n# SILICONFLOW_API_KEY=\n# SILICONFLOW_ENDPOINT=https://api.siliconflow.cn/v1\n# SILICONFLOW_TTS_MODEL=fishaudio/fish-speech-1.4\n\n# ASR (语音识别) 配置\n# 是否启用 ASR 功能 (true/false)\nASR_ENABLED=true\n# ASR 提供商 (siliconflow, volcengine)\nASR_PROVIDER=siliconflow\n# ASR 通用配置 (适用于 SiliconFlow 等)\nASR_API_KEY=\nASR_MODEL=FunAudioLLM/SenseVoiceSmall\nASR_ENDPOINT=\n\n# 豆包语音识别 (Volcengine) 配置(当 ASR_PROVIDER=volcengine 时)\n# APP ID(建连 Header: X-Api-App-Key)\nASR_VOLCENGINE_APP_ID=\n# Access Key(建连 Header: X-Api-Access-Key)\nASR_VOLCENGINE_ACCESS_KEY=\n# 资源 ID(建连 Header: X-Api-Resource-Id)\n# 推荐:volc.seedasr.sauc.duration(小时版)\n# 可选:volc.seedasr.sauc.concurrent(并发版)\n# 也可复用 ASR_MODEL 作为资源 ID\nASR_VOLCENGINE_CLUSTER_ID=\n\n# 接口地址(可选)\n# 双向流式优化版:wss://openspeech.bytedance.com/api/v3/sauc/bigmodel_async\n# 流式输入模式:wss://openspeech.bytedance.com/api/v3/sauc/bigmodel_nostream\n# ASR_ENDPOINT=wss://openspeech.bytedance.com/api/v3/sauc/bigmodel_async\n\n# 火山引擎 (豆包语音) 配置 (用于 volcengine 驱动的 ASR 或 高级 TTS/AI)\n# VOLCENGINE_APP_ID=\n# VOLCENGINE_ACCESS_KEY=\n# VOLCENGINE_SECRET_KEY=\n\n# 短信/手机验证码有效时间(秒)\n# PHONE_EXPIRES_IN=300\n\n# ------------------------------------------\n# 6. 站点管理与统计 (Analytics & Management)\n# ------------------------------------------\n\n# 管理员用户 ID 列表,使用逗号分隔 (注册后在此处指定 ID 提权)\nADMIN_USER_IDS=\n\n# 联系邮箱\nNUXT_PUBLIC_CONTACT_EMAIL=admin@example.com\n\n# 站点运营方名称 (显示在页脚)\n# NUXT_PUBLIC_SITE_OPERATOR=\n\n# 默认文章版权声明\n# NUXT_PUBLIC_DEFAULT_COPYRIGHT=all-rights-reserved\n\n# Microsoft Clarity 配置 (可选)\nNUXT_PUBLIC_CLARITY_PROJECT_ID=\n\n# 百度统计 ID (可选)\nNUXT_PUBLIC_BAIDU_ANALYTICS_ID=\n\n# Google Analytics ID (可选)\nNUXT_PUBLIC_GOOGLE_ANALYTICS_ID=\n\n# 站点验证 (可选)\n# NUXT_PUBLIC_GOOGLE_SITE_VERIFICATION=\n# NUXT_PUBLIC_BING_SITE_VERIFICATION=\n\n# Sentry 监控 (可选)\nNUXT_PUBLIC_SENTRY_DSN=\nNUXT_PUBLIC_SENTRY_ENVIRONMENT=production\n\n# Live2D 看板娘配置 (可选)\n# 是否启用 Live2D\nNUXT_PUBLIC_LIVE2D_ENABLED=false\n# Live2D 资源根路径(建议以 /dist/ 结尾)\nNUXT_PUBLIC_LIVE2D_SCRIPT_URL=https://unpkg.com/live2d-widgets@1.0.0/dist/\n# waifu-tips.json 地址(留空时将根据 script_url 自动推导)\nNUXT_PUBLIC_LIVE2D_MODEL_URL=\n# 高级覆盖配置(JSON 字符串)\n# 示例:{\"modelId\":0,\"tools\":[\"hitokoto\",\"switch-model\",\"switch-texture\",\"photo\",\"info\",\"quit\"],\"drag\":false,\"logLevel\":\"warn\"}\nNUXT_PUBLIC_LIVE2D_OPTIONS_JSON=\n# 是否允许在移动端/窄屏加载\nNUXT_PUBLIC_LIVE2D_MOBILE_ENABLED=false\n# 最小加载宽度(像素)\nNUXT_PUBLIC_LIVE2D_MIN_WIDTH=1024\n# 在省流量/低速网络下是否禁用\nNUXT_PUBLIC_LIVE2D_DATA_SAVER_BLOCK=true\n\n# ------------------------------------------\n# 7. 邮件服务配置 (Email Service)\n# ------------------------------------------\n\n# SMTP 服务器配置\nEMAIL_HOST=\nEMAIL_PORT=587\nEMAIL_SECURE=false\nEMAIL_USER=\nEMAIL_PASS=\n# 默认邮件发送者 (格式: \"Name\" <email@example.com>)\nEMAIL_FROM=\n\n# 邮件限流与时长过长控制 (可选)\n# EMAIL_DAILY_LIMIT=100\n# EMAIL_SINGLE_USER_DAILY_LIMIT=5\n# EMAIL_LIMIT_WINDOW=86400\n# EMAIL_EXPIRES_IN=300\n\n# 匿名/临时邮箱域名配置\n# ANONYMOUS_EMAIL_DOMAIN_NAME=anonymous.com\n# TEMP_EMAIL_DOMAIN_NAME=example.com\n\n# 是否强制要求验证邮箱后才能登录\nEMAIL_REQUIRE_VERIFICATION=false\n\n# ------------------------------------------\n# 8. 文件存储与上传 (Storage & Upload)\n# ------------------------------------------\n\n# 存储类型 (s3, local)\nSTORAGE_TYPE=local\n\n# 本地存储路径 (仅 local 模式使用)\n# LOCAL_STORAGE_DIR=public/uploads\n# NUXT_PUBLIC_LOCAL_STORAGE_BASE_URL=/uploads\n\n# S3 兼容存储配置 (仅 s3 模式使用,如 Cloudflare R2)\n# S3_ENDPOINT=\n# S3_REGION=auto\n# S3_ACCESS_KEY_ID=\n# S3_SECRET_ACCESS_KEY=\n# S3_BUCKET_NAME=\n# S3_BASE_URL=\n# BUCKET_PREFIX=\n\n# Vercel Blob 存储配置 (仅 vercel-blob 模式使用)\n# VERCEL_BLOB_TOKEN=\n# BLOB_READ_WRITE_TOKEN=\n\n# 最大允许上传的常规文件大小,默认 4.5 MiB\nNUXT_PUBLIC_MAX_UPLOAD_SIZE=4.5MiB\n\n# 最大允许上传的音频大小,默认 100 MiB\nNUXT_PUBLIC_MAX_AUDIO_UPLOAD_SIZE=100MiB\n\n# 上传文件限制 (可选)\n# UPLOAD_LIMIT_WINDOW=86400\n# UPLOAD_DAILY_LIMIT=100\n# UPLOAD_SINGLE_USER_DAILY_LIMIT=5\n# LOCAL_STORAGE_MIN_FREE_SPACE=104857600\n\n# ------------------------------------------\n# 9. 合规、安全与验证码 (Compliance & Safety)\n# ------------------------------------------\n\n# 备案信息 (仅中国大陆)\nNUXT_PUBLIC_SHOW_COMPLIANCE_INFO=false\nNUXT_PUBLIC_ICP_LICENSE_NUMBER=\nNUXT_PUBLIC_PUBLIC_SECURITY_NUMBER=\n\n# 验证码 (Captcha) 提供者:cloudflare-turnstile, google-recaptcha, hcaptcha, captchafox\nNUXT_PUBLIC_AUTH_CAPTCHA_PROVIDER=\nNUXT_PUBLIC_AUTH_CAPTCHA_SITE_KEY=\nAUTH_CAPTCHA_SECRET_KEY=\n\n# 外部资源(图片等)域名白名单\n# NUXT_PUBLIC_SECURITY_URL_WHITELIST=images.unsplash.com,cdn.pixabay.com\n\n# ------------------------------------------\n# 10. 日志、调试与 Demo 模式 (Logging & Debug)\n# ------------------------------------------\n\n# 日志等级 (silly, debug, http, info, warn, error)\nLOG_LEVEL=http\n# 是否写入日志到文件 (Serverless 环境建议设为 false)\nLOGFILES=false\n# LOG_DIR=logs\n\n# Axiom 日志集成 (可选)\n# AXIOM_DATASET_NAME=\n# AXIOM_API_TOKEN=\n\n# Demo 模式开关 (开启后将限制某些敏感操作)\nNUXT_PUBLIC_DEMO_MODE=false\n# Demo 账号配置\n# NUXT_PUBLIC_DEMO_USER_EMAIL=admin@example.com\n# NUXT_PUBLIC_DEMO_PASSWORD=momei123456\n\n# 测试模式 (自动化测试使用)\nNUXT_PUBLIC_TEST_MODE=false\n\n# 部署状态监控 (可选)\n# SENTRY_AUTH_TOKEN=\n\n# 已初始化标志,设置后将不再显示初始化引导页面\nMOMEI_INSTALLED=true\n"}, "f2bb9f52f8ae5ecb0252a5479c0f90fed565e45e": {"t": 1785749555.2422523, "n": 7144, "h": "eb23723b297972e7", "c": "# ==========================================\n# 墨梅博客 (Momei) 环境变量完整示例文件\n# ==========================================\n\n# ------------------------------------------\n# 1. 基础核心配置 (Essential)\n# ------------------------------------------\n\n# 应用名称\nNUXT_PUBLIC_APP_NAME=墨梅博客\n\n# 站点 URL (用于生成 sitemap.xml)\nNUXT_PUBLIC_SITE_URL=http://localhost:3000\n\n# Better Auth 的基础 URL (通常与 SITE_URL 相同)\nNUXT_PUBLIC_AUTH_BASE_URL=http://localhost:3000\n\n# 用于加密、签名和哈希的密钥。生产环境必须设置!\n# 可以使用 `openssl rand -hex 32` 生成。开发环境下会自动生成随机值。\nAUTH_SECRET=\n\n# 雪花算法机器 ID (0-1023),用于生成分布式唯一 ID。默认自动获取进程 PID\n# MACHINE_ID=\n\n# ------------------------------------------\n# 2. 数据库配置 (Database)\n# ------------------------------------------\n\n# 数据库连接 URL (SQLite, MySQL, PostgreSQL)\n# 支持智能推断:\n# - SQLite (推荐): sqlite://database/momei.sqlite (或 file://database/momei.sqlite)\n# - MySQL: mysql://user:pass@host:3306/db\n# - PostgreSQL: postgres://user:pass@host:5432/db\n# 如果未配置,默认将使用本地 SQLite (database/momei.sqlite)\nDATABASE_URL=sqlite://database/momei.sqlite\n\n# 手动指定数据库类型 (sqlite, mysql, postgres)\n# DATABASE_TYPE=sqlite\n\n# SQLite 数据库路径 (兼容旧版,不推荐使用)\n# DATABASE_PATH=database/momei.sqlite\n\n# 数据库高级配置 (可选)\n# DATABASE_SSL=false\n# DATABASE_CHARSET=utf8_general_ci\n# DATABASE_TIMEZONE=local\n# DATABASE_ENTITY_PREFIX=momei_\n# DATABASE_SYNCHRONIZE=false\n\n# Redis 连接地址 (可选,用于缓存或限流)\n# REDIS_URL=\n\n# ------------------------------------------\n# 3. 社交登录配置 (Social Auth)\n# ------------------------------------------\n\n# GitHub 配置\nNUXT_PUBLIC_GITHUB_CLIENT_ID=\nGITHUB_CLIENT_SECRET=\n\n# Google 配置\nNUXT_PUBLIC_GOOGLE_CLIENT_ID=\nGOOGLE_CLIENT_SECRET=\n\n# 是否启用匿名登录 (无需邮箱密码即可登录)\nANONYMOUS_LOGIN_ENABLED=false\n\n# ------------------------------------------\n# 4. AI 辅助功能 (AI Integration)\n# ------------------------------------------\n\n# AI 提供商 (openai, anthropic)\nAI_PROVIDER=openai\n# API 密钥。配置后将自动激活 AI 功能。\nAI_API_KEY=\n# 默认模型名称 (如 gpt-4o, claude-3-5-sonnet, deepseek-chat)\nAI_MODEL=gpt-4o\n# API 代理端点 (可选,用于 OpenAI 兼容服务)\nAI_API_ENDPOINT=\n\n# AI 图像生成配置 (AI Image)\n# 是否启用 AI 图像生成\nAI_IMAGE_ENABLED=false\n# AI 图像提供商 (openai, stable-diffusion, doubao, gemini, siliconflow)\nAI_IMAGE_PROVIDER=openai\n# AI 图像 API 密钥 (可选,默认复用 AI_API_KEY)\nAI_IMAGE_API_KEY=\n# AI 图像模型名称 (如 dall-e-3, sd-v1-5)\nAI_IMAGE_MODEL=dall-e-3\n# AI 图像 API 代理端点 (可选,默认复用 AI_API_ENDPOINT)\nAI_IMAGE_ENDPOINT=\n\n# AI 生成参数控制 (可选)\n# AI_MAX_TOKENS=2048\n# AI_TEMPERATURE=0.7\n# AI_MAX_CONTENT_LENGTH=50000\n# AI_CHUNK_SIZE=4000\n\n# ------------------------------------------\n# 5. AI 语音与语音识别 (AI Voice & Speech)\n# ------------------------------------------\n\n# TTS (文本转语音) 配置\n# 是否启用 TTS 功能\nTTS_ENABLED=false\n# TTS 提供商 (openai, siliconflow, volcengine)\nTTS_PROVIDER=openai\n# TTS API 密钥 (可选,默认复用 AI_API_KEY)\nTTS_API_KEY=\n# TTS API 代理端点 (可选,默认复用 AI_API_ENDPOINT)\nTTS_ENDPOINT=\n# 默认 TTS 模型 (如 tts-1)\nTTS_DEFAULT_MODEL=tts-1\n# 默认 TTS 声音 (如 alloy, echo, fable, onyx, nova, shimmer)\nTTS_DEFAULT_VOICE=alloy\n\n# SiliconFlow 专用 TTS 配置 (如果提供商选择 siliconflow)\n# SILICONFLOW_API_KEY=\n# SILICONFLOW_ENDPOINT=https://api.siliconflow.cn/v1\n# SILICONFLOW_TTS_MODEL=fishaudio/fish-speech-1.4\n\n# ASR (语音识别) 配置\n# 是否启用 ASR 功能 (true/false)\nASR_ENABLED=true\n# ASR 提供商 (siliconflow, volcengine)\nASR_PROVIDER=siliconflow\n# ASR 通用配置 (适用于 SiliconFlow 等)\nASR_API_KEY=\nASR_MODEL=FunAudioLLM/SenseVoiceSmall\nASR_ENDPOINT=\n\n# 豆包语音识别 (Volcengine) 配置(当 ASR_PROVIDER=volcengine 时)\n# APP ID(建连 Header: X-Api-App-Key)\nASR_VOLCENGINE_APP_ID=\n# Access Key(建连 Header: X-Api-Access-Key)\nASR_VOLCENGINE_ACCESS_KEY=\n# 资源 ID(建连 Header: X-Api-Resource-Id)\n# 推荐:volc.seedasr.sauc.duration(小时版)\n# 可选:volc.seedasr.sauc.concurrent(并发版)\n# 也可复用 ASR_MODEL 作为资源 ID\nASR_VOLCENGINE_CLUSTER_ID=\n\n# 接口地址(可选)\n# 双向流式优化版:wss://openspeech.bytedance.com/api/v3/sauc/bigmodel_async\n# 流式输入模式:wss://openspeech.bytedance.com/api/v3/sauc/bigmodel_nostream\n# ASR_ENDPOINT=wss://openspeech.bytedance.com/api/v3/sauc/bigmodel_async\n\n# 火山引擎 (豆包语音) 配置 (用于 volcengine 驱动的 ASR 或 高级 TTS/AI)\n# VOLCENGINE_APP_ID=\n# VOLCENGINE_ACCESS_KEY=\n# VOLCENGINE_SECRET_KEY=\n\n# 短信/手机验证码有效时间(秒)\n# PHONE_EXPIRES_IN=300\n\n# ------------------------------------------\n# 6. 站点管理与统计 (Analytics & Management)\n# ------------------------------------------\n\n# 管理员用户 ID 列表,使用逗号分隔 (注册后在此处指定 ID 提权)\nADMIN_USER_IDS=\n\n# 联系邮箱\nNUXT_PUBLIC_CONTACT_EMAIL=admin@example.com\n\n# 站点运营方名称 (显示在页脚)\n# NUXT_PUBLIC_SITE_OPERATOR=\n\n# 默认文章版权声明\n# NUXT_PUBLIC_DEFAULT_COPYRIGHT=all-rights-reserved\n\n# Microsoft Clarity 配置 (可选)\nNUXT_PUBLIC_CLARITY_PROJECT_ID=\n\n# 百度统计 ID (可选)\nNUXT_PUBLIC_BAIDU_ANALYTICS_ID=\n\n# Google Analytics ID (可选)\nNUXT_PUBLIC_GOOGLE_ANALYTICS_ID=\n\n# 站点验证 (可选)\n# NUXT_PUBLIC_GOOGLE_SITE_VERIFICATION=\n# NUXT_PUBLIC_BING_SITE_VERIFICATION=\n\n# Sentry 监控 (可选)\nNUXT_PUBLIC_SENTRY_DSN=\nNUXT_PUBLIC_SENTRY_ENVIRONMENT=production\n\n# ------------------------------------------\n# 7. 邮件服务配置 (Email Service)\n# ------------------------------------------\n\n# SMTP 服务器配置\nEMAIL_HOST=\nEMAIL_PORT=587\nEMAIL_SECURE=false\nEMAIL_USER=\nEMAIL_PASS=\n# 默认邮件发送者 (格式: \"Name\" <email@example.com>)\nEMAIL_FROM=\n\n# 邮件限流与时长过长控制 (可选)\n# EMAIL_DAILY_LIMIT=100\n# EMAIL_SINGLE_USER_DAILY_LIMIT=5\n# EMAIL_LIMIT_WINDOW=86400\n# EMAIL_EXPIRES_IN=300\n\n# 匿名/临时邮箱域名配置\n# ANONYMOUS_EMAIL_DOMAIN_NAME=anonymous.com\n# TEMP_EMAIL_DOMAIN_NAME=example.com\n\n# 是否强制要求验证邮箱后才能登录\nEMAIL_REQUIRE_VERIFICATION=false\n\n# ------------------------------------------\n# 8. 文件存储与上传 (Storage & Upload)\n# ------------------------------------------\n\n# 存储类型 (s3, local)\nSTORAGE_TYPE=local\n\n# 本地存储路径 (仅 local 模式使用)\n# LOCAL_STORAGE_DIR=public/uploads\n# NUXT_PUBLIC_LOCAL_STORAGE_BASE_URL=/uploads\n\n# S3 兼容存储配置 (仅 s3 模式使用,如 Cloudflare R2)\n# S3_ENDPOINT=\n# S3_REGION=auto\n# S3_ACCESS_KEY_ID=\n# S3_SECRET_ACCESS_KEY=\n# S3_BUCKET_NAME=\n# S3_BASE_URL=\n# BUCKET_PREFIX=\n\n# Vercel Blob 存储配置 (仅 vercel-blob 模式使用)\n# VERCEL_BLOB_TOKEN=\n# BLOB_READ_WRITE_TOKEN=\n\n# 最大允许上传的常规文件大小,默认 4.5 MiB\nNUXT_PUBLIC_MAX_UPLOAD_SIZE=4.5MiB\n\n# 最大允许上传的音频大小,默认 100 MiB\nNUXT_PUBLIC_MAX_AUDIO_UPLOAD_SIZE=100MiB\n\n# 上传文件限制 (可选)\n# UPLOAD_LIMIT_WINDOW=86400\n# UPLOAD_DAILY_LIMIT=100\n# UPLOAD_SINGLE_USER_DAILY_LIMIT=5\n# LOCAL_STORAGE_MIN_FREE_SPACE=104857600\n\n# ------------------------------------------\n# 9. 合规、安全与验证码 (Compliance & Safety)\n# ------------------------------------------\n\n# 备案信息 (仅中国大陆)\nNUXT_PUBLIC_SHOW_COMPLIANCE_INFO=false\nNUXT_PUBLIC_ICP_LICENSE_NUMBER=\nNUXT_PUBLIC_PUBLIC_SECURITY_NUMBER=\n\n# 验证码 (Captcha) 提供者:cloudflare-turnstile, google-recaptcha, hcaptcha, captchafox\nNUXT_PUBLIC_AUTH_CAPTCHA_PROVIDER=\nNUXT_PUBLIC_AUTH_CAPTCHA_SITE_KEY=\nAUTH_CAPTCHA_SECRET_KEY=\n\n# 外部资源(图片等)域名白名单\n# NUXT_PUBLIC_SECURITY_URL_WHITELIST=images.unsplash.com,cdn.pixabay.com\n\n# ------------------------------------------\n# 10. 日志、调试与 Demo 模式 (Logging & Debug)\n# ------------------------------------------\n\n# 日志等级 (silly, debug, http, info, warn, error)\nLOG_LEVEL=http\n# 是否写入日志到文件 (Serverless 环境建议设为 false)\nLOGFILES=false\n# LOG_DIR=logs\n\n# Axiom 日志集成 (可选)\n# AXIOM_DATASET_NAME=\n# AXIOM_API_TOKEN=\n\n# Demo 模式开关 (开启后将限制某些敏感操作)\nNUXT_PUBLIC_DEMO_MODE=false\n# Demo 账号配置\n# NUXT_PUBLIC_DEMO_USER_EMAIL=admin@example.com\n# NUXT_PUBLIC_DEMO_PASSWORD=momei123456\n\n# 测试模式 (自动化测试使用)\nNUXT_PUBLIC_TEST_MODE=false\n\n# 部署状态监控 (可选)\n# SENTRY_AUTH_TOKEN=\n\n# 已初始化标志,设置后将不再显示初始化引导页面\nMOMEI_INSTALLED=true\n"}, "cffc6ec974c8b790b8fd9e3a01703eaca54b1485": {"t": 1785749557.3507004, "n": 6573, "h": "a4333c707e03e0e6", "c": "# ==========================================\n# 墨梅博客 (Momei) 环境变量完整示例文件\n# ==========================================\n\n# ------------------------------------------\n# 1. 基础核心配置 (Essential)\n# ------------------------------------------\n\n# 应用名称\nNUXT_PUBLIC_APP_NAME=墨梅博客\n\n# 站点 URL (用于生成 sitemap.xml)\nNUXT_PUBLIC_SITE_URL=http://localhost:3000\n\n# Better Auth 的基础 URL (通常与 SITE_URL 相同)\nNUXT_PUBLIC_AUTH_BASE_URL=http://localhost:3000\n\n# 用于加密、签名和哈希的密钥。生产环境必须设置!\n# 可以使用 `openssl rand -hex 32` 生成。开发环境下会自动生成随机值。\nAUTH_SECRET=\n\n# 雪花算法机器 ID (0-1023),用于生成分布式唯一 ID。默认自动获取进程 PID\n# MACHINE_ID=\n\n# ------------------------------------------\n# 2. 数据库配置 (Database)\n# ------------------------------------------\n\n# 数据库连接 URL (SQLite, MySQL, PostgreSQL)\n# 支持智能推断:\n# - SQLite (推荐): sqlite://database/momei.sqlite (或 file://database/momei.sqlite)\n# - MySQL: mysql://user:pass@host:3306/db\n# - PostgreSQL: postgres://user:pass@host:5432/db\n# 如果未配置,默认将使用本地 SQLite (database/momei.sqlite)\nDATABASE_URL=sqlite://database/momei.sqlite\n\n# 手动指定数据库类型 (sqlite, mysql, postgres)\n# DATABASE_TYPE=sqlite\n\n# SQLite 数据库路径 (兼容旧版,不推荐使用)\n# DATABASE_PATH=database/momei.sqlite\n\n# 数据库高级配置 (可选)\n# DATABASE_SSL=false\n# DATABASE_CHARSET=utf8_general_ci\n# DATABASE_TIMEZONE=local\n# DATABASE_ENTITY_PREFIX=momei_\n# DATABASE_SYNCHRONIZE=false\n\n# Redis 连接地址 (可选,用于缓存或限流)\n# REDIS_URL=\n\n# ------------------------------------------\n# 3. 社交登录配置 (Social Auth)\n# ------------------------------------------\n\n# GitHub 配置\nNUXT_PUBLIC_GITHUB_CLIENT_ID=\nGITHUB_CLIENT_SECRET=\n\n# Google 配置\nNUXT_PUBLIC_GOOGLE_CLIENT_ID=\nGOOGLE_CLIENT_SECRET=\n\n# 是否启用匿名登录 (无需邮箱密码即可登录)\nANONYMOUS_LOGIN_ENABLED=false\n\n# ------------------------------------------\n# 4. AI 辅助功能 (AI Integration)\n# ------------------------------------------\n\n# AI 提供商 (openai, anthropic)\nAI_PROVIDER=openai\n# API 密钥。配置后将自动激活 AI 功能。\nAI_API_KEY=\n# 默认模型名称 (如 gpt-4o, claude-3-5-sonnet, deepseek-chat)\nAI_MODEL=gpt-4o\n# API 代理端点 (可选,用于 OpenAI 兼容服务)\nAI_API_ENDPOINT=\n\n# AI 图像生成配置 (AI Image)\n# 是否启用 AI 图像生成\nAI_IMAGE_ENABLED=false\n# AI 图像提供商 (openai, stable-diffusion, doubao, gemini, siliconflow)\nAI_IMAGE_PROVIDER=openai\n# AI 图像 API 密钥 (可选,默认复用 AI_API_KEY)\nAI_IMAGE_API_KEY=\n# AI 图像模型名称 (如 dall-e-3, sd-v1-5)\nAI_IMAGE_MODEL=dall-e-3\n# AI 图像 API 代理端点 (可选,默认复用 AI_API_ENDPOINT)\nAI_IMAGE_ENDPOINT=\n\n# AI 生成参数控制 (可选)\n# AI_MAX_TOKENS=2048\n# AI_TEMPERATURE=0.7\n# AI_MAX_CONTENT_LENGTH=50000\n# AI_CHUNK_SIZE=4000\n\n# ------------------------------------------\n# 5. AI 语音与语音识别 (AI Voice & Speech)\n# ------------------------------------------\n\n# TTS (文本转语音) 配置\n# 是否启用 TTS 功能\nTTS_ENABLED=false\n# TTS 提供商 (openai, siliconflow, volcengine)\nTTS_PROVIDER=openai\n# TTS API 密钥 (可选,默认复用 AI_API_KEY)\nTTS_API_KEY=\n# TTS API 代理端点 (可选,默认复用 AI_API_ENDPOINT)\nTTS_ENDPOINT=\n# 默认 TTS 模型 (如 tts-1)\nTTS_DEFAULT_MODEL=tts-1\n# 默认 TTS 声音 (如 alloy, echo, fable, onyx, nova, shimmer)\nTTS_DEFAULT_VOICE=alloy\n\n# SiliconFlow 专用 TTS 配置 (如果提供商选择 siliconflow)\n# SILICONFLOW_API_KEY=\n# SILICONFLOW_ENDPOINT=https://api.siliconflow.cn/v1\n# SILICONFLOW_TTS_MODEL=fishaudio/fish-speech-1.4\n\n# ASR (语音识别) 配置\n# 是否启用 ASR 功能 (true/false)\nASR_ENABLED=true\n# ASR 提供商 (siliconflow, volcengine)\nASR_PROVIDER=siliconflow\n# ASR 通用配置 (适用于 SiliconFlow 等)\nASR_API_KEY=\nASR_MODEL=FunAudioLLM/SenseVoiceSmall\nASR_ENDPOINT=\n\n# 火山引擎 (豆包语音) 配置 (用于 volcengine 驱动的 ASR 或 高级 TTS/AI)\n# VOLCENGINE_APP_ID=\n# VOLCENGINE_ACCESS_KEY=\n# VOLCENGINE_SECRET_KEY=\n\n# 短信/手机验证码有效时间(秒)\n# PHONE_EXPIRES_IN=300\n\n# ------------------------------------------\n# 6. 站点管理与统计 (Analytics & Management)\n# ------------------------------------------\n\n# 管理员用户 ID 列表,使用逗号分隔 (注册后在此处指定 ID 提权)\nADMIN_USER_IDS=\n\n# 联系邮箱\nNUXT_PUBLIC_CONTACT_EMAIL=admin@example.com\n\n# 站点运营方名称 (显示在页脚)\n# NUXT_PUBLIC_SITE_OPERATOR=\n\n# 默认文章版权声明\n# NUXT_PUBLIC_DEFAULT_COPYRIGHT=all-rights-reserved\n\n# Microsoft Clarity 配置 (可选)\nNUXT_PUBLIC_CLARITY_PROJECT_ID=\n\n# 百度统计 ID (可选)\nNUXT_PUBLIC_BAIDU_ANALYTICS_ID=\n\n# Google Analytics ID (可选)\nNUXT_PUBLIC_GOOGLE_ANALYTICS_ID=\n\n# 站点验证 (可选)\n# NUXT_PUBLIC_GOOGLE_SITE_VERIFICATION=\n# NUXT_PUBLIC_BING_SITE_VERIFICATION=\n\n# Sentry 监控 (可选)\nNUXT_PUBLIC_SENTRY_DSN=\nNUXT_PUBLIC_SENTRY_ENVIRONMENT=production\n\n# ------------------------------------------\n# 7. 邮件服务配置 (Email Service)\n# ------------------------------------------\n\n# SMTP 服务器配置\nEMAIL_HOST=\nEMAIL_PORT=587\nEMAIL_SECURE=false\nEMAIL_USER=\nEMAIL_PASS=\n# 默认邮件发送者 (格式: \"Name\" <email@example.com>)\nEMAIL_FROM=\n\n# 邮件限流与时长过长控制 (可选)\n# EMAIL_DAILY_LIMIT=100\n# EMAIL_SINGLE_USER_DAILY_LIMIT=5\n# EMAIL_LIMIT_WINDOW=86400\n# EMAIL_EXPIRES_IN=300\n\n# 匿名/临时邮箱域名配置\n# ANONYMOUS_EMAIL_DOMAIN_NAME=anonymous.com\n# TEMP_EMAIL_DOMAIN_NAME=example.com\n\n# 是否强制要求验证邮箱后才能登录\nEMAIL_REQUIRE_VERIFICATION=false\n\n# ------------------------------------------\n# 8. 文件存储与上传 (Storage & Upload)\n# ------------------------------------------\n\n# 存储类型 (s3, local)\nSTORAGE_TYPE=local\n\n# 本地存储路径 (仅 local 模式使用)\n# LOCAL_STORAGE_DIR=public/uploads\n# NUXT_PUBLIC_LOCAL_STORAGE_BASE_URL=/uploads\n\n# S3 兼容存储配置 (仅 s3 模式使用,如 Cloudflare R2)\n# S3_ENDPOINT=\n# S3_REGION=auto\n# S3_ACCESS_KEY_ID=\n# S3_SECRET_ACCESS_KEY=\n# S3_BUCKET_NAME=\n# S3_BASE_URL=\n# BUCKET_PREFIX=\n\n# Vercel Blob 存储配置 (仅 vercel-blob 模式使用)\n# VERCEL_BLOB_TOKEN=\n# BLOB_READ_WRITE_TOKEN=\n\n# 最大允许上传的常规文件大小,默认 4.5 MiB\nNUXT_PUBLIC_MAX_UPLOAD_SIZE=4.5MiB\n\n# 最大允许上传的音频大小,默认 100 MiB\nNUXT_PUBLIC_MAX_AUDIO_UPLOAD_SIZE=100MiB\n\n# 上传文件限制 (可选)\n# UPLOAD_LIMIT_WINDOW=86400\n# UPLOAD_DAILY_LIMIT=100\n# UPLOAD_SINGLE_USER_DAILY_LIMIT=5\n# LOCAL_STORAGE_MIN_FREE_SPACE=104857600\n\n# ------------------------------------------\n# 9. 合规、安全与验证码 (Compliance & Safety)\n# ------------------------------------------\n\n# 备案信息 (仅中国大陆)\nNUXT_PUBLIC_SHOW_COMPLIANCE_INFO=false\nNUXT_PUBLIC_ICP_LICENSE_NUMBER=\nNUXT_PUBLIC_PUBLIC_SECURITY_NUMBER=\n\n# 验证码 (Captcha) 提供者:cloudflare-turnstile, google-recaptcha, hcaptcha, captchafox\nNUXT_PUBLIC_AUTH_CAPTCHA_PROVIDER=\nNUXT_PUBLIC_AUTH_CAPTCHA_SITE_KEY=\nAUTH_CAPTCHA_SECRET_KEY=\n\n# 外部资源(图片等)域名白名单\n# NUXT_PUBLIC_SECURITY_URL_WHITELIST=images.unsplash.com,cdn.pixabay.com\n\n# ------------------------------------------\n# 10. 日志、调试与 Demo 模式 (Logging & Debug)\n# ------------------------------------------\n\n# 日志等级 (silly, debug, http, info, warn, error)\nLOG_LEVEL=http\n# 是否写入日志到文件 (Serverless 环境建议设为 false)\nLOGFILES=false\n# LOG_DIR=logs\n\n# Axiom 日志集成 (可选)\n# AXIOM_DATASET_NAME=\n# AXIOM_API_TOKEN=\n\n# Demo 模式开关 (开启后将限制某些敏感操作)\nNUXT_PUBLIC_DEMO_MODE=false\n# Demo 账号配置\n# NUXT_PUBLIC_DEMO_USER_EMAIL=admin@example.com\n# NUXT_PUBLIC_DEMO_PASSWORD=momei123456\n\n# 测试模式 (自动化测试使用)\nNUXT_PUBLIC_TEST_MODE=false\n\n# 部署状态监控 (可选)\n# SENTRY_AUTH_TOKEN=\n\n# 已初始化标志,设置后将不再显示初始化引导页面\nMOMEI_INSTALLED=true\n"}, "0ba9506fa0a4b7843ec278486c2796039b9db23c": {"t": 1785749558.6250517, "n": 6525, "h": "f28d986ef697b941", "c": "# ==========================================\n# 墨梅博客 (Momei) 环境变量完整示例文件\n# ==========================================\n\n# ------------------------------------------\n# 1. 基础核心配置 (Essential)\n# ------------------------------------------\n\n# 应用名称\nNUXT_PUBLIC_APP_NAME=墨梅博客\n\n# 站点 URL (用于生成 sitemap.xml)\nNUXT_PUBLIC_SITE_URL=http://localhost:3000\n\n# Better Auth 的基础 URL (通常与 SITE_URL 相同)\nNUXT_PUBLIC_AUTH_BASE_URL=http://localhost:3000\n\n# 用于加密、签名和哈希的密钥。生产环境必须设置!\n# 可以使用 `openssl rand -hex 32` 生成。开发环境下会自动生成随机值。\nAUTH_SECRET=\n\n# 雪花算法机器 ID (0-1023),用于生成分布式唯一 ID。默认自动获取进程 PID\n# MACHINE_ID=\n\n# ------------------------------------------\n# 2. 数据库配置 (Database)\n# ------------------------------------------\n\n# 数据库连接 URL (SQLite, MySQL, PostgreSQL)\n# 支持智能推断:\n# - SQLite (推荐): sqlite://database/momei.sqlite (或 file://database/momei.sqlite)\n# - MySQL: mysql://user:pass@host:3306/db\n# - PostgreSQL: postgres://user:pass@host:5432/db\n# 如果未配置,默认将使用本地 SQLite (database/momei.sqlite)\nDATABASE_URL=sqlite://database/momei.sqlite\n\n# 手动指定数据库类型 (sqlite, mysql, postgres)\n# DATABASE_TYPE=sqlite\n\n# SQLite 数据库路径 (兼容旧版,不推荐使用)\n# DATABASE_PATH=database/momei.sqlite\n\n# 数据库高级配置 (可选)\n# DATABASE_SSL=false\n# DATABASE_CHARSET=utf8_general_ci\n# DATABASE_TIMEZONE=local\n# DATABASE_ENTITY_PREFIX=momei_\n# DATABASE_SYNCHRONIZE=false\n\n# Redis 连接地址 (可选,用于缓存或限流)\n# REDIS_URL=\n\n# ------------------------------------------\n# 3. 社交登录配置 (Social Auth)\n# ------------------------------------------\n\n# GitHub 配置\nNUXT_PUBLIC_GITHUB_CLIENT_ID=\nGITHUB_CLIENT_SECRET=\n\n# Google 配置\nNUXT_PUBLIC_GOOGLE_CLIENT_ID=\nGOOGLE_CLIENT_SECRET=\n\n# 是否启用匿名登录 (无需邮箱密码即可登录)\nANONYMOUS_LOGIN_ENABLED=false\n\n# ------------------------------------------\n# 4. AI 辅助功能 (AI Integration)\n# ------------------------------------------\n\n# AI 提供商 (openai, anthropic)\nAI_PROVIDER=openai\n# API 密钥。配置后将自动激活 AI 功能。\nAI_API_KEY=\n# 默认模型名称 (如 gpt-4o, claude-3-5-sonnet, deepseek-chat)\nAI_MODEL=gpt-4o\n# API 代理端点 (可选,用于 OpenAI 兼容服务)\nAI_API_ENDPOINT=\n\n# AI 图像生成配置 (AI Image)\n# 是否启用 AI 图像生成\nAI_IMAGE_ENABLED=false\n# AI 图像提供商 (openai, stable-diffusion, doubao, gemini)\nAI_IMAGE_PROVIDER=openai\n# AI 图像 API 密钥 (可选,默认复用 AI_API_KEY)\nAI_IMAGE_API_KEY=\n# AI 图像模型名称 (如 dall-e-3, sd-v1-5)\nAI_IMAGE_MODEL=dall-e-3\n# AI 图像 API 代理端点 (可选,默认复用 AI_API_ENDPOINT)\nAI_IMAGE_ENDPOINT=\n\n# AI 生成参数控制 (可选)\n# AI_MAX_TOKENS=2048\n# AI_TEMPERATURE=0.7\n# AI_MAX_CONTENT_LENGTH=50000\n# AI_CHUNK_SIZE=4000\n\n# ------------------------------------------\n# 5. AI 语音与语音识别 (AI Voice & Speech)\n# ------------------------------------------\n\n# TTS (文本转语音) 配置\n# 是否启用 TTS 功能\nTTS_ENABLED=false\n# TTS 提供商 (openai, siliconflow, volcengine)\nTTS_PROVIDER=openai\n# TTS API 密钥 (可选,默认复用 AI_API_KEY)\nTTS_API_KEY=\n# TTS API 代理端点 (可选,默认复用 AI_API_ENDPOINT)\nTTS_ENDPOINT=\n# 默认 TTS 模型 (如 tts-1)\nTTS_DEFAULT_MODEL=tts-1\n# 默认 TTS 声音 (如 alloy, echo, fable, onyx, nova, shimmer)\nTTS_DEFAULT_VOICE=alloy\n\n# SiliconFlow 专用 TTS 配置 (如果提供商选择 siliconflow)\n# SILICONFLOW_API_KEY=\n# SILICONFLOW_ENDPOINT=https://api.siliconflow.cn/v1\n# SILICONFLOW_TTS_MODEL=fishaudio/fish-speech-1.4\n\n# ASR (语音识别) 配置\n# 是否启用 ASR 功能\nASR_ENABLED=true\n# ASR 提供商 (siliconflow, volcengine)\nASR_PROVIDER=siliconflow\n# ASR 通用配置 (适用于 SiliconFlow 等)\nASR_API_KEY=\nASR_MODEL=FunAudioLLM/SenseVoiceSmall\nASR_ENDPOINT=\n\n# 火山引擎 (豆包语音) 常用配置 (用于 ASR 或 高级 TTS)\n# VOLCENGINE_APP_ID=\n# VOLCENGINE_ACCESS_KEY=\n# VOLCENGINE_SECRET_KEY=\n\n# ASR 专用火山引擎配置 (可选,若不配置则复用上方全局配置)\n# ASR_VOLCENGINE_APP_ID=\n# ASR_VOLCENGINE_ACCESS_KEY=\n# ASR_VOLCENGINE_SECRET_KEY=\n\n# ------------------------------------------\n# 6. 站点管理与统计 (Analytics & Management)\n# ------------------------------------------\n\n# 管理员用户 ID 列表,使用逗号分隔 (注册后在此处指定 ID 提权)\nADMIN_USER_IDS=\n\n# 联系邮箱\nNUXT_PUBLIC_CONTACT_EMAIL=admin@example.com\n\n# 站点运营方名称 (显示在页脚)\n# NUXT_PUBLIC_SITE_OPERATOR=\n\n# 默认文章版权声明\n# NUXT_PUBLIC_DEFAULT_COPYRIGHT=all-rights-reserved\n\n# Microsoft Clarity 配置 (可选)\nNUXT_PUBLIC_CLARITY_PROJECT_ID=\n\n# 百度统计 ID (可选)\nNUXT_PUBLIC_BAIDU_ANALYTICS_ID=\n\n# Google Analytics ID (可选)\nNUXT_PUBLIC_GOOGLE_ANALYTICS_ID=\n\n# 站点验证 (可选)\n# NUXT_PUBLIC_GOOGLE_SITE_VERIFICATION=\n# NUXT_PUBLIC_BING_SITE_VERIFICATION=\n\n# Sentry 监控 (可选)\nNUXT_PUBLIC_SENTRY_DSN=\nNUXT_PUBLIC_SENTRY_ENVIRONMENT=production\n\n# ------------------------------------------\n# 7. 邮件服务配置 (Email Service)\n# ------------------------------------------\n\n# SMTP 服务器配置\nEMAIL_HOST=\nEMAIL_PORT=587\nEMAIL_SECURE=false\nEMAIL_USER=\nEMAIL_PASS=\n# 默认邮件发送者 (格式: \"Name\" <email@example.com>)\nEMAIL_FROM=\n\n# 邮件限流与时长过长控制 (可选)\n# EMAIL_DAILY_LIMIT=100\n# EMAIL_SINGLE_USER_DAILY_LIMIT=5\n# EMAIL_LIMIT_WINDOW=86400\n# EMAIL_EXPIRES_IN=300\n\n# 匿名/临时邮箱域名配置\n# ANONYMOUS_EMAIL_DOMAIN_NAME=anonymous.com\n# TEMP_EMAIL_DOMAIN_NAME=example.com\n\n# 是否强制要求验证邮箱后才能登录\nEMAIL_REQUIRE_VERIFICATION=false\n\n# ------------------------------------------\n# 8. 文件存储与上传 (Storage & Upload)\n# ------------------------------------------\n\n# 存储类型 (s3, local)\nSTORAGE_TYPE=local\n\n# 本地存储路径 (仅 local 模式使用)\n# LOCAL_STORAGE_DIR=public/uploads\n# NUXT_PUBLIC_LOCAL_STORAGE_BASE_URL=/uploads\n\n# S3 兼容存储配置 (仅 s3 模式使用,如 Cloudflare R2)\n# S3_ENDPOINT=\n# S3_REGION=auto\n# S3_ACCESS_KEY_ID=\n# S3_SECRET_ACCESS_KEY=\n# S3_BUCKET_NAME=\n# S3_BASE_URL=\n# BUCKET_PREFIX=\n\n# Vercel Blob 存储配置 (仅 vercel-blob 模式使用)\n# VERCEL_BLOB_TOKEN=\n# BLOB_READ_WRITE_TOKEN=\n\n# 最大允许上传的常规文件大小,默认 4.5 MiB\nNUXT_PUBLIC_MAX_UPLOAD_SIZE=4.5MiB\n\n# 最大允许上传的音频大小,默认 100 MiB\nNUXT_PUBLIC_MAX_AUDIO_UPLOAD_SIZE=100MiB\n\n# 上传文件限制 (可选)\n# UPLOAD_LIMIT_WINDOW=86400\n# UPLOAD_DAILY_LIMIT=100\n# UPLOAD_SINGLE_USER_DAILY_LIMIT=5\n# LOCAL_STORAGE_MIN_FREE_SPACE=104857600\n\n# ------------------------------------------\n# 9. 合规、安全与验证码 (Compliance & Safety)\n# ------------------------------------------\n\n# 备案信息 (仅中国大陆)\nNUXT_PUBLIC_SHOW_COMPLIANCE_INFO=false\nNUXT_PUBLIC_ICP_LICENSE_NUMBER=\nNUXT_PUBLIC_PUBLIC_SECURITY_NUMBER=\n\n# 验证码 (Captcha) 提供者:cloudflare-turnstile, google-recaptcha, hcaptcha, captchafox\nNUXT_PUBLIC_AUTH_CAPTCHA_PROVIDER=\nNUXT_PUBLIC_AUTH_CAPTCHA_SITE_KEY=\nAUTH_CAPTCHA_SECRET_KEY=\n\n# 外部资源(图片等)域名白名单\n# NUXT_PUBLIC_SECURITY_URL_WHITELIST=images.unsplash.com,cdn.pixabay.com\n\n# ------------------------------------------\n# 10. 日志、调试与 Demo 模式 (Logging & Debug)\n# ------------------------------------------\n\n# 日志等级 (silly, debug, http, info, warn, error)\nLOG_LEVEL=http\n# 是否写入日志到文件 (Serverless 环境建议设为 false)\nLOGFILES=false\n# LOG_DIR=logs\n\n# Axiom 日志集成 (可选)\n# AXIOM_DATASET_NAME=\n# AXIOM_API_TOKEN=\n\n# Demo 模式开关 (开启后将限制某些敏感操作)\nNUXT_PUBLIC_DEMO_MODE=false\n# Demo 账号配置\n# NUXT_PUBLIC_DEMO_USER_EMAIL=admin@example.com\n# NUXT_PUBLIC_DEMO_PASSWORD=momei123456\n\n# 已初始化标志,设置后将不再显示初始化引导页面\nMOMEI_INSTALLED=true\n"}, "4cef44bebe05722e72eb6ddeaa88b2acd500d595": {"t": 1785749560.7741797, "n": 6513, "h": "b4f9c772f87e43cb", "c": "# ==========================================\n# 墨梅博客 (Momei) 环境变量完整示例文件\n# ==========================================\n\n# ------------------------------------------\n# 1. 基础核心配置 (Essential)\n# ------------------------------------------\n\n# 应用名称\nNUXT_PUBLIC_APP_NAME=墨梅博客\n\n# 站点 URL (用于生成 sitemap.xml)\nNUXT_PUBLIC_SITE_URL=http://localhost:3000\n\n# Better Auth 的基础 URL (通常与 SITE_URL 相同)\nNUXT_PUBLIC_AUTH_BASE_URL=http://localhost:3000\n\n# 用于加密、签名和哈希的密钥。生产环境必须设置!\n# 可以使用 `openssl rand -hex 32` 生成。开发环境下会自动生成随机值。\nAUTH_SECRET=\n\n# 雪花算法机器 ID (0-1023),用于生成分布式唯一 ID。默认自动获取进程 PID\n# MACHINE_ID=\n\n# ------------------------------------------\n# 2. 数据库配置 (Database)\n# ------------------------------------------\n\n# 数据库连接 URL (SQLite, MySQL, PostgreSQL)\n# 支持智能推断:\n# - SQLite (推荐): sqlite://database/momei.sqlite (或 file://database/momei.sqlite)\n# - MySQL: mysql://user:pass@host:3306/db\n# - PostgreSQL: postgres://user:pass@host:5432/db\n# 如果未配置,默认将使用本地 SQLite (database/momei.sqlite)\nDATABASE_URL=sqlite://database/momei.sqlite\n\n# 手动指定数据库类型 (sqlite, mysql, postgres)\n# DATABASE_TYPE=sqlite\n\n# SQLite 数据库路径 (兼容旧版,不推荐使用)\n# DATABASE_PATH=database/momei.sqlite\n\n# 数据库高级配置 (可选)\n# DATABASE_SSL=false\n# DATABASE_CHARSET=utf8_general_ci\n# DATABASE_TIMEZONE=local\n# DATABASE_ENTITY_PREFIX=momei_\n# DATABASE_SYNCHRONIZE=false\n\n# Redis 连接地址 (可选,用于缓存或限流)\n# REDIS_URL=\n\n# ------------------------------------------\n# 3. 社交登录配置 (Social Auth)\n# ------------------------------------------\n\n# GitHub 配置\nNUXT_PUBLIC_GITHUB_CLIENT_ID=\nGITHUB_CLIENT_SECRET=\n\n# Google 配置\nNUXT_PUBLIC_GOOGLE_CLIENT_ID=\nGOOGLE_CLIENT_SECRET=\n\n# 是否启用匿名登录 (无需邮箱密码即可登录)\nANONYMOUS_LOGIN_ENABLED=false\n\n# ------------------------------------------\n# 4. AI 辅助功能 (AI Integration)\n# ------------------------------------------\n\n# AI 提供商 (openai, anthropic)\nAI_PROVIDER=openai\n# API 密钥。配置后将自动激活 AI 功能。\nAI_API_KEY=\n# 默认模型名称 (如 gpt-4o, claude-3-5-sonnet, deepseek-chat)\nAI_MODEL=gpt-4o\n# API 代理端点 (可选,用于 OpenAI 兼容服务)\nAI_API_ENDPOINT=\n\n# AI 图像生成配置 (AI Image)\n# 是否启用 AI 图像生成\nAI_IMAGE_ENABLED=false\n# AI 图像提供商 (openai, stable-diffusion, doubao, gemini)\nAI_IMAGE_PROVIDER=openai\n# AI 图像 API 密钥 (可选,默认复用 AI_API_KEY)\nAI_IMAGE_API_KEY=\n# AI 图像模型名称 (如 dall-e-3, sd-v1-5)\nAI_IMAGE_MODEL=dall-e-3\n# AI 图像 API 代理端点 (可选,默认复用 AI_API_ENDPOINT)\nAI_IMAGE_ENDPOINT=\n\n# AI 生成参数控制 (可选)\n# AI_MAX_TOKENS=2048\n# AI_TEMPERATURE=0.7\n# AI_MAX_CONTENT_LENGTH=50000\n# AI_CHUNK_SIZE=4000\n\n# ------------------------------------------\n# 5. AI 语音与语音识别 (AI Voice & Speech)\n# ------------------------------------------\n\n# TTS (文本转语音) 配置\n# 是否启用 TTS 功能\nTTS_ENABLED=false\n# TTS 提供商 (openai, siliconflow)\nTTS_PROVIDER=openai\n# TTS API 密钥 (可选,默认复用 AI_API_KEY)\nTTS_API_KEY=\n# TTS API 代理端点 (可选,默认复用 AI_API_ENDPOINT)\nTTS_ENDPOINT=\n# 默认 TTS 模型 (如 tts-1)\nTTS_DEFAULT_MODEL=tts-1\n# 默认 TTS 声音 (如 alloy, echo, fable, onyx, nova, shimmer)\nTTS_DEFAULT_VOICE=alloy\n\n# SiliconFlow 专用 TTS 配置 (如果提供商选择 siliconflow)\n# SILICONFLOW_API_KEY=\n# SILICONFLOW_ENDPOINT=https://api.siliconflow.cn/v1\n# SILICONFLOW_TTS_MODEL=fishaudio/fish-speech-1.4\n\n# ASR (语音识别) 配置\n# 是否启用 ASR 功能\nASR_ENABLED=true\n# ASR 提供商 (siliconflow, volcengine)\nASR_PROVIDER=siliconflow\n# ASR 通用配置 (适用于 SiliconFlow 等)\nASR_API_KEY=\nASR_MODEL=FunAudioLLM/SenseVoiceSmall\nASR_ENDPOINT=\n\n# 火山引擎 (豆包语音) 常用配置 (用于 ASR 或 高级 TTS)\n# VOLCENGINE_APP_ID=\n# VOLCENGINE_ACCESS_KEY=\n# VOLCENGINE_SECRET_KEY=\n\n# ASR 专用火山引擎配置 (可选,若不配置则复用上方全局配置)\n# ASR_VOLCENGINE_APP_ID=\n# ASR_VOLCENGINE_ACCESS_KEY=\n# ASR_VOLCENGINE_SECRET_KEY=\n\n# ------------------------------------------\n# 6. 站点管理与统计 (Analytics & Management)\n# ------------------------------------------\n\n# 管理员用户 ID 列表,使用逗号分隔 (注册后在此处指定 ID 提权)\nADMIN_USER_IDS=\n\n# 联系邮箱\nNUXT_PUBLIC_CONTACT_EMAIL=admin@example.com\n\n# 站点运营方名称 (显示在页脚)\n# NUXT_PUBLIC_SITE_OPERATOR=\n\n# 默认文章版权声明\n# NUXT_PUBLIC_DEFAULT_COPYRIGHT=all-rights-reserved\n\n# Microsoft Clarity 配置 (可选)\nNUXT_PUBLIC_CLARITY_PROJECT_ID=\n\n# 百度统计 ID (可选)\nNUXT_PUBLIC_BAIDU_ANALYTICS_ID=\n\n# Google Analytics ID (可选)\nNUXT_PUBLIC_GOOGLE_ANALYTICS_ID=\n\n# 站点验证 (可选)\n# NUXT_PUBLIC_GOOGLE_SITE_VERIFICATION=\n# NUXT_PUBLIC_BING_SITE_VERIFICATION=\n\n# Sentry 监控 (可选)\nNUXT_PUBLIC_SENTRY_DSN=\nNUXT_PUBLIC_SENTRY_ENVIRONMENT=production\n\n# ------------------------------------------\n# 7. 邮件服务配置 (Email Service)\n# ------------------------------------------\n\n# SMTP 服务器配置\nEMAIL_HOST=\nEMAIL_PORT=587\nEMAIL_SECURE=false\nEMAIL_USER=\nEMAIL_PASS=\n# 默认邮件发送者 (格式: \"Name\" <email@example.com>)\nEMAIL_FROM=\n\n# 邮件限流与时长过长控制 (可选)\n# EMAIL_DAILY_LIMIT=100\n# EMAIL_SINGLE_USER_DAILY_LIMIT=5\n# EMAIL_LIMIT_WINDOW=86400\n# EMAIL_EXPIRES_IN=300\n\n# 匿名/临时邮箱域名配置\n# ANONYMOUS_EMAIL_DOMAIN_NAME=anonymous.com\n# TEMP_EMAIL_DOMAIN_NAME=example.com\n\n# 是否强制要求验证邮箱后才能登录\nEMAIL_REQUIRE_VERIFICATION=false\n\n# ------------------------------------------\n# 8. 文件存储与上传 (Storage & Upload)\n# ------------------------------------------\n\n# 存储类型 (s3, local)\nSTORAGE_TYPE=local\n\n# 本地存储路径 (仅 local 模式使用)\n# LOCAL_STORAGE_DIR=public/uploads\n# NUXT_PUBLIC_LOCAL_STORAGE_BASE_URL=/uploads\n\n# S3 兼容存储配置 (仅 s3 模式使用,如 Cloudflare R2)\n# S3_ENDPOINT=\n# S3_REGION=auto\n# S3_ACCESS_KEY_ID=\n# S3_SECRET_ACCESS_KEY=\n# S3_BUCKET_NAME=\n# S3_BASE_URL=\n# BUCKET_PREFIX=\n\n# Vercel Blob 存储配置 (仅 vercel-blob 模式使用)\n# VERCEL_BLOB_TOKEN=\n# BLOB_READ_WRITE_TOKEN=\n\n# 最大允许上传的常规文件大小,默认 4.5 MiB\nNUXT_PUBLIC_MAX_UPLOAD_SIZE=4.5MiB\n\n# 最大允许上传的音频大小,默认 100 MiB\nNUXT_PUBLIC_MAX_AUDIO_UPLOAD_SIZE=100MiB\n\n# 上传文件限制 (可选)\n# UPLOAD_LIMIT_WINDOW=86400\n# UPLOAD_DAILY_LIMIT=100\n# UPLOAD_SINGLE_USER_DAILY_LIMIT=5\n# LOCAL_STORAGE_MIN_FREE_SPACE=104857600\n\n# ------------------------------------------\n# 9. 合规、安全与验证码 (Compliance & Safety)\n# ------------------------------------------\n\n# 备案信息 (仅中国大陆)\nNUXT_PUBLIC_SHOW_COMPLIANCE_INFO=false\nNUXT_PUBLIC_ICP_LICENSE_NUMBER=\nNUXT_PUBLIC_PUBLIC_SECURITY_NUMBER=\n\n# 验证码 (Captcha) 提供者:cloudflare-turnstile, google-recaptcha, hcaptcha, captchafox\nNUXT_PUBLIC_AUTH_CAPTCHA_PROVIDER=\nNUXT_PUBLIC_AUTH_CAPTCHA_SITE_KEY=\nAUTH_CAPTCHA_SECRET_KEY=\n\n# 外部资源(图片等)域名白名单\n# NUXT_PUBLIC_SECURITY_URL_WHITELIST=images.unsplash.com,cdn.pixabay.com\n\n# ------------------------------------------\n# 10. 日志、调试与 Demo 模式 (Logging & Debug)\n# ------------------------------------------\n\n# 日志等级 (silly, debug, http, info, warn, error)\nLOG_LEVEL=http\n# 是否写入日志到文件 (Serverless 环境建议设为 false)\nLOGFILES=false\n# LOG_DIR=logs\n\n# Axiom 日志集成 (可选)\n# AXIOM_DATASET_NAME=\n# AXIOM_API_TOKEN=\n\n# Demo 模式开关 (开启后将限制某些敏感操作)\nNUXT_PUBLIC_DEMO_MODE=false\n# Demo 账号配置\n# NUXT_PUBLIC_DEMO_USER_EMAIL=admin@example.com\n# NUXT_PUBLIC_DEMO_PASSWORD=momei123456\n\n# 已初始化标志,设置后将不再显示初始化引导页面\nMOMEI_INSTALLED=true\n"}, "060b07c3077c1e70dc7f25fae7b71322014a5363": {"t": 1785749561.8686094, "n": 6486, "h": "720af00447cf881c", "c": "# ==========================================\n# 墨梅博客 (Momei) 环境变量完整示例文件\n# ==========================================\n\n# ------------------------------------------\n# 1. 基础核心配置 (Essential)\n# ------------------------------------------\n\n# 应用名称\nNUXT_PUBLIC_APP_NAME=墨梅博客\n\n# 站点 URL (用于生成 sitemap.xml)\nNUXT_PUBLIC_SITE_URL=http://localhost:3000\n\n# Better Auth 的基础 URL (通常与 SITE_URL 相同)\nNUXT_PUBLIC_AUTH_BASE_URL=http://localhost:3000\n\n# 用于加密、签名和哈希的密钥。生产环境必须设置!\n# 可以使用 `openssl rand -hex 32` 生成。开发环境下会自动生成随机值。\nAUTH_SECRET=\n\n# 雪花算法机器 ID (0-1023),用于生成分布式唯一 ID。默认自动获取进程 PID\n# MACHINE_ID=\n\n# ------------------------------------------\n# 2. 数据库配置 (Database)\n# ------------------------------------------\n\n# 数据库连接 URL (SQLite, MySQL, PostgreSQL)\n# 支持智能推断:\n# - SQLite (推荐): sqlite://database/momei.sqlite (或 file://database/momei.sqlite)\n# - MySQL: mysql://user:pass@host:3306/db\n# - PostgreSQL: postgres://user:pass@host:5432/db\n# 如果未配置,默认将使用本地 SQLite (database/momei.sqlite)\nDATABASE_URL=sqlite://database/momei.sqlite\n\n# 手动指定数据库类型 (sqlite, mysql, postgres)\n# DATABASE_TYPE=sqlite\n\n# SQLite 数据库路径 (兼容旧版,不推荐使用)\n# DATABASE_PATH=database/momei.sqlite\n\n# 数据库高级配置 (可选)\n# DATABASE_SSL=false\n# DATABASE_CHARSET=utf8_general_ci\n# DATABASE_TIMEZONE=local\n# DATABASE_ENTITY_PREFIX=momei_\n# DATABASE_SYNCHRONIZE=false\n\n# Redis 连接地址 (可选,用于缓存或限流)\n# REDIS_URL=\n\n# ------------------------------------------\n# 3. 社交登录配置 (Social Auth)\n# ------------------------------------------\n\n# GitHub 配置\nNUXT_PUBLIC_GITHUB_CLIENT_ID=\nGITHUB_CLIENT_SECRET=\n\n# Google 配置\nNUXT_PUBLIC_GOOGLE_CLIENT_ID=\nGOOGLE_CLIENT_SECRET=\n\n# 是否启用匿名登录 (无需邮箱密码即可登录)\nANONYMOUS_LOGIN_ENABLED=false\n\n# ------------------------------------------\n# 4. AI 辅助功能 (AI Integration)\n# ------------------------------------------\n\n# AI 提供商 (openai, anthropic)\nAI_PROVIDER=openai\n# API 密钥。配置后将自动激活 AI 功能。\nAI_API_KEY=\n# 默认模型名称 (如 gpt-4o, claude-3-5-sonnet, deepseek-chat)\nAI_MODEL=gpt-4o\n# API 代理端点 (可选,用于 OpenAI 兼容服务)\nAI_API_ENDPOINT=\n\n# AI 图像生成配置 (AI Image)\n# 是否启用 AI 图像生成\nAI_IMAGE_ENABLED=false\n# AI 图像提供商 (openai, stable-diffusion, doubao, gemini)\nAI_IMAGE_PROVIDER=openai\n# AI 图像 API 密钥 (可选,默认复用 AI_API_KEY)\nAI_IMAGE_API_KEY=\n# AI 图像模型名称 (如 dall-e-3, sd-v1-5)\nAI_IMAGE_MODEL=dall-e-3\n# AI 图像 API 代理端点 (可选,默认复用 AI_API_ENDPOINT)\nAI_IMAGE_ENDPOINT=\n\n# AI 生成参数控制 (可选)\n# AI_MAX_TOKENS=2048\n# AI_TEMPERATURE=0.7\n# AI_MAX_CONTENT_LENGTH=50000\n# AI_CHUNK_SIZE=4000\n\n# ------------------------------------------\n# 5. AI 语音与语音识别 (AI Voice & Speech)\n# ------------------------------------------\n\n# TTS (文本转语音) 配置\n# 是否启用 TTS 功能\nTTS_ENABLED=false\n# TTS 提供商 (openai, siliconflow)\nTTS_PROVIDER=openai\n# TTS API 密钥 (可选,默认复用 AI_API_KEY)\nTTS_API_KEY=\n# TTS API 代理端点 (可选,默认复用 AI_API_ENDPOINT)\nTTS_ENDPOINT=\n# 默认 TTS 模型 (如 tts-1)\nTTS_DEFAULT_MODEL=tts-1\n# 默认 TTS 声音 (如 alloy, echo, fable, onyx, nova, shimmer)\nTTS_DEFAULT_VOICE=alloy\n\n# SiliconFlow 专用 TTS 配置 (如果提供商选择 siliconflow)\n# SILICONFLOW_API_KEY=\n# SILICONFLOW_ENDPOINT=https://api.siliconflow.cn/v1\n# SILICONFLOW_TTS_MODEL=fishaudio/fish-speech-1.4\n\n# ASR (语音识别) 配置\n# ASR 提供商 (siliconflow, volcengine)\nASR_PROVIDER=siliconflow\n# SiliconFlow ASR 配置\n# ASR_SILICONFLOW_API_KEY=\n# ASR_SILICONFLOW_MODEL=FunAudioLLM/SenseVoiceSmall\n\n# 火山引擎 (豆包语音) 常用配置 (用于 ASR 或 高级 TTS)\n# VOLCENGINE_APP_ID=\n# VOLCENGINE_ACCESS_KEY=\n# VOLCENGINE_SECRET_KEY=\n\n# ASR 专用火山引擎配置 (可选,若不配置则复用上方全局配置)\n# ASR_VOLCENGINE_APP_ID=\n# ASR_VOLCENGINE_ACCESS_KEY=\n# ASR_VOLCENGINE_SECRET_KEY=\n\n# ------------------------------------------\n# 6. 站点管理与统计 (Analytics & Management)\n# ------------------------------------------\n\n# 管理员用户 ID 列表,使用逗号分隔 (注册后在此处指定 ID 提权)\nADMIN_USER_IDS=\n\n# 联系邮箱\nNUXT_PUBLIC_CONTACT_EMAIL=admin@example.com\n\n# 站点运营方名称 (显示在页脚)\n# NUXT_PUBLIC_SITE_OPERATOR=\n\n# 默认文章版权声明\n# NUXT_PUBLIC_DEFAULT_COPYRIGHT=all-rights-reserved\n\n# Microsoft Clarity 配置 (可选)\nNUXT_PUBLIC_CLARITY_PROJECT_ID=\n\n# 百度统计 ID (可选)\nNUXT_PUBLIC_BAIDU_ANALYTICS_ID=\n\n# Google Analytics ID (可选)\nNUXT_PUBLIC_GOOGLE_ANALYTICS_ID=\n\n# 站点验证 (可选)\n# NUXT_PUBLIC_GOOGLE_SITE_VERIFICATION=\n# NUXT_PUBLIC_BING_SITE_VERIFICATION=\n\n# Sentry 监控 (可选)\nNUXT_PUBLIC_SENTRY_DSN=\nNUXT_PUBLIC_SENTRY_ENVIRONMENT=production\n\n# ------------------------------------------\n# 7. 邮件服务配置 (Email Service)\n# ------------------------------------------\n\n# SMTP 服务器配置\nEMAIL_HOST=\nEMAIL_PORT=587\nEMAIL_SECURE=false\nEMAIL_USER=\nEMAIL_PASS=\n# 默认邮件发送者 (格式: \"Name\" <email@example.com>)\nEMAIL_FROM=\n\n# 邮件限流与时长过长控制 (可选)\n# EMAIL_DAILY_LIMIT=100\n# EMAIL_SINGLE_USER_DAILY_LIMIT=5\n# EMAIL_LIMIT_WINDOW=86400\n# EMAIL_EXPIRES_IN=300\n\n# 匿名/临时邮箱域名配置\n# ANONYMOUS_EMAIL_DOMAIN_NAME=anonymous.com\n# TEMP_EMAIL_DOMAIN_NAME=example.com\n\n# 是否强制要求验证邮箱后才能登录\nEMAIL_REQUIRE_VERIFICATION=false\n\n# ------------------------------------------\n# 8. 文件存储与上传 (Storage & Upload)\n# ------------------------------------------\n\n# 存储类型 (s3, local)\nSTORAGE_TYPE=local\n\n# 本地存储路径 (仅 local 模式使用)\n# LOCAL_STORAGE_DIR=public/uploads\n# NUXT_PUBLIC_LOCAL_STORAGE_BASE_URL=/uploads\n\n# S3 兼容存储配置 (仅 s3 模式使用,如 Cloudflare R2)\n# S3_ENDPOINT=\n# S3_REGION=auto\n# S3_ACCESS_KEY_ID=\n# S3_SECRET_ACCESS_KEY=\n# S3_BUCKET_NAME=\n# S3_BASE_URL=\n# BUCKET_PREFIX=\n\n# Vercel Blob 存储配置 (仅 vercel-blob 模式使用)\n# VERCEL_BLOB_TOKEN=\n# BLOB_READ_WRITE_TOKEN=\n\n# 最大允许上传的常规文件大小,默认 4.5 MiB\nNUXT_PUBLIC_MAX_UPLOAD_SIZE=4.5MiB\n\n# 最大允许上传的音频大小,默认 100 MiB\nNUXT_PUBLIC_MAX_AUDIO_UPLOAD_SIZE=100MiB\n\n# 上传文件限制 (可选)\n# UPLOAD_LIMIT_WINDOW=86400\n# UPLOAD_DAILY_LIMIT=100\n# UPLOAD_SINGLE_USER_DAILY_LIMIT=5\n# LOCAL_STORAGE_MIN_FREE_SPACE=104857600\n\n# ------------------------------------------\n# 9. 合规、安全与验证码 (Compliance & Safety)\n# ------------------------------------------\n\n# 备案信息 (仅中国大陆)\nNUXT_PUBLIC_SHOW_COMPLIANCE_INFO=false\nNUXT_PUBLIC_ICP_LICENSE_NUMBER=\nNUXT_PUBLIC_PUBLIC_SECURITY_NUMBER=\n\n# 验证码 (Captcha) 提供者:cloudflare-turnstile, google-recaptcha, hcaptcha, captchafox\nNUXT_PUBLIC_AUTH_CAPTCHA_PROVIDER=\nNUXT_PUBLIC_AUTH_CAPTCHA_SITE_KEY=\nAUTH_CAPTCHA_SECRET_KEY=\n\n# 外部资源(图片等)域名白名单\n# NUXT_PUBLIC_SECURITY_URL_WHITELIST=images.unsplash.com,cdn.pixabay.com\n\n# ------------------------------------------\n# 10. 日志、调试与 Demo 模式 (Logging & Debug)\n# ------------------------------------------\n\n# 日志等级 (silly, debug, http, info, warn, error)\nLOG_LEVEL=http\n# 是否写入日志到文件 (Serverless 环境建议设为 false)\nLOGFILES=false\n# LOG_DIR=logs\n\n# Axiom 日志集成 (可选)\n# AXIOM_DATASET_NAME=\n# AXIOM_API_TOKEN=\n\n# Demo 模式开关 (开启后将限制某些敏感操作)\nNUXT_PUBLIC_DEMO_MODE=false\n# Demo 账号配置\n# NUXT_PUBLIC_DEMO_USER_EMAIL=admin@example.com\n# NUXT_PUBLIC_DEMO_PASSWORD=momei123456\n\n# 已初始化标志,设置后将不再显示初始化引导页面\nMOMEI_INSTALLED=true\n"}, "1e008089cf5b439813f637a65ec321ebe5853055": {"t": 1785749562.936131, "n": 6373, "h": "1dfb480ab6f07d42", "c": "# ==========================================\n# 墨梅博客 (Momei) 环境变量完整示例文件\n# ==========================================\n\n# ------------------------------------------\n# 1. 基础核心配置 (Essential)\n# ------------------------------------------\n\n# 应用名称\nNUXT_PUBLIC_APP_NAME=墨梅博客\n\n# 站点 URL (用于生成 sitemap.xml)\nNUXT_PUBLIC_SITE_URL=http://localhost:3000\n\n# Better Auth 的基础 URL (通常与 SITE_URL 相同)\nNUXT_PUBLIC_AUTH_BASE_URL=http://localhost:3000\n\n# 用于加密、签名和哈希的密钥。生产环境必须设置!\n# 可以使用 `openssl rand -hex 32` 生成。开发环境下会自动生成随机值。\nAUTH_SECRET=\n\n# 雪花算法机器 ID (0-1023),用于生成分布式唯一 ID。默认自动获取进程 PID\n# MACHINE_ID=\n\n# ------------------------------------------\n# 2. 数据库配置 (Database)\n# ------------------------------------------\n\n# 数据库连接 URL (SQLite, MySQL, PostgreSQL)\n# 支持智能推断:\n# - SQLite (推荐): sqlite://database/momei.sqlite (或 file://database/momei.sqlite)\n# - MySQL: mysql://user:pass@host:3306/db\n# - PostgreSQL: postgres://user:pass@host:5432/db\n# 如果未配置,默认将使用本地 SQLite (database/momei.sqlite)\nDATABASE_URL=sqlite://database/momei.sqlite\n\n# 手动指定数据库类型 (sqlite, mysql, postgres)\n# DATABASE_TYPE=sqlite\n\n# SQLite 数据库路径 (兼容旧版,不推荐使用)\n# DATABASE_PATH=database/momei.sqlite\n\n# 数据库高级配置 (可选)\n# DATABASE_SSL=false\n# DATABASE_CHARSET=utf8_general_ci\n# DATABASE_TIMEZONE=local\n# DATABASE_ENTITY_PREFIX=momei_\n# DATABASE_SYNCHRONIZE=false\n\n# Redis 连接地址 (可选,用于缓存或限流)\n# REDIS_URL=\n\n# ------------------------------------------\n# 3. 社交登录配置 (Social Auth)\n# ------------------------------------------\n\n# GitHub 配置\nNUXT_PUBLIC_GITHUB_CLIENT_ID=\nGITHUB_CLIENT_SECRET=\n\n# Google 配置\nNUXT_PUBLIC_GOOGLE_CLIENT_ID=\nGOOGLE_CLIENT_SECRET=\n\n# 是否启用匿名登录 (无需邮箱密码即可登录)\nANONYMOUS_LOGIN_ENABLED=false\n\n# ------------------------------------------\n# 4. AI 辅助功能 (AI Integration)\n# ------------------------------------------\n\n# AI 提供商 (openai, anthropic)\nAI_PROVIDER=openai\n# API 密钥。配置后将自动激活 AI 功能。\nAI_API_KEY=\n# 默认模型名称 (如 gpt-4o, claude-3-5-sonnet, deepseek-chat)\nAI_MODEL=gpt-4o\n# API 代理端点 (可选,用于 OpenAI 兼容服务)\nAI_API_ENDPOINT=\n\n# AI 图像生成配置 (AI Image)\n# 是否启用 AI 图像生成\nAI_IMAGE_ENABLED=false\n# AI 图像提供商 (openai, stable-diffusion, doubao, gemini)\nAI_IMAGE_PROVIDER=openai\n# AI 图像 API 密钥 (可选,默认复用 AI_API_KEY)\nAI_IMAGE_API_KEY=\n# AI 图像模型名称 (如 dall-e-3, sd-v1-5)\nAI_IMAGE_MODEL=dall-e-3\n# AI 图像 API 代理端点 (可选,默认复用 AI_API_ENDPOINT)\nAI_IMAGE_ENDPOINT=\n\n# AI 生成参数控制 (可选)\n# AI_MAX_TOKENS=2048\n# AI_TEMPERATURE=0.7\n# AI_MAX_CONTENT_LENGTH=50000\n# AI_CHUNK_SIZE=4000\n\n# ------------------------------------------\n# 5. AI 语音与语音识别 (AI Voice & Speech)\n# ------------------------------------------\n\n# TTS (文本转语音) 配置\n# 是否启用 TTS 功能\nTTS_ENABLED=false\n# TTS API 密钥 (可选,默认复用 AI_API_KEY)\nTTS_API_KEY=\n# TTS API 代理端点 (可选,默认复用 AI_API_ENDPOINT)\nTTS_ENDPOINT=\n# 默认 TTS 模型 (如 tts-1)\nTTS_DEFAULT_MODEL=tts-1\n# 默认 TTS 声音 (如 alloy, echo, fable, onyx, nova, shimmer)\nTTS_DEFAULT_VOICE=alloy\n\n# SiliconFlow 专用 TTS 配置 (如果提供商选择 siliconflow)\n# SILICONFLOW_API_KEY=\n# SILICONFLOW_ENDPOINT=https://api.siliconflow.cn/v1\n# SILICONFLOW_TTS_MODEL=fishaudio/fish-speech-1.4\n\n# ASR (语音识别) 配置\n# SiliconFlow ASR 配置\n# ASR_SILICONFLOW_API_KEY=\n# ASR_SILICONFLOW_MODEL=FunAudioLLM/SenseVoiceSmall\n\n# 火山引擎 (豆包语音) 常用配置 (用于 ASR 或 高级 TTS)\n# VOLCENGINE_APP_ID=\n# VOLCENGINE_ACCESS_KEY=\n# VOLCENGINE_SECRET_KEY=\n\n# ASR 专用火山引擎配置 (可选,若不配置则复用上方全局配置)\n# ASR_VOLCENGINE_APP_ID=\n# ASR_VOLCENGINE_ACCESS_KEY=\n# ASR_VOLCENGINE_SECRET_KEY=\n\n# ------------------------------------------\n# 6. 站点管理与统计 (Analytics & Management)\n# ------------------------------------------\n\n# 管理员用户 ID 列表,使用逗号分隔 (注册后在此处指定 ID 提权)\nADMIN_USER_IDS=\n\n# 联系邮箱\nNUXT_PUBLIC_CONTACT_EMAIL=admin@example.com\n\n# 站点运营方名称 (显示在页脚)\n# NUXT_PUBLIC_SITE_OPERATOR=\n\n# 默认文章版权声明\n# NUXT_PUBLIC_DEFAULT_COPYRIGHT=all-rights-reserved\n\n# Microsoft Clarity 配置 (可选)\nNUXT_PUBLIC_CLARITY_PROJECT_ID=\n\n# 百度统计 ID (可选)\nNUXT_PUBLIC_BAIDU_ANALYTICS_ID=\n\n# Google Analytics ID (可选)\nNUXT_PUBLIC_GOOGLE_ANALYTICS_ID=\n\n# 站点验证 (可选)\n# NUXT_PUBLIC_GOOGLE_SITE_VERIFICATION=\n# NUXT_PUBLIC_BING_SITE_VERIFICATION=\n\n# Sentry 监控 (可选)\nNUXT_PUBLIC_SENTRY_DSN=\nNUXT_PUBLIC_SENTRY_ENVIRONMENT=production\n\n# ------------------------------------------\n# 7. 邮件服务配置 (Email Service)\n# ------------------------------------------\n\n# SMTP 服务器配置\nEMAIL_HOST=\nEMAIL_PORT=587\nEMAIL_SECURE=false\nEMAIL_USER=\nEMAIL_PASS=\n# 默认邮件发送者 (格式: \"Name\" <email@example.com>)\nEMAIL_FROM=\n\n# 邮件限流与时长过长控制 (可选)\n# EMAIL_DAILY_LIMIT=100\n# EMAIL_SINGLE_USER_DAILY_LIMIT=5\n# EMAIL_LIMIT_WINDOW=86400\n# EMAIL_EXPIRES_IN=300\n\n# 匿名/临时邮箱域名配置\n# ANONYMOUS_EMAIL_DOMAIN_NAME=anonymous.com\n# TEMP_EMAIL_DOMAIN_NAME=example.com\n\n# 是否强制要求验证邮箱后才能登录\nEMAIL_REQUIRE_VERIFICATION=false\n\n# ------------------------------------------\n# 8. 文件存储与上传 (Storage & Upload)\n# ------------------------------------------\n\n# 存储类型 (s3, local)\nSTORAGE_TYPE=local\n\n# 本地存储路径 (仅 local 模式使用)\n# LOCAL_STORAGE_DIR=public/uploads\n# NUXT_PUBLIC_LOCAL_STORAGE_BASE_URL=/uploads\n\n# S3 兼容存储配置 (仅 s3 模式使用,如 Cloudflare R2)\n# S3_ENDPOINT=\n# S3_REGION=auto\n# S3_ACCESS_KEY_ID=\n# S3_SECRET_ACCESS_KEY=\n# S3_BUCKET_NAME=\n# S3_BASE_URL=\n# BUCKET_PREFIX=\n\n# Vercel Blob 存储配置 (仅 vercel-blob 模式使用)\n# VERCEL_BLOB_TOKEN=\n# BLOB_READ_WRITE_TOKEN=\n\n# 最大允许上传的常规文件大小,默认 4.5 MiB\nNUXT_PUBLIC_MAX_UPLOAD_SIZE=4.5MiB\n\n# 最大允许上传的音频大小,默认 100 MiB\nNUXT_PUBLIC_MAX_AUDIO_UPLOAD_SIZE=100MiB\n\n# 上传文件限制 (可选)\n# UPLOAD_LIMIT_WINDOW=86400\n# UPLOAD_DAILY_LIMIT=100\n# UPLOAD_SINGLE_USER_DAILY_LIMIT=5\n# LOCAL_STORAGE_MIN_FREE_SPACE=104857600\n\n# ------------------------------------------\n# 9. 合规、安全与验证码 (Compliance & Safety)\n# ------------------------------------------\n\n# 备案信息 (仅中国大陆)\nNUXT_PUBLIC_SHOW_COMPLIANCE_INFO=false\nNUXT_PUBLIC_ICP_LICENSE_NUMBER=\nNUXT_PUBLIC_PUBLIC_SECURITY_NUMBER=\n\n# 验证码 (Captcha) 提供者:cloudflare-turnstile, google-recaptcha, hcaptcha, captchafox\nNUXT_PUBLIC_AUTH_CAPTCHA_PROVIDER=\nNUXT_PUBLIC_AUTH_CAPTCHA_SITE_KEY=\nAUTH_CAPTCHA_SECRET_KEY=\n\n# 外部资源(图片等)域名白名单\n# NUXT_PUBLIC_SECURITY_URL_WHITELIST=images.unsplash.com,cdn.pixabay.com\n\n# ------------------------------------------\n# 10. 日志、调试与 Demo 模式 (Logging & Debug)\n# ------------------------------------------\n\n# 日志等级 (silly, debug, http, info, warn, error)\nLOG_LEVEL=http\n# 是否写入日志到文件 (Serverless 环境建议设为 false)\nLOGFILES=false\n# LOG_DIR=logs\n\n# Axiom 日志集成 (可选)\n# AXIOM_DATASET_NAME=\n# AXIOM_API_TOKEN=\n\n# Demo 模式开关 (开启后将限制某些敏感操作)\nNUXT_PUBLIC_DEMO_MODE=false\n# Demo 账号配置\n# NUXT_PUBLIC_DEMO_USER_EMAIL=admin@example.com\n# NUXT_PUBLIC_DEMO_PASSWORD=momei123456\n\n# 已初始化标志,设置后将不再显示初始化引导页面\nMOMEI_INSTALLED=true\n"}, "86e4ddd39c41d4890cdba94e4c562c301d43dcc8": {"t": 1786068044.3680778, "n": 12810, "h": "ecd8d0f266646bd7", "c": "# ==========================================\n# 墨梅博客 (Momei) 环境变量完整示例文件\n# ==========================================\n\n# ------------------------------------------\n# 1. 基础核心配置 (Essential)\n# ------------------------------------------\n\n# 应用名称\nNUXT_PUBLIC_APP_NAME=墨梅博客\n\n# 站点 SEO 描述\nNUXT_PUBLIC_SITE_DESCRIPTION=一个基于 Nuxt 4 构建的现代化 AI 驱动博客平台\n\n# 站点 SEO 关键词 (逗号分隔)\nNUXT_PUBLIC_SITE_KEYWORDS=Nuxt,Vue,Blog,AI,TypeScript\n\n# 默认文章版权协议类型 (例如 all-rights-reserved, cc-by-nc-sa)\nNUXT_PUBLIC_POST_COPYRIGHT=all-rights-reserved\n\n# 站点版权展示信息 (用于页脚版权行)\nNUXT_PUBLIC_SITE_COPYRIGHT_OWNER=XX博客版权所有\nNUXT_PUBLIC_SITE_COPYRIGHT_START_YEAR=2026\n\n# 兼容旧变量名,建议迁移到新的 POST_/SITE_ 命名\n# NUXT_PUBLIC_DEFAULT_COPYRIGHT=all-rights-reserved\n# NUXT_PUBLIC_FOOTER_COPYRIGHT_OWNER=\n# NUXT_PUBLIC_FOOTER_COPYRIGHT_START_YEAR=\n\n# 默认语言 (en-US, zh-CN)\nNUXT_PUBLIC_DEFAULT_LANGUAGE=zh-CN\n\n# 站点 URL(注意:公开访问的站点地址,用于 SEO 和 RSS 生成)\nNUXT_PUBLIC_SITE_URL=http://localhost:3000\n\n# Better Auth 的基础 URL(必需,用于认证回调重定向,推荐与 SITE_URL 一致)\nNUXT_PUBLIC_AUTH_BASE_URL=http://localhost:3000\n\n# 用于加密、签名和哈希的密钥。生产环境必须设置!\n# 可以使用 `openssl rand -hex 32` 生成。开发环境下会自动生成随机值。\nAUTH_SECRET=\n\n# 雪花算法机器 ID (0-1023),用于生成分布式唯一 ID。默认自动获取进程 PID 对 1024 取余\n# MACHINE_ID=\n\n# ------------------------------------------\n# 2. 数据库与高性能配置 (Database & Cache)\n# ------------------------------------------\n\n# 数据库连接 URL (支持 SQLite, MySQL, PostgreSQL)\n# 支持智能推断:\n# - SQLite (推荐): sqlite://database/momei.sqlite (或 file://database/momei.sqlite)\n# - MySQL: mysql://user:pass@host:3306/db\n# - PostgreSQL: postgres://user:pass@host:5432/db\n# 如果未配置,默认将使用本地 SQLite\nDATABASE_URL=sqlite://database/momei.sqlite\n\n# 手动指定数据库类型 (可选,通常由 URL 自动推断: sqlite, mysql, postgres)\n# DATABASE_TYPE=sqlite\n\n# SQLite 数据库路径 (兼容旧版,不推荐手动设置)\n# DATABASE_PATH=database/momei.sqlite\n\n# 是否自动同步数据库表结构 (生产环境建议固定为 false,仅手动控制迁移)\nDATABASE_SYNCHRONIZE=false\n\n# 数据库连接调节 (可选)\n# DATABASE_SSL=false\n# DATABASE_CHARSET=utf8_general_ci\n# DATABASE_TIMEZONE=local\n# DATABASE_ENTITY_PREFIX=momei_\n\n# Redis 连接地址 (可选,配置后将启用基于 Redis 的缓存或限流)\n# REDIS_URL=redis://localhost:6379\n\n# Vercel KV / Upstash Redis 持久化缓存 (可选,用于 ISR/SWR 跨实例共享缓存)\n# Vercel KV 基于 Upstash Redis,在 Vercel 项目中集成 KV 后以下环境变量会自动配置\n# KV_URL=\n# KV_REST_API_URL=\n# KV_REST_API_TOKEN=\n# KV_REST_API_READ_ONLY_TOKEN=\n\n# ------------------------------------------\n# 3. 认证与社交登录 (Authentication)\n# ------------------------------------------\n\n# 是否允许新用户注册\nALLOW_REGISTRATION=true\n\n# 是否启用匿名登录 (无需邮箱密码即可登录)\nANONYMOUS_LOGIN_ENABLED=false\n\n# GitHub 配置 (OAuth)\nNUXT_PUBLIC_GITHUB_CLIENT_ID=\nGITHUB_CLIENT_SECRET=\n\n# Google 配置 (OAuth)\nNUXT_PUBLIC_GOOGLE_CLIENT_ID=\nGOOGLE_CLIENT_SECRET=\n\n# ------------------------------------------\n# 4. AI 核心引擎 (AI Integration - Text & Image)\n# ------------------------------------------\n\n# 是否启用 AI 功能\nAI_ENABLED=true\n\n# 主 AI 提供商 (openai, anthropic, deepseek, doubao, siliconflow, gemini, volcengine)\nAI_PROVIDER=openai\n\n# AI API 密钥\nAI_API_KEY=\n\n# 默认模型名称 (如 gpt-4o, claude-3-5-sonnet, deepseek-chat)\nAI_MODEL=gpt-4o\n\n# API 代理端点 (可选,用于 OpenAI 兼容服务)\nAI_API_ENDPOINT=\n\n# AI 生成参数控制 (可选,默认内置优化值)\n# AI_MAX_TOKENS=2048\n# AI_TEMPERATURE=0.7\n# AI_MAX_CONTENT_LENGTH=50000\n# AI_CHUNK_SIZE=4000\n# AI_TEXT_DIRECT_RETURN_MAX_CHARS=1000\n# AI_TEXT_TASK_CHUNK_SIZE=4000\n# AI_TEXT_TASK_CONCURRENCY=3\n# AI 重任务超时(用于 TTS / ASR / 图片生成等耗时任务)\nAI_HEAVY_TASK_TIMEOUT=5m\n\n# Gemini 专用令牌 (如果 provider 为 gemini 且需要独立令牌鉴权)\n# GEMINI_API_TOKEN=\n\n# AI 图像生成配置\nAI_IMAGE_ENABLED=false\nAI_IMAGE_PROVIDER=openai\nAI_IMAGE_API_KEY=\nAI_IMAGE_MODEL=dall-e-3\nAI_IMAGE_ENDPOINT=\n\n# AI 配额治理 (可选,支持直接复用后台设置页导出的 JSON)\n# AI_QUOTA_ENABLED=false\n# AI_QUOTA_POLICIES=[{\"subjectType\":\"global\",\"subjectValue\":\"default\",\"scope\":\"all\",\"period\":\"day\",\"maxRequests\":100,\"maxQuotaUnits\":200,\"enabled\":true}]\n# AI_ALERT_THRESHOLDS={\"enabled\":true,\"quotaUsageRatios\":[0.5,0.8,1],\"costUsageRatios\":[0.8,1],\"failureBurst\":{\"enabled\":true,\"windowMinutes\":10,\"maxFailures\":3,\"categories\":[\"image\",\"asr\",\"tts\",\"podcast\"]},\"dedupeWindowMinutes\":1440,\"maxAlerts\":10}\n\n# ------------------------------------------\n# 5. AI 多模态音频 (ASR & TTS)\n# ------------------------------------------\n\n# ASR (语音识别) 配置\n# 是否启用 ASR 功能\nASR_ENABLED=false\n# ASR 提供商 (openai, siliconflow, volcengine)\nASR_PROVIDER=siliconflow\n# ASR 通用配置\nASR_API_KEY=\nASR_MODEL=FunAudioLLM/SenseVoiceSmall\nASR_ENDPOINT=\n\n# SiliconFlow ASR 专用配置 (可选,优先级高于通用 ASR_API_KEY / ASR_MODEL)\nASR_SILICONFLOW_API_KEY=\nASR_SILICONFLOW_MODEL=FunAudioLLM/SenseVoiceSmall\n\n# 火山引擎 ASR 专用配置 (可选,优先级高于通用 VOLCENGINE_* 配置)\nASR_VOLCENGINE_APP_ID=\nASR_VOLCENGINE_ACCESS_KEY=\nASR_VOLCENGINE_SECRET_KEY=\nASR_VOLCENGINE_CLUSTER_ID=volc.bigasr.sauc.duration\n\n# TTS (文本转语音) 配置\n# 是否启用 TTS 功能\nTTS_ENABLED=false\n# TTS 提供商 (openai, siliconflow, volcengine)\nTTS_PROVIDER=openai\n# TTS 通用配置 (默认复用 AI_API_KEY)\nTTS_API_KEY=\nTTS_ENDPOINT=\nTTS_DEFAULT_MODEL=tts-1\nTTS_DEFAULT_VOICE=alloy\n\n# TTS 前端直连模式(显式启用,默认在 Serverless 环境自动降级到火山引擎直连)\n# TTS_FRONTEND_DIRECT=false\n# TTS 前端直连凭证有效期(秒),默认 600(10 分钟),范围 [300, 43200]\n# TTS_CREDENTIAL_TTL_SECONDS=600\n\n# --- 厂商专项凭据 (可被上述 ASR/TTS 引用) ---\n\n# 火山引擎 (豆包语音) 统一凭据\nVOLCENGINE_APP_ID=\nVOLCENGINE_ACCESS_KEY=\nVOLCENGINE_SECRET_KEY=\n\n# ------------------------------------------\n# 6. 邮件发送系统 (SMTP)\n# ------------------------------------------\n\n# SMTP 服务器地址\nEMAIL_HOST=\n# SMTP 端口\nEMAIL_PORT=587\n# 是否使用 SSL/TLS (默认 false 会尝试 STARTTLS)\nEMAIL_SECURE=false\nEMAIL_USER=\nEMAIL_PASS=\n# 默认邮件发送者 (格式示例: \"Momei Blog\" <admin@example.com>)\nEMAIL_FROM=\n# 是否要求邮箱验证码验证后才允许登录\nEMAIL_REQUIRE_VERIFICATION=false\n\n# 邮件限流与周期配置 (可选)\n# EMAIL_DAILY_LIMIT=100\n# EMAIL_SINGLE_USER_DAILY_LIMIT=5\n# EMAIL_LIMIT_WINDOW=86400\n# EMAIL_EXPIRES_IN=300\n\n# 临时邮箱域拦截配置 (可选)\n# TEMP_EMAIL_DOMAIN_NAME=example.com\n\n# ------------------------------------------\n# 7. 对象存储系统 (Storage & Upload)\n# ------------------------------------------\n\n# 存储引擎 (local, s3, r2, vercel_blob;兼容旧值 vercel-blob)\nSTORAGE_TYPE=local\n\n# 路径前缀(所有上传文件均会携带此目录前缀)\nBUCKET_PREFIX=momei/\n\n# 全局公共访问域名 / 对象前缀(可选,优先级高于驱动级 BaseURL/Prefix)\n# ASSET_PUBLIC_BASE_URL=https://cdn.example.com/assets\n# ASSET_OBJECT_PREFIX=momei-blog/\n\n# 1. 本地存储配置 (STORAGE_TYPE=local)\nLOCAL_STORAGE_DIR=public/uploads\nNUXT_PUBLIC_LOCAL_STORAGE_BASE_URL=/uploads\n\n# 2. S3 兼容存储 (STORAGE_TYPE=s3, 适用于 R2, AWS S3, MinIO)\nS3_ENDPOINT=\nS3_BUCKET_NAME=\nS3_REGION=auto\nS3_ACCESS_KEY_ID=\nS3_SECRET_ACCESS_KEY=\nS3_BASE_URL=\n\n# 3. Vercel Blob (STORAGE_TYPE=vercel_blob)\nBLOB_READ_WRITE_TOKEN=\n\n# 4. Cloudflare R2 专用配置 (也可通过 S3 变量配置)\n# CLOUDFLARE_R2_ACCOUNT_ID=\n# CLOUDFLARE_R2_ACCESS_KEY=\n# CLOUDFLARE_R2_SECRET_KEY=\n# CLOUDFLARE_R2_BUCKET=\n# CLOUDFLARE_R2_BASE_URL=\n\n# 文件大小限制调节 (可选)\n# NUXT_PUBLIC_MAX_UPLOAD_SIZE=4.5MiB\n# NUXT_PUBLIC_MAX_AUDIO_UPLOAD_SIZE=100MiB\n# LOCAL_STORAGE_MIN_FREE_SPACE=100MiB\n\n# ------------------------------------------\n# 7.1 listmonk Newsletter 分发\n# ------------------------------------------\n\nLISTMONK_ENABLED=false\nLISTMONK_INSTANCE_URL=\nLISTMONK_USERNAME=\nLISTMONK_ACCESS_TOKEN=\nLISTMONK_DEFAULT_LIST_IDS=\n# JSON 示例: {\"backend\":[3],\"frontend\":[4]}\nLISTMONK_CATEGORY_LIST_MAP=\n# JSON 示例: {\"nuxt\":[5],\"newsletter\":[6]}\nLISTMONK_TAG_LIST_MAP=\nLISTMONK_TEMPLATE_ID=\n\n# Hexo 风格文章仓库同步(GitHub / Gitee)\nHEXO_SYNC_ENABLED=false\n# 支持 github / gitee\nHEXO_SYNC_PROVIDER=github\nHEXO_SYNC_OWNER=\nHEXO_SYNC_REPO=\nHEXO_SYNC_BRANCH=main\nHEXO_SYNC_POSTS_DIR=source/_posts\n# 仅服务端读取,不进入后台数据库\nHEXO_SYNC_ACCESS_TOKEN=\n\n# ------------------------------------------\n# 8. 运维、监控与自动化 (Operations)\n# ------------------------------------------\n\n# 管理员用户 ID 列表 (逗号分隔,注册后在此提权)\nADMIN_USER_IDS=\n\n# Vercel Cron 专用鉴权密钥\n# Vercel 会自动以 Authorization: Bearer <CRON_SECRET> 触发定时任务端点\nCRON_SECRET=\n\n# 定时任务鉴权令牌 (用于手动触发 Scheduled Tasks Webhook / 旧版集成)\nTASKS_TOKEN=\n\n# Webhook HMAC 签名密钥 (推荐独立配置,默认使用 TASKS_TOKEN)\n# 用于外部调度器 / GitHub Actions / Cloudflare / Serverless 等场景的 HMAC 验签\nWEBHOOK_SECRET=\n\n# 自部署环境 Cron 表达式 (默认每 5 分钟执行一次)\n# 仅在非 Serverless 环境中生效\n# TASK_CRON_EXPRESSION=*/5 * * * *\n\n# 显式禁用自部署环境 Cron\n# DISABLE_CRON_JOB=false\n\n# Webhook 时间戳容差 (毫秒)\n# 说明:当前版本预留该变量名,Webhook 校验默认固定 5 分钟容差\n# WEBHOOK_TIMESTAMP_TOLERANCE=300000\n\n# Sentry 异常监控\nNUXT_PUBLIC_SENTRY_DSN=\nNUXT_PUBLIC_SENTRY_ENVIRONMENT=production\n\n# 站长流量统计 (填入对应统计 ID)\nNUXT_PUBLIC_BAIDU_ANALYTICS_ID=\nNUXT_PUBLIC_GOOGLE_ANALYTICS_ID=\nNUXT_PUBLIC_CLARITY_PROJECT_ID=\n# Umami 统计配置(JSON 字符串,示例: {\"websiteId\":\"xxx\",\"scriptUrl\":\"https://analytics.example.com/script.js\"})\n# NUXT_PUBLIC_UMAMI_ANALYTICS=\n# 若使用 Docker 自托管 Umami,可参考仓库根目录 `umami.env.example` 与 `docker-compose.umami.yml`\n\n# 站点验证标签 (可选)\n# NUXT_PUBLIC_GOOGLE_SITE_VERIFICATION=\n# NUXT_PUBLIC_BING_SITE_VERIFICATION=\n\n# ------------------------------------------\n# 9. 视觉特效与内容组件 (Features)\n# ------------------------------------------\n\n# 站点元数据\nNUXT_PUBLIC_SITE_LOGO=\nNUXT_PUBLIC_SITE_FAVICON=\nNUXT_PUBLIC_SITE_OPERATOR=\nNUXT_PUBLIC_CONTACT_EMAIL=admin@example.com\n\n# 主题系统默认值 (可选,仅在未通过后台配置覆盖时生效)\n# THEME_PRESET=\n# THEME_PRIMARY_COLOR=\n# THEME_ACCENT_COLOR=\n# THEME_SURFACE_COLOR=\n# THEME_TEXT_COLOR=\n# THEME_DARK_PRIMARY_COLOR=\n# THEME_DARK_ACCENT_COLOR=\n# THEME_DARK_SURFACE_COLOR=\n# THEME_DARK_TEXT_COLOR=\n# THEME_BORDER_RADIUS=\n# THEME_MOURNING_MODE=false\n# THEME_BACKGROUND_TYPE=\n# THEME_BACKGROUND_VALUE=\n\n# 验证码集成 (提供商: cloudflare-turnstile, google-recaptcha, hcaptcha, captchafox)\nENABLE_CAPTCHA=false\nNUXT_PUBLIC_AUTH_CAPTCHA_PROVIDER=\nNUXT_PUBLIC_AUTH_CAPTCHA_SITE_KEY=\nAUTH_CAPTCHA_SECRET_KEY=\n\n# 评论审核与风控\nENABLE_COMMENT_REVIEW=false\n# 关键词黑名单 (英文逗号分隔)\nBLACKLISTED_KEYWORDS=\n\n# 页脚自定义注入代码\nNUXT_PUBLIC_FOOTER_CODE=\n\n# 动态视觉特效控制\nNUXT_PUBLIC_LIVE2D_ENABLED=false\n# NUXT_PUBLIC_LIVE2D_SCRIPT_URL=https://unpkg.com/live2d-widgets@1.0.0/dist/\n# NUXT_PUBLIC_LIVE2D_MODEL_URL=\n# NUXT_PUBLIC_LIVE2D_OPTIONS_JSON={}\n# NUXT_PUBLIC_LIVE2D_MOBILE_ENABLED=false\n# NUXT_PUBLIC_LIVE2D_MIN_WIDTH=1024\n# NUXT_PUBLIC_LIVE2D_DATA_SAVER_BLOCK=true\nNUXT_PUBLIC_CANVAS_NEST_ENABLED=false\n# NUXT_PUBLIC_CANVAS_NEST_OPTIONS_JSON={}\n# NUXT_PUBLIC_CANVAS_NEST_MOBILE_ENABLED=false\n# NUXT_PUBLIC_CANVAS_NEST_MIN_WIDTH=1024\n# NUXT_PUBLIC_CANVAS_NEST_DATA_SAVER_BLOCK=true\n# 全局性能卫兵:是否允许移动端加载特效\nNUXT_PUBLIC_EFFECTS_MOBILE_ENABLED=false\n# NUXT_PUBLIC_EFFECTS_MIN_WIDTH=768\n# NUXT_PUBLIC_EFFECTS_DATA_SAVER_BLOCK=true\n\n# 公开限制项 (可选,会同步给前端)\n# NUXT_PUBLIC_ALLOWED_FILE_TYPES=image/jpeg,image/png,image/webp,image/gif\n# NUXT_PUBLIC_COMMENT_INTERVAL=60\n# NUXT_PUBLIC_POSTS_PER_PAGE=10\n\n# 上传限流 (可选)\n# UPLOAD_DAILY_LIMIT=100\n# UPLOAD_SINGLE_USER_DAILY_LIMIT=20\n# UPLOAD_LIMIT_WINDOW=86400\n\n# ------------------------------------------\n# 10. 合规与外部资源安全 (Compliance & Security)\n# ------------------------------------------\n\n# 中国大陆备案信息显示\nNUXT_PUBLIC_SHOW_COMPLIANCE_INFO=false\nNUXT_PUBLIC_ICP_LICENSE_NUMBER=\nNUXT_PUBLIC_PUBLIC_SECURITY_NUMBER=\n\n# 安全:外部资源域名白名单 (逗号分隔,防止某些代理环境下图片加载失败)\nNUXT_PUBLIC_SECURITY_URL_WHITELIST=\n\n# Hugging Face 镜像代理地址 (用于部署在大陆环境时拉取资源)\nNUXT_PUBLIC_HF_PROXY=https://huggingface.co\n\n# ------------------------------------------\n# 11. 商业化与第三方平台集成 (Commercial & Third-party)\n# ------------------------------------------\n\n# 全局商业化默认配置 (JSON 字符串)\n# 仅当需要通过环境变量锁定全局社交/打赏配置时使用\n# COMMERCIAL_SPONSORSHIP_JSON={\"enabled\":true,\"donationLinks\":[],\"socialLinks\":[]}\n\n# Memos 生活流同步\nMEMOS_ENABLED=false\nMEMOS_INSTANCE_URL=\nMEMOS_ACCESS_TOKEN=\nMEMOS_DEFAULT_VISIBILITY=PRIVATE\n\n# ------------------------------------------\n# 12. API 限流配置 (Rate Limiting)\n# ------------------------------------------\n#\n# 内置限流规则及对应环境变量覆盖(不设置则使用默认值)。\n# 规则名对应 server/utils/rate-limit-config.ts 中的 name 字段。\n#\n# 命名规则:NUXT_RATE_LIMIT_<RULE_NAME>_MAX=<number>\n# NUXT_RATE_LIMIT_<RULE_NAME>_WINDOW=<number> 窗口秒数\n\n# 外部 API(CLI/MCP 导入导出等批量操作,容忍度更高)\n# NUXT_RATE_LIMIT_EXTERNAL_MAX=300\n# NUXT_RATE_LIMIT_EXTERNAL_WINDOW=60\n\n# AI 接口(防止 API 费用超支及滥用)\n# NUXT_RATE_LIMIT_AI_MAX=10\n# NUXT_RATE_LIMIT_AI_WINDOW=60\n\n# AI 任务轮询(放宽限制)\n# NUXT_RATE_LIMIT_AI_STATUS_MAX=30\n# NUXT_RATE_LIMIT_AI_STATUS_WINDOW=60\n\n# 搜索(全文搜索压力大)\n# NUXT_RATE_LIMIT_SEARCH_MAX=5\n# NUXT_RATE_LIMIT_SEARCH_WINDOW=60\n\n# 文章浏览量计数(POST /api/posts/:id/views,通过 match: path.endsWith('/views') 精准匹配)\n# 较严格的默认值(3次/10分钟)防止刷量,match 确保不影响 POST /api/posts/ 创建文章\n# NUXT_RATE_LIMIT_VIEWS_MAX=3\n# NUXT_RATE_LIMIT_VIEWS_WINDOW=600\n\n# 通用写请求(POST/PATCH/PUT/DELETE)\n# NUXT_RATE_LIMIT_DEFAULT_POST_MAX=20\n# NUXT_RATE_LIMIT_DEFAULT_POST_WINDOW=60\n\n# 通用读请求(GET)\n# NUXT_RATE_LIMIT_DEFAULT_GET_MAX=60\n# NUXT_RATE_LIMIT_DEFAULT_GET_WINDOW=60\n\n# ------------------------------------------\n# 13. 日志、调试与 Demo 模式 (Logging & Debug)\n# ------------------------------------------\n\n# 日志输出等级 (silly, debug, http, info, warn, error)\nLOG_LEVEL=info\n# 是否开启文件日志记录 (默认 false,Serverless 环境必须设为 false)\nLOGFILES=false\n# LOG_DIR=logs\n\n# Axiom 日志集成\n# AXIOM_DATASET_NAME=\n# AXIOM_API_TOKEN=\n\n# 演示模式 (内存 DB 运行,限制写操作)\nNUXT_PUBLIC_DEMO_MODE=false\n# NUXT_PUBLIC_DEMO_USER_EMAIL=admin@example.com\n# NUXT_PUBLIC_DEMO_PASSWORD=momei123456\n\n# MCP HTTP 传输开关(启用后主应用挂载 MCP HTTP 端点 /api/mcp)\n# 非 Serverless 环境(Docker / VPS)可开启;Serverless 环境自动静默降级\n# MOMEI_ENABLE_MCP_HTTP=false\n\n# 安装锁定标志(系统首次运行后会自动生成/读取,通常建议初始化后手动修改为 true 并重启系统)\n# MOMEI_INSTALLED=true\n"}, "5bf84cd7e3091534a239218f202a100f45042ec0": {"t": 1786068499.3254485, "n": 12810, "h": "ecd8d0f266646bd7", "c": "# ==========================================\n# 墨梅博客 (Momei) 环境变量完整示例文件\n# ==========================================\n\n# ------------------------------------------\n# 1. 基础核心配置 (Essential)\n# ------------------------------------------\n\n# 应用名称\nNUXT_PUBLIC_APP_NAME=墨梅博客\n\n# 站点 SEO 描述\nNUXT_PUBLIC_SITE_DESCRIPTION=一个基于 Nuxt 4 构建的现代化 AI 驱动博客平台\n\n# 站点 SEO 关键词 (逗号分隔)\nNUXT_PUBLIC_SITE_KEYWORDS=Nuxt,Vue,Blog,AI,TypeScript\n\n# 默认文章版权协议类型 (例如 all-rights-reserved, cc-by-nc-sa)\nNUXT_PUBLIC_POST_COPYRIGHT=all-rights-reserved\n\n# 站点版权展示信息 (用于页脚版权行)\nNUXT_PUBLIC_SITE_COPYRIGHT_OWNER=XX博客版权所有\nNUXT_PUBLIC_SITE_COPYRIGHT_START_YEAR=2026\n\n# 兼容旧变量名,建议迁移到新的 POST_/SITE_ 命名\n# NUXT_PUBLIC_DEFAULT_COPYRIGHT=all-rights-reserved\n# NUXT_PUBLIC_FOOTER_COPYRIGHT_OWNER=\n# NUXT_PUBLIC_FOOTER_COPYRIGHT_START_YEAR=\n\n# 默认语言 (en-US, zh-CN)\nNUXT_PUBLIC_DEFAULT_LANGUAGE=zh-CN\n\n# 站点 URL(注意:公开访问的站点地址,用于 SEO 和 RSS 生成)\nNUXT_PUBLIC_SITE_URL=http://localhost:3000\n\n# Better Auth 的基础 URL(必需,用于认证回调重定向,推荐与 SITE_URL 一致)\nNUXT_PUBLIC_AUTH_BASE_URL=http://localhost:3000\n\n# 用于加密、签名和哈希的密钥。生产环境必须设置!\n# 可以使用 `openssl rand -hex 32` 生成。开发环境下会自动生成随机值。\nAUTH_SECRET=\n\n# 雪花算法机器 ID (0-1023),用于生成分布式唯一 ID。默认自动获取进程 PID 对 1024 取余\n# MACHINE_ID=\n\n# ------------------------------------------\n# 2. 数据库与高性能配置 (Database & Cache)\n# ------------------------------------------\n\n# 数据库连接 URL (支持 SQLite, MySQL, PostgreSQL)\n# 支持智能推断:\n# - SQLite (推荐): sqlite://database/momei.sqlite (或 file://database/momei.sqlite)\n# - MySQL: mysql://user:pass@host:3306/db\n# - PostgreSQL: postgres://user:pass@host:5432/db\n# 如果未配置,默认将使用本地 SQLite\nDATABASE_URL=sqlite://database/momei.sqlite\n\n# 手动指定数据库类型 (可选,通常由 URL 自动推断: sqlite, mysql, postgres)\n# DATABASE_TYPE=sqlite\n\n# SQLite 数据库路径 (兼容旧版,不推荐手动设置)\n# DATABASE_PATH=database/momei.sqlite\n\n# 是否自动同步数据库表结构 (生产环境建议固定为 false,仅手动控制迁移)\nDATABASE_SYNCHRONIZE=false\n\n# 数据库连接调节 (可选)\n# DATABASE_SSL=false\n# DATABASE_CHARSET=utf8_general_ci\n# DATABASE_TIMEZONE=local\n# DATABASE_ENTITY_PREFIX=momei_\n\n# Redis 连接地址 (可选,配置后将启用基于 Redis 的缓存或限流)\n# REDIS_URL=redis://localhost:6379\n\n# Vercel KV / Upstash Redis 持久化缓存 (可选,用于 ISR/SWR 跨实例共享缓存)\n# Vercel KV 基于 Upstash Redis,在 Vercel 项目中集成 KV 后以下环境变量会自动配置\n# KV_URL=\n# KV_REST_API_URL=\n# KV_REST_API_TOKEN=\n# KV_REST_API_READ_ONLY_TOKEN=\n\n# ------------------------------------------\n# 3. 认证与社交登录 (Authentication)\n# ------------------------------------------\n\n# 是否允许新用户注册\nALLOW_REGISTRATION=true\n\n# 是否启用匿名登录 (无需邮箱密码即可登录)\nANONYMOUS_LOGIN_ENABLED=false\n\n# GitHub 配置 (OAuth)\nNUXT_PUBLIC_GITHUB_CLIENT_ID=\nGITHUB_CLIENT_SECRET=\n\n# Google 配置 (OAuth)\nNUXT_PUBLIC_GOOGLE_CLIENT_ID=\nGOOGLE_CLIENT_SECRET=\n\n# ------------------------------------------\n# 4. AI 核心引擎 (AI Integration - Text & Image)\n# ------------------------------------------\n\n# 是否启用 AI 功能\nAI_ENABLED=true\n\n# 主 AI 提供商 (openai, anthropic, deepseek, doubao, siliconflow, gemini, volcengine)\nAI_PROVIDER=openai\n\n# AI API 密钥\nAI_API_KEY=\n\n# 默认模型名称 (如 gpt-4o, claude-3-5-sonnet, deepseek-chat)\nAI_MODEL=gpt-4o\n\n# API 代理端点 (可选,用于 OpenAI 兼容服务)\nAI_API_ENDPOINT=\n\n# AI 生成参数控制 (可选,默认内置优化值)\n# AI_MAX_TOKENS=2048\n# AI_TEMPERATURE=0.7\n# AI_MAX_CONTENT_LENGTH=50000\n# AI_CHUNK_SIZE=4000\n# AI_TEXT_DIRECT_RETURN_MAX_CHARS=1000\n# AI_TEXT_TASK_CHUNK_SIZE=4000\n# AI_TEXT_TASK_CONCURRENCY=3\n# AI 重任务超时(用于 TTS / ASR / 图片生成等耗时任务)\nAI_HEAVY_TASK_TIMEOUT=5m\n\n# Gemini 专用令牌 (如果 provider 为 gemini 且需要独立令牌鉴权)\n# GEMINI_API_TOKEN=\n\n# AI 图像生成配置\nAI_IMAGE_ENABLED=false\nAI_IMAGE_PROVIDER=openai\nAI_IMAGE_API_KEY=\nAI_IMAGE_MODEL=dall-e-3\nAI_IMAGE_ENDPOINT=\n\n# AI 配额治理 (可选,支持直接复用后台设置页导出的 JSON)\n# AI_QUOTA_ENABLED=false\n# AI_QUOTA_POLICIES=[{\"subjectType\":\"global\",\"subjectValue\":\"default\",\"scope\":\"all\",\"period\":\"day\",\"maxRequests\":100,\"maxQuotaUnits\":200,\"enabled\":true}]\n# AI_ALERT_THRESHOLDS={\"enabled\":true,\"quotaUsageRatios\":[0.5,0.8,1],\"costUsageRatios\":[0.8,1],\"failureBurst\":{\"enabled\":true,\"windowMinutes\":10,\"maxFailures\":3,\"categories\":[\"image\",\"asr\",\"tts\",\"podcast\"]},\"dedupeWindowMinutes\":1440,\"maxAlerts\":10}\n\n# ------------------------------------------\n# 5. AI 多模态音频 (ASR & TTS)\n# ------------------------------------------\n\n# ASR (语音识别) 配置\n# 是否启用 ASR 功能\nASR_ENABLED=false\n# ASR 提供商 (openai, siliconflow, volcengine)\nASR_PROVIDER=siliconflow\n# ASR 通用配置\nASR_API_KEY=\nASR_MODEL=FunAudioLLM/SenseVoiceSmall\nASR_ENDPOINT=\n\n# SiliconFlow ASR 专用配置 (可选,优先级高于通用 ASR_API_KEY / ASR_MODEL)\nASR_SILICONFLOW_API_KEY=\nASR_SILICONFLOW_MODEL=FunAudioLLM/SenseVoiceSmall\n\n# 火山引擎 ASR 专用配置 (可选,优先级高于通用 VOLCENGINE_* 配置)\nASR_VOLCENGINE_APP_ID=\nASR_VOLCENGINE_ACCESS_KEY=\nASR_VOLCENGINE_SECRET_KEY=\nASR_VOLCENGINE_CLUSTER_ID=volc.bigasr.sauc.duration\n\n# TTS (文本转语音) 配置\n# 是否启用 TTS 功能\nTTS_ENABLED=false\n# TTS 提供商 (openai, siliconflow, volcengine)\nTTS_PROVIDER=openai\n# TTS 通用配置 (默认复用 AI_API_KEY)\nTTS_API_KEY=\nTTS_ENDPOINT=\nTTS_DEFAULT_MODEL=tts-1\nTTS_DEFAULT_VOICE=alloy\n\n# TTS 前端直连模式(显式启用,默认在 Serverless 环境自动降级到火山引擎直连)\n# TTS_FRONTEND_DIRECT=false\n# TTS 前端直连凭证有效期(秒),默认 600(10 分钟),范围 [300, 43200]\n# TTS_CREDENTIAL_TTL_SECONDS=600\n\n# --- 厂商专项凭据 (可被上述 ASR/TTS 引用) ---\n\n# 火山引擎 (豆包语音) 统一凭据\nVOLCENGINE_APP_ID=\nVOLCENGINE_ACCESS_KEY=\nVOLCENGINE_SECRET_KEY=\n\n# ------------------------------------------\n# 6. 邮件发送系统 (SMTP)\n# ------------------------------------------\n\n# SMTP 服务器地址\nEMAIL_HOST=\n# SMTP 端口\nEMAIL_PORT=587\n# 是否使用 SSL/TLS (默认 false 会尝试 STARTTLS)\nEMAIL_SECURE=false\nEMAIL_USER=\nEMAIL_PASS=\n# 默认邮件发送者 (格式示例: \"Momei Blog\" <admin@example.com>)\nEMAIL_FROM=\n# 是否要求邮箱验证码验证后才允许登录\nEMAIL_REQUIRE_VERIFICATION=false\n\n# 邮件限流与周期配置 (可选)\n# EMAIL_DAILY_LIMIT=100\n# EMAIL_SINGLE_USER_DAILY_LIMIT=5\n# EMAIL_LIMIT_WINDOW=86400\n# EMAIL_EXPIRES_IN=300\n\n# 临时邮箱域拦截配置 (可选)\n# TEMP_EMAIL_DOMAIN_NAME=example.com\n\n# ------------------------------------------\n# 7. 对象存储系统 (Storage & Upload)\n# ------------------------------------------\n\n# 存储引擎 (local, s3, r2, vercel_blob;兼容旧值 vercel-blob)\nSTORAGE_TYPE=local\n\n# 路径前缀(所有上传文件均会携带此目录前缀)\nBUCKET_PREFIX=momei/\n\n# 全局公共访问域名 / 对象前缀(可选,优先级高于驱动级 BaseURL/Prefix)\n# ASSET_PUBLIC_BASE_URL=https://cdn.example.com/assets\n# ASSET_OBJECT_PREFIX=momei-blog/\n\n# 1. 本地存储配置 (STORAGE_TYPE=local)\nLOCAL_STORAGE_DIR=public/uploads\nNUXT_PUBLIC_LOCAL_STORAGE_BASE_URL=/uploads\n\n# 2. S3 兼容存储 (STORAGE_TYPE=s3, 适用于 R2, AWS S3, MinIO)\nS3_ENDPOINT=\nS3_BUCKET_NAME=\nS3_REGION=auto\nS3_ACCESS_KEY_ID=\nS3_SECRET_ACCESS_KEY=\nS3_BASE_URL=\n\n# 3. Vercel Blob (STORAGE_TYPE=vercel_blob)\nBLOB_READ_WRITE_TOKEN=\n\n# 4. Cloudflare R2 专用配置 (也可通过 S3 变量配置)\n# CLOUDFLARE_R2_ACCOUNT_ID=\n# CLOUDFLARE_R2_ACCESS_KEY=\n# CLOUDFLARE_R2_SECRET_KEY=\n# CLOUDFLARE_R2_BUCKET=\n# CLOUDFLARE_R2_BASE_URL=\n\n# 文件大小限制调节 (可选)\n# NUXT_PUBLIC_MAX_UPLOAD_SIZE=4.5MiB\n# NUXT_PUBLIC_MAX_AUDIO_UPLOAD_SIZE=100MiB\n# LOCAL_STORAGE_MIN_FREE_SPACE=100MiB\n\n# ------------------------------------------\n# 7.1 listmonk Newsletter 分发\n# ------------------------------------------\n\nLISTMONK_ENABLED=false\nLISTMONK_INSTANCE_URL=\nLISTMONK_USERNAME=\nLISTMONK_ACCESS_TOKEN=\nLISTMONK_DEFAULT_LIST_IDS=\n# JSON 示例: {\"backend\":[3],\"frontend\":[4]}\nLISTMONK_CATEGORY_LIST_MAP=\n# JSON 示例: {\"nuxt\":[5],\"newsletter\":[6]}\nLISTMONK_TAG_LIST_MAP=\nLISTMONK_TEMPLATE_ID=\n\n# Hexo 风格文章仓库同步(GitHub / Gitee)\nHEXO_SYNC_ENABLED=false\n# 支持 github / gitee\nHEXO_SYNC_PROVIDER=github\nHEXO_SYNC_OWNER=\nHEXO_SYNC_REPO=\nHEXO_SYNC_BRANCH=main\nHEXO_SYNC_POSTS_DIR=source/_posts\n# 仅服务端读取,不进入后台数据库\nHEXO_SYNC_ACCESS_TOKEN=\n\n# ------------------------------------------\n# 8. 运维、监控与自动化 (Operations)\n# ------------------------------------------\n\n# 管理员用户 ID 列表 (逗号分隔,注册后在此提权)\nADMIN_USER_IDS=\n\n# Vercel Cron 专用鉴权密钥\n# Vercel 会自动以 Authorization: Bearer <CRON_SECRET> 触发定时任务端点\nCRON_SECRET=\n\n# 定时任务鉴权令牌 (用于手动触发 Scheduled Tasks Webhook / 旧版集成)\nTASKS_TOKEN=\n\n# Webhook HMAC 签名密钥 (推荐独立配置,默认使用 TASKS_TOKEN)\n# 用于外部调度器 / GitHub Actions / Cloudflare / Serverless 等场景的 HMAC 验签\nWEBHOOK_SECRET=\n\n# 自部署环境 Cron 表达式 (默认每 5 分钟执行一次)\n# 仅在非 Serverless 环境中生效\n# TASK_CRON_EXPRESSION=*/5 * * * *\n\n# 显式禁用自部署环境 Cron\n# DISABLE_CRON_JOB=false\n\n# Webhook 时间戳容差 (毫秒)\n# 说明:当前版本预留该变量名,Webhook 校验默认固定 5 分钟容差\n# WEBHOOK_TIMESTAMP_TOLERANCE=300000\n\n# Sentry 异常监控\nNUXT_PUBLIC_SENTRY_DSN=\nNUXT_PUBLIC_SENTRY_ENVIRONMENT=production\n\n# 站长流量统计 (填入对应统计 ID)\nNUXT_PUBLIC_BAIDU_ANALYTICS_ID=\nNUXT_PUBLIC_GOOGLE_ANALYTICS_ID=\nNUXT_PUBLIC_CLARITY_PROJECT_ID=\n# Umami 统计配置(JSON 字符串,示例: {\"websiteId\":\"xxx\",\"scriptUrl\":\"https://analytics.example.com/script.js\"})\n# NUXT_PUBLIC_UMAMI_ANALYTICS=\n# 若使用 Docker 自托管 Umami,可参考仓库根目录 `umami.env.example` 与 `docker-compose.umami.yml`\n\n# 站点验证标签 (可选)\n# NUXT_PUBLIC_GOOGLE_SITE_VERIFICATION=\n# NUXT_PUBLIC_BING_SITE_VERIFICATION=\n\n# ------------------------------------------\n# 9. 视觉特效与内容组件 (Features)\n# ------------------------------------------\n\n# 站点元数据\nNUXT_PUBLIC_SITE_LOGO=\nNUXT_PUBLIC_SITE_FAVICON=\nNUXT_PUBLIC_SITE_OPERATOR=\nNUXT_PUBLIC_CONTACT_EMAIL=admin@example.com\n\n# 主题系统默认值 (可选,仅在未通过后台配置覆盖时生效)\n# THEME_PRESET=\n# THEME_PRIMARY_COLOR=\n# THEME_ACCENT_COLOR=\n# THEME_SURFACE_COLOR=\n# THEME_TEXT_COLOR=\n# THEME_DARK_PRIMARY_COLOR=\n# THEME_DARK_ACCENT_COLOR=\n# THEME_DARK_SURFACE_COLOR=\n# THEME_DARK_TEXT_COLOR=\n# THEME_BORDER_RADIUS=\n# THEME_MOURNING_MODE=false\n# THEME_BACKGROUND_TYPE=\n# THEME_BACKGROUND_VALUE=\n\n# 验证码集成 (提供商: cloudflare-turnstile, google-recaptcha, hcaptcha, captchafox)\nENABLE_CAPTCHA=false\nNUXT_PUBLIC_AUTH_CAPTCHA_PROVIDER=\nNUXT_PUBLIC_AUTH_CAPTCHA_SITE_KEY=\nAUTH_CAPTCHA_SECRET_KEY=\n\n# 评论审核与风控\nENABLE_COMMENT_REVIEW=false\n# 关键词黑名单 (英文逗号分隔)\nBLACKLISTED_KEYWORDS=\n\n# 页脚自定义注入代码\nNUXT_PUBLIC_FOOTER_CODE=\n\n# 动态视觉特效控制\nNUXT_PUBLIC_LIVE2D_ENABLED=false\n# NUXT_PUBLIC_LIVE2D_SCRIPT_URL=https://unpkg.com/live2d-widgets@1.0.0/dist/\n# NUXT_PUBLIC_LIVE2D_MODEL_URL=\n# NUXT_PUBLIC_LIVE2D_OPTIONS_JSON={}\n# NUXT_PUBLIC_LIVE2D_MOBILE_ENABLED=false\n# NUXT_PUBLIC_LIVE2D_MIN_WIDTH=1024\n# NUXT_PUBLIC_LIVE2D_DATA_SAVER_BLOCK=true\nNUXT_PUBLIC_CANVAS_NEST_ENABLED=false\n# NUXT_PUBLIC_CANVAS_NEST_OPTIONS_JSON={}\n# NUXT_PUBLIC_CANVAS_NEST_MOBILE_ENABLED=false\n# NUXT_PUBLIC_CANVAS_NEST_MIN_WIDTH=1024\n# NUXT_PUBLIC_CANVAS_NEST_DATA_SAVER_BLOCK=true\n# 全局性能卫兵:是否允许移动端加载特效\nNUXT_PUBLIC_EFFECTS_MOBILE_ENABLED=false\n# NUXT_PUBLIC_EFFECTS_MIN_WIDTH=768\n# NUXT_PUBLIC_EFFECTS_DATA_SAVER_BLOCK=true\n\n# 公开限制项 (可选,会同步给前端)\n# NUXT_PUBLIC_ALLOWED_FILE_TYPES=image/jpeg,image/png,image/webp,image/gif\n# NUXT_PUBLIC_COMMENT_INTERVAL=60\n# NUXT_PUBLIC_POSTS_PER_PAGE=10\n\n# 上传限流 (可选)\n# UPLOAD_DAILY_LIMIT=100\n# UPLOAD_SINGLE_USER_DAILY_LIMIT=20\n# UPLOAD_LIMIT_WINDOW=86400\n\n# ------------------------------------------\n# 10. 合规与外部资源安全 (Compliance & Security)\n# ------------------------------------------\n\n# 中国大陆备案信息显示\nNUXT_PUBLIC_SHOW_COMPLIANCE_INFO=false\nNUXT_PUBLIC_ICP_LICENSE_NUMBER=\nNUXT_PUBLIC_PUBLIC_SECURITY_NUMBER=\n\n# 安全:外部资源域名白名单 (逗号分隔,防止某些代理环境下图片加载失败)\nNUXT_PUBLIC_SECURITY_URL_WHITELIST=\n\n# Hugging Face 镜像代理地址 (用于部署在大陆环境时拉取资源)\nNUXT_PUBLIC_HF_PROXY=https://huggingface.co\n\n# ------------------------------------------\n# 11. 商业化与第三方平台集成 (Commercial & Third-party)\n# ------------------------------------------\n\n# 全局商业化默认配置 (JSON 字符串)\n# 仅当需要通过环境变量锁定全局社交/打赏配置时使用\n# COMMERCIAL_SPONSORSHIP_JSON={\"enabled\":true,\"donationLinks\":[],\"socialLinks\":[]}\n\n# Memos 生活流同步\nMEMOS_ENABLED=false\nMEMOS_INSTANCE_URL=\nMEMOS_ACCESS_TOKEN=\nMEMOS_DEFAULT_VISIBILITY=PRIVATE\n\n# ------------------------------------------\n# 12. API 限流配置 (Rate Limiting)\n# ------------------------------------------\n#\n# 内置限流规则及对应环境变量覆盖(不设置则使用默认值)。\n# 规则名对应 server/utils/rate-limit-config.ts 中的 name 字段。\n#\n# 命名规则:NUXT_RATE_LIMIT_<RULE_NAME>_MAX=<number>\n# NUXT_RATE_LIMIT_<RULE_NAME>_WINDOW=<number> 窗口秒数\n\n# 外部 API(CLI/MCP 导入导出等批量操作,容忍度更高)\n# NUXT_RATE_LIMIT_EXTERNAL_MAX=300\n# NUXT_RATE_LIMIT_EXTERNAL_WINDOW=60\n\n# AI 接口(防止 API 费用超支及滥用)\n# NUXT_RATE_LIMIT_AI_MAX=10\n# NUXT_RATE_LIMIT_AI_WINDOW=60\n\n# AI 任务轮询(放宽限制)\n# NUXT_RATE_LIMIT_AI_STATUS_MAX=30\n# NUXT_RATE_LIMIT_AI_STATUS_WINDOW=60\n\n# 搜索(全文搜索压力大)\n# NUXT_RATE_LIMIT_SEARCH_MAX=5\n# NUXT_RATE_LIMIT_SEARCH_WINDOW=60\n\n# 文章浏览量计数(POST /api/posts/:id/views,通过 match: path.endsWith('/views') 精准匹配)\n# 较严格的默认值(3次/10分钟)防止刷量,match 确保不影响 POST /api/posts/ 创建文章\n# NUXT_RATE_LIMIT_VIEWS_MAX=3\n# NUXT_RATE_LIMIT_VIEWS_WINDOW=600\n\n# 通用写请求(POST/PATCH/PUT/DELETE)\n# NUXT_RATE_LIMIT_DEFAULT_POST_MAX=20\n# NUXT_RATE_LIMIT_DEFAULT_POST_WINDOW=60\n\n# 通用读请求(GET)\n# NUXT_RATE_LIMIT_DEFAULT_GET_MAX=60\n# NUXT_RATE_LIMIT_DEFAULT_GET_WINDOW=60\n\n# ------------------------------------------\n# 13. 日志、调试与 Demo 模式 (Logging & Debug)\n# ------------------------------------------\n\n# 日志输出等级 (silly, debug, http, info, warn, error)\nLOG_LEVEL=info\n# 是否开启文件日志记录 (默认 false,Serverless 环境必须设为 false)\nLOGFILES=false\n# LOG_DIR=logs\n\n# Axiom 日志集成\n# AXIOM_DATASET_NAME=\n# AXIOM_API_TOKEN=\n\n# 演示模式 (内存 DB 运行,限制写操作)\nNUXT_PUBLIC_DEMO_MODE=false\n# NUXT_PUBLIC_DEMO_USER_EMAIL=admin@example.com\n# NUXT_PUBLIC_DEMO_PASSWORD=momei123456\n\n# MCP HTTP 传输开关(启用后主应用挂载 MCP HTTP 端点 /api/mcp)\n# 非 Serverless 环境(Docker / VPS)可开启;Serverless 环境自动静默降级\n# MOMEI_ENABLE_MCP_HTTP=false\n\n# 安装锁定标志(系统首次运行后会自动生成/读取,通常建议初始化后手动修改为 true 并重启系统)\n# MOMEI_INSTALLED=true\n"}}}} |