# fde **Repository Path**: wzcool/fde ## Basic Information - **Project Name**: fde - **Description**: fde - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-10 - **Last Updated**: 2026-06-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # FDE 文档智能生成系统 · 开发计划 ### 1. 项目概述 **目标**:构建一个能够通过语音、文本、图片、附件等多模态输入,与用户进行引导式对话,自动生成高质量 FDE(Forward Deploy Engineer)文档的协作式 AI 系统。文档输出需包含项目背景、用户/行业痛点、AI 赋能点、技术架构、数据库表结构、主题样式和业务流程图等核心章节。 **技术栈**: - 后端:Python + FastAPI + OAuth2 (JWT) - 前端:Vue3 + TypeScript + Pinia + TailwindCSS - AI 框架:LangGraph(有状态多智能体协作) + LangChain(工具/模型抽象) - 模型:支持 GPT-4o / Claude Sonnet 等多模态模型,本地方案可切换 Hermes 等开源模型 - 基础设施:PostgreSQL + Redis + MinIO (对象存储) + WeasyPrint / Puppeteer (PDF导出) --- ### 2. 优点汲取与融合设计 我们从三个标杆项目中提取核心模式,并注入本系统: | 源项目 | 汲取的优点 | 在本系统中的体现 | |--------|------------|------------------| | **Hermes Agent** | - 强大的函数调用与工具编排
- 长短期记忆管理
- 推理-行动循环(ReAct) | 使用 LangGraph 构造主控 Agent,拥有记忆(短期对话上下文 + 长期项目知识库),每个生成步骤都有明确工具调用,支持反思与修正。 | | **Marvis** | - 多模态输入(语音、图片)
- 渐进式需求引导对话
- 缺失信息主动补齐 | 前端提供统一的输入栏(语音转文字、图片拖拽、附件上传),后端采用“需求澄清引擎”,在信息不完整时生成追问,逐步引导用户完成 FDE 各维度描述。 | | **darwin-skil** | - 技能树(Skill Graph)模块化
- 技能可插拔、可组合
- 声明式配置生成工作流 | 将每个文档章节(痛点分析、架构设计、表结构生成等)封装为独立“技能”节点,通过 YAML 配置文件组合成不同 FDE 模板,技能可复用、可替换。 | **融合后的核心工作流**: 用户输入 → 多模态理解 → 需求澄清对话(若有必要) → 技能调度器根据 FDE 模板选择技能 DAG → 各技能并行/串行生成章节 → 章节内容组合与排版 → 输出预览(支持在线修改)→ 导出 PDF/Word。 --- ### 3. 系统技术架构 ``` ┌──────────────────────────────────────────────────────┐ │ Frontend (Vue3+TS) │ │ ┌──────────┐ ┌───────────┐ ┌──────────────┐ │ │ │ Chat UI │ │ Doc Preview│ │ Project Mgmt │ │ │ │ (流式) │ │ (Markdown) │ │ (CRUD) │ │ │ └──────────┘ └───────────┘ └──────────────┘ │ │ │ │ │ │ └─────────┼──────────────┼───────────────┼────────────┘ │ │ │ ┌─────────▼──────────────▼───────────────▼────────────┐ │ API Gateway (FastAPI) │ │ /ws (WebSocket 流式) /docs /projects /skills │ └─────────────────────────┬───────────────────────────┘ │ ┌─────────────────────────▼───────────────────────────┐ │ Backend Service Layer │ │ │ │ ┌───────────────┐ ┌───────────────────┐ │ │ │ Auth (OAuth2) │ │ Skill Registry & │ │ │ │ RBAC │ │ Config Loader │ │ │ └───────────────┘ └────────┬──────────┘ │ │ │ │ │ ┌───────────────────────────▼──────────────────┐ │ │ │ LangGraph Agent Orchestrator │ │ │ │ ┌─────────┐ ┌──────────┐ ┌────────────┐ │ │ │ │ │Clarify │ │Skill │ │Compile │ │ │ │ │ │Engine │ │Scheduler │ │Engine │ │ │ │ │ └─────────┘ └──────────┘ └────────────┘ │ │ │ │ │ │ │ │ │ │ └───────┼──────────────┼───────────────┼───────┘ │ │ │ │ │ │ │ ┌───────▼──────────────▼───────────────▼───────┐ │ │ │ Tool & Memory Services │ │ │ │ Whisper │ OCR/Vision │RAG(历史项目)│Web │ │ │ │ (语音) │ (图片解析) │ (向量检索) │Search │ │ │ └──────────────────────────────────────────────┘ │ │ │ └─────────────────────────┬───────────────────────────┘ │ ┌─────────────────────────▼───────────────────────────┐ │ Data / Infra │ │ PostgreSQL │ Redis(缓存/状态) │ MinIO(文件) │ └──────────────────────────────────────────────────────┘ ``` --- ### 4. 核心模块详细设计 #### 4.1 多模态输入与理解 - **语音**:前端录制或上传音频,后端调用 Whisper API 转为文本。 - **图片**:通过多模态 LLM(GPT-4o 等)提取图中的架构草图、手绘流程图、UI 参考等信息,转化为结构化描述。 - **附件**:支持 PDF/Word/PPT/Excel。使用 PyMuPDF 与 python-docx 提取全文,长文档先切片,再通过 LLM 摘要提取与 FDE 相关的关键需求。 - **统一上下文**:所有输入转换后的文本与元数据统一放入对话上下文窗口,由 Agent 管理。 #### 4.2 需求澄清引擎(汲取 Marvis 引导式交互) - **原理**:维护一份“FDE 信息完备性模型”,标记每个章节必须收集的槽位(Slot)。如“项目背景”需要:客户行业、当前现状、期望目标。 - **流程**:每次用户输入后,Clarify Agent 检查槽位填充率。若低于阈值,生成不超过3个关键追问(避免压迫感),通过 WebSocket 推送到前端聊天界面。支持“跳过”选项,允许用户自主控制详细度。 - **状态机**:`IDLE -> COLLECTING -> CLARIFYING -> GENERATING -> REVIEWING -> EXPORTING`。 #### 4.3 技能树与调度器(汲取 darwin-skil 可组合性) **技能定义结构(YAML)**: ```yaml skill_id: "background" name: "项目背景生成" depends_on: [] required_slots: ["industry", "current_state", "goal"] prompt_template: "你是售前专家,根据以下信息撰写项目背景..." model: "gpt-4o" tools: ["web_search"] # 可选,如需查询行业信息 output_key: "project_background" ``` **FDE 模板示例**: ```yaml template_id: "standard_fde" skills: - background - pain_points (depends: background) - ai_empower (depends: pain_points) - architecture (depends: background, pain_points) - table_schema (depends: architecture) - ui_theme (depends: background) - business_process (depends: background, pain_points) ``` **调度器**:根据依赖关系自动构建 DAG,使用 `asyncio` 并发执行无依赖的技能,按需分配 LLM 调用资源,控制并发数防止 API 限流。 #### 4.4 文档生成与编译 - **技术架构图**:LLM 生成 Mermaid.js 代码,前端实时渲染,支持手动微调后重新嵌入文档。 - **表结构**:生成 SQL DDL 语句 + 表关系描述(Markdown 表格)。可选调用代码解释器验证语法。 - **主题样式**:生成 CSS 变量建议或 Tailwind 配置片段,附带颜色预览(前端渲染色块)。 - **业务流程**:生成 BPMN 2.0 XML,前端用 bpmn-js 渲染。 - **编译引擎**:将各章节 Markdown 片段按模板拼接,通过 Jinja2 渲染最终文档,输出为 Markdown 或直接转为 PDF(WeasyPrint)供下载。 #### 4.5 记忆与个性化(汲取 Hermes 长短期记忆) - **短期记忆**:对话历史全部保留在 LangGraph 的 Checkpointer(Redis/Postgres)中,支持上下文窗口管理。 - **长期记忆**:存储用户既往生成的 FDE 项目、客户名称、行业偏好等向量化信息,在新项目中通过 RAG 检索相似案例,辅助生成更贴合用户风格的文档。 - **用户配置**:可保存偏好的技术栈、文档风格(正式/活泼)、常用组件。 --- ### 5. 数据流时序图(生成一次 FDE) ``` User -> Frontend: 输入语音+图片+文本 Frontend -> API: WebSocket 消息 (session_id) API -> Input Processor: 多模态解析 -> 统一上下文 Input Processor -> Clarify Agent: 检查信息完备性 loop [如果信息不足] Clarify Agent -> Frontend: 追问消息 (流式) User -> Frontend: 补充回答 Frontend -> Clarify Agent: 更新槽位 end Clarify Agent -> Skill Scheduler: 启动 FDE 模板 Skill Scheduler -> Skill Nodes: 并行/串行执行技能 Skill Nodes -> LLM / Tools: 调用模型生成片段 LLM -> Skill Nodes: 流式返回内容 Skill Nodes -> Skill Scheduler: 收集章节结果 Skill Scheduler -> Compile Engine: 聚合与排版 Compile Engine -> Frontend: 流式推送完整文档预览 User -> Frontend: 在线修改(可选) Frontend -> API: 保存/导出指令 API -> PDF Service: 生成最终交付件 ``` --- ### 6. 开发阶段与里程碑(总计 14 周) #### 第1阶段:基础架构与骨架搭建(Week 1-2) - 初始化项目仓库、CI/CD(GitHub Actions) - FastAPI 项目结构、OAuth2+JWT 认证模块 - Vue3 前端骨架、路由、Pinia 状态管理、Tailwind 配置 - PostgreSQL 表设计(User, Project, Document, SkillConfig) - Docker 开发环境编排 - **里程碑 M1**:前后端打通,可登录并创建空白项目 #### 第2阶段:多智能体框架与核心技能(Week 3-6) - 集成 LangGraph,实现基础的 Agent 运行器与 Checkpointer - 构建 Skill Registry 与 YAML 加载器 - 实现前5个核心技能:项目背景、痛点、AI赋能、架构、表结构 - 引入 LLM 抽象层(支持 OpenAI / Claude / 本地 Hermes) - 编译引擎第一版:Markdown 拼接与实时预览 API - **里程碑 M2**:给定完整上下文,可自动生成结构化的 FDE 草稿 #### 第3阶段:多模态与需求澄清(Week 7-9) - 集成 Whisper 语音识别服务 - 集成多模态模型图片理解(上传架构草图 → 文本描述) - 附件解析服务(PDF/Word) - 实现 Clarify Agent 与槽位管理状态机 - WebSocket 流式通信,支持追问与状态更新 - **里程碑 M3**:通过自然对话即可补全信息并生成文档 #### 第4阶段:技能扩展与模板市场(Week 10-11) - 实现 UI 主题样式生成、业务流程图生成技能 - 构建 FDE 模板选择界面,管理员可配置新模板 - 长期记忆与 RAG 集成(检索历史项目) - 技能依赖图可视化(前端展示生成进度) - **里程碑 M4**:支持多种行业 FDE 模板,生成内容质量达到可用水平 #### 第5阶段:文档编辑、导出与生产加固(Week 12-13) - 前端 Markdown 富文本编辑器(支持实时修改生成内容) - PDF 导出(支持自定义模板、水印、公司 Logo) - 角色权限深化(管理员/普通用户/项目经理) - 异常处理与降级(LLM 不可用时使用缓存版本) - 性能优化(Redis 缓存、LLM 响应流式化) - **里程碑 M5**:内部测试版上线,可完整走通从输入到导出 PDF 全流程 #### 第6阶段:测试、文档与试运行(Week 14) - 端到端测试(Cypress / Playwright) - 单元测试与集成测试覆盖核心 Agent 逻辑 - API 文档(自动生成 OpenAPI) - 用户手册与部署说明 - 生产环境部署(Kubernetes + Nginx Ingress + 自动扩容) - **里程碑 M6**:正式发布 V1.0 --- ### 7. 关键技术挑战与应对 | 挑战 | 应对策略 | |------|----------| | LLM 生成内容质量不稳定,表格/代码可能错误 | 引入结构化输出(Function Calling / JSON Mode),对 SQL DDL 等添加格式校验;允许用户在线修正并重新编译。 | | 长文档上下文溢出 | 采用 LangGraph 的摘要记忆,自动压缩旧对话;对附件采用 RAG 切片检索,只将最相关片段放入提示。 | | 多技能并发下的 API 成本与延迟 | 实施并发池限制(最多 5 个 LLM 调用同时进行),使用 LangSmith 追踪,对非关键技能使用 cheaper 模型。 | | 实时流式体验与状态同步 | WebSocket + Pinia 前端状态管理,后端使用 Server-Sent Events 块推送,LangGraph 的 `astream_events` 细粒度事件。 | | 安全与数据隐私 | 所有文件加密存储(MinIO 服务端加密),对话记录可选择不清洗用于模型训练,OAuth 细粒度 scope 控制。 | --- ### 8. 团队配置建议 - **后端工程师 2人**:FastAPI + LangGraph + Agent 调度 - **AI/ML 工程师 1人**:Prompt 调优、技能设计、RAG 质量优化 - **前端工程师 2人**:Vue3 + 聊天组件 + 文档编辑器 + 可视化(Mermaid/BPMN) - **DevOps 工程师 1人**:CI/CD、K8s 部署、监控与日志 - **产品经理/领域专家 1人**:定义 FDE 标准结构,评估文档质量,培训模板 理解需求——系统需要支持**灵活切换本地 LLM 与 DashScope(阿里云百炼平台)云端 API 调用**,这本质上是为 Agent 体系添加一个**多模型后端适配层**。结合原有架构,我们在以下维度进行深化设计。 --- # 补充:多模型后端可切换架构 ### 1. 设计目标 - **模型后端可插拔**:OpenAI 兼容接口、DashScope、本地 vLLM/Ollama 部署的 Hermes 模型等均通过统一适配器接入。 - **配置级切换**:可在部署时(环境变量)、项目级(数据库配置)甚至技能级(YAML 模板)选择不同模型。 - **成本/性能平衡**:允许对关键技能使用高精度云端大模型,对摘要、翻译等非核心技能使用本地模型降本。 - **运行时健康检查**:自动检测后端可用性,支持故障切换(fallback)。 ### 2. 架构中新增 `LLM Gateway` 层 ``` ┌──────────────────────────────────────────────┐ │ LLM Gateway │ │ ┌────────────┐ ┌────────────┐ ┌─────────┐ │ │ │ OpenAI │ │ DashScope │ │ Local │ │ │ │ Compatible │ │ Provider │ │ Provider│ │ │ │ (GPT-4o, │ │ (Qwen-Max, │ │ (Hermes │ │ │ │ Claude...) │ │ Llama...) │ │ via │ │ │ │ │ │ │ │ vLLM) │ │ │ └────────────┘ └────────────┘ └─────────┘ │ │ ▲ ▲ ▲ │ │ └──────────────┼──────────────┘ │ │ │ │ │ Model Router & Auth │ │ (根据配置选择 Provider) │ └─────────────────────────┬─────────────────────┘ │ Agent / Skill 调用 ``` 该层提供统一的 `invoke(messages, tools)` 接口,内部根据 `model_id` 路由到对应 Provider。 --- ``` flowchart LR A[用户输入] --> B["_extract_slots_from_message
(gateway.invoke 无 model_ref)"] B --> C["LLM Gateway
_parse_model_ref → provider=local"] C --> D["ChatOpenAI
base_url=http://localhost:11434/v1
model=qwen3-vl:8b
(来自 config.py DEFAULT_MODEL_PROVIDER)"] A --> E["技能生成 (graph.py)"] E --> F["skill.model_override
provider:local, model:qwen3-vl:8b"] F --> D ``` ### 3. 配置体系设计 #### 3.1 部署环境变量(全局默认) ```env # 默认模型后端类型: openai | dashscope | local DEFAULT_MODEL_PROVIDER=dashscope # DashScope 配置 DASHSCOPE_API_KEY=sk-xxx DASHSCOPE_DEFAULT_MODEL=qwen-max # 本地模型服务端点(OpenAI 兼容) LOCAL_LLM_BASE_URL=http://vllm-service:8000/v1 LOCAL_LLM_API_KEY=not-needed # OpenAI 兼容 OPENAI_API_KEY=sk-xxx OPENAI_DEFAULT_MODEL=gpt-4o ``` #### 3.2 项目/用户级覆盖(存储在 PostgreSQL) `project_config` 表增加 `model_preference` JSON 字段: ```json { "provider": "dashscope", "model": "qwen-max", "fallback_provider": "local", "fallback_model": "hermes-3-llama-3.1" } ``` 前端项目管理页面提供图形化模型选择器,展示可用模型列表及其状态。 #### 3.3 技能级精度控制(YAML) 在技能定义中添加 `model` 字段,覆盖项目设置: ```yaml skill_id: "architecture" name: "技术架构生成" model: provider: "openai" model: "gpt-4o" temperature: 0.3 # 也可简洁写法 # model: "dashscope:qwen-max" ``` 调度器读取该配置,调用 Gateway 时传入。 --- ### 4. 各 Provider 适配实现要点 | Provider | 集成方式 | 函数调用支持 | 多模态支持 | 备注 | |----------|---------|------------|-----------|------| | **OpenAI 兼容** | LangChain ChatOpenAI | ✅ 原生 | ✅ | 覆盖 OpenAI、Azure、vLLM、Ollama 等 | | **DashScope** | LangChain ChatDashScope (langchain-community) | ✅ qwen-max 等 | ✅ 通义千问视觉模型 | 需申请 API Key,导入 `dashscope` 包 | | **本地 Hermes** | 通过 vLLM/Ollama 暴露 OpenAI 兼容接口 | ✅ 若模型支持工具调用 | 部分支持 | 需内置模型工具调用 prompt 模板 | - 本地模型建议使用 **vLLM + Hermes-3-Llama-3.1**,启用了 OpenAI 兼容服务的 `--tool-call-parser hermes`。 - DashScope 的 ChatDashScope 已实现标准 LangChain BaseChatModel 接口,可直接替换。 --- ### 5. 后端模块实现(Python) ```python # llm_gateway.py from langchain_core.language_models import BaseChatModel from langchain_openai import ChatOpenAI from langchain_community.chat_models import ChatDashScope from typing import Optional, Dict, Any class LLMGateway: def __init__(self, config: Dict[str, Any]): self.config = config self._cache = {} def get_model(self, model_ref: Optional[str] = None) -> BaseChatModel: """根据 model_ref 格式 'provider:model_name' 获取模型实例""" if model_ref and ":" in model_ref: provider, model_name = model_ref.split(":", 1) else: provider = self.config.get("provider", "dashscope") model_name = self.config.get("model", "qwen-max") cache_key = f"{provider}:{model_name}" if cache_key not in self._cache: if provider == "openai": self._cache[cache_key] = ChatOpenAI( model=model_name, temperature=0.2, api_key=self.config["openai_api_key"], base_url=self.config.get("openai_base_url") ) elif provider == "dashscope": self._cache[cache_key] = ChatDashScope( model=model_name, temperature=0.2, api_key=self.config["dashscope_api_key"], ) elif provider == "local": # 本地服务用 OpenAI 兼容接口 self._cache[cache_key] = ChatOpenAI( model=model_name, temperature=0.2, api_key="not-needed", base_url=self.config.get("local_base_url", "http://127.0.0.1:8000/v1") ) else: raise ValueError(f"不支持的 provider: {provider}") return self._cache[cache_key] ``` **多模态调用**:对于图片输入,统一使用多模态模型(如 GPT-4o、Qwen-VL-Max),Gateway 根据 model 支持情况自动注入多部分消息内容。 --- ### 6. 项目阶段调整 需在原有开发计划中,明确在第2阶段 **多智能体框架与核心技能** 中增加: - **Week 3-4**:实现 LLM Gateway 抽象层,支持 OpenAI 兼容和 DashScope 两个 Provider,并完成单元测试。 - **Week 4-5**:实现模型配置管理 API(列出可用模型、切换项目默认模型),前端增加模型选择下拉框。 - **集成测试**:分别在 DashScope (qwen-max) 和本地 Hermes 模型上运行核心技能,验证生成质量与工具调用功能。 - **故障切换**:在 Gateway 中加入指数退避重试,如果一个 Provider 连续失败 3 次,自动切换到 fallback 配置。 **新里程碑 M2.1**:用户可在界面中切换云端/本地模型,Agent 在两种后端下均能完成 FDE 生成闭环。 --- ## 快速开始 ### 环境准备 - Python 3.10+ - Node.js 18+ - Docker & Docker Compose(可选,用于本地基础设施) ### 1. 克隆仓库 ```bash git clone cd fde ``` ### 2. 一键启动全部服务(Docker Desktop) 推荐使用 Docker Desktop 一键启动前后端及所有依赖: ```bash make up # 或手动 docker compose -f infra/docker-compose.yml up -d ``` 这将启动: - **PostgreSQL**(15432) - **Redis**(16379) - **MinIO**(19000 / 19001) - **Backend**(18000) - **Frontend**(15173) 首次启动后,只需配置 API Key 即可使用: ```bash cp backend/.env.example backend/.env # 编辑 backend/.env,填入你的 API Key(DASHSCOPE_API_KEY 或 OPENAI_API_KEY) ``` 然后重启后端容器生效: ```bash cd infra && docker compose restart backend ``` 访问地址: - 前端:http://localhost:15173 - API 文档:http://localhost:18000/docs > **注意**:`make up` 会以前端 `dev` 模式运行(支持热重载),后端启用 `--reload`(代码变更自动重启)。 --- ### 3. 仅启动基础设施(本地开发前后端) 如果你希望前后端在本地运行、只通过 Docker 启动数据库等基础设施: ```bash docker compose -f infra/docker-compose.yml up -d postgres redis minio ``` 然后配置环境变量: ```bash cp backend/.env.example backend/.env # 编辑 backend/.env,填入你的 API Key ``` 必要变量: - `SECRET_KEY` - `DASHSCOPE_API_KEY` 或 `OPENAI_API_KEY` > 数据库连接支持两种方式(密码含 `@` 等特殊字符时,推荐方式2): > - 方式1:`DATABASE_URL=postgresql+asyncpg://user:pass@host:port/db`(需手动 URL encode 密码) > - 方式2:`DB_HOST=localhost`、`DB_PORT=15432`、`DB_USER=fde`、`DB_PASSWORD=fde123`、`DB_NAME=fde`(自动编码) ### 4. 启动后端(本地) ```bash cd backend pip install -r requirements.txt uvicorn app.main:app --reload --port 8000 ``` API 文档:http://localhost:8000/docs ### 5. 启动前端(本地) ```bash cd frontend npm install npm run dev ``` 前端地址:http://localhost:5173 --- ## 用户手册 ### 注册与登录 1. 访问前端首页,点击"注册"创建账户。 2. 使用邮箱/用户名登录,获取 JWT Token。 3. 支持三种角色:`admin`、`project_manager`、`user`。 ### 创建项目 1. 登录后进入项目管理页,点击"新建项目"。 2. 填写项目名称、描述、行业等基本信息。 3. 可选配置模型偏好(云端/本地模型)。 ### 需求澄清与文档生成 1. 进入项目详情页,切换到"聊天"标签。 2. 通过文本、语音或附件输入项目信息。 3. 系统自动检查信息完整度,不足时生成追问。 4. 信息收集完整后,点击"生成文档"。 5. 系统按技能 DAG 并行/串行生成各章节,实时推送进度。 ### 文档编辑与导出 1. 切换到"预览"标签查看生成的 Markdown 文档。 2. 切换到"编辑"标签,按章节修改内容。 3. 点击"导出 PDF",支持水印、封面自定义。 ### 模板市场 - 内置模板:`standard_fde`(5 技能)、`full_fde`(7 技能)。 - Admin 可在"技能管理"中创建自定义技能模板。 --- ## 测试 ### 后端测试 ```bash cd backend pytest tests/ -v ``` 当前测试覆盖: - **单元测试**:LLM Gateway、Skill Registry、Compile Engine、Clarify Engine、Input Processor、Cache、RBAC、RAG、Template Market。 - **集成测试**:API 端到端(Auth、Project CRUD、Skills、Document Generate/Export)。 - **总计**:121 passed,4 skipped(PDF 依赖 WeasyPrint)。 ### 前端 E2E 测试 ```bash cd frontend npx playwright install chromium npm run test:e2e ``` --- ## 部署 ### Docker Compose(开发/测试) 适用于本地 Docker Desktop 一键全量部署。 ```bash make up # 启动所有服务(前后端 + 数据库 + 缓存 + MinIO) make logs # 查看日志 make down # 停止并移除服务 make shell-be # 进入后端容器 make shell-fe # 进入前端容器 ``` 环境变量通过 `infra/docker-compose.yml` 自动注入,敏感信息(API Key)通过 `.env` 文件或 Shell 环境变量传入。数据库和 Redis 密码中的 `@` 等特殊字符已做自动编码,无需手动处理 URL encode。 ### Kubernetes(生产) ```bash # 1. 创建命名空间和配置 kubectl apply -f infra/k8s/namespace.yaml kubectl apply -f infra/k8s/configmap.yaml kubectl apply -f infra/k8s/secret.yaml # 2. 部署数据库和缓存 kubectl apply -f infra/k8s/postgres.yaml kubectl apply -f infra/k8s/redis.yaml # 3. 构建并推送镜像 docker build -t your-registry/fde-backend:latest backend/ docker build -t your-registry/fde-frontend:latest frontend/ docker push your-registry/fde-backend:latest docker push your-registry/fde-frontend:latest # 4. 部署应用层 kubectl apply -f infra/k8s/backend.yaml kubectl apply -f infra/k8s/frontend.yaml # 5. 配置 Ingress kubectl apply -f infra/k8s/ingress.yaml ``` --- ### 7. 安全与效率考量 - **API Key 安全**:所有密钥存储在环境变量或 Vault 中,数据库只存 provider+model 标识,不暴露密钥。 - **成本控制**:项目配置可设定 Token 预算上限,通过 Callback 统计消费并预警。 - **本地模型部署建议**:提供 Docker Compose 一键部署 vLLM + Hermes 模型,降低启动门槛。 ---