跳轉到

D-20260816-04|本機文字顯示過濾與 starter 匯入

背景與驅動力

聊天文字需要讓每位玩家自行決定是否遮蔽及遮蔽哪些詞,但騷擾檢舉又要求完整原文與簽章可供 驗證。由送端、房主或全域清單刪改內容會使不同接收者拿到不同證據;Git starter list 若隨版自動 覆蓋,也會把維護者詞表誤當成玩家自己的持久設定。

考慮過的選項

  • 送出前或由房主統一過濾:全房顯示一致,但會改動簽章內容、歷史與檢舉證據,否決。
  • Git 詞表自動更新並套用到所有玩家:維護簡單,但無法尊重玩家選擇,更新也可能刪改其本機 調整,否決。
  • 完整原文照常簽署及傳送,只在各裝置 render copy 套用玩家本機詞表;Git 清單僅供明確複製 (採納)。

決定

  • SignedPayload、網路傳輸、聊天歷史與檢舉證據永遠保存完整原文;過濾器只改該裝置當次顯示 副本,不回寫訊息或證據。
  • 每位玩家有自己的裝置本機開關與 literal 詞表,不傳給房主或其他玩家,也不上鏈。詞表最多 512 筆、每筆最多 48 Unicode code points,拒絕控制字元並以 NFKC 與 case-fold 鍵去重;首版不 接受任意 regex。
  • 比對採 Unicode-aware substring,插入標點等正規化命中仍要透過來源位置映射遮蔽原文字範圍, 不得只遮蔽正規化後的暫存字串。
  • Git/client 可依四語系提供盡可能涵蓋辱罵、歧視、性騷擾、威脅、作弊與洗頻情境的 starter list。玩家必須在設定頁明確選擇複製,才建立自己的本機副本;後續 Git 更新不得自動加入、刪除 或覆蓋玩家詞表。
  • TEXT_BLACKLIST_VERSION 只標示 starter 格式,TEXT_BLACKLIST_MATCH_MODE=substring 只描述 literal 比對模式;兩者都不是遠端內容接受、配對或檢舉證據的權威。

後果與影響

每位玩家可依自身需求開關及編輯顯示過濾,同一份已簽訊息仍能被其他接收者完整驗證並作為檢舉 證據。starter list 可以隨 Git 改善而不暗中改寫既有玩家偏好;代價是不同裝置可能顯示不同遮蔽 結果,且玩家若要採用新版 starter 必須再次明確匯入或自行編輯。

本決策部分修訂 D-20260703-06 對 client 隨版文字清單的定位:隨版資料可作本機 starter,但不再 自動成為聊天顯示權威;其原有上傳授權與 AI 內容規則不受影響。