Files
GovAI/.env.example
T
freedakgmail c949204662 feat(govai): 0617 优化首批 — 安全/私有化/深度研究/服务层/可观测性
借鉴 odysseus 的能力设计,全程净室实现、零 AGPL 代码、不引入 AGPL 依赖。

T1 提示注入防护: pkg/promptguard 包裹外部/知识库内容为不可信数据,buildMessages 移出 system 指令区。 T2 安全 CI: .github/workflows(ci+security: govulncheck/gitleaks/actionlint/hadolint/trivy)+dependabot+.hadolint.yaml;go.mod 加 toolchain go1.25.11 修复 20 个 stdlib CVE。 T3 管理员 2FA: 迁移 000016 + RFC6238 TOTP/备份码(pkg/auth, 零依赖) + 登录流程集成(后端)。 T4 本地模型: LLM/embedding 支持本地 vLLM/Ollama(OpenAI 兼容, 鉴权头条件发送, NoAuth) + docs/local-deploy.md。 T6 深度研究: 迁移 000017 + Python research-worker(净室多步流水线, 检索避开 SearXNG) + Go research 服务/handler/路由。 T7 service 层: 新增 internal/service/{research,twofa}, 2FA 业务逻辑从胖 handler 下沉, 接口注入可单测。 T10 缓存/可观测性: internal/cache(Redis+内存, 优雅降级) 接入 store 热点列表; Prometheus 指标+/metrics; docs/openapi.yaml。 验证: go build/vet/test ./... 全绿(8 包); research-worker 12 单测过; 真实 PG 应用迁移并烟测。
2026-06-17 17:52:47 +08:00

81 lines
3.0 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ============================================================
# Aily - 企业 AI 应用平台 环境变量配置
# 复制此文件为 .env 并填入实际值
# ============================================================
# ---- 门户后端 ----
SERVER_HOST=0.0.0.0
SERVER_PORT=8080
DATABASE_URL=postgres://aily:aily@localhost:5432/aily_portal?sslmode=disable
REDIS_URL=redis://localhost:6379
JWT_SECRET=change-this-to-a-random-string-in-production
JWT_EXPIRY=24h
# ---- LLM 直连(替代 Dify 对话引擎) ----
LLM_PROVIDER=openai # openai | anthropic | local
OPENAI_API_KEY=sk-xxxx # OpenAI / DashScope 等 API Key
OPENAI_BASE_URL=https://api.openai.com/v1 # 可替换为任意 OpenAI 兼容端点
OPENAI_MODEL=gpt-4o-mini # 默认模型
ANTHROPIC_API_KEY= # Anthropic API Key(可选)
ANTHROPIC_BASE_URL=https://api.anthropic.com
ANTHROPIC_MODEL=claude-sonnet-4-20250514
# ---- 本地推理(私有化 / 内网,OpenAI 兼容端点:vLLM、Ollama 等) ----
# 设置 LLM_PROVIDER=local 即把对话推理切到本地,全程不出公网。
# 留空 LOCAL_LLM_API_KEY 即不发送鉴权头(多数本地服务无需密钥)。
# vLLM 示例: http://127.0.0.1:8000/v1 Ollama 示例: http://127.0.0.1:11434/v1
LOCAL_LLM_BASE_URL=
LOCAL_LLM_MODEL= # 例: qwen2.5-7b-instruct / qwen2.5:7b
LOCAL_LLM_API_KEY= # 可留空
# ---- 向量化 EmbeddingRAG 知识库检索) ----
# 默认走 DashScope;私有化时指向本地 OpenAI 兼容 /v1/embeddings。
EMBEDDING_API_KEY= # 云端必填;本地无鉴权可留空并设 EMBEDDING_NO_AUTH=true
EMBEDDING_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1
EMBEDDING_MODEL=text-embedding-v3 # 本地示例: bge-m3 / nomic-embed-text
EMBEDDING_DIMENSIONS=1024 # 必须与模型及 pgvector 列维度一致
EMBEDDING_NO_AUTH=false # 本地无鉴权端点设为 true
# ---- Dify 对接(知识库/创作中心仍可用) ----
DIFY_API_URL=http://localhost:5001/v1
DIFY_API_KEY=app-xxxx
# ---- 模型网关(未来扩展) ----
MODEL_GATEWAY_URL=http://localhost:8081
# ---- SSO 认证 ----
SSO_TYPE=password
# LDAP
LDAP_URL=ldap://ldap.company.com:389
LDAP_BASE_DN=dc=company,dc=com
LDAP_BIND_DN=cn=admin,dc=company,dc=com
LDAP_BIND_PASSWORD=
# OAuth2
OAUTH2_CLIENT_ID=
OAUTH2_CLIENT_SECRET=
OAUTH2_AUTH_URL=
OAUTH2_TOKEN_URL=
OAUTH2_USERINFO_URL=
# ---- PPT Worker 微服务 ----
PPT_WORKER_URL=http://localhost:8090
# ---- 对象存储 (MinIO) ----
MINIO_ENDPOINT=localhost:9000
MINIO_ACCESS_KEY=minioadmin
MINIO_SECRET_KEY=minioadmin
MINIO_BUCKET=aily-files
# ---- 前端 ----
NEXT_PUBLIC_API_URL=http://localhost:8080
NEXT_PUBLIC_APP_NAME=Aily - 企业AI应用平台
# ---- PostgreSQL (Docker) ----
POSTGRES_USER=aily
POSTGRES_PASSWORD=aily
POSTGRES_DB=aily_portal
# ---- MinIO (Docker) ----
MINIO_ROOT_USER=minioadmin
MINIO_ROOT_PASSWORD=minioadmin