
工程思考 · 研究筆記
一段文字,如何成為可靠的網頁譯文?
從 DOM 擷取、共用排程,到輸出驗證與安全回寫,透過 18 張圖解理解 Browser Script Manager 翻譯系統的架構、資料流與設計取捨。
本文目錄
這套翻譯的工程核心,是把持續變動的網頁,整理成可排程、可重用、能核對身分後回寫的工作。翻譯服務負責產生文字;擴充套件負責讓結果在正確的時間、正確的位置出現。
沿著一段原文,看資料如何流過整個系統
Browser Script Manager 將翻譯與其他功能組裝成同一個 Manifest V3 擴充套件。下面追蹤預設網頁段落的翻譯流程:每條箭頭都標示傳遞內容;方塊所在泳道表示執行邊界。選取文字與翻譯中心的入口差異接在下一節。
版本資料
候選
或原文/
阻擋狀態
更新
轉接後確認終止
失敗狀態另行回報
符合政策才重排
譯文內容
再次核對
可呈現譯文
一般模式進保存佇列
狀態更新
寫入記憶
以文字讀取每條資料流
- 01 擷取原文,宣告片段 → 02 接收並建立需求身分:原文片段;版本資料
- 02 接收並建立需求身分 → 03 規則、共享工作與本機查詢:頁面綁定+原文
- C 凍結文件背景候選 → 03 規則、共享工作與本機查詢:上下文;候選
- C 凍結文件背景候選 → 01 擷取原文,宣告片段:凍結與連線確認後,釋出首批片段
- 03 規則、共享工作與本機查詢 → 07 送出狀態與結果通知:本機結果;或原文/;阻擋狀態
- 03 規則、共享工作與本機查詢 → 04 排程、合批、預扣配額:本機未命中,且允許外送
- V 更新閱讀位置 → 04 排程、合批、預扣配額:閱讀位置;更新
- 04 排程、合批、預扣配額 → 05 呼叫翻譯服務:API 請求
- 05 呼叫翻譯服務 → 06 終止檢查與結果驗證:原始回覆/用量;轉接後確認終止
- 06 終止檢查與結果驗證 → 07 送出狀態與結果通知:有效片段 → 譯文可用;失敗狀態另行回報
- 06 終止檢查與結果驗證 → 04 排程、合批、預扣配額:失敗/需修復項目;符合政策才重排
- 07 送出狀態與結果通知 → 08 核對版本,組裝整段:版本狀態;譯文內容
- 08 核對版本,組裝整段 → 09 排程並提交 DOM:整段文字結果
- G 保留目前的原文身分 → 09 排程並提交 DOM:目前來源;再次核對
- 06 終止檢查與結果驗證 → 10 本機翻譯記憶與保存狀態:有效且仍適用的;可呈現譯文;一般模式進保存佇列
- 10 本機翻譯記憶與保存狀態 → 07 送出狀態與結果通知:本機保存作業;狀態更新
- 10 本機翻譯記憶與保存狀態 → 11 雲端同步儲存:加密上傳
- 11 雲端同步儲存 → 10 本機翻譯記憶與保存狀態:解密合併;寫入記憶
展開圖 01B|本機判斷、查詢失敗與外送閘門,逐分支追蹤
或寫盤失敗
重新判斷
以文字讀取每條資料流
- D1 先套用規則與釘選譯文 → P 回傳本機狀態/結果:本機處理
- D1 先套用規則與釘選譯文 → D2 相同語意鍵的共享工作是否存在?:需要翻譯
- D2 相同語意鍵的共享工作是否存在? → P 訂閱既有共享工作:已存在
- D2 相同語意鍵的共享工作是否存在? → D3 查已保存的翻譯記憶:新共享工作:先登記再查詢
- D3 查已保存的翻譯記憶 → P 已有持久譯文:命中
- D3 查已保存的翻譯記憶 → E 已存譯文讀取失敗:讀取失敗
- E 已存譯文讀取失敗 → D3 查已保存的翻譯記憶:重試讀取
- D3 查已保存的翻譯記憶 → D4 查舊版翻譯快取:確認未命中
- D4 查舊版翻譯快取 → P 沿用舊譯文,升級保存:命中
- D4 查舊版翻譯快取 → D5 確認未命中,才決定是否外送:未命中/讀取失敗/無舊版鍵
- D5 確認未命中,才決定是否外送 → P 不派送的三種出口:不派送
- D5 確認未命中,才決定是否外送 → D6 排序、合批,再核准請求嘗試:允許外送,進入派送佇列
- D6 排序、合批,再核准請求嘗試 → W 等待/阻擋,不送 API:尚未就緒;或寫盤失敗
- W 等待/阻擋,不送 API → D6 排序、合批,再核准請求嘗試:條件恢復;重新判斷
- D6 排序、合批,再核准請求嘗試 → T 啟動翻譯服務轉接:已提交保守扣帳
為什麼要考慮 service worker 重新啟動?
Chrome 的 extension service worker 是事件驅動的,可能在閒置時結束;一般 JavaScript 全域變數不會自動保存。本專案因此把翻譯記憶與配額寫進 IndexedDB,並讓頁面在重連後重新宣告活躍需求。這是生命週期設計,不能解讀成 worker 永遠不會中斷。
平台依據:Chrome 官方:service worker lifecycle(查閱 2026-10-25)。
入口不同,共用的部分也不同
各翻譯入口共用背景資源與派送核准機制。頁面批次、選取串流與翻譯中心,仍保留各自的輸出方式。
| 入口 | 送進系統的方式 | 目前如何顯示 |
|---|---|---|
| 網頁段落 | 段落 → 句子單位 → 共用翻譯流程 | 等待最終結果,確認仍適用後才更新畫面;不逐段顯示暫時預覽 |
| 文件標題 | 獨立文字單位,歸入鄰近可見區的優先級 | 只管理最上層文件;用請求版本避免舊結果覆蓋新標題 |
| 字幕 | 獨立文字單位,歸入可見內容的優先級 | 片段完成後交回字幕呈現流程 |
| 選取文字 · LLM | 背景串流文字;共用資源與配額核准 | 累積的純文字可持續更新畫面;與頁面的批次回覆解析方式不同 |
| 翻譯中心 | 查詢翻譯記憶,再按需要發出翻譯請求 | 收到整筆回應後更新卡片;用請求身分隔離取消與舊回覆 |
先分清楚:位置、工作、請求
頁面綁定記錄畫面上的需求;共享工作代表一份可重用的翻譯任務;請求嘗試則是向特定翻譯資源執行的一次操作。
寬圖可橫向捲動;文字可選取。
同時到達的兩個相同需求,如何避免重複送出?
背景排程器在第一次非同步記憶查詢之前,就把「正在查詢」的工作放進索引。後到的頁面需求訂閱同一份工作;即使前一個查詢尚未返回,也不另外建立相同任務。這讓非同步查詢期間的重複需求仍能合併。
擷取的是可辨識的原文,不是一整包 HTML
寬圖可橫向捲動。
先辨識段落
依 DOM、顯示類型與排除規則走訪,跳過自己的輸出、隱藏內容與發音標記。
再拆成句子
使用瀏覽器文字分段能力;超過 2000 UTF-16 單位時,先找子句標點,再找字素邊界。
最後保留身分
每個片段保留原始範圍、分段順序與原文版本;原文變更後重新建立文字單位。
UTF-16、字形與 token 為什麼不能混在一起?
UTF-16 編碼單位是 JavaScript 字串長度使用的單位;emoji 可能占多個單位,多個 Unicode 碼點也可能組成一個使用者看到的字形。字素(grapheme)描述這類可視文字單位的分群;token 則由模型的分詞器決定。
預設 2000 是每個文字單位的字串長度限制。若單一字素已超過上限,就回報輸入過大;瀏覽器不支援文字分段時,備援只逐碼點處理,不能保證完整複合字形分群。
短片段另有本機啟發式:移除 URL 等雜訊後,單一拉丁字母詞可能被略過;含中日韓文字的短片段可保留。這降低零碎請求,也可能漏掉有意義的單字。選取翻譯不套用同一個頁面短文門檻。
延伸閱讀:瀏覽器的文字分段能力。
先服務正在讀的地方,再預載前方
頁面知道「原文在哪裡」;背景決定「現在值得翻哪一段」。預載區隨閱讀方向與速度改變,排程優先級則跨頁面統一比較。
區域示意,長度不依畫面像素等比例繪製
閱讀中:前方 3 個畫面高度;段落註冊比翻譯再多 0.5 個畫面高度。
JavaScript 未啟用:以上保留 閱讀中、向下、高度 800px、邊距 1000px 的靜態範例。
展開預載公式與捲動演算法
當設定邊距≤0,兩邊都回 0。向上閱讀時交換上下方範圍。捲動速度用 EMA 平滑:α=1−exp(−dt/200),新速度=舊速度+(瞬時速度−舊速度)×α。dt 的單位為 ms,瞬時速度的單位為 px/s;間隔達 400ms 時直接採新樣本。
轉向要累積 max(120px, 0.35H) 的反向移動;前向速度達 2.5 viewport/s 可進入快速掃讀狀態,維持 2 秒。這些門檻減少少量回拉造成的 觀察範圍重建;它們是工程啟發式,不是閱讀意圖辨識模型。
排程示例:1 個並行槽、單筆請求;P1 為焦點頁,三頁各有 3 段可見文字
規則先決定什麼能翻,再保護關鍵詞
一次尋找多個詞組
包含互相重疊的命中
再比規則精確度、識別編號
得到穩定的選取順序
轉成 ⟦n⟧ 佔位符
已替換內容不再掃描
詞彙保護示例;模型回覆為示意文字
送給模型
回覆並還原
→ 鏽帶使用Rust 語言。
規則優先順序與 Aho–Corasick 的精確分工
先處理整頁停用,再看整句保留原文/固定譯文、使用者釘選譯文、禁止外送,最後才做詞組佔位符替換。禁止外送仍允許顯示本機已保存的譯文。
Aho–Corasick 負責找到多個詞組;「最左、最長」是後續排序與游標選取共同決定的結果。掃描以 UTF-16 編碼單位進行,並不理解自然語言詞界。完整流程還包含命中展開與排序,不能直接把全部成本寫成 O(n)。
匹配範圍包含任意文字、整句精確比對與字面詞組,不提供任意正規表示式。編譯或比對失敗時,可退回較直接的參考掃描方式。
上下文要穩定,也要遵守同一套外送規則
啟用文件背景的翻譯設定,會在第一批送出前凍結候選文字。背景端再依目前政策挑出合格內容,避免「禁止翻的段落」透過其他句子的上下文被間接送出。
最多 16 個內文區塊
候選合計 ≤6000 UTF-16
總長最多 1500 UTF-16
計算上下文指紋
與待翻句子分開
上下文只提供背景,不需要另外輸出譯文。不同上下文可形成不同語意鍵。
限制仍然存在
有限的文件前段視窗不保證涵蓋全文;各翻譯入口使用的上下文也有差異。
先問本機:這個語意契約,是否已經翻過?
語意鍵:是哪一份翻譯?
頁面鍵:重新開頁要還原什麼?
頁面鍵管理還原意圖與頁面關聯;語意鍵才決定哪句原文對應哪份譯文。
| 資料層 | 保存策略 | 設計取捨 |
|---|---|---|
| 翻譯記憶 | 不設有效期限、不自動驅逐;預設 512 MiB 內容計數/20 萬筆/單筆 1 MiB | 滿了拒絕新寫入,保住已有紀錄。數值不含整個 IndexedDB 索引與額外儲存成本。 |
| 舊版快取 | 預設 30 天/128 MiB;LRU 驅逐 | 可重建的快取,採用不同於已保存譯文的保留策略。 |
| 規則/釘選譯文 | 持久政策資料 | 使用者指定的行為,不是一般 LRU 快取。 |
換模型、換頁面,哪些結果可以重用?
頁面翻譯的語意身分不直接包含供應商或模型。其他語意條件相同時,換模型仍可能命中舊結果;「強制重新翻譯」才跳過翻譯記憶與舊版快取,結果驗證成功後替換同一語意鍵的記憶。
選取翻譯與翻譯中心使用各自的入口約定,翻譯設定中也包含供應商識別。因此翻譯中心的 A 供應商卡片不會使用 B 供應商卡片的結果;同一供應商設定更換模型,則保留原有身分。
上下文、規則與版本也納入語意契約,透過精確雜湊比對尋找譯文。不同頁面的相同句子,只有其他語意條件也相同才可共用;相似的文字不會自動命中。
合批節省請求,派送核准守住資源與配額
候選工作先依閱讀需求排序,再選擇可用的翻譯資源,最後嘗試合併成一批。批次大一點能合併工作;可見內容則採較小門檻,讓第一批結果不用等太多句。
取使用者設定與可見門檻中較小者
依翻譯流程的批次設定合併
同批必須相容
T1/T3 的候選視窗內若出現多個頁面,維持單筆派送,避免為了填滿某頁的批次跳過另一頁。需要單獨修復的工作也不合批。
寬圖可橫向捲動。
並行量
同時檢查全系統、單一翻譯資源與所有相關配額群組。初始預設上限分別是 16、12、16 個並行名額。
送出速率
每個翻譯資源的令牌桶預設每秒補充 8 次請求的容量,最多累積 16 次。它管理啟動節奏,不保證每秒完成 8 次。
時間窗配額
依設定檢查每分鐘請求數、每分鐘 token 數與每日請求數。實際用量較高時向上補記;較低或未回報時,不自動退還預扣量。
演算法:何時等待時間,何時等待事件?
| 條件 | 派送判斷 | 含義 |
|---|---|---|
| a > L | 阻擋需求 | 這筆需求本身超限,設定不變時,等待也無法容納。 |
| D ≤ 0 | 通過這項配額檢查 | 還要繼續通過並行名額、送出速率與其他配額檢查。 |
| 0 < D ≤ S | 等待指定時間 | 掃描時間格,找出足夠扣帳到期的時刻。 |
| D > S | 等待狀態變更 | 即使已提交扣帳全到期,待提交預留加上新需求仍超限。 |
同一翻譯資源的時間條件取最晚門檻;若還需要釋放名額或完成寫入,就等待相應事件。不同候選工作之間則找最早可能喚醒的時刻。固定容量的環狀時間格,避免記憶體隨歷史請求數無限增加:分鐘窗 62 格、每格 1 秒;日窗 1442 格、每格 60 秒。
扣帳所屬的時間格編號為 ceil(歸屬時間 ÷ 每格長度),也就是向上取整。建立持久化快照時,待提交扣帳的歸屬時間至少設到當下加 1000ms;交易完成後,再確保它不早於當下,採保守到期。請求令牌桶使用整數計數,一次請求等於 1,000,000 個微量單位;這與模型切分文字的 token 無關。
演算法:資源選擇、token 估算與可選的自適應
多個翻譯資源可用時,先比較「候選視窗內的相容需求量 ÷ 可用並行數」,分母至少取 1;再比較負載、路由優先度與穩定的資源識別順序。這是從眼前候選中挑選資源的啟發式,沒有求解全域最佳配置。
這是本機決定能否派送時的估算,與供應商實際切分 token 的方式可能不同,也無法代替帳戶的剩餘額度。頁面批次還會把翻譯指令與上下文加入估算,不能只拿原文字數當每分鐘 token 用量。
自適應並行量預設關閉。啟用後,並行上限從硬上限的一半向上取整開始。成功回應到達時,若統計窗已滿 20 秒,就檢查前一窗是否至少成功 10 次、仍有待辦工作且沒有壅塞;符合才增加 1 個名額。容量壅塞時減半,同一調整週期最多下降一次。自動備援切換也預設關閉,需要明確啟用才會在符合條件時改用其他資源。
模型回傳的是資料協定,通過驗證才成為譯文
預設的頁面批次翻譯,使用簡短編號對應每一項結果。輸出順序可以不同;編號、譯文與佔位符都必須通過驗證。這讓「整包壞掉」與「只有幾個項目需要修復」可以分開處理。
合成資料示意。來源語言自動辨識,目標為臺灣繁體中文,不附額外上下文。回覆順序故意交換,仍以項目編號一一對應。
送出的翻譯項目
| 項目編號 | 原文 |
|---|---|
| 1 | Hello. |
| 2 | Goodbye. |
收到的翻譯結果
| 項目編號 | 譯文 |
|---|---|
| 2 | 再見。 |
| 1 | 你好。 |
→ 可呈現譯文 → 最終結果
譯文空白/超長/佔位符不符
→ 後續單筆重試
版本錯誤、非法 JSON、額外散文
→ 拒絕整包回覆
| 翻譯服務 | 實際網路行為 | 回覆要求 |
|---|---|---|
| DeepSeek/OpenAI/Google | 底層關閉自動重送,每次操作最多發出 1 次網路請求;重試交由上層排程管理。自訂服務網址仍須符合對應服務的連線規則。 | 串流文字交給回覆解析器,必須符合結構化資料格式。 |
| Microsoft | 一次操作內,先取得 Edge 認證,再送出翻譯;兩個階段各限 1 次網路請求,合計最多 2 次。 | 檢查回傳筆數,按原位置補上相同項目編號,轉成統一格式。 |
哪些容錯被允許?哪些數字不是 token 上限?
解析器容許以指定標記包住的前置思考段落,以及完整包住回覆、未標語言或標成 JSON 的Markdown 圍欄;合法空白與資料欄位換序也可接受。任意散文中的 JSON 不會被猜測擷取。大量串流增量會切成 32,768 個 UTF-16 單位的片段處理,跨片段保留文字、跳脫符號與 Unicode 的解析狀態。
| 界線 | 預設值 | 計量方式 |
|---|---|---|
| 整份文字回覆 | 262,144 | 2 × UTF-16 長度,含外框文字 |
| 模型回覆的網路資料量 | 16 MiB | 文字回覆預算 × 64,包含 SSE 與 JSON 外框 |
| 單項譯文 | 24,000 | UTF-16 編碼單位 |
產品方向是「來源自動辨識 → 臺灣繁體中文」。頁面翻譯與共用設定採用不同的繁體中文語言標記;Microsoft 另外透過 ISO 語言對照表轉換,找不到對應時使用繁體中文標記。跨服務連接時,需要處理這層語言表示的差異。
系統提示詞要求忽略原文與上下文中的指令,譯文內容使用純文字。這能表達預期行為,仍無法保證完全消除提示詞注入或翻譯錯誤。DeepSeek 預設關閉思考模式,使用者也可自行調整。
回來得再快,也要先確認頁面還是那一份
動態網頁可能在翻譯途中改字、換段落、離開頁面,使用者也可能正在反白。背景完成只代表取得候選結果;真正更新網頁節點前,還要核對當下的原文與操作狀態。
寬圖可橫向捲動。
這一影格的預算足夠
→ 現在更新
只留這段最新更新方案
→ 等保護條件解除
先保留更新方案
→ 下一影格再檢查
每完成一次區塊更新才檢查時間;第一個超過預算、卻必須完整更新的區塊仍可單獨提交。因此 4ms 是讓出工作的預算,不是每次網頁更新的硬性最長時間。
| 顯示模式 | 原文怎麼處理 | 譯文怎麼寫入 |
|---|---|---|
| 雙語 | 原文留在原位;已有舊譯文時,等新的更新方案提交才替換。 | 建立容納譯文的節點,再交由呈現佇列更新。 |
| 純譯文 | 暫存原來的節點物件,再移出頁面;還原時插回同一批節點。 | 主要路徑使用文字與換行節點組合譯文;模型文字不當作 HTML 執行。 |
更細的呈現策略:合併、延後與避免不必要的重寫
呈現節奏控制器合併陸續抵達的結果,依最近一次工作的耗時調整節奏:新成本估值 = 0.6 × 舊成本估值 + 0.4 × 本次耗時;下一輪間隔為 min(1000ms,2 × 新成本估值)。瀏覽器的動畫影格通知尚未到達時,另有 250ms 的計時器補位。這裡追蹤的是工作耗時,無法完整代表瀏覽器排版與繪製的成本。
同一區塊只保留最新的等待更新方案;最多保留 128 份延後方案,超過後可改記「需要重新整理」,這類記號上限為 4096。頁面變動的重新比對則合併成每段一個進行中的工作,再加一個待重跑記號。
呈現摘要使用「文字長度+32 位元 FNV-1a 雜湊」判斷能否略過重寫,與背景使用 SHA-256 的語意識別不同;不同內容仍可能得到相同摘要。多句譯文依原翻譯單位的順序組合,接縫以中、日、韓文字的空白規則推估,並不逐字還原原始空白。
保留同一批原始節點,有利於延續原有物件關係;事件綁定、排版與互動效果,仍受到網站本身的結構與更新方式影響。
讀得到譯文,不等於已經存好
寬圖可橫向捲動。
保存佇列如何限制記憶體?
| 區域 | 筆數上限 | 估計位元組上限 |
|---|---|---|
| 主要保存佇列 | 32 | 16 MiB |
| 額外等候區 | 64 | 8 MiB |
| 保存失敗後保留的內容 | 64 | 8 MiB |
等候或保存失敗的內容,有效保留期為 10 分鐘,於後續佇列操作或重試時檢查清理。容量估計為「原文 UTF-8 位元組+譯文 UTF-8 位元組 × 2+1024」,與實際記憶體占用可能不同。佇列滿時,會暫停新的頁面翻譯派送;已發出的請求可完成。
這個佇列只保存在執行中的記憶體。背景服務結束時,尚未完成寫入的內容,不會因重啟自動恢復。圖中呈現的是頁面翻譯的保存狀態;互動式入口只將內容排入保存工作,不等待同一套完整的畫面狀態流程。
取消是撤銷提交權,重試則需要明確理由
寬圖可橫向捲動。
以上為可調整的預設值。一般頁面重試策略以 4 次實際送出為預設門檻,包含首次;累計執行時間預算為 180 秒。過大的多項目批次另有拆成單筆重新排隊的修復路徑。從未嘗試、只在畫面外等待的需求,不套用一般 30 分鐘的需求到期限制。
| 失敗 | 處理方向 | 為什麼分開 |
|---|---|---|
| HTTP 401/一般 403/404 | 視為認證、權限或模型設定問題,阻擋相關翻譯資源。 | 盲目重送不會修好設定。 |
| HTTP 429 · 容量類 | 對受限的資源或配額範圍設定冷卻期;工作留在佇列,等待資源再次可用。 | 讓負載下降後才再試。 |
| HTTP 402/429 · 付費或額度不足 | 預設不再重試;額度類 403 也屬此類。明確啟用備援切換,且有符合獨立備援條件的可用資源時,仍可轉送。 | 付費/帳戶額度問題不是瞬時壅塞。 |
| HTTP 408/409/425/5xx | 視為暫時性的伺服器失敗,可以重試。 | 有機會隨時間恢復,仍受次數與預算限制。 |
| HTTP 413/過大輸入 | 多項目批次拆成單筆重試;單筆仍過大則阻擋該工作。 | 批次過大,不代表每個項目都無法單獨翻譯。 |
重試時間、喚醒與時鐘跳動
一般工作的延後重試,使用完整隨機抖動:每次從零到等待上界之間取一個隨機延遲。容量型 HTTP 429 則對受限的資源或配額範圍設定冷卻期,採用伺服器指定的等待時間;未提供時使用基礎延遲,不套用隨機抖動。
隨機抖動讓重試時間分散;回應標頭 Retry-After 指定的時間是額外下限,可接受秒數或 HTTP 日期,並考慮伺服器時間差。伺服器要求的等待時間最多保留 7 天。
喚醒排程合併成一個最早到期的計時器;預期等待至少 30 秒時,再以瀏覽器的背景鬧鐘補充喚醒。時鐘檢查會比較系統時間與單調時鐘各自經過了多久:偏移超過 5 秒,或系統時間倒退超過 5 秒,就暫停新的派送。沒有新異常且穩定期達 2 秒後,才依保守策略恢復。
取消圖描述已送出的網路嘗試。已保留名額但尚未送出的嘗試,可先結束並釋放名額;若進行中的扣帳交易隨後成功提交,即使沒有真的呼叫服務,也會保留該筆保守扣帳。無法確認是否終止的網路操作,會隔離相關資源並保留名額;收到遲來的終止通知後才釋放。背景服務重啟後建立新的執行代次,舊請求不再占用並行名額,已知的配額帳本則繼續保留。
「本機優先」要說清楚資料仍會去哪裡
原文單位/文件背景傳往背景端
接收帶版本的狀態與結果通知
同筆記錄包含頁面關聯
頁面還原意圖獨立保存
與網頁端可見設定分開
本機未另做應用層加密
LLM 另可接收合格的上下文
依各服務協定回傳
由共用同步服務加密後上傳
同步回程寫入本機記憶
提供給網頁端的設定會移除 API 金鑰、請求標頭與供應商選項;設定同步也排除這些欄位,只傳送允許同步的設定。
| 機制 | 實際行為 | 需要保留的界線 |
|---|---|---|
| 禁止外送 | 禁止該工作送往翻譯服務;仍可查本機已保存譯文。 | 上下文候選也須通過政策檢查;翻譯記憶同步則另依使用者是否加入同步處理。 |
| 無痕 | 不查找/保存/同步該無痕工作產生的翻譯記憶。 | 仍保存不含文字內容的派送與配額中繼資料。 |
| 翻譯網路請求 | 不附帶瀏覽器憑證、拒絕重新導向、限制目標來源;遠端使用 HTTPS。 | 明確指定的本機/私有網路主機可使用 HTTP。 |
| 同步加密 | HKDF-SHA-256 衍生金鑰,AES-256-GCM 加密同步資料物件。 | 加密保護同步內容;本機設定隔離仍是另一層責任。 |

留言與討論
正在連線到留言服務…