Files
aiagent/backend/app/core/config.py

158 lines
6.5 KiB
Python
Raw Normal View History

2026-01-19 00:09:36 +08:00
"""
应用配置
"""
from pathlib import Path
2026-01-19 00:09:36 +08:00
from pydantic_settings import BaseSettings
from typing import List
# 无论从项目根还是 backend 目录启动,始终加载 backend/.env
_BACKEND_DIR = Path(__file__).resolve().parent.parent.parent
_ENV_PATH = _BACKEND_DIR / ".env"
2026-01-19 00:09:36 +08:00
class Settings(BaseSettings):
"""应用设置"""
# 应用基本信息
APP_NAME: str = "天工智能体平台"
2026-01-19 00:09:36 +08:00
APP_VERSION: str = "1.0.0"
ENVIRONMENT: str = "dev" # dev | staging | prod
fix: 修复35个安全与功能缺陷,补全知识进化/数字孪生/行为采集模块 ## 安全修复 (12项) - Webhook接口添加全局Token认证,过滤敏感请求头 - 修复JWT Base64 padding公式,防止签名验证绕过 - 数据库密码/飞书Token从源码移除,改为环境变量 - 工作流引擎添加路径遍历防护 (_resolve_safe_path) - eval()添加模板长度上限检查 - 审批API添加认证依赖 - 前端v-html增强XSS转义,console.log仅开发模式输出 - 500错误不再暴露内部异常详情 ## Agent运行时修复 (7项) - 删除_inject_knowledge_context中未定义db变量的finally块 - 工具执行添加try/except保护,异常不崩溃Agent - LLM重试计入budget计数器 - self_review异常时passed=False - max_iterations截断标记success=False - 工具参数JSON解析失败时记录警告日志 - run()开始时重置_llm_invocations计数器 ## 配置与基础设施 - DEBUG默认False,SQL_ECHO独立配置项 - init_db()补全13个缺失模型导入 - 新增WEBHOOK_AUTH_TOKEN/SQL_ECHO配置项 - 新增.env.example模板文件 ## 前端修复 (12项) - 登录改用URLSearchParams替代FormData - 401拦截器通过Pinia store统一清理状态 - SSE流超时从60s延长至300s - final/error事件时清除streamTimeout - localStorage聊天记录添加24h TTL - safeParseArgCount替代模板中裸JSON.parse - fetchUser 401时同时清除user对象 ## 新增模块 - 知识进化: knowledge_extractor/retriever/tasks - 数字孪生: shadow_executor/comparison模型 - 行为采集: behavior_middleware/collector/fingerprint_engine - 代码审查: code_review_agent/document_review_agent - 反馈学习: feedback_learner - 瓶颈检测/优化引擎/成本估算/需求估算 - 速率限制器 (rate_limiter) - Alembic迁移 015-020 ## 文档 - 商业化落地计划 - 8篇docs文档 (架构/API/部署/开发/贡献等) - Docker Compose生产配置 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-10 19:50:20 +08:00
DEBUG: bool = False
SQL_ECHO: bool = False # 独立于 DEBUG 的 SQL 日志开关,生产环境必须为 False
2026-01-19 00:09:36 +08:00
SECRET_KEY: str = "dev-secret-key-change-in-production"
fix: 修复35个安全与功能缺陷,补全知识进化/数字孪生/行为采集模块 ## 安全修复 (12项) - Webhook接口添加全局Token认证,过滤敏感请求头 - 修复JWT Base64 padding公式,防止签名验证绕过 - 数据库密码/飞书Token从源码移除,改为环境变量 - 工作流引擎添加路径遍历防护 (_resolve_safe_path) - eval()添加模板长度上限检查 - 审批API添加认证依赖 - 前端v-html增强XSS转义,console.log仅开发模式输出 - 500错误不再暴露内部异常详情 ## Agent运行时修复 (7项) - 删除_inject_knowledge_context中未定义db变量的finally块 - 工具执行添加try/except保护,异常不崩溃Agent - LLM重试计入budget计数器 - self_review异常时passed=False - max_iterations截断标记success=False - 工具参数JSON解析失败时记录警告日志 - run()开始时重置_llm_invocations计数器 ## 配置与基础设施 - DEBUG默认False,SQL_ECHO独立配置项 - init_db()补全13个缺失模型导入 - 新增WEBHOOK_AUTH_TOKEN/SQL_ECHO配置项 - 新增.env.example模板文件 ## 前端修复 (12项) - 登录改用URLSearchParams替代FormData - 401拦截器通过Pinia store统一清理状态 - SSE流超时从60s延长至300s - final/error事件时清除streamTimeout - localStorage聊天记录添加24h TTL - safeParseArgCount替代模板中裸JSON.parse - fetchUser 401时同时清除user对象 ## 新增模块 - 知识进化: knowledge_extractor/retriever/tasks - 数字孪生: shadow_executor/comparison模型 - 行为采集: behavior_middleware/collector/fingerprint_engine - 代码审查: code_review_agent/document_review_agent - 反馈学习: feedback_learner - 瓶颈检测/优化引擎/成本估算/需求估算 - 速率限制器 (rate_limiter) - Alembic迁移 015-020 ## 文档 - 商业化落地计划 - 8篇docs文档 (架构/API/部署/开发/贡献等) - Docker Compose生产配置 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-10 19:50:20 +08:00
# 数据库配置MySQL— 生产环境必须通过环境变量设置
DATABASE_URL: str = ""
2026-01-19 00:09:36 +08:00
# Redis配置
REDIS_URL: str = "redis://localhost:6379/0"
# 会话记忆:除 Redis 外是否写入 MySQLpersistent_user_memories实现跨重启、跨 TTL 的永久记忆
MEMORY_PERSIST_DB_ENABLED: bool = True
# 本地文件工具file_read / file_write允许读写的根目录。空字符串表示使用「backend 的上一级目录」作为仓库根。
LOCAL_FILE_TOOLS_ROOT: str = ""
LOCAL_FILE_READ_MAX_BYTES: int = 2_097_152 # 单次读取上限(默认 2MB
LOCAL_FILE_WRITE_MAX_BYTES: int = 2_097_152 # 单次写入内容上限UTF-8 字节)
# http_request 工具:写入 LLM 上下文的响应体最大字符数HTML/JSON 过大时截断,避免超过模型 context
HTTP_REQUEST_MAX_BODY_CHARS: int = 32_000
# web_search 工具Bing Search API KeyAzure 免费层 1000 次/月),留空则使用 DuckDuckGo
BING_SEARCH_API_KEY: str = ""
# web_search 工具HTTP 代理地址DuckDuckGo 在国内无法访问时使用),如 http://127.0.0.1:7890
SEARCH_PROXY: str = ""
# 图片 OCRfile_read 对 png/jpg 等Tesseract 可执行文件路径Windows 示例 C:/Program Files/Tesseract-OCR/tesseract.exe
TESSERACT_CMD: str = ""
# 自定义 tessdata 目录(内含 chi_sim.traineddata 等)。留空时若 LOCAL_FILE_TOOLS_ROOT/tessdata 下存在 .traineddata 则自动使用
TESSERACT_TESSDATA_DIR: str = ""
# 智能体对话落盘:在工作区根下 agent_workspaces/<agent_id>/dialogue.md 追加 Markdown与 LOCAL_FILE_TOOLS_ROOT 一致)
AGENT_WORKSPACE_CHAT_LOG_ENABLED: bool = True
AGENT_WORKSPACE_CHAT_SUBDIR: str = "agent_workspaces"
2026-01-19 00:09:36 +08:00
# 日志配置
LOG_DIR: str = "logs"
LOG_LEVEL: str = "INFO"
LOG_MAX_BYTES: int = 10 * 1024 * 1024 # 10MB 单文件上限
LOG_BACKUP_COUNT: int = 5 # 保留最近5个轮转文件
LOG_RETENTION_DAYS: int = 30 # 数据库日志保留天数
2026-01-19 00:09:36 +08:00
# CORS配置支持字符串或列表
CORS_ORIGINS: str = "http://localhost:3000,http://127.0.0.1:3000,http://localhost:8038,http://101.43.95.130:8038"
# OpenAI配置
OPENAI_API_KEY: str = ""
OPENAI_BASE_URL: str = "https://api.openai.com/v1"
# DeepSeek配置
DEEPSEEK_API_KEY: str = ""
DEEPSEEK_BASE_URL: str = "https://api.deepseek.com"
# 全局 LLM 降级配置(当 Agent/工作流未配置 fallback_llm 时自动启用)
FALLBACK_LLM_MODEL: str = ""
FALLBACK_LLM_API_KEY: str = ""
FALLBACK_LLM_BASE_URL: str = ""
# SiliconFlow配置Embedding 推荐使用 SiliconFlow
SILICONFLOW_API_KEY: str = ""
SILICONFLOW_BASE_URL: str = "https://api.siliconflow.cn/v1"
SILICONFLOW_EMBEDDING_MODEL: str = "netease-youdao/bce-embedding-base_v1"
2026-01-19 00:09:36 +08:00
# Anthropic配置
ANTHROPIC_API_KEY: str = ""
# JWT配置
JWT_SECRET_KEY: str = "dev-jwt-secret-key-change-in-production"
JWT_ALGORITHM: str = "HS256"
JWT_ACCESS_TOKEN_EXPIRE_MINUTES: int = 30
JWT_MOBILE_TOKEN_EXPIRE_MINUTES: int = 10080 # 移动端 7 天Android EncryptedSharedPreferences 安全存储
# Celery 工作流任务:对**非业务节点失败**(非 WorkflowExecutionError的退避重试次数0 表示不重试
WORKFLOW_TASK_MAX_RETRIES: int = 0
# 单执行预算:主循环每执行一个节点计 1 步,超过则熔断(防止死循环/失控)
WORKFLOW_MAX_STEPS_PER_RUN: int = 2000
# 单执行 LLM 节点调用上限llm / template 节点每执行一次计 1
WORKFLOW_MAX_LLM_INVOCATIONS_PER_RUN: int = 200
# 单执行工具实际执行次数上限LLM function calling 每执行一个工具计 1
WORKFLOW_MAX_TOOL_CALLS_PER_RUN: int = 500
2026-01-19 00:09:36 +08:00
# 外部访问地址(用于飞书通知中的详情链接等)
EXTERNAL_URL: str = ""
# 飞书应用配置(用于发送消息通知到用户飞书)
FEISHU_APP_ID: str = ""
FEISHU_APP_SECRET: str = ""
fix: 修复35个安全与功能缺陷,补全知识进化/数字孪生/行为采集模块 ## 安全修复 (12项) - Webhook接口添加全局Token认证,过滤敏感请求头 - 修复JWT Base64 padding公式,防止签名验证绕过 - 数据库密码/飞书Token从源码移除,改为环境变量 - 工作流引擎添加路径遍历防护 (_resolve_safe_path) - eval()添加模板长度上限检查 - 审批API添加认证依赖 - 前端v-html增强XSS转义,console.log仅开发模式输出 - 500错误不再暴露内部异常详情 ## Agent运行时修复 (7项) - 删除_inject_knowledge_context中未定义db变量的finally块 - 工具执行添加try/except保护,异常不崩溃Agent - LLM重试计入budget计数器 - self_review异常时passed=False - max_iterations截断标记success=False - 工具参数JSON解析失败时记录警告日志 - run()开始时重置_llm_invocations计数器 ## 配置与基础设施 - DEBUG默认False,SQL_ECHO独立配置项 - init_db()补全13个缺失模型导入 - 新增WEBHOOK_AUTH_TOKEN/SQL_ECHO配置项 - 新增.env.example模板文件 ## 前端修复 (12项) - 登录改用URLSearchParams替代FormData - 401拦截器通过Pinia store统一清理状态 - SSE流超时从60s延长至300s - final/error事件时清除streamTimeout - localStorage聊天记录添加24h TTL - safeParseArgCount替代模板中裸JSON.parse - fetchUser 401时同时清除user对象 ## 新增模块 - 知识进化: knowledge_extractor/retriever/tasks - 数字孪生: shadow_executor/comparison模型 - 行为采集: behavior_middleware/collector/fingerprint_engine - 代码审查: code_review_agent/document_review_agent - 反馈学习: feedback_learner - 瓶颈检测/优化引擎/成本估算/需求估算 - 速率限制器 (rate_limiter) - Alembic迁移 015-020 ## 文档 - 商业化落地计划 - 8篇docs文档 (架构/API/部署/开发/贡献等) - Docker Compose生产配置 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-10 19:50:20 +08:00
FEISHU_VERIFICATION_TOKEN: str = ""
# 安全加固 — HSTS生产环境建议启用开发环境保持关闭
HSTS_ENABLED: bool = False
HSTS_MAX_AGE: int = 31536000 # 默认 1 年
HSTS_INCLUDE_SUBDOMAINS: bool = True
fix: 修复35个安全与功能缺陷,补全知识进化/数字孪生/行为采集模块 ## 安全修复 (12项) - Webhook接口添加全局Token认证,过滤敏感请求头 - 修复JWT Base64 padding公式,防止签名验证绕过 - 数据库密码/飞书Token从源码移除,改为环境变量 - 工作流引擎添加路径遍历防护 (_resolve_safe_path) - eval()添加模板长度上限检查 - 审批API添加认证依赖 - 前端v-html增强XSS转义,console.log仅开发模式输出 - 500错误不再暴露内部异常详情 ## Agent运行时修复 (7项) - 删除_inject_knowledge_context中未定义db变量的finally块 - 工具执行添加try/except保护,异常不崩溃Agent - LLM重试计入budget计数器 - self_review异常时passed=False - max_iterations截断标记success=False - 工具参数JSON解析失败时记录警告日志 - run()开始时重置_llm_invocations计数器 ## 配置与基础设施 - DEBUG默认False,SQL_ECHO独立配置项 - init_db()补全13个缺失模型导入 - 新增WEBHOOK_AUTH_TOKEN/SQL_ECHO配置项 - 新增.env.example模板文件 ## 前端修复 (12项) - 登录改用URLSearchParams替代FormData - 401拦截器通过Pinia store统一清理状态 - SSE流超时从60s延长至300s - final/error事件时清除streamTimeout - localStorage聊天记录添加24h TTL - safeParseArgCount替代模板中裸JSON.parse - fetchUser 401时同时清除user对象 ## 新增模块 - 知识进化: knowledge_extractor/retriever/tasks - 数字孪生: shadow_executor/comparison模型 - 行为采集: behavior_middleware/collector/fingerprint_engine - 代码审查: code_review_agent/document_review_agent - 反馈学习: feedback_learner - 瓶颈检测/优化引擎/成本估算/需求估算 - 速率限制器 (rate_limiter) - Alembic迁移 015-020 ## 文档 - 商业化落地计划 - 8篇docs文档 (架构/API/部署/开发/贡献等) - Docker Compose生产配置 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-10 19:50:20 +08:00
# Webhook 全局认证 Token — 所有 webhook 触发请求需要携带此 Token
WEBHOOK_AUTH_TOKEN: str = ""
# 橙子飞书应用配置(独立 WS 连接,直接路由到橙子助手 Agent
ORANGE_APP_ID: str = ""
ORANGE_APP_SECRET: str = ""
ORANGE_AGENT_ID: str = "" # 创建橙子助手后写入
# 苏瑶飞书应用配置(独立 WS 连接,直接路由到苏瑶 Agent
SUYAO_APP_ID: str = ""
SUYAO_APP_SECRET: str = ""
SUYAO_AGENT_ID: str = "" # 创建苏瑶后写入
# 甜甜飞书应用配置(独立 WS 连接路由到苏瑶3号知识图谱 Agent
TIANTIAN_APP_ID: str = ""
TIANTIAN_APP_SECRET: str = ""
TIANTIAN_AGENT_ID: str = "" # 创建苏瑶3号后写入
# 灵犀飞书应用配置(独立 WS 连接,路由到灵犀学习助手 Agent
LINGXI_APP_ID: str = ""
LINGXI_APP_SECRET: str = ""
LINGXI_AGENT_ID: str = "" # 创建灵犀后写入
# 人参果飞书应用配置(独立 WS 连接,路由到 AI学习助手 Agent — KG+RAG理想版
RENSHENGUO_APP_ID: str = ""
RENSHENGUO_APP_SECRET: str = ""
RENSHENGUO_AGENT_ID: str = "" # 创建 AI学习助手 后写入
# 人参果1号飞书应用配置独立 WS 连接,路由到 AI学习助手 Agent — 行为约束版,禁止主动消息)
RENSHENGUO2_APP_ID: str = ""
RENSHENGUO2_APP_SECRET: str = ""
RENSHENGUO2_AGENT_ID: str = "" # 创建 AI学习助手人参果1号后写入
2026-01-19 00:09:36 +08:00
class Config:
env_file = str(_ENV_PATH)
2026-01-19 00:09:36 +08:00
case_sensitive = True
extra = "ignore"
2026-01-19 00:09:36 +08:00
settings = Settings()