2026.05.21 —— 今日 10 則
TODAY'S THREAD Microsoft 給 agent 加上 Fides 這層 deterministic 的 information-flow gate、SpiderMonkey 把 asm.js 拔掉、Slack 把 HTTP/3 readiness 探測上游給 Prometheus——今天的事都繞著「在 runtime 邊界把不可見的契約變得可見」展開。
Microsoft 推 Fides——把 agent 的 prompt injection 防禦從 prompt 拉回 information-flow gate
Microsoft 在 Agent Framework 加入 Fides(Flow Integrity Deterministic Enforcement System):每段資料都帶 integrity(trusted/untrusted)與 confidentiality(public/private/user_identity)標籤,middleware 自動沿著呼叫鏈傳遞,privileged tool(如 write_file)在收到 untrusted 來源時直接被框架拒絕——而不是再寄望 model 自己看出 attack。對任何在生產跑 agent 的人來說,這是把 OWASP LLM01 從「祈禱 prompt 守得住」往「可被靜態論證的 policy」移動。
Tokenspeed——把「47 tok/s」從抽象數字校準回人類感官的小工具
作者做了一個互動 demo:用 30 / 60 / 200 / 800 tok/s 的速度實際播放 code、prose、reasoning trace、agent tool-call 四種輸出,讓讀者用眼睛體驗「為什麼 code 比散文感覺快」——同樣 tok/s,token 密度差兩倍,閱讀感受完全不一樣。對於要寫 inference benchmark、設 SLO 或解釋 latency 給 PM 的人是一個方便的對照尺。
Google ADK 加上 pause / resume——讓 long-running agent 能跨日喚醒不失憶
Agent Development Kit 把 agent 的 workflow state(tool history、變數綁定、待處理 step)整包 serialise 成 checkpoint,跑到一半的 agent 可以放下幾分鐘到幾天再從原處接回。對於要把 agent 接進 ticket、approval 或長流程 BPM 的人,「過夜不失憶」這件事終於有 first-party 抽象,不必再自己用 redis 拼。
Spotify 的 LLM eval——funnel 不是 fork,先粗篩再人工
Spotify 把 LLM 評測流程從「自動分數 vs 人工分數」二分改成多階段 funnel:自動 judge 先給 relevance / coherence / quality 分數,只有彼此意見分歧的樣本才往下流給人工複核。對於想規模化做 eval 又不想被 judge bias 蒙騙的團隊,這個 funnel 結構直接可借——重點是哪一層該 disagree、哪一層該人介入。
Erasing Existentials——Rust 裡四種抹掉 existential 型別的辦法對照
作者把「multiple existential type parameters」這個 type-theory 問題搬到 Rust 上,依序示範 for-exists 轉換、associated type + PhantomData、手刻 trait impl、Box<dyn Any> 四條路線各自的代價與適用情境。對任何被 dyn-compatibility 規則卡住的人來說,這是一份從「為什麼一個 trait object 不能對應兩種 associated type」推到「該用哪種 erasure」的清單。
Meta 換掉 data ingestion 控制面——PB/day 流量底下的 zero-downtime 換引擎
Meta 在生產流量持續寫入時更換整個 data ingestion 管線:dual-write 同步、新舊端 reconciliation 比對、按 namespace 一片一片切流量,最後再撤掉舊路徑。文章把「在 PB/day 等級下不能用維護視窗」當前提,列出每一階段對 control plane 與 schema registry 的要求;對任何規劃跨年度遷移的人都是一份制度範本。
Slack 把 HTTP/3 readiness 探測搬上 Prometheus——順手給 blackbox_exporter 加 quic-go transport
Slack 原本混用 SaaS 觀測工具 + 內部自製探針,但「沒有一個現成的 SaaS 支援 HTTP/3 over QUIC 的探測」。Sebastian Feliciano 直接把 quic-go 接進 Prometheus blackbox_exporter,給社群把 HTTP/3 transport upstream 開源;Slack 自己也順勢把數十萬個邊節點上的 HTTP/3 readiness 拉進現有 Prometheus 告警鏈。對任何要把 QUIC/HTTP/3 推上生產但缺合適 readiness probe 的人,這條 PR 直接可用。
SpiderMonkey 把 asm.js 拔掉——十二年的 JS 子集走到尾聲
Mozilla 在 SpiderMonkey 移除 asm.js 的 AOT 快速路徑:WebAssembly 已經完全吃下「型別標註過的 JS 子集快編快跑」這條路,asm.js 留下來只是維護成本。文章回顧 asm.js 為什麼當年成立、它怎麼把「JIT 可預測」這件事教給社群,並列出實際 break 的測試案例與目前線上還在跑 asm.js binary 的少數場景。
Node.js 26.0.0 釋出——Temporal 正式起飛,Date 終於有像樣的替代
Node 26 把 Temporal API 升為 stable(不再需要 flag)、淘汰了一批 legacy 介面,V8 也跟著前進一版。對任何寫過時區或日期算數的人,Temporal 把月份、duration、calendar、time-zone 全部當 first-class 設計——這是 ECMAScript 自 Promise 之後最大規模的 stdlib 加項。
Discord 把 distributed tracing 帶進 Elixir——不踩爛 BEAM mailbox 的 sampling 設計
Elixir 的訊息密度天生比 HTTP 服務高一個量級,naive 的 trace span propagation 會把每個 actor mailbox 撐爆。Discord 把 trace context 改成搭 process dictionary + GenServer reply 的 piggyback,加上 head-based + tail-based 雙取樣,把端到端 trace 採樣到能在控制台看見因果鏈、又不會吃掉 throughput。
today's deep reads
Fides 是什麼——把 prompt injection 從 model 防線移回 information-flow 系統
把每段內容當 information-flow lattice 的 label 來標、讓 middleware 在 tool call 前先檢查 policy——這個架構為什麼能給出 deterministic 的保證?四層 middleware 各自扛什麼?哪些情境它故意不擋?
Rust 裡的 existential 擦除——四條路線的代價對照
為什麼 dyn-compatibility 規則會讓「同一個 trait object 對應兩種 associated type」變成不可能?PhantomData、Box<dyn Any>、手刻 vtable 各自繞過什麼、付出什麼代價?該怎麼選?
Meta 換掉 data ingestion 控制面——PB/day 流量下的 zero-downtime 換引擎
在每天 PB 級寫入無法停機的前提下,Meta 怎麼把整條 ingestion 控制面從 customer-owned 切到 platform-managed?五階段 dual-write、shadow、reverse-shadow、cutover、decommission 各自要對齊什麼,又哪些情境會把這套方法逼回手工模式?