Repository navigation
1.2.0 — 輸出把關、執行時編碼風險、出貨守門
1.2.0 — 輸出把關、執行時編碼風險、出貨守門
新增
examples/llm-proxy/llm-guard-proxy.mjs:本機 LLM 的輸出守衛代理(零依賴,
npm scriptllm-guard-proxy)。llama-server 沒有外掛機制,--logit-bias只是降低機率、
表達不了詞組,--grammar對散文不實用,所以機械層放在伺服器外面:代理整個 origin
(內建網頁照用)、非串流、只讀生成端點的 JSON、帶tool_calls的回應絕不改寫
(所以不要指給 agent harness),乾淨的回應逐位元組通過,轉不動的殘留在 log 裡回報。
用的是同一份guardInspect/toTraditional。--console-hazard:第三條軸(執行時編碼風險)。找「會印到 console 的行」裡
目標 codepage 編不出來的字元,計入 exit code。檔案可以是正確繁體卻在執行時崩潰——
實測案例是一個 ComfyUI 節點 print 含簡體字的訊息,Windows 主控台 cp950 丟
UnicodeEncodeError,節點掛掉、連 traceback 都寫不進日誌(症狀看起來像「卡住」)。
只綁print/echo/logging/logger/log/console/raise(註解與變數名不算),
並在輸出明說這是啟發式判斷。
--codepage內建 950/936/932/1252/20936;54936(GB18030)與 65001(UTF-8)
編得下全部 Unicode,永不回報。⚠️ 命名陷阱:Windows 把 936 叫gb2312,但它其實是 GBK
(連繁體都編得出來);嚴格 GB2312-80 是 20936,它反過來編不出體 軟 淨 麵 裡。- 設定卡的標題列改成跟著設定變(原本寫死「簡體專有字」,切到「要求簡體」時與同卡的
單選標籤自相矛盾——折疊起來時那是唯一看得到的字)。
修正
- 出貨檔案不再含本機資訊:新增出貨掃描守門(在
test:api內),照package.json的
files白名單逐一掃。通用樣式隨套件出貨;只在本機成立的名稱放在不進版控的
.ship-deny.txt——把名字寫進會出貨的檔案裡就是把它公開,哪怕只是為了禁止它。
測試
test:codepage(41 項)釘住 codepage 涵蓋表的量測數字;test:proxy(30 項)用真的
upstream + 真的監聽中的代理測邊界;test:api58 → 61 項;--console-hazard的 8 個
CLI 案例進selftest-cases.json。
移除
chinese-script-policy@1.1.0與1.1.1自 npm 移除(都在發布後 72 小時內,依官方政策可
unpublish);1.0.0更早已移除。三個版號永久保留給已下載過的安裝來源,不會再被使用。
移除的理由是「registry 上只留最新版」,不是外洩:兩份舊 tarball 都經掃描確認不含任何
本機資訊(各 52 檔、沒有.ship-deny.txt、私人名稱命中 0)。
registry 上現在只有1.2.0(dist-tags.latest不變)。
資料
scripts/codepage-repertoire.json(182 KB)由npm run build:codepage以 .NET 產生
(Node 沒有這些編碼器)。encoder 與 decoder 的 fallback 必須是ExceptionFallback,
否則 .NET 會把編不出來的字換成?,得到「全部都編得出來」的假通過。