助理回覆的引用(Assistant citations)

引用(citation)把選取的摘錄內容和來源的身分,直接放在一般的訊息文字裡。草稿、剪貼簿複本、stash 和已送出的訊息都沿用這種表示方式,不需要另外一個存放引用的地方。就算來源消失或被改動,已儲存的引文仍然可以使用。共用格式使用穩定的 environment ID,不含瀏覽器的 origin,所以在本機、遠端和 tunnel 連線之間切換時,引用的身分不會改變。

回到來源的導覽是盡力而為(best effort)。文字選取器指向的是「空白正規化之後、實際呈現出來的文字」,以 UTF-16 單位計算。它們不能套用在原始的 Markdown 上。原本的摘錄會保留它的空白;正規化只用來定位。重複出現的文字需要有一個不含糊的前後文比對,即使其中一處仍然剛好位在儲存的位移上也一樣。用猜的可能會標示到錯誤的那句話。

在虛擬列(virtual row)重新掛載的過程中,標示(highlight)的生命週期由導覽流程負責。來源那一列必須先被抓取、展開、掛載並量測完成,引文定位才會從一般的時間軸捲動手上接手。重新掛載不可以讓已經被關掉的標示又出現。導覽用的 hash使用 base64url,因為不這樣做的話,router 的正規化會把引用 URI 裡的空白和來源 ID 解碼掉。

送交給 Provider adapter 之前,要先用共用的 formatter把引用展開。送出的是已儲存的摘錄,不去查詢來源;要把「被引用的參考內容」和「使用者的評語」區分開來;已持久化的訊息則保持原本的形式。輸入長度限制在展開之前要檢查,展開之後也要檢查。一份草稿以編碼後的連結形式放得下,展開之後卻可能超過 Provider 的上限。

本頁譯自 docs/internals/assistant-citations.md(英文原文,版本 ec830f7)。標示「本站補充」的區塊不在原文裡。