Files
memind/.env.example
T
john 8ccf2db05c
Memind CI / Test, build, and release guards (push) Failing after 3m18s
feat(page-data): add validation suggestions, repair path, and thinking fixes
Map Page Data failure codes to Chinese remediation hints, trigger one-shot
goosed repair for remediable cases, and recover poisoned thinking sessions.
Route local DeepSeek through the no-think proxy via host.docker.internal so
tool rounds no longer hit reasoning_content 400; document gate and case-study
scenarios for event registration repair.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-25 23:01:55 +08:00

374 lines
19 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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
# Vite UI 预览用 5173Agent 交付的 MindSpace 公开页 + Page Data API 走 Portal8081)。
# pnpm dev / dev-core 在未显式覆盖时会把 H5_PUBLIC_BASE_URL 设为 8081。
H5_PUBLIC_BASE_URL=http://127.0.0.1:5173
# Local Umami analytics (disabled by default; points only to the local
# memind-analytics service when enabled).
# MEMIND_ANALYTICS_ENABLED=true
# MEMIND_ANALYTICS_URL=http://127.0.0.1:3100
# MEMIND_ANALYTICS_WEBSITE_ID=<local Umami Website ID>
# MEMIND_ANALYTICS_ID_SECRET=<local-only pseudonymization secret>
# MEMIND_ANALYTICS_IDENTITY_MODE=pseudonymous # use raw only in an approved first-party analytics environment
# MEMIND_ANALYTICS_DOMAINS=127.0.0.1,localhost
# Memind 产品壳层使用独立 Website,避免与用户生成页面的浏览口径混在一起
# MEMIND_PRODUCT_ANALYTICS_ENABLED=true
# MEMIND_PRODUCT_ANALYTICS_WEBSITE_ID=<local Umami product Website ID>
# Local Rybbit analytics (same-origin /rybbit proxy to rybbit.tkmind.cn).
# Create a Rybbit Site for localhost / 127.0.0.1, then set its numeric site_id.
# MEMIND_RYBBIT_ENABLED=true
# MEMIND_RYBBIT_URL=https://rybbit.tkmind.cn
# MEMIND_RYBBIT_SITE_ID=<numeric site id>
# MEMIND_RYBBIT_ID_SECRET=<local-only pseudonymization secret>
# 生产 H5 public base 当前临时切到 https://mm.tkmind.cn。
# 后续公网 H5 不再依赖 105 转发链路;m.tkmind.cn 仅作为 legacy/rollback 记录处理。
# H5_PUBLIC_BASE_URL=https://mm.tkmind.cn
# VITE_MINDSPACE_BASE=https://mm.tkmind.cn
# Memind 2.0 runtime control plane(生产启用 Redis;本地开发可留空回退到健康轮询)
# MEMIND_RUNTIME_REDIS_URL=redis://127.0.0.1:6379/0
# MEMIND_RUNTIME_REDIS_NAMESPACE=memind:runtime
# Code-tool agent run 灰度开关(默认关闭)。
# 后端必须先开启 MEMIND_AGENT_CODE_RUNS_ENABLEDH5 构建开关才会生效。
# 开启后,页面编辑子聊天会传 tool_mode=code;普通聊天仍需同时开启 AUTODETECT 才会按文本自动识别代码任务。
# Phase 1.5memindadm 运行时策略优先于 VITE_;设为 env 可强制只读 env(紧急 override)。
# MEMIND_CODE_RUN_POLICY_SOURCE=env
# MEMIND_AGENT_CODE_RUNS_ENABLED=0
# VITE_AGENT_CODE_RUNS_ENABLED=0
# VITE_AGENT_CODE_RUNS_AUTODETECT=0
# VITE_AGENT_PAGE_DATA_DEV_AUTODETECT=0
# Tool Gateway Queue v0/agent/runs 后台任务队列,默认保守限流)。
# MEMIND_AGENT_RUN_QUEUE_CONCURRENCY=1
# MEMIND_AGENT_RUN_TIMEOUT_MS=900000
# P6.1 外部 Tool Worker 接管入口。默认 Portal 内部 auto-dispatch 保持开启;
# 只有外部 worker 验证就绪后,才把 Portal 设为 0 并独立运行 scripts/agent-run-worker.mjs。
# MEMIND_AGENT_RUN_AUTODISPATCH=1
# MEMIND_AGENT_RUN_WORKER_POLL_MS=1000
# MEMIND_AGENT_RUN_WORKER_BATCH_SIZE=1
# MEMIND_AGENT_RUN_HEARTBEAT_MS=30000
# MEMIND_AGENT_RUN_HEARTBEAT_STALE_MS=90000
# MEMIND_AGENT_RUN_RECOVERY_INTERVAL_MS=30000
# MEMIND_RUNTIME_BUILD_ID=<release-or-build-id>
# MEMIND_AGENT_RUN_WORKER_ID=<optional-instance-id>
# MEMIND_AGENT_RUN_WORKER_EXPECT_RUNNING=0
# LangGraph Orchestrator Shadow(默认完全不接入 Agent Run 请求路径)。
# 仅在独立 Orchestrator 已健康、service token 已配置后,先显式打开观察 wiring,
# 再通过 memindadm 选择 shadow。关闭 wiring 时不查询编排配置、不排队、不传用户数据。
# MEMIND_ORCHESTRATOR_SHADOW_OBSERVATION_ENABLED=0
# MEMIND_ORCHESTRATOR_URL=http://127.0.0.1:8093
# MEMIND_ORCHESTRATOR_SERVICE_TOKEN=<local-or-deployment-service-token>
# MEMIND_ORCHESTRATOR_SHADOW_MAX_CONCURRENCY=2
# MEMIND_ORCHESTRATOR_SHADOW_MAX_QUEUE=100
# 非 loopback URL 必须精确列入;逗号分隔,只接受 origin。
# MEMIND_ORCHESTRATOR_ALLOWED_ORIGINS=https://orchestrator.internal
# 真实执行交接是另一道独立闸门,默认保持关闭。
# MEMIND_ORCHESTRATOR_EXECUTION_HANDOFF_ENABLED=0
# MEMIND_ORCHESTRATOR_KILL_SWITCH=0
# Page Data 审查强制闸门(fail-closed)。默认关闭=仅观察/写建议,不改变 Native 成功语义。
# 生效前提:memindadm mode=shadow 且 MEMIND_ORCHESTRATOR_SHADOW_OBSERVATION_ENABLED=1。
# 本地/开发:保持 0。灰度强制审查再设 1。生产启用需 Ops 明确批准。
# 失败 UX:H5 会看到 codes 对应的中文纠正建议(page-data-validation-suggestions.mjs)。
# MEMIND_ORCHESTRATOR_PAGE_DATA_VALIDATION_GATE_ENABLED=0
# 可修复 codes 失败时,把纠正建议再发一轮给 goosed(每 run 最多 1 次;默认开启)。
# MEMIND_PAGE_DATA_SUGGESTION_REPAIR_ENABLED=1
# Orchestrator 终态数据保留清理默认关闭;在独立服务环境配置,建议真实 Canary 前明确周期。
# MEMIND_ORCHESTRATOR_RETENTION_DAYS=0
# MEMIND_ORCHESTRATOR_RETENTION_SWEEP_INTERVAL_MS=86400000
# MEMIND_ORCHESTRATOR_RETENTION_SWEEP_LIMIT=100
# Runtime SLO 日报(默认每日 23:55 写 reports/runtime-slo)。
# MEMIND_RUNTIME_REPORT_DIR=/Users/john/Project/Memind/reports/runtime-slo
# MEMIND_RUNTIME_SLO_HOUR=23
# MEMIND_RUNTIME_SLO_MINUTE=55
# H5 Session Brokerdocs/h5-session-architecture-20260706.md Patch 1+
# 本地开发:Patch 2 接入后可设 1 验证 broker 路径;默认 0 保持 userAuth 直调。
# 103 生产:仅在灰度窗口于服务器 /Users/john/Project/Memind/.env 设置,勿把生产值写入 Git。
# MEMIND_SESSION_BROKER_ENABLED=0
# --- 本地全量联调示例(复制到 .env,勿提交 Git)---
# MEMIND_SESSION_BROKER_ENABLED=1
# MEMIND_ROUTER_NORMALIZED_DECISION=1
# MEMIND_SSE_EVENT_TAXONOMY=1
# MEMIND_RUN_STREAM_REPLAY=1
# MEMIND_SESSION_STREAM_REPLAY=1
# MEMIND_SESSION_BROKER_METRICS=1
# MEMIND_H5_HTML_FINISH_GUARD=1
# 启动后 Portal 日志应出现:[Portal] H5 session flags: ...
# 103 生产 goosed 多实例示例(仅服务器 .env,见 docs/103-runtime-topology.md):
# TKMIND_API_TARGET=https://127.0.0.1:18006
# TKMIND_API_TARGET_1=https://127.0.0.1:18007
# H5 Router normalized decisiondocs/h5-session-architecture-20260706.md Patch 3
# 默认 0/offgateway 仍读 legacy route
# shadow:只打 [router-shadow] 日志,行为不变
# 1/ongateway 优先读 classification.decision.route / session_hint
# MEMIND_ROUTER_NORMALIZED_DECISION=0
# H5 Session stream replaydocs/h5-session-architecture-20260706.md Patch 4c
# 默认 0session SSE 仍纯透传 goosed;设 1 时 Portal 持久化 session 事件并支持 Last-Event-ID 重连补发。
# MEMIND_SESSION_STREAM_REPLAY=0
# H5 Session Broker metricsdocs/h5-session-architecture-20260706.md §13.4
# 默认 0:不打 structured log;设 1 时输出 [session_broker.*] 行
# MEMIND_SESSION_BROKER_METRICS=0
# H5 SSE event taxonomydocs/h5-session-architecture-20260706.md Patch 4
# 默认 0:不改变 SSE wire format;设 1 时在 session/run SSE payload 附加 taxonomy 字段(shadow)。
# MEMIND_SSE_EVENT_TAXONOMY=0
# H5 goosed proxy boundarydocs/h5-session-architecture-20260706.md Patch 5
# CI/发版前跑:npm run verify:goosed-proxy-boundary
# 新增 goosed 调用须走 tkmind-proxyMindSpace 例外见 goosed-proxy-boundary.mjs allowlist
# H5 public HTML 假交付 guarddocs/pending-fixes/h5-public-html-fake-delivery-guard-20260706.md
# 默认 0:仅 warn;设 1 时 Finish 后检测缺失 public/*.html / assets/* 并自动 session repair(每 session 1 次)
# MEMIND_H5_HTML_FINISH_GUARD=0
# H5 run SSE replayPatch 4b,仅本地/测试分支;默认关,未合并 main / 未上 103)
# 设 1 时 GET /agent/runs/:id/events 使用 h5_agent_run_events + Last-Event-ID 重连回放
# MEMIND_RUN_STREAM_REPLAY=0
# ===== 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 relaynode scripts/fix-local-goose-relay.mjs
# 本地 Ollama fallbackDeepSeek 额度不足,或 andu Relay 500agent 请求体含 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
# Portal API 访问策略第一阶段仅支持 off / shadow;shadow 只记录差异,不改变放行结果。
# MEMIND_PORTAL_ACCESS_POLICY_MODE=shadow
# 同一访问策略差异在窗口内只记录一次,后续日志携带累计与抑制次数。
# MEMIND_PORTAL_ACCESS_SHADOW_LOG_INTERVAL_MS=60000
# Phase C 灰度执行必须同时开启总开关并精确列出策略组;默认全部关闭,不支持 all。
# 可选组:legacy-page-data,page-data-public,plaza-optional-user
# MEMIND_PORTAL_ACCESS_POLICY_ENFORCEMENT_ENABLED=0
# MEMIND_PORTAL_ACCESS_POLICY_ENFORCE_GROUPS=
# 紧急熔断优先级最高;设为 1 后所有策略组立即回到旧鉴权路径(重启 Portal 生效)。
# MEMIND_PORTAL_ACCESS_POLICY_KILL_SWITCH=0
# 计费(Phase 2,金额单位均为人民币分)
# 默认按 Token 单价扣费;生产推荐开启成本模式(见 docs/h5-metering-gateway.md
# H5_USE_BACKEND_COST=0
# H5_BILL_INPUT_CENTS_PER_1K=2 # 输入 Token2 分/1k(¥0.02/1k
# H5_BILL_OUTPUT_CENTS_PER_1K=6 # 输出 Token6 分/1k(¥0.06/1k
# H5_MIN_BILL_CENTS=1
# 成本模式:上游 accumulated_cost(USD) × 汇率 × 毛利
# H5_USE_BACKEND_COST=1
# H5_USD_CNY_RATE=7.2
# H5_MARGIN_MULTIPLIER=1.2
# 当 goose Finish 未带 accumulatedCost 时,按 token 估算上游 USD 成本(默认开启,设 0 关闭)
# H5_COST_ESTIMATE_FROM_TOKENS=1
# H5_COST_ESTIMATE_INPUT_USD_PER_1M=0.27
# H5_COST_ESTIMATE_OUTPUT_USD_PER_1M=1.1
# 用户自助充值(微信支付)
# 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接口安全域名」:mm.tkmind.cn
# - 商户平台「产品中心 → 开发配置 → 支付授权目录」:https://mm.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=
# 微信小程序原生登录(wx.login → /auth/wechat-miniapp/login
# H5_WECHAT_MINIAPP_APP_ID=wx...
# H5_WECHAT_MINIAPP_APP_SECRET=小程序AppSecret
# 本地开发: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 发现广场(独立域名 plaza.tkmind.cnPortal 前端链接见 VITE_PLAZA_BASE
# PLAZA_PUBLIC_BASE=https://plaza.tkmind.cn
# 本地 dev 脚本会自动注入 VITE_PLAZA_BASE=http://127.0.0.1:3001;勿把该值留进生产构建用的 .env
# VITE_PLAZA_BASE=http://127.0.0.1:3001
# 文档:docs/plaza-local.md | 本地:http://127.0.0.1:3001/plaza | 生产:https://plaza.tkmind.cn/plaza
# MindSpace(默认启用;子功能需按需开启)
# MINDSPACE_ENABLED=false
# MINDSPACE_UPLOAD_ENABLED=false
# MINDSPACE_PUBLISH_ENABLED=true
# MINDSPACE_PRIVATE_ENABLED=false
# MINDSPACE_MAX_FILE_BYTES=5242880
# Agent 后台任务(创建/执行空间内 Agent 任务,默认关闭)
# MINDSPACE_AGENT_JOBS_ENABLED=true
# MINDSPACE_INTERNAL_AGENT_SECRET=local-dev-secret
# MINDSPACE_FREE_PUBLIC_PAGE_LIMIT=10
# image_make 独立生图服务。只有 URL、Token 与 memind_adm 资产能力开关同时配置后才会调用。
# IMAGE_MAKE_BASE_URL=http://127.0.0.1:8080
# IMAGE_MAKE_TOKEN=dev-token
# IMAGE_MAKE_REQUEST_TIMEOUT_MS=15000
# IMAGE_MAKE_GENERATION_TIMEOUT_MS=600000
# IMAGE_MAKE_POLL_INTERVAL_MS=1000
# IMAGE_MAKE_MAX_RESULT_BYTES=20971520
# Optional local/provider-specific raster size overrides. Defaults remain defined by image_make presets.
# IMAGE_MAKE_HERO_WIDTH=768
# IMAGE_MAKE_HERO_HEIGHT=432
# IMAGE_MAKE_SEMANTIC_REVIEW_ENABLED=1
# IMAGE_MAKE_SEMANTIC_REVIEW_MIN_SCORE=70
# IMAGE_MAKE_SEMANTIC_REVIEW_MAX_ATTEMPTS=3
# H5_WECHAT_MP_FRESH_PAGE_THUMBNAILS=1
# H5_WECHAT_MP_FRESH_THUMBNAIL_REPAIR=0
# Sandbox MCP 调用 Portal 内部生图入口;容器内通常使用 host.docker.internal。
# MINDSPACE_AGENT_API_BASE_URL=http://127.0.0.1:8081/api
# ---------------------------------------------------------------------------
# MindSearch / standalone Deep Search
# ---------------------------------------------------------------------------
# Production SearXNG on 103 is bound to the host at 127.0.0.1:20080.
# Goosed MCP endpoints are automatically rewritten to host.docker.internal.
# TKMIND_SEARCH_SEARXNG_URL=http://127.0.0.1:20080/search
# TKMIND_SEARCH_MCP_HOST_GATEWAY=host.docker.internal
#
# Deep Search runs as an independently released LaunchAgent on 127.0.0.1:20100.
# Its production environment is stored separately at:
# /Users/john/Project/deep-search-runtime/shared/.env
# TKMIND_DEEP_SEARCH_SECRET=
# TKMIND_SEARCH_GITHUB_GATEWAY_URL=http://127.0.0.1:20100
# TKMIND_SEARCH_GITHUB_GATEWAY_SECRET=${TKMIND_DEEP_SEARCH_SECRET}
#
# GITHUB_TOKEN must only be set in the standalone Deep Search environment.
# Do not pass it to goosed MCP extension envs or commit it to Git.
# ---------------------------------------------------------------------------
# Memind runtime profile(本地 vs 生产 必须区分)
# 由 scripts/memind-runtime-profile.mjs 在 pnpm dev / server.mjs 启动时应用。
#
# | profile | 场景 | MindSpace 数据路径 |
# |----------------|-------------------|--------------------|
# | local | 本机日常开发 | <repo>/data/mindspace |
# | split-service | 本机验证 103 拆分 | /Users/john/MindSpace/data/mindspace |
# | production | 103 生产服务器 | 103 .env 为准,勿提交 Git |
# ---------------------------------------------------------------------------
# 【本地开发 — 复制到 .env 的默认值】
MEMIND_RUNTIME_PROFILE=local
# Portal 代码目录与持久化数据目录分离(例如从 git worktree 启动)时显式设置。
# MindSpace/<userId>、users/ 与默认 data/mindspace 都以此目录为根;
# 前端 dist/public 等代码静态资源仍从当前 runtime 目录读取。
# MEMIND_PORTAL_H5_ROOT=/Users/john/Project/Memind
# MINDSPACE_STORAGE_ROOT 留空即可,自动使用 <repo>/data/mindspace
# 【本机 split-service 联调 — 需要独立 MindSpace LaunchAgent 已启动】
# MEMIND_RUNTIME_PROFILE=split-service
# MINDSPACE_REMOTE_BASE_URL=http://127.0.0.1:8082
# MINDSPACE_REMOTE_AUTH_TOKEN=local-dev-secret
# MINDSPACE_STORAGE_ROOT=/Users/john/MindSpace/data/mindspace
# 【103 生产 — 仅在服务器维护,示例勿照抄密钥】
# MEMIND_RUNTIME_PROFILE=production
# MINDSPACE_SERVER_ADAPTER=remote
# MINDSPACE_REMOTE_BASE_URL=http://127.0.0.1:8082
# MINDSPACE_REMOTE_AUTH_TOKEN=<与 cn.tkmind.mindspace-service 一致>
# MINDSPACE_STORAGE_ROOT=/Users/john/MindSpace/data/mindspace