Compare commits
No commits in common. "964fbc12351a592879b4cdafa43377d0c7560dfb" and "ccffef1997039d99f70e74d77563902a6c6e71c1" have entirely different histories.
964fbc1235
...
ccffef1997
133
.env.example
133
.env.example
|
|
@ -1,133 +0,0 @@
|
||||||
# =============================================
|
|
||||||
# DeepAudit 部署全局环境变量配置模板
|
|
||||||
# =============================================
|
|
||||||
# 复制此文件为 .env 并填入实际配置
|
|
||||||
# .env 文件已加入 .gitignore,不会被提交到版本库
|
|
||||||
# =============================================
|
|
||||||
|
|
||||||
# =============================================
|
|
||||||
# 1. 数据库配置 (PostgreSQL)
|
|
||||||
# =============================================
|
|
||||||
POSTGRES_SERVER=db
|
|
||||||
POSTGRES_USER=postgres
|
|
||||||
POSTGRES_PASSWORD=postgres
|
|
||||||
POSTGRES_DB=deepaudit
|
|
||||||
|
|
||||||
# 完整连接字符串 (由 Compose 自动拼接,如需手动覆盖请取消注释)
|
|
||||||
# DATABASE_URL=postgresql+asyncpg://postgres:postgres@db/deepaudit
|
|
||||||
|
|
||||||
# =============================================
|
|
||||||
# 2. 安全与认证配置 (JWT)
|
|
||||||
# =============================================
|
|
||||||
# 生产环境务必修改,可运行 `openssl rand -hex 32` 生成
|
|
||||||
SECRET_KEY=your-secret-key
|
|
||||||
ALGORITHM=HS256
|
|
||||||
ACCESS_TOKEN_EXPIRE_MINUTES=11520
|
|
||||||
|
|
||||||
# =============================================
|
|
||||||
# 3. LLM 通用配置 (后端核心引擎)
|
|
||||||
# =============================================
|
|
||||||
# 提供商: openai, gemini, claude, qwen, deepseek, zhipu, ollama
|
|
||||||
# 原生适配器: baidu, minimax, doubao
|
|
||||||
LLM_PROVIDER=openai
|
|
||||||
# API 密钥 (通用)
|
|
||||||
LLM_API_KEY=your-api-key
|
|
||||||
# 模型名称
|
|
||||||
LLM_MODEL=qwen3-coder-flash
|
|
||||||
# 自定义端点
|
|
||||||
LLM_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1
|
|
||||||
# 超时时间 (秒)
|
|
||||||
LLM_TIMEOUT=300
|
|
||||||
# 生成温度 (0-1)
|
|
||||||
LLM_TEMPERATURE=0.7
|
|
||||||
# 最大生成 Token
|
|
||||||
LLM_MAX_TOKENS=32768
|
|
||||||
# 并发请求数
|
|
||||||
LLM_CONCURRENCY=20
|
|
||||||
# 请求间隔 (ms)
|
|
||||||
LLM_GAP_MS=0
|
|
||||||
|
|
||||||
# =============================================
|
|
||||||
# 4. LLM 各平台独立配置 (可选)
|
|
||||||
# =============================================
|
|
||||||
OPENAI_API_KEY=
|
|
||||||
OPENAI_BASE_URL=
|
|
||||||
GEMINI_API_KEY=
|
|
||||||
CLAUDE_API_KEY=
|
|
||||||
QWEN_API_KEY=
|
|
||||||
DEEPSEEK_API_KEY=
|
|
||||||
ZHIPU_API_KEY=
|
|
||||||
MOONSHOT_API_KEY=
|
|
||||||
BAIDU_API_KEY=
|
|
||||||
MINIMAX_API_KEY=
|
|
||||||
DOUBAO_API_KEY=
|
|
||||||
OLLAMA_BASE_URL=
|
|
||||||
|
|
||||||
# =============================================
|
|
||||||
# 5. RAG 嵌入模型配置 (知识库检索)
|
|
||||||
# =============================================
|
|
||||||
EMBEDDING_PROVIDER=openai
|
|
||||||
EMBEDDING_MODEL=text-embedding-v4
|
|
||||||
EMBEDDING_DIMENSION=1024
|
|
||||||
EMBEDDING_API_KEY=your-api-key
|
|
||||||
EMBEDDING_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1
|
|
||||||
|
|
||||||
# =============================================
|
|
||||||
# 6. 向量数据库配置 (RAG 功能)
|
|
||||||
# =============================================
|
|
||||||
VECTOR_DB_TYPE=chroma
|
|
||||||
CHROMA_PERSIST_DIRECTORY=./data/chroma
|
|
||||||
|
|
||||||
# =============================================
|
|
||||||
# 7. Agent 核心服务配置 (任务调度)
|
|
||||||
# =============================================
|
|
||||||
AGENT_ENABLED=true
|
|
||||||
AGENT_MAX_ITERATIONS=5
|
|
||||||
AGENT_TIMEOUT=1800
|
|
||||||
|
|
||||||
# Redis 配置
|
|
||||||
REDIS_HOST=redis
|
|
||||||
REDIS_URL=redis://redis:6379/0
|
|
||||||
REDIS_PORT=6379
|
|
||||||
|
|
||||||
# =============================================
|
|
||||||
# 8. 沙箱配置 (验证器)
|
|
||||||
# =============================================
|
|
||||||
SANDBOX_ENABLED=true
|
|
||||||
SANDBOX_IMAGE=deepaudit/sandbox:latest
|
|
||||||
SANDBOX_MEMORY_LIMIT=512m
|
|
||||||
SANDBOX_CPU_LIMIT=1.0
|
|
||||||
SANDBOX_NETWORK_DISABLED=true
|
|
||||||
SANDBOX_TIMEOUT=30
|
|
||||||
|
|
||||||
# =============================================
|
|
||||||
# 9. Git 仓库集成配置
|
|
||||||
# =============================================
|
|
||||||
# Gitea 地址 (如果是宿主机 Gitea,请填写宿主机 IP)
|
|
||||||
GITEA_HOST_URL=your-gitea-url
|
|
||||||
# Gitea 用户访问令牌 (个人),使用ai-bot账号token即可
|
|
||||||
GITEA_TOKEN=your-gitea-token
|
|
||||||
# AI Bot 访问令牌 (Issue/PR 回复)
|
|
||||||
GITEA_BOT_TOKEN=your-bot-token
|
|
||||||
# Webhook 认证密钥
|
|
||||||
GITEA_WEBHOOK_SECRET=your-webhook-secret
|
|
||||||
|
|
||||||
# 其他平台 (可选)
|
|
||||||
GITHUB_TOKEN=
|
|
||||||
GITLAB_TOKEN=
|
|
||||||
|
|
||||||
# =============================================
|
|
||||||
# 10. 存储与输出配置
|
|
||||||
# =============================================
|
|
||||||
ZIP_STORAGE_PATH=./uploads/zip_files
|
|
||||||
OUTPUT_LANGUAGE=zh-CN
|
|
||||||
MAX_ANALYZE_FILES=500
|
|
||||||
MAX_FILE_SIZE_BYTES=204800
|
|
||||||
|
|
||||||
# =============================================
|
|
||||||
# 11. 前端专用配置
|
|
||||||
# =============================================
|
|
||||||
# 前端访问 API 的基础路径
|
|
||||||
VITE_API_BASE_URL=/api/v1
|
|
||||||
# 应用标识
|
|
||||||
VITE_APP_ID=deepaudit
|
|
||||||
|
|
@ -1,238 +0,0 @@
|
||||||
# =============================================
|
|
||||||
# DeepAudit Backend 配置文件
|
|
||||||
# =============================================
|
|
||||||
# 复制此文件为 .env 并填入实际配置
|
|
||||||
|
|
||||||
# =============================================
|
|
||||||
# 数据库配置
|
|
||||||
# =============================================
|
|
||||||
# PostgreSQL 数据库连接配置
|
|
||||||
# Docker Compose 部署时使用 db 作为服务器地址
|
|
||||||
POSTGRES_SERVER=localhost
|
|
||||||
POSTGRES_USER=postgres
|
|
||||||
POSTGRES_PASSWORD=postgres
|
|
||||||
POSTGRES_DB=deepaudit
|
|
||||||
|
|
||||||
# 完整数据库连接字符串(可选,会覆盖上述配置)
|
|
||||||
# DATABASE_URL=postgresql+asyncpg://postgres:postgres@localhost/deepaudit
|
|
||||||
|
|
||||||
# =============================================
|
|
||||||
# 安全配置
|
|
||||||
# =============================================
|
|
||||||
# JWT 签名密钥 - 生产环境必须修改为随机字符串!
|
|
||||||
# 建议使用: openssl rand -hex 32
|
|
||||||
SECRET_KEY=
|
|
||||||
|
|
||||||
# JWT 加密算法
|
|
||||||
ALGORITHM=HS256
|
|
||||||
|
|
||||||
# Token 过期时间(分钟),默认 8 天
|
|
||||||
ACCESS_TOKEN_EXPIRE_MINUTES=11520
|
|
||||||
|
|
||||||
# =============================================
|
|
||||||
# LLM 通用配置
|
|
||||||
# =============================================
|
|
||||||
# 支持的 provider:
|
|
||||||
# - LiteLLM 适配器: openai, gemini, claude, qwen, deepseek, zhipu, moonshot, ollama
|
|
||||||
# - 原生适配器: baidu, minimax, doubao
|
|
||||||
LLM_PROVIDER=openai
|
|
||||||
|
|
||||||
# API 密钥
|
|
||||||
LLM_API_KEY=
|
|
||||||
|
|
||||||
# 模型名称(留空使用 provider 默认模型)
|
|
||||||
# OpenAI: gpt-4o-mini, gpt-4o, gpt-3.5-turbo
|
|
||||||
# Gemini: gemini-2.0-flash, gemini-1.5-pro
|
|
||||||
# Claude: claude-3-5-sonnet-20241022, claude-3-haiku-20240307
|
|
||||||
# Qwen: qwen-turbo, qwen-plus, qwen-max
|
|
||||||
# DeepSeek: deepseek-chat, deepseek-coder
|
|
||||||
# Zhipu: glm-4-flash, glm-4
|
|
||||||
# Moonshot: moonshot-v1-8k, moonshot-v1-32k
|
|
||||||
# Ollama: llama3, codellama, qwen2.5, deepseek-coder
|
|
||||||
|
|
||||||
# LLM_MODEL=qwen3-next-80b-a3b-instruct
|
|
||||||
# 改用代码模型
|
|
||||||
LLM_MODEL=qwen3-coder-flash
|
|
||||||
|
|
||||||
# 自定义 API 端点(API 中转站)
|
|
||||||
# 示例: https://your-proxy.com/v1
|
|
||||||
LLM_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1
|
|
||||||
|
|
||||||
# 请求超时时间(秒)
|
|
||||||
LLM_TIMEOUT=300
|
|
||||||
|
|
||||||
# 生成温度(0-1,越低越确定性)
|
|
||||||
LLM_TEMPERATURE=0.7
|
|
||||||
|
|
||||||
# 最大生成 Token 数 最高支持32768
|
|
||||||
LLM_MAX_TOKENS=32768
|
|
||||||
|
|
||||||
# =============================================
|
|
||||||
# 各平台独立配置(可选)
|
|
||||||
# =============================================
|
|
||||||
# 如果需要同时配置多个平台,可以单独设置
|
|
||||||
# 运行时可通过 /admin 页面切换
|
|
||||||
|
|
||||||
# OpenAI
|
|
||||||
# OPENAI_API_KEY=sk-xxx
|
|
||||||
# OPENAI_BASE_URL=https://api.openai.com/v1
|
|
||||||
|
|
||||||
# Google Gemini
|
|
||||||
# GEMINI_API_KEY=xxx
|
|
||||||
|
|
||||||
# Anthropic Claude
|
|
||||||
# CLAUDE_API_KEY=sk-ant-xxx
|
|
||||||
|
|
||||||
# 阿里云通义千问
|
|
||||||
# QWEN_API_KEY=sk-xxx
|
|
||||||
|
|
||||||
# DeepSeek
|
|
||||||
# DEEPSEEK_API_KEY=sk-xxx
|
|
||||||
|
|
||||||
# 智谱 AI
|
|
||||||
# ZHIPU_API_KEY=xxx
|
|
||||||
|
|
||||||
# 月之暗面 Kimi
|
|
||||||
# MOONSHOT_API_KEY=sk-xxx
|
|
||||||
|
|
||||||
# 百度文心一言(格式: api_key:secret_key)
|
|
||||||
# BAIDU_API_KEY=your_api_key:your_secret_key
|
|
||||||
|
|
||||||
# MiniMax
|
|
||||||
# MINIMAX_API_KEY=xxx
|
|
||||||
|
|
||||||
# 字节豆包
|
|
||||||
# DOUBAO_API_KEY=xxx
|
|
||||||
|
|
||||||
# Ollama 本地模型
|
|
||||||
# OLLAMA_BASE_URL=http://localhost:11434/v1
|
|
||||||
|
|
||||||
# =============================================
|
|
||||||
# Agent 审计配置 (Multi-Agent v3.0.0 核心必须)
|
|
||||||
# =============================================
|
|
||||||
# Agent 审计开关(必须开启,是核心功能)
|
|
||||||
AGENT_ENABLED=true
|
|
||||||
|
|
||||||
# Agent 最大迭代次数
|
|
||||||
AGENT_MAX_ITERATIONS=5
|
|
||||||
|
|
||||||
# Agent 单次审计超时时间(秒)
|
|
||||||
AGENT_TIMEOUT=1800
|
|
||||||
|
|
||||||
# Redis 配置(Agent 任务队列 - 必须)
|
|
||||||
# Docker Compose 部署时使用 redis 作为服务器地址
|
|
||||||
REDIS_URL=redis://localhost:6379/0
|
|
||||||
|
|
||||||
# =============================================
|
|
||||||
# 嵌入模型配置(RAG 功能,独立于主 LLM)
|
|
||||||
# =============================================
|
|
||||||
# 嵌入模型 provider: openai, ollama, cohere, huggingface
|
|
||||||
|
|
||||||
# 生产环境中,需在docker-compose.yml中配置
|
|
||||||
EMBEDDING_PROVIDER=openai
|
|
||||||
|
|
||||||
# 嵌入模型名称
|
|
||||||
# OpenAI: text-embedding-3-small, text-embedding-3-large, text-embedding-ada-002
|
|
||||||
# Ollama: nomic-embed-text, mxbai-embed-large
|
|
||||||
EMBEDDING_MODEL=text-embedding-v4
|
|
||||||
|
|
||||||
# 嵌入模型维度
|
|
||||||
EMBEDDING_DIMENSION=1024
|
|
||||||
|
|
||||||
# 嵌入模型 API Key(留空则使用 LLM_API_KEY)
|
|
||||||
EMBEDDING_API_KEY=
|
|
||||||
|
|
||||||
# 注意在生产环境中,在docker-compose.yml中配置
|
|
||||||
# 嵌入模型 Base URL(留空则使用默认值)
|
|
||||||
# EMBEDDING_BASE_URL=http://127.0.0.1:8003/v1 # 不再使用本地
|
|
||||||
EMBEDDING_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1 # 阿里云
|
|
||||||
|
|
||||||
|
|
||||||
# =============================================
|
|
||||||
# 向量数据库配置(RAG 功能)
|
|
||||||
# =============================================
|
|
||||||
# 向量数据库类型: chroma
|
|
||||||
VECTOR_DB_TYPE=chroma
|
|
||||||
|
|
||||||
# ChromaDB 配置(本地模式)
|
|
||||||
CHROMA_PERSIST_DIRECTORY=./data/chroma
|
|
||||||
|
|
||||||
# =============================================
|
|
||||||
# 沙箱配置(漏洞验证 - 核心必须)
|
|
||||||
# =============================================
|
|
||||||
# 沙箱功能开关(必须开启,是漏洞验证的核心组件)
|
|
||||||
SANDBOX_ENABLED=true
|
|
||||||
|
|
||||||
# 沙箱 Docker 镜像
|
|
||||||
# 构建方式 1: docker compose build sandbox
|
|
||||||
# 构建方式 2: cd docker/sandbox && ./build.sh
|
|
||||||
SANDBOX_IMAGE=deepaudit/sandbox:latest
|
|
||||||
|
|
||||||
# 沙箱内存限制
|
|
||||||
SANDBOX_MEMORY_LIMIT=512m
|
|
||||||
|
|
||||||
# 沙箱 CPU 限制(核心数)
|
|
||||||
SANDBOX_CPU_LIMIT=1.0
|
|
||||||
|
|
||||||
# 是否禁用沙箱网络(安全建议开启)
|
|
||||||
SANDBOX_NETWORK_DISABLED=true
|
|
||||||
|
|
||||||
# 沙箱执行超时时间(秒)
|
|
||||||
SANDBOX_TIMEOUT=30
|
|
||||||
|
|
||||||
# =============================================
|
|
||||||
# Git 仓库配置
|
|
||||||
# =============================================
|
|
||||||
# GitHub Personal Access Token
|
|
||||||
# 获取地址: https://github.com/settings/tokens
|
|
||||||
# 权限要求: repo (私有仓库) 或 public_repo (公开仓库)
|
|
||||||
GITHUB_TOKEN=
|
|
||||||
# GitLab Personal Access Token
|
|
||||||
# 获取地址: https://gitlab.com/-/profile/personal_access_tokens
|
|
||||||
# 权限要求: read_repository
|
|
||||||
GITLAB_TOKEN=
|
|
||||||
# Gitea Access Token
|
|
||||||
# 获取地址: https://[your-gitea-instance]/user/settings/applications
|
|
||||||
# 权限要求: read_repository
|
|
||||||
# GITEA_TOKEN=f02b82fa51f26f2b13ed2ca67afe3faee49892b7 # http://sl.vrgon.com:3000/ 账号vinland100
|
|
||||||
# GITEA_TOKEN=896be9e332f3c60933a5eb931973db450b69b842 # http://182.96.17.140:82/
|
|
||||||
GITEA_TOKEN= # http://sl.vrgon.com:3000/ 账号ai-bot
|
|
||||||
|
|
||||||
# Gitea Webhook Secret
|
|
||||||
GITEA_WEBHOOK_SECRET=
|
|
||||||
|
|
||||||
# =============================================
|
|
||||||
# 扫描配置
|
|
||||||
# =============================================
|
|
||||||
# 单次扫描最大文件数
|
|
||||||
MAX_ANALYZE_FILES=500
|
|
||||||
|
|
||||||
# 单文件最大大小(字节),默认 200KB
|
|
||||||
MAX_FILE_SIZE_BYTES=204800
|
|
||||||
|
|
||||||
# LLM 并发请求数(注意 API 限流)
|
|
||||||
LLM_CONCURRENCY=20
|
|
||||||
|
|
||||||
# LLM 请求间隔(毫秒),避免触发限流
|
|
||||||
LLM_GAP_MS=0
|
|
||||||
|
|
||||||
# =============================================
|
|
||||||
# 存储配置
|
|
||||||
# =============================================
|
|
||||||
# ZIP 文件存储目录
|
|
||||||
ZIP_STORAGE_PATH=./uploads/zip_files
|
|
||||||
|
|
||||||
# =============================================
|
|
||||||
# 输出配置
|
|
||||||
# =============================================
|
|
||||||
# 分析结果输出语言
|
|
||||||
# zh-CN: 中文
|
|
||||||
# en-US: 英文
|
|
||||||
OUTPUT_LANGUAGE=zh-CN
|
|
||||||
|
|
||||||
# 注意生产环境中,在docker-compose.yml中配置
|
|
||||||
# Gitea 配置
|
|
||||||
## gitea host url,用于自动在PR下面回复
|
|
||||||
GITEA_HOST_URL=http://127.0.0.1:82
|
|
||||||
## ai-bot账号issue读写权限token
|
|
||||||
GITEA_BOT_TOKEN=379a049b8d78965fdff474fc8676bca7e9c70248
|
|
||||||
|
|
@ -57,7 +57,7 @@ class Settings(BaseSettings):
|
||||||
BAIDU_API_KEY: Optional[str] = None # 格式: api_key:secret_key
|
BAIDU_API_KEY: Optional[str] = None # 格式: api_key:secret_key
|
||||||
MINIMAX_API_KEY: Optional[str] = None
|
MINIMAX_API_KEY: Optional[str] = None
|
||||||
DOUBAO_API_KEY: Optional[str] = None
|
DOUBAO_API_KEY: Optional[str] = None
|
||||||
OLLAMA_BASE_URL: Optional[str] = None
|
OLLAMA_BASE_URL: Optional[str] = "http://localhost:11434/v1"
|
||||||
|
|
||||||
# GitHub配置
|
# GitHub配置
|
||||||
GITHUB_TOKEN: Optional[str] = None
|
GITHUB_TOKEN: Optional[str] = None
|
||||||
|
|
@ -67,7 +67,7 @@ class Settings(BaseSettings):
|
||||||
|
|
||||||
# Gitea配置
|
# Gitea配置
|
||||||
GITEA_TOKEN: Optional[str] = None
|
GITEA_TOKEN: Optional[str] = None
|
||||||
GITEA_HOST_URL: Optional[str] = None
|
GITEA_HOST_URL: Optional[str] = "http://localhost:3000"
|
||||||
GITEA_BOT_TOKEN: Optional[str] = None
|
GITEA_BOT_TOKEN: Optional[str] = None
|
||||||
GITEA_WEBHOOK_SECRET: Optional[str] = None
|
GITEA_WEBHOOK_SECRET: Optional[str] = None
|
||||||
|
|
||||||
|
|
@ -93,9 +93,7 @@ class Settings(BaseSettings):
|
||||||
EMBEDDING_DIMENSION: int = 0 # 嵌入模型维度(0 表示自动检测或由代码逻辑根据模型确定)
|
EMBEDDING_DIMENSION: int = 0 # 嵌入模型维度(0 表示自动检测或由代码逻辑根据模型确定)
|
||||||
|
|
||||||
# 向量数据库配置
|
# 向量数据库配置
|
||||||
VECTOR_DB_TYPE: str = "chroma"
|
VECTOR_DB_PATH: str = "./data/vector_db" # 向量数据库持久化目录
|
||||||
VECTOR_DB_PATH: str = "./data/vector_db" # 向量数据库持久化目录 (ChromaDB)
|
|
||||||
CHROMA_PERSIST_DIRECTORY: Optional[str] = None # 显式指定的 Chroma 持久化目录 (由于向后兼容保留 PATH)
|
|
||||||
|
|
||||||
# SSH配置
|
# SSH配置
|
||||||
SSH_CONFIG_PATH: str = "./data/ssh" # SSH配置目录(存储known_hosts等)
|
SSH_CONFIG_PATH: str = "./data/ssh" # SSH配置目录(存储known_hosts等)
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ POSTGRES_DB=deepaudit
|
||||||
# =============================================
|
# =============================================
|
||||||
# JWT 签名密钥 - 生产环境必须修改为随机字符串!
|
# JWT 签名密钥 - 生产环境必须修改为随机字符串!
|
||||||
# 建议使用: openssl rand -hex 32
|
# 建议使用: openssl rand -hex 32
|
||||||
SECRET_KEY=44c222c64424e93e41a12b74e85f800a8a87608a30bc18ce7dd722be48e61b6c
|
SECRET_KEY=your-super-secret-key-change-this-in-production
|
||||||
|
|
||||||
# JWT 加密算法
|
# JWT 加密算法
|
||||||
ALGORITHM=HS256
|
ALGORITHM=HS256
|
||||||
|
|
@ -38,7 +38,7 @@ ACCESS_TOKEN_EXPIRE_MINUTES=11520
|
||||||
LLM_PROVIDER=openai
|
LLM_PROVIDER=openai
|
||||||
|
|
||||||
# API 密钥
|
# API 密钥
|
||||||
LLM_API_KEY=sk-efd56221e9d4497e831e43398ee535ed
|
LLM_API_KEY=sk-your-api-key
|
||||||
|
|
||||||
# 模型名称(留空使用 provider 默认模型)
|
# 模型名称(留空使用 provider 默认模型)
|
||||||
# OpenAI: gpt-4o-mini, gpt-4o, gpt-3.5-turbo
|
# OpenAI: gpt-4o-mini, gpt-4o, gpt-3.5-turbo
|
||||||
|
|
@ -49,23 +49,20 @@ LLM_API_KEY=sk-efd56221e9d4497e831e43398ee535ed
|
||||||
# Zhipu: glm-4-flash, glm-4
|
# Zhipu: glm-4-flash, glm-4
|
||||||
# Moonshot: moonshot-v1-8k, moonshot-v1-32k
|
# Moonshot: moonshot-v1-8k, moonshot-v1-32k
|
||||||
# Ollama: llama3, codellama, qwen2.5, deepseek-coder
|
# Ollama: llama3, codellama, qwen2.5, deepseek-coder
|
||||||
|
LLM_MODEL=
|
||||||
# LLM_MODEL=qwen3-next-80b-a3b-instruct
|
|
||||||
# 改用代码模型
|
|
||||||
LLM_MODEL=qwen3-coder-flash
|
|
||||||
|
|
||||||
# 自定义 API 端点(API 中转站)
|
# 自定义 API 端点(API 中转站)
|
||||||
# 示例: https://your-proxy.com/v1
|
# 示例: https://your-proxy.com/v1
|
||||||
LLM_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1
|
LLM_BASE_URL=
|
||||||
|
|
||||||
# 请求超时时间(秒)
|
# 请求超时时间(秒)
|
||||||
LLM_TIMEOUT=300
|
LLM_TIMEOUT=150
|
||||||
|
|
||||||
# 生成温度(0-1,越低越确定性)
|
# 生成温度(0-1,越低越确定性)
|
||||||
LLM_TEMPERATURE=0.7
|
LLM_TEMPERATURE=0.7
|
||||||
|
|
||||||
# 最大生成 Token 数 最高支持32768
|
# 最大生成 Token 数
|
||||||
LLM_MAX_TOKENS=32768
|
LLM_MAX_TOKENS=30000
|
||||||
|
|
||||||
# =============================================
|
# =============================================
|
||||||
# 各平台独立配置(可选)
|
# 各平台独立配置(可选)
|
||||||
|
|
@ -127,26 +124,21 @@ REDIS_URL=redis://localhost:6379/0
|
||||||
# 嵌入模型配置(RAG 功能,独立于主 LLM)
|
# 嵌入模型配置(RAG 功能,独立于主 LLM)
|
||||||
# =============================================
|
# =============================================
|
||||||
# 嵌入模型 provider: openai, ollama, cohere, huggingface
|
# 嵌入模型 provider: openai, ollama, cohere, huggingface
|
||||||
|
|
||||||
# 生产环境中,需在docker-compose.yml中配置
|
|
||||||
EMBEDDING_PROVIDER=openai
|
EMBEDDING_PROVIDER=openai
|
||||||
|
|
||||||
# 嵌入模型名称
|
# 嵌入模型名称
|
||||||
# OpenAI: text-embedding-3-small, text-embedding-3-large, text-embedding-ada-002
|
# OpenAI: text-embedding-3-small, text-embedding-3-large, text-embedding-ada-002
|
||||||
# Ollama: nomic-embed-text, mxbai-embed-large
|
# Ollama: nomic-embed-text, mxbai-embed-large
|
||||||
EMBEDDING_MODEL=text-embedding-v4
|
EMBEDDING_MODEL=text-embedding-3-small
|
||||||
|
|
||||||
# 嵌入模型维度
|
# 嵌入模型维度
|
||||||
EMBEDDING_DIMENSION=1024
|
EMBEDDING_DIMENSION=2560
|
||||||
|
|
||||||
# 嵌入模型 API Key(留空则使用 LLM_API_KEY)
|
# 嵌入模型 API Key(留空则使用 LLM_API_KEY)
|
||||||
EMBEDDING_API_KEY=sk-efd56221e9d4497e831e43398ee535ed
|
EMBEDDING_API_KEY=
|
||||||
|
|
||||||
# 注意在生产环境中,在docker-compose.yml中配置
|
|
||||||
# 嵌入模型 Base URL(留空则使用默认值)
|
# 嵌入模型 Base URL(留空则使用默认值)
|
||||||
# EMBEDDING_BASE_URL=http://127.0.0.1:8003/v1 # 不再使用本地
|
EMBEDDING_BASE_URL=
|
||||||
EMBEDDING_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1 # 阿里云
|
|
||||||
|
|
||||||
|
|
||||||
# =============================================
|
# =============================================
|
||||||
# 向量数据库配置(RAG 功能)
|
# 向量数据库配置(RAG 功能)
|
||||||
|
|
@ -187,34 +179,34 @@ SANDBOX_TIMEOUT=30
|
||||||
# 获取地址: https://github.com/settings/tokens
|
# 获取地址: https://github.com/settings/tokens
|
||||||
# 权限要求: repo (私有仓库) 或 public_repo (公开仓库)
|
# 权限要求: repo (私有仓库) 或 public_repo (公开仓库)
|
||||||
GITHUB_TOKEN=
|
GITHUB_TOKEN=
|
||||||
|
|
||||||
# GitLab Personal Access Token
|
# GitLab Personal Access Token
|
||||||
# 获取地址: https://gitlab.com/-/profile/personal_access_tokens
|
# 获取地址: https://gitlab.com/-/profile/personal_access_tokens
|
||||||
# 权限要求: read_repository
|
# 权限要求: read_repository
|
||||||
GITLAB_TOKEN=
|
GITLAB_TOKEN=
|
||||||
|
|
||||||
# Gitea Access Token
|
# Gitea Access Token
|
||||||
# 获取地址: https://[your-gitea-instance]/user/settings/applications
|
# 获取地址: https://[your-gitea-instance]/user/settings/applications
|
||||||
# 权限要求: read_repository
|
# 权限要求: read_repository
|
||||||
# GITEA_TOKEN=f02b82fa51f26f2b13ed2ca67afe3faee49892b7 # http://sl.vrgon.com:3000/ 账号vinland100
|
GITEA_TOKEN=
|
||||||
# GITEA_TOKEN=896be9e332f3c60933a5eb931973db450b69b842 # http://182.96.17.140:82/
|
|
||||||
GITEA_TOKEN=379a049b8d78965fdff474fc8676bca7e9c70248 # http://sl.vrgon.com:3000/ 账号ai-bot
|
|
||||||
|
|
||||||
# Gitea Webhook Secret
|
# Gitea Webhook Secret
|
||||||
GITEA_WEBHOOK_SECRET=zheke@703
|
GITEA_WEBHOOK_SECRET=
|
||||||
|
|
||||||
# =============================================
|
# =============================================
|
||||||
# 扫描配置
|
# 扫描配置
|
||||||
# =============================================
|
# =============================================
|
||||||
# 单次扫描最大文件数
|
# 单次扫描最大文件数
|
||||||
MAX_ANALYZE_FILES=500
|
MAX_ANALYZE_FILES=50
|
||||||
|
|
||||||
# 单文件最大大小(字节),默认 200KB
|
# 单文件最大大小(字节),默认 200KB
|
||||||
MAX_FILE_SIZE_BYTES=204800
|
MAX_FILE_SIZE_BYTES=204800
|
||||||
|
|
||||||
# LLM 并发请求数(注意 API 限流)
|
# LLM 并发请求数(注意 API 限流)
|
||||||
LLM_CONCURRENCY=20
|
LLM_CONCURRENCY=3
|
||||||
|
|
||||||
# LLM 请求间隔(毫秒),避免触发限流
|
# LLM 请求间隔(毫秒),避免触发限流
|
||||||
LLM_GAP_MS=0
|
LLM_GAP_MS=2000
|
||||||
|
|
||||||
# =============================================
|
# =============================================
|
||||||
# 存储配置
|
# 存储配置
|
||||||
|
|
@ -230,9 +222,9 @@ ZIP_STORAGE_PATH=./uploads/zip_files
|
||||||
# en-US: 英文
|
# en-US: 英文
|
||||||
OUTPUT_LANGUAGE=zh-CN
|
OUTPUT_LANGUAGE=zh-CN
|
||||||
|
|
||||||
# 注意生产环境中,在docker-compose.yml中配置
|
|
||||||
# Gitea 配置
|
# Gitea 配置
|
||||||
## gitea host url,用于自动在PR下面回复
|
# Gitea Host URL,用于自动在 PR 下面回复
|
||||||
GITEA_HOST_URL=http://127.0.0.1:82
|
GITEA_HOST_URL=
|
||||||
## ai-bot账号issue读写权限token
|
|
||||||
GITEA_BOT_TOKEN=7d6c0192fd3ea285e36822d62851138d2b872b23
|
# AI-Bot 账号 Issue/PR 读写权限 Token
|
||||||
|
GITEA_BOT_TOKEN=
|
||||||
|
|
@ -1,65 +1,9 @@
|
||||||
# =============================================
|
# =============================================
|
||||||
# DeepAudit Docker Compose 配置 (Dify Style)
|
# DeepAudit Docker Compose 配置
|
||||||
# =============================================
|
# =============================================
|
||||||
|
# 部署: docker compose up -d
|
||||||
# 共享环境变量定义
|
# 查看日志: docker compose logs -f
|
||||||
x-shared-env:
|
# 注意: Agent 服务和沙箱环境是必须的核心组件
|
||||||
# 基础信息
|
|
||||||
&shared-env
|
|
||||||
PROJECT_NAME: DeepAudit
|
|
||||||
SECRET_KEY: ${SECRET_KEY}
|
|
||||||
ALGORITHM: ${ALGORITHM:-HS256}
|
|
||||||
# 数据库
|
|
||||||
POSTGRES_SERVER: ${POSTGRES_SERVER:-db}
|
|
||||||
POSTGRES_USER: ${POSTGRES_USER:-postgres}
|
|
||||||
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-postgres}
|
|
||||||
POSTGRES_DB: ${POSTGRES_DB:-deepaudit}
|
|
||||||
# LLM
|
|
||||||
LLM_PROVIDER: ${LLM_PROVIDER:-openai}
|
|
||||||
LLM_MODEL: ${LLM_MODEL:-qwen3-coder-flash}
|
|
||||||
LLM_API_KEY: ${LLM_API_KEY}
|
|
||||||
LLM_BASE_URL: ${LLM_BASE_URL}
|
|
||||||
LLM_TIMEOUT: ${LLM_TIMEOUT:-300}
|
|
||||||
LLM_TEMPERATURE: ${LLM_TEMPERATURE:-0.7}
|
|
||||||
LLM_MAX_TOKENS: ${LLM_MAX_TOKENS:-32768}
|
|
||||||
LLM_CONCURRENCY: ${LLM_CONCURRENCY:-20}
|
|
||||||
LLM_GAP_MS: ${LLM_GAP_MS:-0}
|
|
||||||
# LLM 各平台独立配置
|
|
||||||
OPENAI_API_KEY: ${OPENAI_API_KEY}
|
|
||||||
OPENAI_BASE_URL: ${OPENAI_BASE_URL}
|
|
||||||
GEMINI_API_KEY: ${GEMINI_API_KEY}
|
|
||||||
CLAUDE_API_KEY: ${CLAUDE_API_KEY}
|
|
||||||
QWEN_API_KEY: ${QWEN_API_KEY}
|
|
||||||
DEEPSEEK_API_KEY: ${DEEPSEEK_API_KEY}
|
|
||||||
ZHIPU_API_KEY: ${ZHIPU_API_KEY}
|
|
||||||
MOONSHOT_API_KEY: ${MOONSHOT_API_KEY}
|
|
||||||
BAIDU_API_KEY: ${BAIDU_API_KEY}
|
|
||||||
MINIMAX_API_KEY: ${MINIMAX_API_KEY}
|
|
||||||
DOUBAO_API_KEY: ${DOUBAO_API_KEY}
|
|
||||||
OLLAMA_BASE_URL: ${OLLAMA_BASE_URL}
|
|
||||||
# Agent & Redis
|
|
||||||
AGENT_ENABLED: ${AGENT_ENABLED:-true}
|
|
||||||
AGENT_MAX_ITERATIONS: ${AGENT_MAX_ITERATIONS:-5}
|
|
||||||
AGENT_TIMEOUT: ${AGENT_TIMEOUT:-1800}
|
|
||||||
REDIS_URL: ${REDIS_URL:-redis://redis:6379/0}
|
|
||||||
# Embedding
|
|
||||||
EMBEDDING_PROVIDER: ${EMBEDDING_PROVIDER:-openai}
|
|
||||||
EMBEDDING_MODEL: ${EMBEDDING_MODEL:-text-embedding-v4}
|
|
||||||
EMBEDDING_DIMENSION: ${EMBEDDING_DIMENSION:-1024}
|
|
||||||
EMBEDDING_API_KEY: ${EMBEDDING_API_KEY}
|
|
||||||
EMBEDDING_BASE_URL: ${EMBEDDING_BASE_URL}
|
|
||||||
# 向量数据库
|
|
||||||
VECTOR_DB_TYPE: ${VECTOR_DB_TYPE:-chroma}
|
|
||||||
CHROMA_PERSIST_DIRECTORY: ${CHROMA_PERSIST_DIRECTORY:-./data/chroma}
|
|
||||||
# Gitea
|
|
||||||
GITEA_HOST_URL: ${GITEA_HOST_URL}
|
|
||||||
GITEA_TOKEN: ${GITEA_TOKEN}
|
|
||||||
GITEA_BOT_TOKEN: ${GITEA_BOT_TOKEN}
|
|
||||||
GITEA_WEBHOOK_SECRET: ${GITEA_WEBHOOK_SECRET}
|
|
||||||
# 沙箱
|
|
||||||
SANDBOX_MEMORY_LIMIT: ${SANDBOX_MEMORY_LIMIT:-512m}
|
|
||||||
SANDBOX_CPU_LIMIT: ${SANDBOX_CPU_LIMIT:-1.0}
|
|
||||||
SANDBOX_TIMEOUT: ${SANDBOX_TIMEOUT:-30}
|
|
||||||
|
|
||||||
services:
|
services:
|
||||||
# =============================================
|
# =============================================
|
||||||
|
|
@ -72,9 +16,9 @@ services:
|
||||||
volumes:
|
volumes:
|
||||||
- postgres_data:/var/lib/postgresql/data
|
- postgres_data:/var/lib/postgresql/data
|
||||||
environment:
|
environment:
|
||||||
POSTGRES_USER: ${POSTGRES_USER:-postgres}
|
- POSTGRES_USER=postgres
|
||||||
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-postgres}
|
- POSTGRES_PASSWORD=postgres
|
||||||
POSTGRES_DB: ${POSTGRES_DB:-deepaudit}
|
- POSTGRES_DB=deepaudit
|
||||||
ports:
|
ports:
|
||||||
- "5432:5432"
|
- "5432:5432"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
|
|
@ -94,6 +38,7 @@ services:
|
||||||
extra_hosts:
|
extra_hosts:
|
||||||
- "host.docker.internal:host-gateway"
|
- "host.docker.internal:host-gateway"
|
||||||
volumes:
|
volumes:
|
||||||
|
- ./backend/app:/app/app:ro # 挂载代码目录,修改后自动生效
|
||||||
- backend_uploads:/app/uploads
|
- backend_uploads:/app/uploads
|
||||||
- chroma_data:/app/data/vector_db
|
- chroma_data:/app/data/vector_db
|
||||||
- ci_workspace:/app/data/ci_workspace
|
- ci_workspace:/app/data/ci_workspace
|
||||||
|
|
@ -102,18 +47,28 @@ services:
|
||||||
ports:
|
ports:
|
||||||
- "8000:8000"
|
- "8000:8000"
|
||||||
env_file:
|
env_file:
|
||||||
- .env
|
- ./backend/.env
|
||||||
environment:
|
environment:
|
||||||
<<: *shared-env
|
- DATABASE_URL=postgresql+asyncpg://postgres:postgres@db:5432/deepaudit
|
||||||
DATABASE_URL: postgresql+asyncpg://${POSTGRES_USER:-postgres}:${POSTGRES_PASSWORD:-postgres}@db:5432/${POSTGRES_DB:-deepaudit}
|
- REDIS_URL=redis://redis:6379/0
|
||||||
SANDBOX_ENABLED: ${SANDBOX_ENABLED:-true}
|
- AGENT_ENABLED=true
|
||||||
SANDBOX_IMAGE: ${SANDBOX_IMAGE:-deepaudit/sandbox:latest}
|
- SANDBOX_ENABLED=true
|
||||||
OUTPUT_LANGUAGE: ${OUTPUT_LANGUAGE:-zh-CN}
|
- SANDBOX_IMAGE=code-review:sandbox # 使用本地构建的沙箱镜像
|
||||||
|
# 指定 embedding 服务地址
|
||||||
|
- EMBEDDING_PROVIDER=openai
|
||||||
|
- EMBEDDING_MODEL=text-embedding-v4
|
||||||
|
- EMBEDDING_DIMENSION=1024
|
||||||
|
- EMBEDDING_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1
|
||||||
|
# Gitea 配置
|
||||||
|
- GITEA_HOST_URL=http://sl.vrgon.com:3000
|
||||||
|
- GITEA_BOT_TOKEN=379a049b8d78965fdff474fc8676bca7e9c70248
|
||||||
depends_on:
|
depends_on:
|
||||||
db:
|
db:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
redis:
|
redis:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
|
# 开发模式下,可以启用 --reload 热重载
|
||||||
|
command: sh -c ".venv/bin/alembic upgrade head && .venv/bin/uvicorn app.main:app --host 0.0.0.0 --port 8000"
|
||||||
networks:
|
networks:
|
||||||
- deepaudit-network
|
- deepaudit-network
|
||||||
|
|
||||||
|
|
@ -128,8 +83,7 @@ services:
|
||||||
ports:
|
ports:
|
||||||
- "83:80" # Nginx 监听 80 端口
|
- "83:80" # Nginx 监听 80 端口
|
||||||
environment:
|
environment:
|
||||||
VITE_API_BASE_URL: ${VITE_API_BASE_URL:-/api/v1}
|
- VITE_API_BASE_URL=/api/v1
|
||||||
VITE_APP_ID: ${VITE_APP_ID:-deepaudit}
|
|
||||||
depends_on:
|
depends_on:
|
||||||
- backend
|
- backend
|
||||||
networks:
|
networks:
|
||||||
|
|
@ -139,11 +93,12 @@ services:
|
||||||
# Agent 服务必须组件
|
# Agent 服务必须组件
|
||||||
# =============================================
|
# =============================================
|
||||||
|
|
||||||
|
# Redis (Agent 任务队列 - 必须)
|
||||||
redis:
|
redis:
|
||||||
image: redis:7-alpine
|
image: redis:7-alpine
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
ports:
|
ports:
|
||||||
- "${REDIS_PORT:-6379}:6379"
|
- "6379:6379"
|
||||||
volumes:
|
volumes:
|
||||||
- redis_data:/data
|
- redis_data:/data
|
||||||
healthcheck:
|
healthcheck:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue