Record 20-turn live chat evidence: 10/10 decision-layer additive on rule misses, 0 false assists on business prompts.
136 lines
5.1 KiB
Bash
136 lines
5.1 KiB
Bash
# =============================================================================
|
||
# 商务对接智能体系统 (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 容器时启用;容器内 app 服务由 compose 注入 http://pi-agent:18865
|
||
# PI_AGENT_RUNNER_URL=http://127.0.0.1:18865
|
||
# Runner 服务间认证(main 必填;dev 可留空)
|
||
RUNNER_AUTH_TOKEN=
|
||
|
||
# --- 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
|