高階調優環境變數
一般無需修改
本頁列出的變數控制系統內部行為(併發、重試、超時、批次大小等)。不設定時全部使用預設值,行為與官方釋出版完全一致。 僅在明確理解影響時才調整;核心部署變數見核心環境變數。
0. 總覽
共 301 個環境變數,按子系統分佈:
| 子系統 | 變數數 |
|---|---|
| 1. LLM 對話 / 編排 / 內部模型呼叫 | 65 |
| 2. RAG 文件解析 / 向量檢索 | 59 |
| 3. 沙盒程式碼執行 | 9 |
| 4. 內建工具(搜尋 / Python / 網路安全) | 14 |
| 5. 會話 / 訊息 / 流式 API | 73 |
| 6. 認證 / 會話 / 驗證碼 | 15 |
| 7. 上傳 / 檔案 / 分享 | 14 |
| 8. 管理後臺任務(備份 / 向量維護 / 兌換碼) | 20 |
| 9. 伺服器啟動 / 配置載入 | 3 |
| 10. 前端 | 23 |
| 合計 | 295 |
1. LLM 對話 / 編排 / 內部模型呼叫
主對話流、工具迴圈、TTFT 看門狗,以及壓縮 / 記憶 / 稽核 / 校驗 / 深度研究 / 文件生成等內部模型呼叫。
| 環境變數 | 型別 | 預設值 | 說明 |
|---|---|---|---|
AIVORY_LLM_APPLY_ANTHROPIC_THINKING_SETTINGS | int | 2048 | 在抬高 Anthropic max_tokens 時,於擴充套件思考 budget_tokens 之上追加的 token 餘量,使輸出能容納思考加回復。 |
AIVORY_LLM_MAX_ITER | int | 20 | Anthropic 流式 Stream 迴圈中原生工具呼叫輪次(Messages API 呼叫次數)的硬性上限。 |
AIVORY_LLM_MAX_TOK | int | 64000 | 流式工具迴圈中每次 Anthropic Messages 請求傳送的預設 max_tokens(除非請求自身覆蓋)。 |
AIVORY_LLM_MAX_TOK_2 | int | 64000 | 提示詞工具模式(promptRunOnce)下單次 Anthropic 呼叫的預設 max_tokens(除非請求覆蓋)。 |
AIVORY_LLM_INFLIGHT_GRACE | duration | 15*time.Minute | status=streaming 的助手訊息行在被視為崩潰殘留之前免於被摘要處理的寬限時長。 |
AIVORY_LLM_T | int | 4 | 在壓縮 token 估算中為每條訊息追加的結構性 token 開銷(角色標記、外框)。 |
AIVORY_LLM_MESSAGE_TOKEN_MEMO_CACHE_BOUND | int | 100000 | 每訊息 token 估算記憶快取 map 在被原地重置以限制記憶體前允許的最大條目數。 |
AIVORY_LLM_SUMMARY_TOKENS_CLAMP_FLOOR | int | 256 | 管理端 summary_max_tokens 設定的下限;配置值小於該下限時重置為預設摘要預算。 |
AIVORY_LLM_BIG_TOKEN_OVERFLOW_NUM | int | 5 | 本輪觸發內聯摘要的 token 觸發閾值倍數(num/den,預設 5/4 = 1.25 倍)的分子。 |
AIVORY_LLM_BIG_TOKEN_OVERFLOW_DEN | int | 4 | 本輪觸發內聯摘要的 token 觸發閾值倍數(num/den,預設 5/4 = 1.25 倍)的分母。 |
AIVORY_LLM_INLINE_COMPACTION_BACKLOG_FACTOR | int | 3 | 未摘要尾部長度相對 keepRounds*2 的倍數,超過則本輪強制內聯(而非非同步)壓縮。 |
AIVORY_LLM_SUMMARY_MERGE_BUDGET | int | 2048 | 觸發把舊摘要塊摺疊為更粗塊的累計摘要 token 閾值。 |
AIVORY_LLM_DETERMINISTIC_SUMMARY_CLIP_BUDGET | int | 300 | 當任務模型摘要返回為空時,對較舊輪次做確定性回退裁剪所用的 token 預算。 |
AIVORY_LLM_ATTEMPT | int | 4 | 向會話 summary_blocks 追加新摘要塊時的最大比較並交換(CAS)重試次數。 |
AIVORY_LLM_ITER | int | 3 | 為把某會話路徑的摘要 token 壓回預算內所執行的最大重複摺疊迭代次數。 |
AIVORY_LLM_MAX_OUTPUT_TOKENS_5 | int | 2 | 作用於合併預算以推導摺疊呼叫的 MaxOutputTokens 及確定性裁剪長度的除數。 |
AIVORY_LLM_CHUNK_SIZE | int | 400 | 重新校驗已摘要訊息是否仍存在時每條 SQL IN(...) 查詢的訊息 ID 批大小(用於規避驅動佔位符上限分塊)。 |
AIVORY_LLM_DR_MAX_ROUNDS | int | 4 | 深度研究引擎執行的 搜尋再驗證 輪次數量的硬性上限。 |
AIVORY_LLM_DR_QUERIES_PER_ROUND | int | 6 | 每個深度研究輪次派發的最大搜索查詢數。 |
AIVORY_LLM_DR_FETCH_PER_ROUND | int | 5 | 每個深度研究輪次挑選並讀取的最大新來源候選數。 |
AIVORY_LLM_DR_MIN_DEEP_READS | int | 5 | 深度研究在允許收尾前必須達到的最小深讀來源數(即便覆蓋缺口已看似充足)。 |
AIVORY_LLM_DR_SEARCH_TOP_K | int | 8 | 每次深度研究搜尋呼叫請求的結果數(top_k)。 |
AIVORY_LLM_DR_WALL_CLOCK | duration | 5*time.Minute | 限定整個深度研究引擎執行的總牆鍾超時。 |
AIVORY_LLM_DR_CALL_TIMEOUT | duration | 30*time.Second | 單次深度研究搜尋或抓取請求的每呼叫超時。 |
AIVORY_LLM_DEEP_RESEARCH_VALIDATE_TIMEOUT | duration | 75*time.Second | 限定深度研究在撰寫前審查薄弱/單來源論斷的 validate 階段的超時。 |
AIVORY_LLM_SCORE_A | float | 9 | 為 URL 信譽等級為 A 的候選來源所加的排序分(信譽在排序中佔主導)。 |
AIVORY_LLM_SCORE_B | float | 6 | 為 URL 信譽等級為 B 的候選來源所加的排序分。 |
AIVORY_LLM_SCORE_C | float | 3 | 為 URL 信譽等級為 C 的候選來源所加的排序分。 |
AIVORY_LLM_SCORE_KW | float | 1 | 候選來源標題或摘要中每命中一個問題關鍵詞(長度大於 3)所加的排序分。 |
AIVORY_LLM_SCORE_FRESH_DOMAIN | float | 2 | 為來自本次研究尚未見過域名的候選來源所加的排序加分。 |
AIVORY_LLM_MAX_ITER_4 | int | 20 | Gemini 流式 Stream 迴圈中原生工具呼叫輪次(generateContent 呼叫次數)的硬性上限。 |
AIVORY_LLM_GEMINI_MAX_TOK | int | 64000 | Gemini 流式迴圈中每次請求 generationConfig.maxOutputTokens 的預設值(除非請求覆蓋)。 |
AIVORY_LLM_GEMINI_MAX_TOK_2 | int | 64000 | Gemini 提示詞工具模式呼叫中 generationConfig.maxOutputTokens 的預設值(除非請求覆蓋)。 |
AIVORY_LLM_CONF | float | 0.7 | 當提取器返回的置信度不在 (0,1] 範圍內時,為抽取記憶賦予的回退置信度。 |
AIVORY_LLM_OFFICIAL_TOOL_SPEC | string | "medium" | 傳給 OpenAI 官方內建 web_search 工具規格的 search_context_size 取值。 |
AIVORY_LLM_MAX_ITER_2 | int | 20 | OpenAI streamChat(Chat Completions)迴圈中原生工具呼叫輪次的硬性上限。 |
AIVORY_LLM_MAX_ITER_3 | int | 20 | OpenAI streamResponses(Responses API)迴圈中原生工具呼叫輪次的硬性上限。 |
AIVORY_LLM_INLINE_QUOTE_SOURCE_INJECTION_CAP | int | 8000 | 內聯引用子對話中,隨高亮摘錄一併注入的來源訊息文本在截斷前的最大字元(rune)數。 |
AIVORY_LLM_SANDBOX_EXEC_TIMEOUT_CLAMP_RANGE_MAX | int | 600 | 為 python_execute 呼叫上下文計時時,管理員配置的 sandbox_exec_timeout_sec 被鉗制的上限(秒)。 |
AIVORY_LLM_SANDBOX_EXEC_TIMEOUT_CLAMP_RANGE_MIN | int | 10 | 為 python_execute 呼叫上下文計時時,管理員配置的 sandbox_exec_timeout_sec 被鉗制的下限(秒)。 |
AIVORY_LLM_SANDBOX_EXEC_CTX_SAFETY_MARGIN | duration | 150*time.Second | 為 python_execute 上下文計時時,在鉗制後的沙箱執行超時之上額外增加的餘量,使上下文比沙箱 HTTP 客戶端更晚超時。 |
AIVORY_LLM_PER_TURN_TOOL_LIMITS_WEB_SEARCH | int | 16 | 普通模式下每條訊息允許的 web_search 呼叫次數上限;超出即令該呼叫失敗。 |
AIVORY_LLM_PER_TURN_TOOL_LIMITS_WEB_FETCH | int | 12 | 普通模式下每條訊息允許的 web_fetch 呼叫次數上限;超出即令該呼叫失敗。 |
AIVORY_LLM_PER_TURN_TOOL_LIMITS_FETCH_IMAGE | int | 16 | 普通模式下每條訊息允許的 fetch_image 呼叫次數上限;超出即令該呼叫失敗。 |
AIVORY_LLM_PER_TURN_TOOL_LIMITS_IMAGE_GENERATE | int | 8 | 普通模式下每條訊息允許的 image_generate 呼叫次數上限;超出即令該呼叫失敗。 |
AIVORY_LLM_PER_TURN_TOOL_LIMITS_PYTHON_EXECUTE | int | 16 | 普通模式下每條訊息允許的 python_execute 沙箱執行次數上限;超出即令該呼叫失敗。 |
AIVORY_LLM_DEEP_RESEARCH_TOOL_LIMITS_WEB_SEARCH | int | 40 | 深度研究執行時每條訊息允許的 web_search 呼叫次數上限;超出即令該呼叫失敗。 |
AIVORY_LLM_DEEP_RESEARCH_TOOL_LIMITS_WEB_FETCH | int | 25 | 深度研究執行時每條訊息允許的 web_fetch 呼叫次數上限;超出即令該呼叫失敗。 |
AIVORY_LLM_DEEP_RESEARCH_TOOL_LIMITS_FETCH_IMAGE | int | 12 | 深度研究執行時每條訊息允許的 fetch_image 呼叫次數上限;超出即令該呼叫失敗。 |
AIVORY_LLM_DEEP_RESEARCH_TOOL_LIMITS_IMAGE_GENERATE | int | 4 | 深度研究執行時每條訊息允許的 image_generate 呼叫次數上限;超出即令該呼叫失敗。 |
AIVORY_LLM_DEEP_RESEARCH_TOOL_LIMITS_PYTHON_EXECUTE | int | 8 | 深度研究執行時每條訊息允許的 python_execute 沙箱執行次數上限;超出即令該呼叫失敗。 |
AIVORY_LLM_MAX_TOOL_CALLS_PER_TURN | int | 48 | 普通模式下每條訊息跨所有工具的工具呼叫總數全域性上限,疊加在各工具單獨上限之上。 |
AIVORY_LLM_MAX_TOOL_CALLS_PER_TURN_DEEP | int | 150 | 深度研究執行時每條訊息跨所有工具的工具呼叫總數全域性上限。 |
AIVORY_LLM_TOOL_TIMEOUTS | duration | 10*time.Second | 單次 web_search 工具呼叫的每次呼叫超時上限。 |
AIVORY_LLM_TOOL_TIMEOUTS_2 | duration | 15*time.Second | 單次 web_fetch 工具呼叫的每次呼叫超時上限。 |
AIVORY_LLM_TOOL_TIMEOUTS_3 | duration | 600*time.Second | 單次 image_generate 工具呼叫的每次呼叫超時上限(為遲緩的第三方影像閘道器留出較寬視窗)。 |
AIVORY_LLM_TOOL_TIMEOUT_DEFAULT | duration | 100*time.Second | 未在按型別配置的 toolTimeouts 對映中列出的工具所用的每次呼叫回退超時。 |
AIVORY_LLM_PROMPT_MAX_ITER | int | 10 | 提示模式工具迴圈在本輪結束前的最大迭代次數(每次迭代 = 一次模型生成加可選的工具呼叫)。 |
AIVORY_LLM_PROMPT_MAX_RETRY | int | 2 | 提示模式下重發格式錯誤的 <tool_call> JSON 或重試失敗工具執行的最大重試次數。 |
AIVORY_LLM_PROVIDER_REQUEST_BODY_MAX_BYTES | int | 128*1024 | 用於診斷的已捕獲供應商請求體/請求頭 JSON 快照被鉗制到的最大長度。 |
AIVORY_LLM_PROVIDER_REQUEST_VALUE_MAX_BYTES | int | 8*1024 | 每個單獨捕獲的供應商請求值(URL、請求頭值)被鉗制到的最大長度。 |
AIVORY_LLM_IMAGE_DOCUMENT_FLAT_TOKEN_ALLOWANCE | int | 1024 | 估算請求 token 時為每個 image/document 塊計入的固定 token 數,因為 base64 無法按文本分詞。 |
AIVORY_LLM_OUTPUT_RESERVE | int | 2000 | 計算預檢積分可負擔性估算時,在估算輸入 token 之上加入的固定輸出 token 預留量。 |
AIVORY_LLM_MAX_CONCURRENT_TOOLS | int | 4 | 單輪內併發執行的工具數上限(限制併發執行器扇出的訊號量容量)。 |
AIVORY_LLM_VCTX | duration | 45*time.Second | 限制答案生成後校驗/審計 LLM 呼叫的超時,避免遲緩的跨供應商審計拖住本輪。 |
2. RAG 文件解析 / 向量檢索
文件分塊、Embedding 批次與併發、Qdrant 客戶端、MinerU OCR 輪詢等。
| 環境變數 | 型別 | 預設值 | 說明 |
|---|---|---|---|
AIVORY_RAG_EMBEDDING_RETRY_DELAY | duration | time.Second | 嵌入批次重試之間指數退避的基礎延遲,按 2^min(嘗試次數,4) 放大。 |
AIVORY_RAG_EMBEDDING_RETRY_DELAY_2 | duration | 30*time.Second | 計算出的嵌入重試退避延遲的上限。 |
AIVORY_RAG_EMBEDDING_RETRY_DELAY_3 | duration | 1000*time.Millisecond | 為每次嵌入重試退避延遲新增的隨機抖動範圍,用於打散併發批次的同步性。 |
AIVORY_RAG_DASH_SCOPE_EMBED_CONCURRENCY | int | 2 | 當供應商為 DashScope 時,每個文件併發的上游嵌入批次數上限。 |
AIVORY_RAG_DASH_SCOPE_GLOBAL_EMBED_CONCURRENCY | int | 2 | 程序級併發 DashScope 嵌入請求數上限(共享槽位訊號量的容量)。 |
AIVORY_RAG_DASH_SCOPE_EMBED_ATTEMPT_TIMEOUT | duration | 60*time.Second | DashScope 嵌入呼叫的單次嘗試請求超時,設在客戶端 3 分鐘上限之下,使卡住的呼叫可見地失敗。 |
AIVORY_RAG_EMBED_CONCURRENCY | int | 4 | 非 DashScope 供應商每個文件併發的上游嵌入批次數上限。 |
AIVORY_RAG_MAX_ATTEMPTS | int | 2 | 單個嵌入批次 POST 在放棄前的最大嘗試次數(瞬時失敗時帶退避重試)。 |
AIVORY_RAG_PDF_INSPECTION_TIMEOUT | duration | 8*time.Second | 父程序對子程序 PDF 文本層檢測探針強制施加的截止時間,到期即將其殺掉。 |
AIVORY_RAG_OFFICE_XML_ZIP_ENTRY_READ_CAP | int64 | 16*1024*1024 | Office 純文本提取時,讀取每個 DOCX/PPTX zip 條目(正文/頁首/頁尾/幻燈片 XML)的位元組上限。 |
AIVORY_RAG_PDF_INSPECTION_SAMPLE_LIMIT | int | 3 | 探測 PDF 是掃描件還是原生數字文本時,均勻抽樣的最大頁數。 |
AIVORY_RAG_PDF_THIN_CHARS_PER_PAGE | int | 200 | 低於此每抽樣頁字元數閾值時,含圖 PDF 被標記為“文字稀疏”並轉交 OCR。 |
AIVORY_RAG_CMD_WAIT_DELAY | duration | 500*time.Millisecond | PDF 檢測子程序上下文超時後,強制殺死前的寬限期(cmd.WaitDelay)。 |
AIVORY_RAG_PDF_RAW_SIGNALS_STRONG_SCAN_IMAGE | int | 5 | 原始位元組“強掃描件”判定 imageCountN >= pagesM 中的影像數乘子,用於判定 PDF 為純影像件。 |
AIVORY_RAG_PDF_RAW_SIGNALS_STRONG_SCAN_PAGE | int | 4 | 原始位元組“強掃描件”判定 imageCountN >= pagesM 中的頁數乘子,用於判定 PDF 為純影像件。 |
AIVORY_RAG_MINERU_SOURCE_OBJECT_CLEANUP_TIMEOUT | duration | 30*time.Second | 解析後盡力刪除為 MinerU OCR 上傳的桶內源物件時的超時時限。 |
AIVORY_RAG_MINERU_POLL_DEADLINE | duration | 20*time.Minute | 輪詢 MinerU 抽取任務等待 done/failed 狀態整個迴圈的總時限上限。 |
AIVORY_RAG_MINERUZIPCLIENT_TIMEOUT | duration | 5*time.Minute | 經 SSRF 防護下載 MinerU 結果 zip 的 HTTP 客戶端超時。 |
AIVORY_RAG_FULL_MD_READ_CAP_INSIDE_ZIP | int64 | 32*1024*1024 | 從 MinerU 結果 zip 內讀取 full.md markdown 正文的位元組上限。 |
AIVORY_RAG_MAX_ZIP | int64 | 500*1024*1024 | 下載 MinerU 結果 zip 的位元組上限;超出則拒絕而不緩衝進記憶體。 |
AIVORY_RAG_MINERUCLIENT_TIMEOUT | duration | 5*time.Minute | 呼叫 MinerU 雲 API 提交、輪詢、下載各次往返的 http.Client 超時。 |
AIVORY_RAG_MINERU_SOURCE_TTLSECONDS | int | 60*60 | 交給 MinerU 的源文件預簽名 GET URL 的有效期(秒)。 |
AIVORY_RAG_RAG_FAST_QUEUE_CONCURRENCY | int | 4 | 服務文本/表格文件的“rag-fast”攝取通道的 asynq 工作併發數。 |
AIVORY_RAG_RAG_SLOW_QUEUE_CONCURRENCY | int | 4 | 服務 OCR/重型文件的“rag”慢速攝取通道的 asynq 工作併發數。 |
AIVORY_RAG_INGEST_PIPELINE_TIMEOUT | duration | 70*time.Minute | 每個文件的完整解析/嵌入攝取流水線(runIngestWithRetries)執行的上下文時限。 |
AIVORY_RAG_INGEST_TASK_TIMEOUT | duration | 75*time.Minute | rag.ingest 任務的 asynq 單任務處理超時(asynq.Timeout)。 |
AIVORY_RAG_INGEST_UNIQUE_TTL | duration | 80*time.Minute | asynq 唯一性鎖 TTL(asynq.Unique),抑制同一文件的重複入隊。 |
AIVORY_RAG_INGEST_HEARTBEAT_INTERVAL | duration | 30*time.Second | 攝取心跳寫入(TouchDocumentIngest)的間隔,使執行中的文件不被判為過期。 |
AIVORY_RAG_INGEST_STALE_AFTER | duration | 4*time.Minute | 解析/嵌入中的文件心跳超過此時長即視為被遺棄並回收重新入隊。 |
AIVORY_RAG_INGEST_PENDING_STALE_AFTER | duration | ingestUniqueTTL | 仍處於“pending”的文件超過此時長即視為卡住並回收重新入隊。 |
AIVORY_RAG_INGEST_RECOVERY_INTERVAL | duration | time.Minute | 回收過期被遺棄攝取文件的恢復迴圈的掃描間隔。 |
AIVORY_RAG_INGEST_FINALIZE_TIMEOUT | duration | 30*time.Second | 終結失敗攝取時,向量庫 DeleteByDocument 清理的超時時限。 |
AIVORY_RAG_INGEST_ASYNQ_LEASE_MAX_RETRIES | int | 1 | 為租約/程序丟失預留的 asynq MaxRetry 次數;處理器失敗在流水線內單獨重試。 |
AIVORY_RAG_INGEST_ASYNQ_RETRY_DELAY | duration | 2*time.Minute | asynq 在重跑租約丟失的攝取任務前等待的延遲(RetryDelayFunc)。 |
AIVORY_RAG_INGEST_QUEUE_NAME | duration | 2*time.Second | 用於將文件分入快/慢攝取佇列的 GetDocument 查詢超時時限。 |
AIVORY_RAG_RUN_INGEST_WITH_RETRIES | int | 3 | 文件被終結為失敗前,整條流水線攝取的最大嘗試次數。 |
AIVORY_RAG_RUN_INGEST_WITH_RETRIES_2 | duration | 3*time.Second | 整條流水線攝取重試之間的基礎退避,按嘗試次數遞乘。 |
AIVORY_RAG_START_INGEST_HEARTBEAT | duration | 5*time.Second | 每次攝取心跳寫入(TouchDocumentIngest)的超時時限。 |
AIVORY_RAG_FINALIZE_CHUNK_CLEANUP_TIMEOUT | duration | 10*time.Second | 終結失敗攝取時,DeleteChunksByDocument 清理的超時時限。 |
AIVORY_RAG_FINALIZE_STATUS_TIMEOUT | duration | 10*time.Second | 將失敗文件標記為“failed”的終態 UpdateDocumentStatus 寫入的超時時限。 |
AIVORY_RAG_DENSE_SEARCH_LEG_LIMIT | int | 30 | 混合檢索中稠密/向量分支(vec.Search)請求的 Top-N 命中數。 |
AIVORY_RAG_KEYWORD_SEARCH_LEG_LIMIT | int | 30 | 混合檢索中關鍵詞分支(vec.SearchKeyword)請求的 Top-N 命中數。 |
AIVORY_RAG_SNIPPET_OF | int | 240 | 呼叫方未指定上限時,結果摘要的預設位元組長度上限(按 rune 安全截斷)。 |
AIVORY_RAG_SPLIT_PARAGRAPHS_AND_TABLES | int | 800 | 低於此位元組長度的影像 markdown 段落被作為單個原子塊保留而不再拆分。 |
AIVORY_RAG_ROUTER_CALL_TIMEOUT | duration | 12*time.Second | 首 token 熱路徑上任務路由 JSON LLM 呼叫(task.router)在回退到普通檢索前的超時時限。 |
AIVORY_RAG_MAP_REDUCE_SUMMARISE | int | 200 | map-reduce 分組摘要提示中向任務模型要求的中文字數上限(≤N 字)。 |
AIVORY_RAG_COLLECT_DOC_HINTS | int | 120 | 路由器文件提示行中為消解指代而保留的每個文件正文的前導位元組數。 |
AIVORY_RAG_COLLECT_DOC_HINTS_2 | int | 12 | 為檢索路由器收集的每文件提示行的最大數量。 |
AIVORY_RAG_FUSE_RECIPROCAL_RANK | int | 60 | 融合向量與關鍵詞兩路檢索的倒數排名融合公式 1/(rank+k) 中的排名常數 k。 |
AIVORY_RAG_RETRIEVED_SNIPPET_CHARS | int | 2000 | expandHit 在注入前圍繞每個檢索命中塊構建的上下文視窗位元組預算。 |
AIVORY_RAG_CHILD_TARGET_CHARS | int | 2000 | 合併切分原子單元時每個嵌入子塊所趨向的目標位元組長度。 |
AIVORY_RAG_PARENT_TARGET_CHARS | int | 4800 | 父級章節正文為檢索時上下文而被截斷的位元組長度。 |
AIVORY_RAG_CHUNK_OVERLAP_CHARS | int | 250 | 作為滑動視窗重疊而加到下一個子塊前面的上一子塊尾部位元組數。 |
AIVORY_RAG_MAPREDUCE_GROUPTOKENS | int | 6000 | 對超預算語料做 map-reduce 摘要時每個塊分組的估算 token 預算。 |
AIVORY_RAG_MAPREDUCE_MAXGROUPS | int | 8 | map-reduce 摘要器對單次查詢處理的塊分組最大數量。 |
AIVORY_RAG_BATCH_SIZE | int | 64 | 管理端重建向量時每次 Embed 呼叫嵌入的塊數量。 |
AIVORY_VECTOR_QDRANT_SCROLL_PAGE_SIZE_EXISTINGCHUNKIDS | int | 256 | 列出索引中已存在的塊 ID 時每個 Qdrant scroll 頁獲取的點數量。 |
AIVORY_VECTOR_QDRANT_SCROLL_PAGE_SIZE_VECTORCHUNKSTATUSES | int | 256 | 為管理端向量狀態審計掃描載荷與向量時每個 Qdrant scroll 頁獲取的點數量。 |
AIVORY_VECTOR_DELETE_CONCURRENCY | int | 4 | 跨所有維度清除某文件的點時按集合併發刪除請求的最大數量。 |
3. 沙盒程式碼執行
python_execute 沙盒。Go 側變數需重啟 API 程序生效;SANDBOX_* 變數作用於 sandbox-service 程序,需重啟該服務生效。
| 環境變數 | 型別 | 預設值 | 說明 |
|---|---|---|---|
SANDBOX_MAX_OUTPUT_BYTES | int | 32768 | 沙箱截斷所捕獲的 exec stdout/stderr 流的位元組上限。 |
SANDBOX_MAX_ARTIFACT_BYTES | int | 20971520 | 沙箱收集單個產出檔案的最大位元組大小。 |
SANDBOX_S3_MAX_ATTEMPTS | int | 3 | 限定每次 S3 儲存 SDK 呼叫的 botocore max_attempts 重試次數。 |
SANDBOX_S3_CONNECT_TIMEOUT_S | float | 10 | 應用於每次 S3 儲存 SDK 呼叫的連線超時(秒)。 |
SANDBOX_S3_READ_TIMEOUT_S | float | 120 | 應用於每次 S3 儲存 SDK 呼叫的讀取超時(秒)。 |
SANDBOX_OSS_CONNECT_TIMEOUT_S | float | 30 | 阿里雲 OSS bucket 客戶端的連線超時(秒)。 |
AIVORY_SANDBOX_MAX_SANDBOX_RESP_BYTES | int64 | 256<<20 | 每次 exec 呼叫解碼的 sidecar HTTP 響應體位元組上限,防止 API 程序 OOM。 |
AIVORY_SANDBOX_EXEC_CLIENT_OVERHEAD | duration | 120*time.Second | 在每次 exec 上限之上追加的時長,用於設定沙箱 HTTP 客戶端超時,以覆蓋 sidecar 截止後的收尾工作。 |
AIVORY_SANDBOX_SANDBOX_ERROR_BODY_READ_CAP | int64 | 64<<10 | 讀取 4xx/5xx sidecar 錯誤響應體用於錯誤資訊的位元組上限。 |
4. 內建工具(搜尋 / Python / 網路安全)
web_search 結果條數與超時、Python 安全模式、SSRF / 網路安全護欄等。
| 環境變數 | 型別 | 預設值 | 說明 |
|---|---|---|---|
AIVORY_TOOLS_IN_TOP_K | int | 5 | 模型呼叫未指定 top_k 時 web_search 工具的預設結果數量。 |
AIVORY_TOOLS_WEB_FETCH_RESPONSE_BODY_READ_CAP | int64 | 256*1024 | web_fetch 在剝離 HTML 前讀取的 HTTP 響應體位元組上限。 |
AIVORY_TOOLS_WEB_FETCH_EXTRACTED_TEXT_CHAR_CAP | int | 32000 | web_fetch 剝離 HTML 後的文本在以省略標記截斷前的字元上限。 |
AIVORY_TOOLS_PYTHON_EXECUTE_UPLOAD_STAGING_FILE_SIZE | int64 | 20*1024*1024 | 向 python 沙箱暫存檔案時,超過該值則跳過某個會話上傳檔案的單檔案大小上限。 |
AIVORY_TOOLS_PYTHON_EXECUTE_IMAGE_ARTIFACT_STAGING_SIZE | int64 | 20*1024*1024 | 向 python 沙箱暫存時,超過該值則跳過某個已生成影像產物的單檔案大小上限。 |
AIVORY_TOOLS_PYTHON_EXECUTE_STDOUT_STDERR_TRUNCATION_CAP | int | 32*1024 | python_execute 的 stdout/stderr 在呈現給模型前截斷的字元上限。 |
AIVORY_TOOLS_IN_N | int | 4 | 單次 image_generate 呼叫可請求的最大影像數量。 |
AIVORY_TOOLS_IN_SIZE | string | "1024x1024" | image_generate 呼叫未指定尺寸時使用的預設寬×高影像尺寸。 |
AIVORY_TOOLS_DAILY_IMAGE_LIMIT_RESET_WINDOW | duration | 24*time.Hour | 計算每使用者影像生成配額賬本起始邊界時對 Now() 取整的時間視窗。 |
AIVORY_TOOLS_IMAGE_IMAGE_INPUT_IMAGE_CAP | int | 3 | 圖生圖呼叫載入的參考輸入影像的最大數量。 |
AIVORY_TOOLS_FETCHREMOTEIMAGE_DOWNLOAD_CAP | int64 | 32<<20 | 通過 SSRF 安全客戶端下載影像 API 響應中返回的影像 URL 的位元組上限。 |
AIVORY_TOOLS_IN_TOP_K_2 | int | 5 | 呼叫未指定 top_k 時 search_knowledge_base 工具的預設片段數量。 |
AIVORY_TOOLS_CONFIDENCE | float | 0.95 | save_memory 工具建立的每條記憶記錄上儲存的置信度分數。 |
AIVORY_TOOLS_MAX_IMG | int64 | 15*1024*1024 | fetch_image 工具下載影像的位元組上限;超出則拒絕該響應。 |
5. 會話 / 訊息 / 流式 API
SSE 心跳、流恢復視窗、生成時長上限、分頁與搜尋上限、訊息路徑快取等。
| 環境變數 | 型別 | 預設值 | 說明 |
|---|---|---|---|
AIVORY_API_LIMIT_2 | int | 200 | list-conversations 介面在請求未提供 limit 引數時的預設分頁大小。 |
AIVORY_API_LIMIT_3 | int | 500 | 會話列表介面 ?limit 查詢引數的硬性上限,超出即鉗制到此值。 |
AIVORY_API_SEARCH_MESSAGE_HIT_LIMIT | int | 40 | 會話搜尋介面返回的訊息正文命中數上限(標題命中另有單獨上限)。 |
AIVORY_API_IMPORT_MAX_CONVERSATIONS | int | 1000 | 單次匯入請求可建立的會話數上限,超出則拒絕匯入。 |
AIVORY_API_IMPORT_MAX_MESSAGES_PER_CONV | int | 10000 | 匯入請求中單個會話允許的訊息數上限,超出則拒絕匯入。 |
AIVORY_API_IMPORT_MAX_CONTENT_BYTES | int | 200*1024 | 匯入時單條訊息正文的位元組上限,超出部分按此位元組數截斷。 |
AIVORY_API_INLINE_THREAD_QUOTE_CAP | int | 4000 | 建立行內子話題時引用文本的最大字元(rune)長度,超出則截斷。 |
AIVORY_API_GETCONVERSATION_ACTIVE_PATH_LIMIT | int | 200 | 獲取會話時活動路徑分頁 ?limit 引數的上限;超過則返回完整路徑。 |
AIVORY_API_LIMIT_4 | int | 30 | 訊息列表介面未提供 ?limit 時的預設尾部視窗分頁大小。 |
AIVORY_API_LISTMESSAGES_PAGE_LIMIT | int | 200 | 訊息列表介面 ?limit 引數可接受的最大值;超出則沿用預設分頁大小。 |
AIVORY_API_RATE_LIMIT_USER | int | 20 | 每使用者限流額度:每分鐘允許的知識庫文件上傳次數上限,超出返回 429。 |
AIVORY_API_CONFIDENCE | float | 0.95 | 使用者手動建立的記憶條目所儲存的置信度分值(0-1 區間)。 |
AIVORY_API_MAX_GEN_DURATION | duration | 90*time.Minute | 單次分離式生成回合的掛鐘超時上限,超時後取消其上下文。 |
AIVORY_API_SSE_PING_HEARTBEAT_POST | duration | 15*time.Second | 傳送訊息流式介面上 SSE 保活 ping 的傳送間隔。 |
AIVORY_API_SSE_PING_HEARTBEAT_REGENERATE | duration | 15*time.Second | 重新生成訊息流式介面上 SSE 保活 ping 的傳送間隔。 |
AIVORY_API_SSE_PING_HEARTBEAT_STREAM | duration | 15*time.Second | 流重連(attach)介面上 SSE 保活 ping 的傳送間隔。 |
AIVORY_API_STREAM_STATUS_RECHECK_INTERVAL | duration | 5*time.Second | 流重連處理器重新輪詢訊息生成狀態以檢測終態的間隔。 |
AIVORY_API_STREAM_REPLAY_BATCH_SIZE | int | 200 | 重連 SSE 流回放/追趕時每批讀取的緩衝流事件數量。 |
AIVORY_API_ONLINE_PRESENCE_TOUCH_THROTTLE | duration | time.Minute | 使用者線上狀態 seen 觸達之間的節流間隔,即 seen 快取標記的 TTL。 |
AIVORY_API_CONCURRENT_GEN_SLOT_SAFETY_TTL | duration | 30*time.Minute | 每使用者併發生成槽計數器的安全 TTL,使失效的佔用槽自動過期。 |
AIVORY_API_REQUEST_SIGNATURE_REPLAY_WINDOW_FUTURE | int64 | 300 | 請求籤名防重放:X-Req-Ts 時間戳落後伺服器時間的最大秒數,超出則視為過期拒絕。 |
AIVORY_API_REQUEST_SIGNATURE_REPLAY_WINDOW_PAST | int64 | 60 | 請求籤名防重放:X-Req-Ts 時間戳領先伺服器時間的最大秒數(時鐘偏移容忍),超出則拒絕。 |
AIVORY_API_CREDIT_MULTIPLIER | float | 5.0 | 將模型輸入+輸出合計價格換算為選擇器中相對積分倍率的除數。 |
AIVORY_API_JSON_REQUEST_BODY_SIZE_CAP | int64 | 4<<20 | JSON 請求體可接受的最大位元組數,超出由 MaxBytesReader 拒絕。 |
AIVORY_API_PROJECT_DETAIL_CONVERSATIONS_PAGE_SIZE | int | 200 | 專案詳情響應中載入的活動會話數量(獲取上限,偏移為 0)。 |
AIVORY_API_RATE_LIMIT_USER_2 | int | 20 | 每使用者限流額度:每分鐘允許的專案文件上傳次數上限,超出返回 429。 |
AIVORY_API_RATE_LIMIT_REGISTER_MAX | int | 5 | POST /api/auth/register 的每 IP 限流額度:每個視窗內允許的最大註冊嘗試次數,超出返回 429。 |
AIVORY_API_RATE_LIMIT_REGISTER_WINDOW | duration | 60*time.Second | POST /api/auth/register 每 IP 限流的滾動視窗時長。 |
AIVORY_API_RATE_LIMIT_LOGIN_MAX | int | 10 | POST /api/auth/login 的每 IP 限流額度:每個視窗內允許的最大登入嘗試次數,超出返回 429。 |
AIVORY_API_RATE_LIMIT_LOGIN_WINDOW | duration | 60*time.Second | POST /api/auth/login 每 IP 限流的滾動視窗時長。 |
AIVORY_API_RATE_LIMIT_LOGIN_2FA_MAX | int | 10 | POST /api/auth/login/2fa 的每 IP 限流額度:每個視窗內允許的最大兩步驗證嘗試次數,超出返回 429。 |
AIVORY_API_RATE_LIMIT_LOGIN_2FA_WINDOW | duration | 60*time.Second | POST /api/auth/login/2fa 每 IP 限流的滾動視窗時長。 |
AIVORY_API_RATE_LIMIT_LOGOUT_MAX | int | 30 | POST /api/auth/logout 的每 IP 限流額度:每個視窗內允許的最大登出請求次數,超出返回 429。 |
AIVORY_API_RATE_LIMIT_LOGOUT_WINDOW | duration | 60*time.Second | POST /api/auth/logout 每 IP 限流的滾動視窗時長。 |
AIVORY_API_RATE_LIMIT_REFRESH_MAX | int | 30 | POST /api/auth/refresh 的每 IP 限流額度:每個視窗內允許的最大令牌重新整理請求次數,超出返回 429。 |
AIVORY_API_RATE_LIMIT_REFRESH_WINDOW | duration | 60*time.Second | POST /api/auth/refresh 每 IP 限流的滾動視窗時長。 |
AIVORY_API_RATE_LIMIT_VERIFY_EMAIL_MAX | int | 10 | POST /api/auth/verify-email 的每 IP 限流額度:每個視窗內允許的最大郵箱驗證嘗試次數,超出返回 429。 |
AIVORY_API_RATE_LIMIT_VERIFY_EMAIL_WINDOW | duration | 5*60*time.Second | POST /api/auth/verify-email 每 IP 限流的滾動視窗時長。 |
AIVORY_API_RATE_LIMIT_SEND_CODE_MAX | int | 3 | 每 IP 在視窗內對 POST /api/auth/send-code(傳送登入/驗證碼郵件)介面的最大請求數。 |
AIVORY_API_RATE_LIMIT_SEND_CODE_WINDOW | duration | 60*time.Second | 統計每 IP 對 /api/auth/send-code 發碼介面請求數的固定時間窗。 |
AIVORY_API_RATE_LIMIT_FORGOT_PASSWORD_MAX | int | 5 | 每 IP 在視窗內對 POST /api/auth/forgot-password(觸發密碼重置郵件)介面的最大請求數。 |
AIVORY_API_RATE_LIMIT_FORGOT_PASSWORD_WINDOW | duration | 15*60*time.Second | 統計每 IP 對 /api/auth/forgot-password 介面請求數的固定時間窗。 |
AIVORY_API_RATE_LIMIT_RESET_PASSWORD_MAX | int | 5 | 每 IP 在視窗內對 POST /api/auth/reset-password(憑碼重置密碼)介面的最大請求數。 |
AIVORY_API_RATE_LIMIT_RESET_PASSWORD_WINDOW | duration | 60*time.Second | 統計每 IP 對 /api/auth/reset-password 介面請求數的固定時間窗。 |
AIVORY_API_RATE_LIMIT_CAPTCHA_ISSUE_MAX | int | 30 | 每 IP 在視窗內對 GET /api/public/captcha(簽發滑塊驗證碼挑戰)介面的最大請求數。 |
AIVORY_API_RATE_LIMIT_CAPTCHA_ISSUE_WINDOW | duration | 60*time.Second | 統計每 IP 對 GET /api/public/captcha 挑戰簽發介面請求數的固定時間窗。 |
AIVORY_API_RATE_LIMIT_CAPTCHA_VERIFY_MAX | int | 60 | 每 IP 在視窗內對 POST /api/public/captcha/verify(校驗驗證碼答案)介面的最大請求數。 |
AIVORY_API_RATE_LIMIT_CAPTCHA_VERIFY_WINDOW | duration | 60*time.Second | 統計每 IP 對 /api/public/captcha/verify 答案校驗介面請求數的固定時間窗。 |
AIVORY_API_RATE_LIMIT_FIRST_RUN_SETUP_MAX | int | 10 | 每 IP 在視窗內對 POST /api/setup(首次執行建立首個管理員)介面的最大請求數。 |
AIVORY_API_RATE_LIMIT_FIRST_RUN_SETUP_WINDOW | duration | 60*time.Second | 統計每 IP 對 POST /api/setup 首次執行引導介面請求數的固定時間窗。 |
AIVORY_API_RATE_LIMIT_PUBLIC_SHARED_CONVERSATION_MAX | int | 60 | 每 IP 在視窗內對 GET /api/public/shared/:token(免登入檢視分享會話)介面的最大請求數。 |
AIVORY_API_RATE_LIMIT_PUBLIC_SHARED_CONVERSATION_WINDOW | duration | 60*time.Second | 統計每 IP 對 /api/public/shared/:token 分享檢視介面請求數的固定時間窗。 |
AIVORY_API_RATE_LIMIT_SHARED_ASSETS_FILES_ARTIFACTS_MAX | int | 240 | 每 IP 在視窗內對分享會話的檔案與產物(artifact)資源路由的最大請求數。 |
AIVORY_API_RATE_LIMIT_SHARED_ASSETS_FILES_ARTIFACTS_WINDOW | duration | 60*time.Second | 統計每 IP 對分享會話檔案/產物資源路由請求數的固定時間窗。 |
AIVORY_API_RATE_LIMIT_OAUTH_START_CALLBACK_HANDOFF_MAX | int | 20 | 每 IP 在視窗內對 OAuth 發起、回撥與跨域交接路由的最大請求數。 |
AIVORY_API_RATE_LIMIT_OAUTH_START_CALLBACK_HANDOFF_WINDOW | duration | 60*time.Second | 統計每 IP 對 OAuth 發起/回撥/交接路由請求數的固定時間窗。 |
AIVORY_API_RATE_LIMIT_PASSWORD_CHANGE_SET_MAX | int | 5 | 每 IP 在視窗內對 /api/me/password 改密與 /api/me/password/set 設密介面的最大請求數。 |
AIVORY_API_RATE_LIMIT_PASSWORD_CHANGE_SET_WINDOW | duration | 60*time.Second | 統計每 IP 對 /api/me/password 改密/設密介面請求數的固定時間窗。 |
AIVORY_API_RATE_LIMIT_IDENTITY_LINK_START_MAX | int | 20 | 每 IP 在視窗內對 POST /api/me/identities/:id/link(發起 OAuth 賬號關聯)介面的最大請求數。 |
AIVORY_API_RATE_LIMIT_IDENTITY_LINK_START_WINDOW | duration | 60*time.Second | 統計每 IP 對 OAuth 身份關聯發起介面請求數的固定時間窗。 |
AIVORY_API_RATE_LIMIT_2FA_SETUP_ENABLE_DISABLE_MAX | int | 10 | 每 IP 在視窗內對 /api/me/2fa 的 setup、enable、disable 各介面的最大請求數。 |
AIVORY_API_RATE_LIMIT_2FA_SETUP_ENABLE_DISABLE_WINDOW | duration | 5*60*time.Second | 統計每 IP 對 2FA setup/enable/disable 介面請求數的固定時間窗。 |
AIVORY_API_RATE_LIMIT_REDEEM_CODE_MAX | int | 10 | 每 IP 在視窗內對 POST /api/me/redeem(兌換碼兌換)介面的最大請求數。 |
AIVORY_API_RATE_LIMIT_REDEEM_CODE_WINDOW | duration | 60*time.Second | 統計每 IP 對 /api/me/redeem 兌換介面請求數的固定時間窗。 |
AIVORY_API_RATE_LIMIT_WORKSPACE_JOIN_MAX | int | 30 | 每 IP 在視窗內對 /api/workspaces/join/:token(邀請資訊與加入)介面的最大請求數。 |
AIVORY_API_RATE_LIMIT_WORKSPACE_JOIN_WINDOW | duration | 60*time.Second | 統計每 IP 對 /api/workspaces/join/:token 介面請求數的固定時間窗。 |
AIVORY_API_SELF_USAGE_LOOKBACK_WINDOW | int | 30 | GET /api/me/usage 統計呼叫者自身訊息數時回溯的天數。 |
AIVORY_API_LIMIT | int | 200 | 管理端工作區列表介面在請求未帶 ?limit 時返回的預設最大工作區數。 |
AIVORY_API_ADMIN_WORKSPACE_DETAIL_CONVERSATIONS_PAGE_SIZE | int | 500 | 管理端工作區詳情(triage)檢視載入的會話數量上限。 |
AIVORY_QUEUE_IN_PROCESS_WORKERS | int | 8 | 程序內後臺任務池的併發 worker 協程數量。 |
AIVORY_QUEUE_PROCESS_JOB_BUFFER | int | 256 | 程序內任務通道的緩衝槽位數;緩衝滿時 Enqueue 將新任務轉入退避回退路徑執行。 |
AIVORY_QUEUE_QUEUE_BACKPRESSURE_JOB_TIMEOUT | duration | 30*time.Minute | 程序內任務緩衝滿時經退避回退協程執行的任務的上下文超時。 |
AIVORY_QUEUE_QUEUE_WORKER_JOB_TIMEOUT | duration | 30*time.Minute | 程序內佇列 worker 執行每個任務時施加的上下文超時。 |
6. 認證 / 會話 / 驗證碼
令牌快取、驗證碼有效期與嘗試次數、TOTP 時窗、OAuth state TTL 等(不含約定俗成的格式常量,如驗證碼位數)。
| 環境變數 | 型別 | 預設值 | 說明 |
|---|---|---|---|
AIVORY_API_MAX_CODE_ATTEMPTS | int | 5 | 對郵寄的驗證/重置驗證碼允許的錯誤嘗試次數,達到後即作廢該碼。 |
AIVORY_API_CODE_FAILURE_COUNTER_TTL | duration | 10*time.Minute | 按郵箱記錄驗證/重置碼錯誤嘗試次數的計數器的存活時長(TTL)。 |
AIVORY_API_MINIMUM_PASSWORD_LENGTH | int | 8 | 註冊及修改密碼時使用者自選賬戶密碼所需的最小字元長度。 |
AIVORY_API_EMAIL_VERIFICATION_CODE_TTL | duration | 10*time.Minute | 郵件傳送的賬戶郵箱驗證碼的有效期。 |
AIVORY_API_PASSWORD_RESET_CODE_TTL | duration | 10*time.Minute | 郵件傳送的密碼重置驗證碼的有效期。 |
AIVORY_API_CAP_TOL | float | 0.04 | 滑塊驗證碼通過時,提交的滑動比例與真實缺口比例之間允許的誤差。 |
AIVORY_API_CAPTCHA_CHALLENGE_CACHE_TTL | duration | 5*time.Minute | 未解答的滑塊拼圖驗證碼挑戰在快取中保持有效的時長。 |
AIVORY_API_CAPTCHA_PASS_TTL | duration | 10*time.Minute | 證明近期已通過驗證碼的簽名通行令牌的有效期。 |
AIVORY_API_OAUTH_2FA_HANDOFF_COOKIE_TTL | duration | 300*time.Second | OAuth 登入後將兩步驗證登入票據傳給前端的短時 HttpOnly Cookie 的 Max-Age。 |
AIVORY_API_OAUTH_STATE_CACHE_TTL | duration | 10*time.Minute | 作為 CSRF 防護的 OAuth 授權流程 state 快取條目的有效期。 |
AIVORY_API_OAUTH_TOKEN_EXCHANGE_CONTEXT_TIMEOUT | duration | 20*time.Second | OAuth 回撥中授權碼換取令牌及拉取使用者資訊的超時上限。 |
AIVORY_API_OAUTH_CROSS_DOMAIN_HANDOFF_TOKEN_TTL | duration | 60*time.Second | 前端用以換取會話的一次性跨域 OAuth 交接令牌的有效期。 |
AIVORY_API_2FA_LOGIN_TICKET_BURN_THRESHOLD | int64 | 5 | 針對某個兩步驗證登入票據允許的錯誤 TOTP 驗證碼次數,達到即作廢該票據。 |
AIVORY_API_ISSUE_TWOFA_TICKET | duration | 5*time.Minute | 密碼正確後、待輸入 TOTP 驗證碼期間所簽發的兩步驗證登入票據的有效期。 |
AIVORY_OAUTH_APPLE_CLIENT_SECRET_JWT_EXPIRY | duration | 30*time.Minute | 生成的 Apple OAuth 客戶端金鑰 JWT 的有效期。 |
7. 上傳 / 檔案 / 分享
圖片處理、儲存清理週期、直傳分片、分享令牌、下載快取 TTL 等。
| 環境變數 | 型別 | 預設值 | 說明 |
|---|---|---|---|
AIVORY_API_ADMIN_ICON_UPLOAD_SIZE | int64 | 256*1024 | 管理員上傳的模型圖示圖片所接受的最大位元組數。 |
AIVORY_API_AUDIO_TRANSCRIPTION_UPSTREAM_HTTP_TIMEOUT | duration | 120*time.Second | 將音訊轉發至上游轉寫 API 的 HTTP 請求的超時時間。 |
AIVORY_API_AUDIO_TRANSCRIPTION_USER_RATE_LIMIT | int | 20 | 單個使用者每分鐘可發起的音訊轉寫請求數上限。 |
AIVORY_API_TRANSCRIPTION_UPSTREAM_RESPONSE_READ_CAP | int64 | 1<<20 | 讀取上游轉寫響應到記憶體的位元組上限。 |
AIVORY_API_UPLOAD_RATE_LIMIT_MAX | int | 20 | 上傳限流視窗內單個使用者可進行的檔案上傳次數上限。 |
AIVORY_API_UPLOAD_RATE_LIMIT_WINDOW | duration | time.Minute | 對使用者檔案上傳進行限流計數的時間視窗。 |
AIVORY_API_OBJECT_STORAGE_DELETE_TIMEOUT_CLEANUP | duration | 30*time.Second | 儲存清理時從物件儲存刪除單個孤立檔案的超時時間。 |
AIVORY_STORAGE_S3_DIRECT_UPLOAD_MIN_CLIENT_TIMEOUT | duration | 20*time.Minute | 直傳 S3/OSS 上傳所需的最小 HTTP 客戶端超時;複用的客戶端低於此值時會新建一個。 |
AIVORY_STORAGE_DIRECT_S3_OSS_UPLOAD_HTTP_CLIENT | duration | 20*time.Minute | 複用客戶端超時過短時,為直傳 S3/OSS 上傳新建的 HTTP 客戶端的超時時間。 |
AIVORY_STORAGE_ALIYUN_OSS_CLIENT_CONNECT_READ_TIMEOUTS_CONNECT | int64 | 30 | 直傳所用阿里雲 OSS 客戶端的連線超時(秒)。 |
AIVORY_STORAGE_ALIYUN_OSS_CLIENT_CONNECT_READ_TIMEOUTS_RW | int64 | 300 | 直傳所用阿里雲 OSS 客戶端的讀寫超時(秒)。 |
AIVORY_STORAGE_PRESIGN_URL_TTL | duration | 3600*time.Second | 呼叫方未指定有效期時,為直傳預簽名 GET URL 應用的過期時間。 |
AIVORY_STORAGE_PRESIGN_URL_TTL_CLAMP_CEILING | duration | 86400*time.Second | 鉗制呼叫方請求的直傳預簽名 GET URL 有效期的上限。 |
AIVORY_STORAGE_SIDECAR_STORAGE_CLIENT_HTTP_TIMEOUT | duration | 5*time.Minute | 呼叫沙箱 sidecar 物件儲存 put/delete 介面的 HTTP 往返超時。 |
8. 管理後臺任務(備份 / 向量維護 / 兌換碼)
備份大小上限與非同步輪詢、向量維護批次、兌換碼上限等。
| 環境變數 | 型別 | 預設值 | 說明 |
|---|---|---|---|
AIVORY_API_BACKUP_EXPORT_JOB_HISTORY_RETENTION | int | 20 | 記憶體歷史中保留的過往備份匯出任務記錄數量,超出後修剪最舊的記錄。 |
AIVORY_API_BACKUP_EXPORT_JOB_RUNTIME | duration | 12*time.Hour | 後臺備份匯出任務被取消前允許的最長實際執行時間。 |
AIVORY_API_USER_DELETE_JOB_RUNTIME | duration | 2*time.Hour | 非同步使用者刪除任務的總執行預算,超時後任務失敗並等待重啟續跑(全步驟冪等)。 |
AIVORY_API_USER_DELETE_FINAL_CLEANUP_TIMEOUT | duration | 1*time.Hour | 刪除任務末段磁碟/物件儲存清理階段的獨立時間預算(不佔用主任務預算);啟動兜底掃描也使用該值。 |
AIVORY_API_USER_DELETE_CONV_BATCH | int | 200 | 刪除任務每個短事務清理的會話數(連同其訊息),批越小對 SQLite 單寫者越友好。 |
AIVORY_API_USER_DELETE_USAGE_BATCH | int | 10000 | 刪除任務每批清理的用量日誌行數。 |
AIVORY_API_USER_DELETE_JOB_HISTORY_RETENTION | int | 20 | 記憶體中保留的使用者刪除任務歷史記錄數。 |
AIVORY_API_USER_DELETE_PROGRESS_EVERY | int | 50 | 向量/磁碟清理階段每處理多少項更新一次進度文本。 |
AIVORY_API_CONFIG_IMPORT_MULTIPART_MEMORY_BUFFER | int64 | 16<<20 | 解析管理員配置匯入 multipart 上傳的記憶體緩衝區;超出部分溢寫到臨時檔案。 |
AIVORY_API_BACKUP_IMPORT_MULTIPART_MEMORY_BUFFER | int64 | 32<<20 | 解析完整備份匯入 multipart 上傳的記憶體緩衝區;超出部分溢寫到臨時檔案。 |
AIVORY_API_MAX_CONFIG_SIZE | int64 | 512<<20 | 匯入管理員配置歸檔時接受的最大請求體大小。 |
AIVORY_API_QDRANT_ARCHIVE_REQUEST_TIMEOUT | duration | 5*time.Minute | 匯出或匯入備份歸檔時呼叫 Qdrant 的單次 HTTP 請求超時。 |
AIVORY_API_QDRANT_EXPORT_SCROLL_PAGE_SIZE | int | 256 | 匯出 Qdrant 集合到歸檔時每個 /points/scroll 頁拉取的點數。 |
AIVORY_API_QDRANT_IMPORT_UPSERT_FLUSH_BATCH_SIZE | int | 128 | 匯入 Qdrant 集合時,每批累積到該點數即刷寫一次 upsert。 |
AIVORY_API_ADMIN_USER_LIST_PAGE_SIZE_CAP | int | 50 | 管理員使用者列表介面在請求未顯式指定 limit 時的預設返回條數。 |
AIVORY_API_ADMIN_CREATED_USER_MIN_PASSWORD_LENGTH | int | 8 | 管理員建立使用者賬戶時強制的最小密碼長度。 |
AIVORY_API_ADMIN_PASSWORD_RESET_MIN_LENGTH | int | 8 | 管理員重置使用者密碼介面中新密碼所需的最小字元長度。 |
AIVORY_API_ADMIN_USER_CONVERSATIONS_LISTING_CAP | int | 500 | 管理員檢視單個使用者會話(用於支援/濫用排查)時返回的最大會話數。 |
AIVORY_API_USAGE_REPORT_PAGE_SIZE_CAP | int | 50 | 管理員用量記錄報表在請求的 page_size 缺失或超出 1-200 範圍時採用的預設每頁條數。 |
AIVORY_API_ANALYTICS_WINDOW | int | 30 | 管理員分析看板在未提供 days 查詢引數時的預設回溯視窗(天)。 |
AIVORY_API_ANALYTICS_WINDOW_2 | int | 365 | 管理員分析視窗 days 查詢引數可接受的天數上限,超出範圍的值將被忽略。 |
AIVORY_API_ANALYTICS_BREAKDOWN_TOP_N | int | 8 | 管理員分析中按模型和按使用者細分及其時間序列所保留的頭部鍵數量(Top-N)。 |
AIVORY_API_BULK_REDEEM_CODE_GENERATION_QUANTITY | int | 1000 | 單次批次生成請求可鑄造的最大兌換碼數量。 |
AIVORY_API_MAX_SKILL_ASSET_BYTES | int64 | 20*1024*1024 | 單個技能資原始檔(模板/指令碼/小型資料)上傳的最大位元組數。 |
AIVORY_API_VECTOR_MAINTENANCE_JOB_HISTORY_RETENTION | int | 20 | 向量維護任務歷史在記憶體中保留的最近任務數,更早的會被丟棄。 |
AIVORY_API_VECTOR_MAINTENANCE_JOB_RUNTIME | duration | 12*time.Hour | 單次向量維護任務執行(索引審計或重建)在被取消前的上下文超時時間。 |
9. 伺服器啟動 / 配置載入
HTTP server 超時、優雅關閉、啟動流程常量等。
| 環境變數 | 型別 | 預設值 | 說明 |
|---|---|---|---|
AIVORY_CMD_ARCHIVE_GC_BOOT_SETTLE_DELAY | duration | 2*time.Minute | 伺服器啟動後到首次歸檔工作區 GC 清掃之間的延遲,避免冷啟動時立即清掃。 |
AIVORY_CMD_RUN_PRUNE | duration | 5*time.Minute | 單次歸檔工作區 GC 清理(針對物件儲存)執行的上下文超時時間。 |
AIVORY_CMD_ARCHIVE_GC_SWEEP_INTERVAL | duration | 6*time.Hour | 歸檔工作區 GC 清掃之間的間隔,用於從物件儲存刪除過期的 /workspace 歸檔包。 |
10. 前端
編譯期生效(Vite 在 npm run build 時內聯 VITE_*),需要在構建環境設定,執行時改環境變數無效。輪詢間隔、分頁、重試 / 退避、去抖、超時、客戶端大小上限等。
| 環境變數 | 型別 | 預設值 | 說明 |
|---|---|---|---|
VITE_AIVORY_IMAGE_API_MY_IMAGES_LIMIT | envNum | 60 | 拉取當前登入使用者自己的生成相簿時的預設每頁數量(limit)。 |
VITE_AIVORY_WORKSPACES_API_ADMIN_LIST_LIMIT | envNum | 200 | 管理員工作區列表請求的預設每頁數量(limit)。 |
VITE_AIVORY_CONVERSATIONS_API_LIST_LIMIT | envNum | 200 | 會話列表請求的預設每頁數量(limit)。 |
VITE_AIVORY_CONVERSATIONS_API_LIST_ARCHIVED_LIMIT | envNum | 200 | 已歸檔會話列表請求的預設每頁數量(limit)。 |
VITE_AIVORY_ADMIN_API_USERS_LIMIT | envNum | 50 | 管理員使用者列表請求的預設每頁數量(limit)。 |
VITE_AIVORY_ADMIN_API_USER_IMAGES_LIMIT | envNum | 60 | 管理員下鑽檢視某使用者生成相簿時的預設每頁數量(limit)。 |
VITE_AIVORY_ADMIN_API_ANALYTICS | envNum | 30 | 管理員分析看板請求傳送的預設回溯視窗(天)。 |
VITE_AIVORY_MAX_BYTES | envNum | 256 * 1024 | 管理員圖示上傳的客戶端最大位元組數,超出則在請求前拒絕(與後端上限一致)。 |
VITE_AIVORY_MAX_LEN | envNum | 12_000 | 聊天輸入框訊息的最大字元長度,超出則禁止傳送。 |
VITE_AIVORY_INGEST_POLL_MS | envNum | 1200 | 在傳送按鈕保持鎖定期間,輪詢附件攝取(解析/嵌入)狀態的間隔(毫秒)。 |
VITE_AIVORY_PAGE | envNum | 30 | 使用者生成相簿無限滾動每頁拉取的圖片數(首屏載入與載入更多)。 |
VITE_AIVORY_RUN_TIMEOUT_MS | envNum | 120_000 | 瀏覽器內 Pyodide Python 單次執行的硬性掛鐘上限(毫秒),超時則終止 worker。 |
VITE_AIVORY_MAX_STREAM_CHARS | envNum | 200_000 | Pyodide 執行中流式 stdout/stderr 的最大字元總數,超出則截斷以防止失控列印。 |
VITE_AIVORY_MAX_RESULT_CHARS | envNum | 20_000 | Pyodide 執行最終表示式結果 repr() 在截斷前的最大字元長度。 |
VITE_AIVORY_ADMIN_BACKUP_EXPORT_JOB_POLL_INTERVAL | envNum | 2500 | 管理員備份頁面輪詢重新整理正在執行的備份匯出任務狀態的間隔(毫秒)。 |
VITE_AIVORY_PAGE_SIZE_2 | envNum | 20 | 管理員兌換碼錶格每頁行數(對已獲取行的客戶端分頁)。 |
VITE_AIVORY_PAGE_SIZE | envNum | 50 | 管理員用量記錄表格請求的每頁行數(服務端 pageSize)。 |
VITE_AIVORY_IMAGES_PAGE | envNum | 60 | 管理員使用者相簿下鑽檢視每頁拉取的圖片數(首屏載入與載入更多)。 |
VITE_AIVORY_ONLINE_WINDOW_S | envNum | 300 | 管理員使用者表格中,使用者最後活動落在該時間視窗(秒)內即視為線上。 |
VITE_AIVORY_PAGE_SIZE_3 | envNum | 50 | 管理員使用者列表表格請求的每頁行數(服務端 limit)。 |
VITE_AIVORY_KB_DOC_STATUS_POLL_INTERVAL | envNum | 2200 | 當仍有文件處於解析/嵌入階段時,輪詢重新整理知識庫文件狀態的間隔(毫秒)。 |
VITE_AIVORY_CONV_PAGE | envNum | 200 | 側邊欄會話列表每頁拉取的會話數(首屏載入與滾動載入)。 |
VITE_AIVORY_MSG_PAGE | envNum | 40 | 開啟會話時每頁拉取的訊息數(首頁與向上滾動載入更早訊息)。 |