# ============================================================================= # 商务对接智能体系统 (Chat-Agent-System) - 环境配置模板 (.env.example) # # 使用说明: # 1. 复制为 .env 并填写密钥:cp .env.example .env && chmod 600 .env # 2. 本文件供 Go 后端、launch.sh 与 env-service.sh 作为公共配置源 # 3. configs/.env.<环境> 只保存端口、数据库等环境差异,且优先级高于本文件 # ============================================================================= # --- 1. 运行环境与基础目录 --- ENV=dev DATA_DIR=./data/dev APP_PUBLISH_HOST=127.0.0.1 HTTP_PORT=8080 # --- 2. 智能体后端调度(Go 宿主进程 / 容器 app 服务)--- # 可选值: pi-agent | cursor-cli | stub AGENT_BACKEND=pi-agent AGENT_TIMEOUT=30m MAX_CONCURRENT_AGENTS=8 # T20-B7 设计预留(尚未接线):优雅停机排水窗口;实施前勿依赖。见 .doc/remediation/2026-09-22-t20-hardening-design.md # SHUTDOWN_DRAIN_TIMEOUT=30m # --- 2b. T20 设计预留键(全部未接线;复制后留空/注释不等于启用)--- # B1 登录限流:仅当 RemoteAddr ∈ CIDR 时才解析 XFF(默认忽略 XFF) # TRUSTED_PROXY_CIDRS= # TRUSTED_PROXY_HOPS=1 # B4 主库池默认 statement_timeout(实施后由池工厂读取) # PG_STATEMENT_TIMEOUT=30s # B11 是否允许 GET /chat/stream(默认应关闭;即使开启也不得传 message query) # CHAT_STREAM_ALLOW_GET=false # --- 3. Cursor CLI / SDK 后端 --- CURSOR_API_KEY= CURSOR_MODEL=auto CURSOR_BIN=/usr/local/bin/cursor CURSOR_BRIDGE_BIN=tools/cursor-bridge/index.mjs # --- 4. Pi-Agent 容器与 MiniMax 模型(pi-agent 容器 entrypoint 读取)--- MINIMAX_ENDPOINT_URL=https://api.minimaxi.com/v1 MINIMAX_API_KEY= MINIMAX_MODEL_ID=MiniMax-M2.7-highspeed MINIMAX_API_TYPE=openai-compatible # --- 5. Tavily 联网搜索(pi-agent 容器内工具;多 Key 逗号分隔)--- TAVILY_API_KEYS= # --- 6. Pi-Agent Runner 远程调用(Go 宿主连容器时使用)--- PI_AGENT_RUNNER_PORT=18865 # 宿主 bin/server 直连本机 pi-agent(容器或 sidecar)时启用 # PI_AGENT_RUNNER_URL=http://127.0.0.1:18865 # Runner 服务间认证(main 必填;dev 可留空) RUNNER_AUTH_TOKEN= # --- 6b. 非容器化 localpg(brew postgresql@18;dev --no-docker 默认 managed)--- # LOCALPG_MODE=off|managed|attach # LOCALPG_MODE=managed # LOCALPG_BIN=/home/linuxbrew/.linuxbrew/opt/postgresql@18/bin # --- 7. 本机 Pi CLI 回退(不使用容器 runner 时)--- PI_AGENT_BIN=/opt/homebrew/bin/pi PI_AGENT_BRIDGE_BIN=tools/pi-bridge/index.mjs PI_AGENT_PROVIDER=minimax PI_AGENT_MODEL=MiniMax-M2.7-highspeed # --- 8. 共享法规知识库(宿主 Go 进程:127.0.0.1:5432;容器 app:compose 注入 shuimu-kb-shared)--- KB_DB_HOST=127.0.0.1 KB_DB_PORT=5432 KB_DB_USER=regkb KB_DB_PASSWORD= KB_DB_NAME=regulations # --- 9. 向量 Embedding / Reranker(Go 宿主与容器 app 的 KB 检索)--- EMBEDDING_ENDPOINT_URL=https://www.dmxapi.cn/v1/embeddings EMBEDDING_MODEL=bge-m3 EMBEDDING_API_KEY= RERANKER_ENDPOINT_URL=https://www.dmxapi.cn/v1/rerank RERANKER_MODEL=bge-reranker-v2-m3-free RERANKER_API_KEY= # --- 9b. MinerU 文档解析(上传 PDF/Office 异步解析;未配置 KEY 时降级本地提取)--- MINERU_ENDPOINT_URL=https://mineru.net MINERU_API_KEY= MINERU_MODEL_VERSION=vlm MINERU_LANGUAGE=ch MINERU_TIMEOUT=90s MATERIAL_FULLTEXT_MAX_BYTES=61440 MATERIAL_RAG_TOP_K=8 # --- 10. 专属业务/上下文库(Go 宿主:CONTEXT_DB_*;compose 同时认 SYSTEM_DB_* 别名)--- CONTEXT_DB_HOST=127.0.0.1 CONTEXT_DB_PORT=5433 CONTEXT_DB_USER=app CONTEXT_DB_PASSWORD=dev_secret_db_pass CONTEXT_DB_NAME=agent_system_dev # docker-compose.dev.yml 变量别名(与 CONTEXT_DB_* 保持一致) SYSTEM_DB_USER=app SYSTEM_DB_PASSWORD=dev_secret_db_pass SYSTEM_DB_NAME=agent_system_dev SYSTEM_DB_PUBLISH_PORT=5433 # --- 11. 系统管理员与认证准入 --- ADMIN_USERNAME=admin ADMIN_PASSWORD=admin-secret-password-123 AUTH_REGISTRATION_ENABLED=true AUTH_REQUIRE_APPROVAL=false # --- 12. 安全、缓存与意图路由开关 --- # 留空时 dev/test 由代码补 localhost;生产留空代表不允许跨 Origin CORS_ALLOWED_ORIGINS= # 生产强制 false;main compose 不接受覆盖 ALLOW_IN_MEMORY=false CACHE_ENABLED=true INTENT_V2_SHADOW=false INTENT_V2_DECISION=false INTENT_V2_DECISION_TIER=none # jev-service typed decide (product shadow/assist; default off) # local_dev: set JEV_DECIDE_MODE=shadow|assist in configs/.env.dev (gitignored) + recreate/rebuild app. # assist = rule || high-conf jev yes (additive recall only). From Docker → host: http://172.17.0.1:8767. JEV_DECIDE_MODE=off JEV_BASE_URL=http://127.0.0.1:8767 JEV_API_KEY= WORKFLOW_INTENTS_ENABLED=true MULTI_INTENT_ENABLED=true # MULTI_INTENT_PLAN_TIER defaults to legacy; do not raise for U9–U12 scaffolding. # MULTI_INTENT_PLAN_TIER=legacy MULTI_INTENT_U9_SEGMENT=false MULTI_INTENT_U10_MUTATE=false MULTI_INTENT_U11_DOCGOV=false MULTI_INTENT_U12_RUN_CONTROL=false # 工作流作用域:strict 命中他流即拦截;weighted 按关系权重打分,验收通过后再开。 WORKFLOW_SCOPE_MODE=strict # W2: shadow only. Do not set SEMANTIC_SUMMARY_REPLACE=true; REPLACE is unwired. SEMANTIC_SUMMARY_SHADOW=false SEMANTIC_SUMMARY_REPLACE=false # W3: optional PI change-report narrative; default off. PI_CHANGE_REPORT_NARRATIVE=false