
在實際部署開源 LLM 項目時最常遇到的并不是模型效果問題而是“一個有界面的系統怎么跑起來、怎么配通、怎么讓人正常訪問”。OSS WebUI Llms.py v4 這個名字里包含了三層信息它首先是一個開源Open Source SoftwareOSSWebUI 項目其次它面向 LLM 場景提供 Web 操作界面最后它通過 v4 版本把能力收斂成了四大塊——Projects、Agent Profiles、PDF Studio 和 1-Click Sharing。下面這篇文章會從技術實踐角度把這套系統從概念、部署、功能配置到問題排查完整過一遍適合正在評估開源 LLM 工作臺、需要給團隊搭建 WebUI或者準備接管這類項目運維的開發者閱讀。這里還要先解釋一個常見的混淆點在中文技術語境里OSS 往往也指對象存儲Object Storage Service比如阿里云 OSS。開源 WebUI 項目為了統一保存頭像、PDF、離線文件等資源通常也確實會對接對象存儲。所以標題里的 OSS 理解為“開源軟件”更準確但部署過程中你很有可能會碰到“對象存儲 OSS”的配置項。文章會同時把這兩層含義講清楚先把 WebUI 本身部署起來再把文件類數據接到對象存儲上。1. 先理解 Llms.py v4 這類 WebUI 解決什么問題1.1 為什么 LLM 項目需要獨立的 WebUI很多人第一次接觸 LLM 應用時習慣用 API 調用或者命令行腳本去測試模型。這種方式做原型驗證沒問題但一旦系統要交給產品、運營、業務同事使用就缺少了三樣東西可視化的交互界面、可復用的會話管理、可配置的權限體系。WebUI 這一類開源項目要解決的就是這個“最后一公里”問題。它把模型調用、提示詞管理、文件上傳、知識庫檢索、會話歷史這些能力封裝成一個網頁應用。用戶不需要寫代碼也不需要知道模型服務部署在哪個端口只要登錄頁面選擇一個 Agent就能開始工作。從 v4 的功能集合來看Llms.py 已經不再是一個單純的“聊天頁面”。Projects、Agent Profiles、PDF Studio、1-Click Sharing 這四組能力疊加之后它更像是一個面向 LLM 應用的輕量工作臺既有項目管理又有角色配置還有文檔處理入口同時支持把結果分享給外部人員。1.2 v4 的四大能力從“聊天框”升級為“工作臺”用表格可以把 v4 的功能變化看得更清楚。功能模塊解決的問題典型使用場景Projects多個業務場景混在一起會話和文件互相污染給不同項目分配獨立會話、數據和建議Agent Profiles每次提問都要重新寫角色和參數無法沉淀把客服、翻譯、代碼審查等角色固化成可復用的 ProfilePDF Studio文檔資料無法進入對話上下文上傳 PDF、解析文本、生成知識庫后再讓模型回答1-Click Sharing內部結果要發給外部人員但不想開通賬號生成帶權限的分享鏈接別人通過鏈接查看對話或文檔換句話說v4 把“模型交互”和“業務側協作”這兩條線合并了。普通用戶仍然可以把它當聊天工具用但團隊負責人、知識管理專員、產品運營可以把它當作一個帶權限、帶知識庫、帶分享能力的小平臺。1.3 部署前要先想清楚的三件事第一件事是模型從哪里來。WebUI 本身很少內置大模型它通常只是一個前端加編排層后端要接一個模型服務比如本地部署的推理服務或者云上的模型 API。部署前必須先確認模型服務的地址、API Key、模型名稱否則 WebUI 啟動后并沒有可以對話的對象。第二件事是文件要放哪里。項目里上傳的 PDF、截圖、用戶頭像如果只存在 WebUI 所在服務器的本地磁盤擴容和備份都很麻煩。v4 里的 PDF Studio 會處理文檔Projects 會保存項目文件這些數據都應該落到對象存儲里。第三件事是訪問方式。WebUI 部署完成后團隊成員是通過內網訪問還是需要公網訪問如果分享功能要對外使用就必須考慮域名、反向代理、HTTPS 證書和訪問權限而不是只開放一個裸端口。2. 部署環境準備容器化是最省事的路徑2.1 硬件和系統環境建議這里給出的是通用參考值具體資源配置要結合模型服務和并發量調整。環境級別CPU內存磁盤說明學習體驗2 核4 GB20 GB跑通 WebUI不接大模型推理團隊試用4 核8 GB50 GB對接外部模型 API處理少量 PDF生產使用8 核及以上16 GB 及以上100 GB 以上需要獨立數據庫、對象存儲、監控日志操作系統建議使用 Debian、Ubuntu 或 CentOS 之類的 Linux 服務器。需要提前安裝 Docker 和 Docker Compose。如果目標服務器無法拉取鏡像要先配置鏡像加速器或者在網絡代理允許的環境里提前把鏡像導出再引入過來。2.2 用 docker-compose 搭建最小化服務下面是一個用于說明思路的 docker-compose 示例。它包含三類服務WebUI 主應用、數據庫、對象存儲。實際項目可能需要根據官方文檔調整鏡像名稱、端口和依賴關系。version: 3.8 services: webui: image: your-registry/llms-py-webui:v4 container_name: llms-py-webui restart: unless-stopped ports: - 8080:8080 environment: WEBUI_PORT: 8080 DB_URL: postgresql://llms:llms_passworddb:5432/llms STORAGE_TYPE: s3 S3_ENDPOINT: http://minio:9000 S3_ACCESS_KEY: minioadmin S3_SECRET_KEY: minioadmin S3_BUCKET: llms-files S3_REGION: us-east-1 S3_PATH_STYLE: true MODEL_API_BASE: http://your-model-server:8000/v1 MODEL_API_KEY: sk-xxxx depends_on: - db - minio db: image: postgres:15-alpine container_name: llms-db restart: unless-stopped environment: POSTGRES_DB: llms POSTGRES_USER: llms POSTGRES_PASSWORD: llms_password volumes: - db-data:/var/lib/postgresql/data minio: image: minio/minio:latest container_name: llms-minio restart: unless-stopped command: server /data --console-address :9001 environment: MINIO_ROOT_USER: minioadmin MINIO_ROOT_PASSWORD: minioadmin ports: - 9000:9000 - 9001:9001 volumes: - minio-data:/data volumes: db-data: minio-data:這個示例里的STORAGE_TYPE: s3表示使用 S3 兼容協議的對象存儲。S3 是對象存儲的事實標準MinIO、阿里云 OSS、騰訊云 COS 都支持 S3 兼容接口所以 WebUI 通常通過 S3 客戶端對接。S3_PATH_STYLE: true這個配置對自建 MinIO 很重要因為 MinIO 默認通過路徑方式訪問 bucket。2.3 對象存儲為什么不是可選配置如果在部署時跳過對象存儲配置只把文件寫在本地目錄初期不會有明顯問題。但項目運行一段時間后會碰到三類麻煩第一是文件難備份。上傳的 PDF、項目附件和頭像如果散落在容器內或者某個掛載目錄備份時要額外處理文件目錄數據庫和文件容易出現時間點不一致。第二是擴容麻煩。當 WebUI 部署在多臺機器后面用戶第一次請求落到 A 機器第二次請求落到 B 機器B 機器上找不到 A 機器保存的文件就會出現上傳成功但讀取失敗的問題。第三是分享功能受限。1-Click Sharing 生成的鏈接如果指向 WebUI 服務本身那么 WebUI 宕機后分享內容也會失效。如果文件已經存放在對象存儲分享鏈接可以直接指向對象存儲的臨時訪問 URL服務可用性更高。所以即使是內網試用也建議從一開始就配置 S3 兼容存儲。MinIO 可以在一臺低配置機器上運行適合測試生產環境可以選擇云廠商的對象存儲或自建高可用 MinIO 集群。2.4 啟動前的環境變量檢查清單容器啟動失敗的原因里環境變量錯誤占了很大比例。建議按照下面的清單逐項確認。檢查項常見錯誤正確做法數據庫連接串密碼包含特殊字符未轉義使用DB_URL時對密碼做 URL 編碼S3 Endpoint忘了加 http/https 前綴必須寫完整協議如http://minio:9000Bucket 是否存在啟動后報 BucketNotFound提前在 MinIO 控制臺創建 bucket模型服務地址寫成了內網 IP 但 WebUI 容器無法訪問容器內執行curl測試接口連通性API Key填錯或過期先手動調用模型服務驗證 Key 有效注意不要只看容器是否變成 Running 狀態要打開日志確認服務完成初始化。很多 WebUI 應用即使連不上數據庫也可能先啟動 HTTP 端口等用戶訪問時才暴露問題。3. 核心功能配置Projects、Agent Profiles、PDF Studio、1-Click Sharing3.1 Projects用項目空間隔離會話、文件和知識庫Projects 的定位是“業務空間”。一個項目下面可以包含多輪會話、關聯的 PDF 文檔、固定的知識庫目錄和項目成員。這樣設計的好處是法務組的資料不會出現在市場組的會話里產品經理上傳的 PRD 也只對當前項目開放。從實現角度看Projects 通常對應后端的一張項目表結構上類似下面這樣CREATE TABLE projects ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), name VARCHAR(255) NOT NULL, description TEXT, owner_id UUID NOT NULL, knowledge_base_id UUID, created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() );操作上管理員新建項目后再邀請成員加入項目。用戶可以切換當前項目空間也可以按項目維度搜索歷史會話。使用 Projects 時要注意權限邊界用戶在 A 項目里創建的會話不應該自動出現在 B 項目里。如果發現跨項目會話串場優先檢查接口是否按項目 ID 過濾了數據。3.2 Agent Profiles把模型參數和角色行為固化成配置Agent Profiles 解決的是“重復配置”問題。以前每次和模型對話都要在輸入框里重復寫“你是一名運維工程師請用簡潔中文回答”。有了 Agent Profiles可以把角色描述、模型、溫度、輸出格式、啟用工具都保存成一個檔案下次直接選用。一個 Agent Profile 在后端可能長這樣{ id: agent-ops-001, name: 運維排查助手, description: 面向服務異常排查的助手, model: deepseek-v3, system_prompt: 你是一名運維工程師回答問題時先給出排查步驟再給結論。, temperature: 0.2, max_tokens: 2048, tools: [search_logs, view_metrics], knowledge_base_ids: [kb-incident-2025] }每個字段的含義如下參數作用注意事項model指定使用哪個模型模型名稱必須與模型服務返回的 model 字段一致system_prompt設定角色行為不要把所有業務規則都塞進 prompt過長會占 tokentemperature控制隨機性偏向穩定輸出的場景用 0.1 到 0.3創意場景用 0.7 以上max_tokens限制最長回復長度設置過短會導致長答案被截斷tools啟用的工具列表工具未注冊或未授權時會調用失敗knowledge_base_ids綁定的知識庫知識庫上線后要重建索引否則引用不到新文檔關鍵點在于Agent Profile 修改之后是否需要新建會話才能生效。多數實現里正在進行的會話已經帶有舊 Prompt 和舊參數修改 Profile 只會影響后續新建的會話。遇到“改了沒生效”的問題時優先確認是不是繼續使用舊會話導致。3.3 PDF Studio從“傳文件”升級為“傳知識”PDF Studio 是 v4 里比較重的一個模塊。它不只是讓用戶上傳 PDF 并保存而是要把 PDF 變成模型可用的知識。核心處理鏈路通常分四步上傳并存儲 PDF 到對象存儲。從 PDF 中提取文本。按固定大小切片可能做清洗和去重。生成向量索引寫入向量數據庫。下面是一段用于說明解析和切片思路的 Python 示例from typing import List def extract_text_from_pdf(pdf_path: str) - str: # 使用 pdfplumber、PyMuPDF 或底層 Poppler 工具實現 # 實際實現需要按對應庫 API 調整 return extracted_text def chunk_text(text: str, chunk_size: int 800, overlap: int 100) - List[str]: chunks [] start 0 while start len(text): end start chunk_size chunks.append(text[start:end]) start end - overlap return chunks切片參數會直接影響檢索效果。chunk_size 太大檢索到的片段可能包含大量無關內容浪費 token太小語義可能不完整。overlap 用于避免兩個切片的邊界處語義斷裂。實際參數要結合文檔類型和模型上下文長度調整。PDF Studio 常見的使用場景是合同分析、研發文檔問答、產品說明書檢索。生產環境需要注意三點PDF 中包含掃描圖片時必須先做 OCR否則提取不出文字。中文 PDF 可能需要處理字體嵌入問題提取出的文本會出現亂碼。多語言混合文檔要統一編碼建議在解析后打印前幾行確認文本質量。3.4 1-Click Sharing一鍵分享背后的權限模型一鍵分享并不是簡單的“生成一個鏈接”。要實現安全的分享至少要考慮四個維度分享范圍、有效期、訪問密碼、水印或審計。常見的分享鏈接參數如下https://webui.example.com/s/Jk8a2LxQmZ后端收到這個短碼后會查分享記錄判斷鏈接是否有效、是否過期、訪問者是否有密碼然后決定返回頁面還是要求驗證。分享記錄表可以這樣設計CREATE TABLE share_links ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), token VARCHAR(64) NOT NULL UNIQUE, resource_type VARCHAR(32) NOT NULL, -- project, conversation, document resource_id UUID NOT NULL, creator_id UUID NOT NULL, password_hash VARCHAR(255), expires_at TIMESTAMP WITH TIME ZONE, created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() );生產環境建議給分享功能單獨配置域名不要直接暴露 WebUI 的管理端口。分享鏈接如果要支持公網訪問WebUI 前面必須加反向代理并且正確配置 HTTPS 證書。否則分享頁面的附件可能因為混合內容被瀏覽器攔截。4. 對象存儲 OSS 接入阿里云 OSS、MinIO 與 S3 兼容協議4.1 統一用 S3 客戶端對接對象存儲主流 WebUI 項目在對接對象存儲時往往不是單獨實現阿里云 OSS SDK、MinIO SDK、騰訊云 COS SDK而是通過 S3 兼容協議統一封裝。S3 協議最早來自 AWS Simple Storage Service后來幾乎所有云廠商和自建系統都做了兼容層。這意味著你在配置界面里只需要填寫幾個核心參數STORAGE_TYPEs3 S3_ENDPOINThttps://oss-cn-hangzhou.aliyuncs.com S3_REGIONcn-hangzhou S3_ACCESS_KEYyour_access_key_id S3_SECRET_KEYyour_access_key_secret S3_BUCKETllms-webui-files S3_PATH_STYLEfalse對阿里云 OSS 來說S3_ENDPOINT必須使用對應地域的 EndpointS3_REGION也要匹配否則上傳時會報簽名不匹配。如果 WebUI 部署在阿里云服務器內網Endpoint 可以使用內網地址既快又省流量。4.2 公共讀、私有讀與臨時簽名 URL 的選擇對象存儲中 bucket 的權限直接影響文件訪問方式。下面區分三種情況權限類型是否需簽名適用場景風險公共讀不需要網站靜態資源、公開分享的文檔任何人都能訪問泄露風險高私有讀寫需要簽名內部項目文件、未公開 PDF每次訪問都要生成臨時 URL較麻煩混合策略部分公共讀部分私有頭像公開讀項目文檔私有讀配置復雜需要明確 bucket 路徑規劃推薦做法是 bucket 默認私有讀寫WebUI 在需要展示文件時生成帶時效的簽名 URL。比如用戶查看 PDF 時后端調用 S3 SDK 生成一個有效期 10 分鐘或一小時的訪問鏈接瀏覽器直接訪問該鏈接渲染 PDF。這樣既能限制訪問又不需要把文件下載到 WebUI 本地再轉發。4.3 用 curl 驗證對象存儲資源是否可訪問很多團隊在排查“頭像加載不出來”“PDF 打不開”時會把問題直接歸結為代碼 bug但更常見的原因是文件訪問權限或路徑拼接錯誤。用 curl 可以快速定位。先測公共讀文件curl -I https://your-bucket.oss-cn-hangzhou.aliyuncs.com/projects/2025/04/readme.pdf正常響應會返回200 OK和Content-Length。如果返回403 AccessDenied說明文件不是公共讀需要改用簽名 URL 訪問。再測簽名 URLcurl -I https://your-bucket.oss-cn-hangzhou.aliyuncs.com/projects/2025/04/readme.pdf?Expires1720000000SignaturexxxxAccessKeyIdxxxx如果簽名 URL 能訪問而普通 URL 不能訪問說明權限策略符合預期。如果簽名 URL 也返回 403優先檢查系統時間是否準確簽名 URL 的過期時間與服務器本地時間偏差不要超過 5 分鐘。4.4 CORS 配置瀏覽器上傳失敗的隱形原因curl 能訪問對象存儲不代表瀏覽器端能正常上傳。瀏覽器的跨域限制要求對象存儲必須配置 CORS 規則否則前端會把請求攔截掉。以阿里云 OSS 的 CORS 配置為例通常需要允許的來源、方法、請求頭如下配置項推薦值說明來源https://webui.example.com不要用*除非是公開演示環境允許 MethodsGET, POST, PUT, DELETE上傳通常用 PUT下載用 GET允許 Headers*允許所有請求頭便于攜帶 Content-Type暴露 HeadersETag分片上傳等場景需要暴露響應頭緩存時間600 秒瀏覽器緩存預檢結果瀏覽器上傳失敗時F12 控制臺通常會看到類似Access to XMLHttpRequest ... has been blocked by CORS policy的報錯。這時不要去后端翻代碼先去對象存儲控制臺檢查 CORS 規則是否生效。5. 運行驗證從啟動日志到功能驗收5.1 啟動日志應該看到哪些關鍵信息Docker 部署完成后第一步是查看運行狀態和日志docker ps docker logs -f llms-py-webui一個正常的啟動流程通常會出現以下階段配置加載完成打印當前環境變量名但不會打印完整密碼。數據庫連接成功執行遷移腳本。對象存儲連接成功校驗或者創建 bucket。模型服務連接檢測打印可用模型列表。HTTP 服務監聽指定端口。如果日志停留在“連接數據庫”階段說明數據庫配置有問題。如果日志明確報S3ConnectionError或NoSuchBucket先去檢查對象存儲參數。如果日志顯示模型服務連接失敗而 WebUI 還能啟動說明模型服務是懶加載模式要等到第一次會話才會報錯。5.2 功能驗收清單建議部署完成后按下面的清單逐項驗收而不是只登錄頁面看一眼。功能驗收方式預期結果登錄注冊創建新用戶并登錄能進入主頁面會話創建正常Projects新建項目進入項目空間項目會話與普通會話隔離Agent Profiles創建一個運維 Agent 并選擇它對話按 system_prompt 風格回答PDF Studio上傳一個 10 頁以內的 PDF文本提取成功可基于 PDF 提問對象存儲在項目中上傳一個附件文件出現在對象存儲 bucket 中不是本地磁盤1-Click Sharing生成分享鏈接用無痕瀏覽器訪問按設定的權限顯示內容過期后訪問失敗5.3 驗證對象存儲是否真的被使用有些項目在配置了對象存儲后仍可能因為配置項未生效繼續寫本地目錄。驗證方式很簡單往 WebUI 上傳一個文件然后去對象存儲的 bucket 目錄里找看有沒有出現對應的 key。如果 bucket 里始終沒有文件但在服務器上能找到文件說明STORAGE_TYPE配置沒有實際生效或者上傳路徑走的是另一套邏輯。另一條驗證路徑是看數據庫里文件表的存儲路徑前綴SELECT id, name, storage_path, created_at FROM files ORDER BY created_at DESC LIMIT 10;如果storage_path是s3://llms-files/xxx或https://bucket.endpoint/xxx說明已經切換到對象存儲。如果還是/uploads/xxx這種本地相對路徑需要回到 WebUI 的運維配置或配置文件里檢查。6. 常見問題排查按現象倒推原因6.1 部署類問題問題現象可能原因檢查方式處理建議容器啟動后立即退出環境變量缺失或數據庫無法訪問docker logs查看退出前日志補齊環境變量確認數據庫健康鏡像拉取速度慢或超時網絡到鏡像倉庫不穩定執行docker pull測試配置鏡像加速器或換標簽重試頁面能開但無法登錄數據庫初始用戶未創建檢查數據庫表中用戶記錄按官方初始化流程創建管理員登錄后會話丟失Redis/Session 存儲未配置查看會話相關日志配置持久化會話存儲WebUI 域名背后的靜態資源 404前端資源路徑配置錯誤打開瀏覽器控制臺看請求路徑設置正確的PUBLIC_BASE_URL或反向代理路徑6.2 對象存儲和文件類問題問題現象可能原因檢查方式處理建議圖片上傳失敗bucket 不存在或 CORS 未配置瀏覽器控制臺查看 CORS 錯誤創建 bucket配置 CORSPDF 訪問顯示 403文件私有讀未使用簽名 URLcurl 訪問文件 URL打開簽名 URL 功能上傳報簽名不匹配本地時間偏差超過 5 分鐘執行date查看服務器時間配置 NTP 時間同步文件上傳成功但刷新后丟失數據庫文件記錄與對象存儲不一致檢查數據庫文件表確認上傳接口是否同時寫庫和寫存儲中文文件名亂碼URL 編碼處理不當查看對象存儲中的 key使用 UUID 或編碼后的文件名存儲6.3 模型和會話類問題問題現象可能原因檢查方式處理建議保存 Agent Profile 后對話無變化繼續使用了舊會話新建會話再測試修改 Profile 后另開會話模型總是超時模型服務吞吐不足查看模型服務日志加大并發或更換更快的模型PDF 知識庫回答不到內容文檔切片或檢索參數不合理在知識庫中手動搜索關鍵詞調小 chunk_size重建索引分享鏈接打開后提示 502反向代理未轉發或域名配置錯誤curl 查看返回頭檢查 Nginx 到 WebUI 的轉發鏈路6.4 分享鏈接無法訪問的排查鏈路分享鏈接是最容易暴露網絡配置問題的一個功能。從用戶點擊鏈接到頁面展示中間有多個環節。排查時建議按這個順序先確認鏈接本身是否能訪問。用 curl 訪問短鏈接看返回是 200、302 還是 502。再確認短鏈接轉發的目標地址。302 跳轉后要檢查最終 URL 是否指向正確域名。確認目標域名能否解析到服務器。本地可以改 hosts 測試避免 DNS 緩存干擾。確認反向代理配置。Nginx 的 location 是否正確轉發到 WebUI 容器端口。確認分享記錄是否有效。數據庫中看 share_links 表檢查過期時間和資源 ID 是否存在。如果頁面能打開但附件加載失敗回到上一步檢查對象存儲的簽名 URL 和 CORS 配置。注意排查網絡問題時要先抓“能訪問”和“不能訪問”的具體差異比如內網可以訪問而公網不行還是普通瀏覽器可以而無痕模式不行。這些差異能幫助快速縮小問題范圍。7. 最佳實踐從試用走向穩定運行7.1 學習環境與生產環境的分界很多團隊習慣先在一臺服務器上把全部服務跑起來用久了之后發現數據、文件、配置都混在一起難以遷移。建議從一開始就區分兩套環境維度學習/試用環境生產環境數據庫隨 WebUI 容器一起部署使用獨立數據庫實例定期備份對象存儲MinIO 單節點云廠商 OSS 或高可用 MinIO模型服務本地測試模型或 API帶監控和限流的模型網關HTTPS可暫緩必須配置否則分享和附件功能受限日志控制臺輸出集中采集按天歸檔升級可直接拉最新鏡像先備份數據再灰度升級如果團隊決定長期使用這個 WebUI要盡量讓 WebUI 應用本身保持無狀態。會話數據放數據庫文件數據放對象存儲WebUI 容器可以隨時銷毀重建這樣升級、擴容、遷移都容易。7.2 配置管理建議不要把對象存儲的 AccessKey 明文寫在 docker-compose 文件里尤其是包含了 Secret Key 的情況下。建議通過環境變量文件或者密鑰管理服務注入。以 docker-compose 為例可以使用.env文件加載但.env文件不要提交到代碼倉庫。STORAGE_TYPEs3 S3_ACCESS_KEYyour_ak S3_SECRET_KEYyour_sk更嚴格的場景可以用 Vault、KMS 等密鑰管理服務在 WebUI 啟動前把密鑰注入到容器環境變量。生產環境還建議給對象存儲配置獨立的 IAM 權限只允許 WebUI 訪問特定 bucket 的指定前綴避免出現 AccessKey 泄露后的橫向越權。7.3 數據備份和容災WebUI 的數據可以分為三類數據庫中的業務數據、對象存儲中的文件、配置文件。備份策略要覆蓋這三類。數據庫可以用定時任務執行 pg_dump 或類似工具pg_dump llms /backup/llms_$(date %Y%m%d).sql對象存儲建議開啟版本控制或跨區域復制。如果使用的是云廠商對象存儲可以直接開啟服務端版本控制用來防止誤刪和文件覆蓋。自建 MinIO 也要開啟 Versioning并定期把 bucket 同步到異地存儲。7.4 二次開發擴展點如果一個 WebUI 項目滿足不了所有需求通常可以在以下幾個位置做二次開發擴展位置典型需求實現方式認證層對接企業 SSO/LDAP實現自定義認證過濾器或 OAuth 插件Agent 工具層接入內部運維系統新增自定義工具注冊到工具列表PDF 解析層增加 OCR 能力接入 Tesseract 或云 OCR 服務分享服務增加分享審批流在生成分享鏈接前插入審批邏輯數據層切換向量數據庫替換向量存儲實現保持接口一致擴展時最需要注意的是保持主流程穩定。新增功能最好做成獨立服務或插件不要輕易修改核心會話管理邏輯。因為這類改動容易影響所有用戶。7.5 給團隊的落地建議把 Llms.py v4 這樣的 WebUI 真正引入團隊可以按三個階段推進。第一階段先讓 3 到 5 名核心成員試用重點驗證 Projects 和 Agent Profiles 是否符合協作方式。第二階段把團隊常用文檔導入 PDF Studio建立知識庫觀察模型答案的準確率。第三階段再開放分享功能制定分享審批規則進入穩定運行。整個過程中最值得投入的是 Agent Profiles 和知識庫的調優。一個好的 Agent Profile 可以大幅減少用戶重復描述一個結構清晰的知識庫能讓 PDF 回答效果明顯提升。界面上增加和刪除功能很容易難的是把這些功能固化成團隊可復用的工作流。這也是 v4 從“工具”走向“工作臺”的核心價值所在。