.env.example 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. # deep_agent 2.0 环境变量样例
  2. # 复制为 .env 后按需修改。所有变量均有代码内默认值(默认值 = 可跑的最小配置)。
  3. # ============================================================
  4. # 配置优先级
  5. # ============================================================
  6. # 本 .env 与「进程环境变量」冲突时谁生效:
  7. # dotenv (默认)本文件优先,防被污染的 shell 静默改掉项目配置
  8. # process 进程环境优先,用于跑变体实例(不同端口/库/方言):
  9. # DEEP_AGENT_ENV_PRIORITY=process DB_DIALECT=mysql PORT=8081 python main.py
  10. # none 完全忽略本文件,只认进程环境与代码默认值(测试/CI)
  11. # 无论哪一档,冲突都会打 WARNING 并出现在 /health 的 config_conflicts
  12. DEEP_AGENT_ENV_PRIORITY=dotenv
  13. # ============================================================
  14. # 模型(主 agent)
  15. # ============================================================
  16. # provider:model 形式;deepseek* 前缀会走 langchain-deepseek(若已安装),否则走 ChatOpenAI
  17. DEEPAGENT_MODEL=deepseek-flash
  18. OPENAI_BASE_URL=https://api.deepseek.com
  19. OPENAI_API_KEY=sk-your-key-here
  20. OPENAI_TIMEOUT=180
  21. # 思考级别:off / high / highest(烧进模型实例,重启生效)
  22. DEEPAGENT_THINKING=off
  23. # ============================================================
  24. # 服务
  25. # ============================================================
  26. HOST=0.0.0.0
  27. PORT=8080
  28. # INFO:启动、任务及请求汇总;DEBUG:含并发位、健康检查等细节
  29. LOG_LEVEL=INFO
  30. # text:本地阅读;json:每行一条结构化日志,适合采集
  31. LOG_FORMAT=text
  32. # ============================================================
  33. # SQLite(会话历史 / 业务任务 / 计费 / 调度)
  34. # ============================================================
  35. DB_DIALECT=sqlite
  36. DB_SQLITE_PATH=data/vent_agent.sqlite
  37. # 旧 MySQL 部署可显式设 DB_DIALECT=mysql,以下配置在 SQLite 模式下不使用。
  38. DB_HOST=127.0.0.1
  39. DB_PORT=3306
  40. DB_USER=root
  41. DB_PASSWORD=
  42. DB_NAME=vent_agent_v2
  43. DB_PING_IDLE_SECONDS=60
  44. # ============================================================
  45. # 图状态(checkpoint)
  46. # ============================================================
  47. # sqlite:图状态与中断上下文落盘(默认);memory:纯内存,重启即丢
  48. CHECKPOINTER=sqlite
  49. CHECKPOINT_DB_PATH=data/checkpoints.sqlite
  50. # 网页智能体测试工作台;资料与执行记录使用本应用SQLite和独立测试会话。
  51. TEST_LAB_ENABLED=1
  52. TEST_LAB_DATA_DIR=data/test_lab
  53. # 可选:内置PDF/图片/JSON样例所在目录;未配置时尝试同级陕西局代码/测试数据。
  54. TEST_LAB_SAMPLE_DIR=
  55. # ============================================================
  56. # 上下文与压缩
  57. # ============================================================
  58. # 声明的上下文窗口(0 = 用模型登记值)。
  59. # 这是压缩的唯一调节旋钮:框架在「声明窗口的 85%」处触发摘要压缩,
  60. # 想更早压缩就把这里调小(例如真实窗口 128000、想 70% 触发 → 填 105000)。
  61. CONTEXT_LIMIT=0
  62. # 自动压缩开关。关掉会同时失去「淘汰历史自动落盘到 /conversation_history/」
  63. # 的能力——长会话会硬撑到超窗报错,只在排查压缩相关问题时才关。
  64. CTX_COMPACT_ENABLED=1
  65. # 冷启动从会话历史补种的最近消息条数
  66. CTX_RECENT_LIMIT=30
  67. # ============================================================
  68. # 人机协同(HITL)
  69. # ============================================================
  70. # 需要人工审批的工具(逗号分隔),会追加到默认的计划审批工具之上。
  71. # 未注册的工具名会阻止启动,避免审批配置拼写错误被忽略。
  72. # 例:HITL_TOOLS=calculate → 每次计算都要用户点头,便于自测中断闭环
  73. HITL_TOOLS=
  74. # ============================================================
  75. # 计费
  76. # ============================================================
  77. # 每用户每日 token 限额(0 = 不限);预检 fail-closed
  78. TFAGENTS_DAILY_TOKEN_LIMIT=0
  79. # 模型未在 billing_pricing 表中定价时:0=直接报错(fail-closed,默认)
  80. # 1=按 0 价计费并告警(仅本地开发用,会让用量数字失真)
  81. BILLING_ALLOW_UNPRICED=0
  82. # ============================================================
  83. # 并发闸(超限直接 429,不排队)
  84. # ============================================================
  85. TFAGENTS_MAX_CONCURRENT_TASKS=10
  86. TFAGENTS_MAX_USER_TASKS=2
  87. TFAGENTS_TASK_WALL_TIMEOUT=1800
  88. # 独立算法:单图/批量共享并行上限,批量等待名额;配置变更后重启。
  89. ALGORITHM_MAX_PARALLEL=2
  90. # 所有批次合计等待及执行中的图片上限
  91. ALGORITHM_MAX_PENDING_IMAGES=100
  92. ALGORITHM_RESULT_TTL_HOURS=24
  93. ALGORITHM_JOB_DIR=data/algorithm_jobs
  94. # ============================================================
  95. # 鉴权
  96. # ============================================================
  97. # 2.0 骨架不做鉴权:user_name 由 /api/chat 的 multipart 字段自报,缺省 default。
  98. # 此开关保留给后续接入真实鉴权时使用,当前无效。
  99. AUTH_ENABLED=0
  100. # ============================================================
  101. # 观测
  102. # ============================================================
  103. TFA_TRACE_MIDDLEWARE=1
  104. # 离线扩展示例:共享术语表服务 + 工具 + 上下文中间件,默认关闭
  105. CONTEXT_DEMO_ENABLED=0
  106. # ============================================================
  107. # 多业务智能体;当前启用主通风机资料核验和初步筛查
  108. # ============================================================
  109. MAIN_FAN_ENABLED=1
  110. MAIN_FAN_MAX_CONCURRENCY=1
  111. BUSINESS_RECURSION_LIMIT=40
  112. # Skill 自主探索预算;主通风机默认使用此模式
  113. AGENT_EXPLORATION_RECURSION_LIMIT=480
  114. # Python 执行器:macOS sandbox-exec;Linux 需安装 bubblewrap,不回退无沙箱执行
  115. AGENT_PYTHON_MAX_SECONDS=120
  116. # 地址空间限制仅 Linux;两平台均限制 CPU、执行时长、文件大小及输出长度
  117. AGENT_PYTHON_MEMORY_MB=2048
  118. AGENT_PYTHON_MAX_RUNS=40
  119. # 业务任务提交、管理、记录查询的服务凭证;与对方网关凭证不同。
  120. # 留空时这些 API 返回 503;网页聊天入口沿用现有身份机制。
  121. BUSINESS_API_TOKEN=
  122. # ============================================================
  123. # 对方部署的陕西局取数网关(JSON 转发、文件下载鉴权)
  124. # ============================================================
  125. SHANXI_GATEWAY_ENABLED=0
  126. SHANXI_GATEWAY_URL=
  127. SHANXI_GATEWAY_TOKEN=
  128. # 文件所属系统根地址及下载相对路径由对方提供;不能用网关地址代替。
  129. SHANXI_FILE_BASE_URL=
  130. SHANXI_HTTP_TIMEOUT=30
  131. SHANXI_MAX_FILE_MB=50
  132. # 对方给本业务的取数调用身份,与结果平台的 agentCode 分开。
  133. MAIN_FAN_AGENT_CODE=
  134. # 真实 JSON 接口路径由对方提供;响应通过 main_fan/data_source.py 显式适配。
  135. MAIN_FAN_DEVICES_PATH=
  136. MAIN_FAN_POINTS_PATH=
  137. MAIN_FAN_REPORTS_PATH=
  138. # 本地模拟分别使用 /mock-platform/main-fan/series 和 /mock-platform/main-fan/states。
  139. MAIN_FAN_SERIES_PATH=
  140. MAIN_FAN_SWITCHES_PATH=
  141. MAIN_FAN_OPERATION_LOG_PATH=
  142. MAIN_FAN_RULES_FILE=examples/main_fan/equivalence_rules.json
  143. # 简短业务请求的身份目录;真实环境配置正式编码。模拟目录绑定本地网关,不能用于真实网关。
  144. MAIN_FAN_TARGETS_FILE=
  145. # 简短请求默认重新读取原件;完整结构化输入可显式指定缓存策略。
  146. MAIN_FAN_DEFAULT_DOCUMENT_CACHE_POLICY=refresh
  147. # 自动扫描件识别需要兼容当前模型服务的视觉模型,并配置该模型的计费单价。
  148. # 当前 DeepSeek 官方 deepseek-flash 已支持图像;可复用主模型凭证。
  149. MAIN_FAN_VISION_MODEL=
  150. # 文本 PDF 的结构化模型,留空默认主模型;两种模型可分别指定其他兼容服务。
  151. MAIN_FAN_TEXT_MODEL=
  152. MAIN_FAN_VISION_BASE_URL=
  153. MAIN_FAN_VISION_API_KEY=
  154. MAIN_FAN_TEXT_BASE_URL=
  155. MAIN_FAN_TEXT_API_KEY=
  156. MAIN_FAN_MAX_DOCUMENT_PAGES=32
  157. MAIN_FAN_DOCUMENT_TIMEOUT=180
  158. MAIN_FAN_DOCUMENT_BATCH_PAGES=2
  159. MAIN_FAN_DOCUMENT_MAX_TOKENS=20000
  160. # 生产默认不使用人工转录缓存;旧离线演示才显式开启。
  161. MAIN_FAN_ALLOW_MANUAL_CACHE=0
  162. # 数据筛查窗口,不是工程安全阈值;采集时间按 Asia/Shanghai 解释。
  163. MAIN_FAN_FRESHNESS_SECONDS=600
  164. MAIN_FAN_SYNC_SECONDS=120
  165. # ============================================================
  166. # 独立的研判结果接收平台;不使用 SHANXI_GATEWAY_URL/TOKEN
  167. # ============================================================
  168. RESULT_PLATFORM_ENABLED=0
  169. # 完整的 POST 接口地址。本地接收平台:http://127.0.0.1:8767/api/judgments
  170. RESULT_PLATFORM_URL=
  171. RESULT_PLATFORM_TOKEN=
  172. # 默认 Authorization: Bearer <token>。自定义 API Key 可用 X-API-Key + scheme=none。
  173. # 无鉴权接口显式设置 AUTH_HEADER=none;不向网关索取结果平台凭证。
  174. RESULT_PLATFORM_AUTH_HEADER=Authorization
  175. RESULT_PLATFORM_AUTH_SCHEME=Bearer
  176. RESULT_PLATFORM_TIMEOUT=30
  177. # 支持嵌套字段,如 data.code。HTTP 204 直接视为接收成功;其余成功响应必须匹配。
  178. RESULT_PLATFORM_SUCCESS_FIELD=code
  179. RESULT_PLATFORM_SUCCESS_VALUES=0,200
  180. MAIN_FAN_RESULT_AGENT_CODE=main_fan_equivalence_agent
  181. MAIN_FAN_RESULT_AGENT_NAME=矿井主通风机同等能力研判
  182. # 启用结果平台后,网页/工具研判完成即入推送队列;设0则只生成结果。
  183. # 任务 API 以每次请求的 publish 字段为准。
  184. MAIN_FAN_AUTO_PUBLISH=1