Files
Agent-System/.env.example
T
weichen b812d1d30f feat(dev): single-binary no-docker runtime with managed localpg
Embed web/dist, run events in-process, manage brew PG18+pgvector, add PI host sidecar and launch --no-docker; unify MiniMax-M2.7-highspeed pins and record dev acceptance.
2026-09-24 15:53:50 +00:00

141 lines
5.3 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.
# =============================================================================
# 商务对接智能体系统 (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