229805a070
Add WeChat service account routing with sync acks, connectivity tests, and context isolation; document deploy runbooks; and bundle related MindSpace, voice, Plaza, and server gateway changes for production rollout. Co-authored-by: Cursor <cursoragent@cursor.com>
152 lines
6.9 KiB
Bash
152 lines
6.9 KiB
Bash
# TKMind H5 环境变量(复制为 .env 后按需修改)
|
||
#
|
||
# 本地开发(127.0.0.1 + 端口,见 docs/local-dev.md)
|
||
# pnpm dev
|
||
# MindSpace: http://127.0.0.1:5173/?preview=mindspace
|
||
#
|
||
# 后端代理(server.mjs / vite dev proxy 共用)
|
||
TKMIND_API_TARGET=https://127.0.0.1:18006
|
||
TKMIND_SERVER__SECRET_KEY=local-dev-secret
|
||
H5_PORT=8081
|
||
H5_PUBLIC_BASE_URL=http://127.0.0.1:5173
|
||
|
||
# ===== memind_adm(独立后台服务)=====
|
||
# 平台超管 /admin-api/* 与广场运营 /api/ops/v1/* 已从公网服务拆出,独立进程运行。
|
||
# 登录仍在主域完成;后台凭 H5_COOKIE_DOMAIN=.tkmind.cn 共享的会话 Cookie 鉴权(生产务必设置)。
|
||
ADMIN_PORT=8082
|
||
ADMIN_HOST=127.0.0.1
|
||
ADMIN_PUBLIC_HOST=gadm.tkmind.cn
|
||
|
||
# 本进程挂载哪些控制台(可拆分架构):admin=平台超管, ops=广场运营。
|
||
# 默认两者合一;将来拆成两个进程时,A 实例设 admin、B 实例设 ops,路由代码无需改动。
|
||
# ADMIN_CONSOLES=admin,ops
|
||
|
||
# 每控制台独立网络护栏(逗号分隔;留空=放开。支持精确 IP 与 CIDR)。
|
||
# 超管面建议收得最紧(仅内网/VPN),广场运营可放宽给审核团队网段。
|
||
# ADMIN_API_ALLOWED_HOSTS=gadm.tkmind.cn
|
||
# ADMIN_API_IP_ALLOWLIST=10.0.0.0/8,127.0.0.1
|
||
# OPS_API_ALLOWED_HOSTS=gadm.tkmind.cn
|
||
# OPS_API_IP_ALLOWLIST=
|
||
|
||
# 多用户系统(MySQL 配置后启用;未配置时回退到 H5_ACCESS_PASSWORD)
|
||
DATABASE_URL=mysql://boot:password@localhost:3306/tkmind
|
||
# 或分别设置 MYSQL_HOST / MYSQL_PORT / MYSQL_USER / MYSQL_PASSWORD / MYSQL_DATABASE
|
||
H5_USERS_ROOT=/root/tkmind_go/users
|
||
# 新用户赠送余额(人民币分,500 = ¥5.00;勿与美元 cents 混淆)
|
||
H5_SIGNUP_BALANCE_CENTS=500
|
||
H5_ADMIN_USERNAME=admin
|
||
H5_ADMIN_PASSWORD=change-me-admin
|
||
# 管理员工作区(默认 users 目录的父目录;对接 goose 全权限时建议设为项目根)
|
||
# H5_ADMIN_WORKSPACE_ROOT=/Users/john/PycharmProjects/tkmind
|
||
# LLM Key 数据库加密(可选;默认派生自 TKMIND_SERVER__SECRET_KEY)
|
||
# H5_SETTINGS_ENCRYPTION_KEY=change-me-encryption-key
|
||
# 启动时自动导入 Relay(若不存在同名配置)
|
||
# H5_RELAY_BOOTSTRAP_NAME=Local Goose Relay DeepSeek
|
||
# H5_RELAY_BOOTSTRAP_URL=http://127.0.0.1:18300/relay/buyer/v1/chat/completions
|
||
# H5_RELAY_BOOTSTRAP_API_KEY=your-bearer-token
|
||
# H5_RELAY_BOOTSTRAP_MODEL=deepseek-chat
|
||
# H5_RELAY_BOOTSTRAP_MODELS=deepseek-chat,deepseek-reasoner
|
||
# H5_RELAY_BOOTSTRAP_PROVIDER=deepseek
|
||
# 一键对齐本地 goosed + Goose Desktop relay:node scripts/fix-local-goose-relay.mjs
|
||
|
||
# 本地 Ollama fallback:DeepSeek 额度不足,或 andu Relay 500(agent 请求体含 tools 超过 ~8.5KB)时自动切换
|
||
# Local Ollama fallback — creditsExhausted or relay 500 (nginx body limit with tool payloads).
|
||
# H5_LOCAL_LLM_FALLBACK=0
|
||
# H5_LOCAL_LLM_URL=http://127.0.0.1:11434/v1/chat/completions
|
||
# H5_LOCAL_LLM_MODEL=qwen2.5:3b
|
||
# H5_LOCAL_LLM_API_KEY=ollama
|
||
# H5_LOCAL_LLM_NAME=Local Ollama 7B
|
||
H5_ACCESS_PASSWORD=change-me
|
||
|
||
# 计费(Phase 2,金额单位均为人民币分)
|
||
# 默认按 Token 单价扣费(人民币结算);勿开启美元成本换算除非明确需要
|
||
# H5_USE_BACKEND_COST=0
|
||
# H5_BILL_INPUT_CENTS_PER_1K=2 # 输入 Token:2 分/1k(¥0.02/1k)
|
||
# H5_BILL_OUTPUT_CENTS_PER_1K=6 # 输出 Token:6 分/1k(¥0.06/1k)
|
||
# H5_MIN_BILL_CENTS=1
|
||
# 仅调试:H5_USE_BACKEND_COST=1 + H5_USD_CNY_RATE=7.2(上游 USD × 汇率 → 人民币分)
|
||
|
||
# 用户自助充值(微信支付)
|
||
# H5_RECHARGE_TIERS_CENTS=500,1000,3000,5000,10000,20000
|
||
# H5_MIN_RECHARGE_CENTS=500
|
||
# H5_RECHARGE_ORDER_TTL_MS=900000
|
||
# H5_RECHARGE_MAX_PENDING=3
|
||
# H5_RECHARGE_DAILY_LIMIT_CENTS=200000
|
||
# H5_WECHAT_PAY_ENABLED=1
|
||
# H5_WECHAT_APP_ID=wx...
|
||
# H5_WECHAT_MCH_ID=1...
|
||
# API 版本:v2(商户 API 密钥)或 v3(证书);不填则按已配置凭据自动选择
|
||
# H5_WECHAT_API_VERSION=v2
|
||
#
|
||
# --- API v2(商户平台「账户中心 → API安全 → 设置APIv2密钥」)---
|
||
# H5_WECHAT_API_V2_KEY=32位APIv2密钥
|
||
# 或简写:
|
||
# H5_WECHAT_API_KEY=32位APIv2密钥
|
||
#
|
||
# --- API v3(需商户证书 + 平台证书)---
|
||
# H5_WECHAT_API_V3_KEY=32位APIv3密钥
|
||
# H5_WECHAT_SERIAL_NO=商户API证书序列号
|
||
# H5_WECHAT_PRIVATE_KEY_PATH=/path/to/apiclient_key.pem
|
||
# 或直接内联 PEM(\n 转义):
|
||
# H5_WECHAT_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----"
|
||
# H5_WECHAT_PLATFORM_CERT_PATH=/path/to/wechatpay_platform.pem
|
||
# H5_WECHAT_PLATFORM_CERT="-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----"
|
||
#
|
||
# H5_WECHAT_NOTIFY_URL=https://goo.tkmind.cn/webhooks/wechat-pay/notify
|
||
# 微信内 JSAPI 支付(服务号网页):
|
||
# - 服务号「设置 → 功能设置 → JS接口安全域名」:g2.tkmind.cn
|
||
# - 商户平台「产品中心 → 开发配置 → 支付授权目录」:https://g2.tkmind.cn/
|
||
# - 用户须先用同一服务号微信 OAuth 登录(获取 openid)后再充值
|
||
# 本地调试验签可临时开启(生产务必关闭):
|
||
# H5_WECHAT_SKIP_NOTIFY_VERIFY=0
|
||
|
||
# 微信服务号 OAuth 登录(网页授权;与支付可共用 H5_WECHAT_APP_ID)
|
||
# 服务号后台需配置「网页授权回调域名」为 H5_PUBLIC_BASE_URL 的域名
|
||
# H5_WECHAT_OAUTH_ENABLED=1
|
||
# H5_WECHAT_APP_SECRET=服务号AppSecret
|
||
# H5_WECHAT_OAUTH_SCOPE=snsapi_userinfo
|
||
# 默认回调:{H5_PUBLIC_BASE_URL}/auth/wechat/callback
|
||
# H5_WECHAT_OAUTH_CALLBACK_URL=https://goo.tkmind.cn/auth/wechat/callback
|
||
# PC 扫码登录(微信开放平台网站应用,可选;未配置时用手机扫页面链接二维码)
|
||
# H5_WECHAT_OPEN_APP_ID=
|
||
# H5_WECHAT_OPEN_APP_SECRET=
|
||
|
||
# 本地开发:pnpm dev 会自动启动 server.mjs + vite
|
||
# 若只跑前端:pnpm dev:vite(需另开 pnpm dev:server)
|
||
# H5_DEV_PORTAL=http://127.0.0.1:8081
|
||
|
||
# 语音输入(按住说话 → ASR 识别)
|
||
# H5_ASR_TARGET=https://asr.tkmind.cn
|
||
# H5_ASR_MAX_BYTES=5242880
|
||
# H5_ASR_TIMEOUT_MS=45000
|
||
|
||
# 前端构建时注入(Vite,需 VITE_ 前缀)
|
||
# 工作目录:新建会话时使用,必填
|
||
VITE_TKMIND_WORKING_DIR=/Users/john/PycharmProjects/tkmind
|
||
|
||
# 可选:覆盖默认 provider / model(未设置则从服务端 config 读取)
|
||
# VITE_TKMIND_PROVIDER=openai
|
||
# VITE_TKMIND_MODEL=gpt-4o
|
||
|
||
# 可选:harness recall 的默认查询
|
||
# VITE_TKMIND_MEMORY_QUERY=project architecture conventions current goals decisions risks and recent work
|
||
|
||
# 历史列表每次展示/加载条数(默认 25,与 desktop 一致)
|
||
# VITE_SESSION_PAGE_SIZE=25
|
||
|
||
# Plaza 发现广场(本机为主,105 已停用)
|
||
# PLAZA_AUTO_APPROVE=true
|
||
# VITE_PLAZA_BASE=http://127.0.0.1:3001
|
||
# 文档:docs/plaza-local.md | 本地:http://127.0.0.1:3001/plaza
|
||
|
||
# MindSpace(默认启用;子功能需按需开启)
|
||
# MINDSPACE_ENABLED=false
|
||
# MINDSPACE_UPLOAD_ENABLED=false
|
||
# MINDSPACE_PUBLISH_ENABLED=true
|
||
# MINDSPACE_PRIVATE_ENABLED=false
|
||
# Agent 后台任务(创建/执行空间内 Agent 任务,默认关闭)
|
||
# MINDSPACE_AGENT_JOBS_ENABLED=true
|
||
# MINDSPACE_INTERNAL_AGENT_SECRET=local-dev-secret
|
||
# MINDSPACE_FREE_PUBLIC_PAGE_LIMIT=10
|
||
# MINDSPACE_STORAGE_ROOT=/path/to/mindspace-storage
|