.env.example 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. # OpenRouter API Key (https://openrouter.ai/keys)
  2. OPENROUTER_API_KEY=sk-or-v1-...
  3. # Default model (any OpenRouter-supported model)
  4. # Examples: google/gemini-2.5-flash, google/gemini-2.5-flash-lite, anthropic/claude-sonnet-5
  5. OPENROUTER_MODEL=google/gemini-2.5-flash
  6. OPENROUTER_TIMEOUT_SECONDS=120
  7. # Agent defaults
  8. AGENT_MAX_ITERATIONS=20
  9. AGENT_TEMPERATURE=0.7
  10. # find_agent only (read by agents/find_agent/runtime.py)
  11. # 单个 find_agent 最长运行 10 分钟,超时后标记失败并继续下一条
  12. FIND_AGENT_TIMEOUT_SECONDS=600
  13. # Skills directory (relative to project root or absolute path)
  14. SKILLS_DIR=skills
  15. # Logging
  16. LOG_ENABLED=true
  17. LOGS_DIR=logs
  18. # 百炼 API Key
  19. DASHSCOPE_API_KEY=sk-ws-...
  20. # MySQL
  21. MYSQL_HOST=127.0.0.1
  22. MYSQL_PORT=3306
  23. MYSQL_USER=root
  24. MYSQL_PASSWORD=
  25. MYSQL_DATABASE=supply_agent
  26. MYSQL_CONNECTION_BUDGET=40
  27. MYSQL_POOL_SIZE=1
  28. MYSQL_POOL_SIZE_API=6
  29. MYSQL_POOL_SIZE_CONTROL=1
  30. MYSQL_MAX_OVERFLOW=0
  31. MYSQL_POOL_TIMEOUT_SECONDS=10
  32. MYSQL_POOL_RECYCLE_SECONDS=1800
  33. MYSQL_CONNECT_TIMEOUT_SECONDS=10
  34. MYSQL_READ_TIMEOUT_SECONDS=30
  35. MYSQL_WRITE_TIMEOUT_SECONDS=30
  36. MYSQL_OPERATIONAL_RESERVE=4
  37. MYSQL_ECHO=false
  38. # Local web authentication. The bootstrap account is only created when the
  39. # username does not already exist; changing these values will not reset it.
  40. AUTH_SESSION_HOURS=12
  41. AUTH_COOKIE_SECURE=false
  42. AUTH_BOOTSTRAP_ADMIN_USERNAME=admin
  43. AUTH_BOOTSTRAP_ADMIN_PASSWORD=
  44. AUTH_BOOTSTRAP_ADMIN_DISPLAY_NAME=系统管理员
  45. # ODPS (MaxCompute)
  46. ODPS_ACCESS_ID=
  47. ODPS_ACCESS_KEY=
  48. ODPS_PROJECT=
  49. ODPS_ENDPOINT=https://service.cn.maxcompute.aliyun.com/api
  50. # Scheduler(独立进程;供给流水线每天 15:00 Asia/Shanghai 触发)
  51. # 生产必须改为 true;容器启动预检会阻止 false 配置上线。
  52. SCHEDULER_ENABLED=false
  53. SCHEDULER_TIMEZONE=Asia/Shanghai
  54. SCHEDULER_CRON_HOUR=15
  55. SCHEDULER_CRON_MINUTE=0
  56. # find_agent P0 质量门禁(每次运行会保存完整配置快照)
  57. FIND_AGENT_RULE_VERSION=find-agent-gate-v1
  58. FIND_AGENT_MIN_DURATION_SECONDS=30
  59. FIND_AGENT_MIN_SHARE_COUNT=1000
  60. FIND_AGENT_MIN_CONTENT_50_PLUS_RATIO=0.20
  61. FIND_AGENT_MIN_ACCOUNT_50_PLUS_RATIO=0.20
  62. FIND_AGENT_FESTIVAL_LEAD_DAYS=7
  63. FIND_AGENT_EVENT_MAX_AGE_DAYS=7
  64. FIND_AGENT_SEASONAL_MAX_AGE_DAYS=180
  65. CATEGORY_MATCH_WORKERS=16
  66. # Pipeline control plane
  67. PROCESS_ROLE=api
  68. DATABASE_AUTO_CREATE=false
  69. RUN_DB_MIGRATIONS=true
  70. RUN_RUNTIME_PREFLIGHT=true
  71. PIPELINE_REQUIRE_SCHEDULER=true
  72. # HTTPS 生产设为 true,同时必须设置 AUTH_COOKIE_SECURE=true。
  73. PIPELINE_REQUIRE_SECURE_COOKIE=false
  74. PIPELINE_WORKER_PROCESSES=4
  75. PIPELINE_MAX_ACTIVE_STEPS=4
  76. PIPELINE_WORKER_POLL_SECONDS=2
  77. PIPELINE_LEASE_SECONDS=120
  78. PIPELINE_HEARTBEAT_SECONDS=30
  79. PIPELINE_RECONCILE_SECONDS=60
  80. PIPELINE_MISSED_RUN_GRACE_SECONDS=600
  81. PIPELINE_SHUTDOWN_GRACE_SECONDS=300
  82. PIPELINE_WARN_AFTER_HOURS=12
  83. PIPELINE_CRITICAL_BEFORE_NEXT_MINUTES=120
  84. PIPELINE_FINAL_WARN_BEFORE_NEXT_MINUTES=30
  85. PIPELINE_LOG_DIR=logs/pipeline
  86. # Aliyun OSS (agent 运行日志可视化上传;qwen 视频截断后片段也上传到此 bucket)
  87. ALIYUN_OSS_ACCESS_KEY_ID=
  88. ALIYUN_OSS_ACCESS_KEY_SECRET=
  89. ALIYUN_OSS_REGION=cn-hangzhou
  90. ALIYUN_OSS_BUCKET=art-pubbucket
  91. ALIYUN_OSS_ROOT_PREFIX=supply_agent
  92. # 手动上传日志专用 OSS 目录(与 Agent 自动上传 / MySQL oss_logs 路径分离)
  93. ALIYUN_OSS_MANUAL_LOG_PREFIX=supply_agent/manual_logs
  94. ALIYUN_OSS_PUBLIC_BASE_URL=http://rescdn.yishihui.com
  95. ALIYUN_OSS_CONNECT_TIMEOUT_SECONDS=30
  96. LOG_OSS_UPLOAD_ENABLED=true
  97. # 分类树路径匹配(每次请求只发送一个 term)
  98. CATEGORY_MATCH_API_URL=https://library.aiddit.com/api/search/categories/match-paths/v2
  99. CATEGORY_MATCH_TIMEOUT_SECONDS=60
  100. # 新分区有效节点少于现有活动树的 50% 时拒绝同步,避免部分分区误退役整棵树。
  101. GLOBAL_CATEGORY_MIN_RETENTION_RATIO=0.5
  102. # AIGC platform (视频爬取/发布计划;需配置 token,默认真实调用接口)
  103. AIGC_API_TOKEN=