57.5% 的網頁請求已經不是人類——你的網站還在只為真人設計嗎
這篇文章的題目,是一個機器假扮成人類、去敲另一台機器的門撈回來的。 今天我想更新部落格,照慣例讓 Claude Code 上網找找熱點。它撈資料的指令我順手看了一眼——curl 後面掛著一長串 Mozilla/5.0 ... Chrome/124.0.0.0 Safari/537.36 的 User-Agent。那串字翻成白話是:「我是一個人類,正在用 Chrome 瀏覽器」。但下指令的不是人,是我的 AI 工具;它連的也不是給人看的網頁,是一個只吐 JSON 的 API。原因很實際:那個 API 用 nginx 擋掉所有看起來像程式的請求,預設的 curl/8.x UA 會被直接 403 回絕。所以為了幫我這個真人找今天的新聞,機器得先假裝自己也是個正在滑網頁的人。 撈回來的那堆 JSON 裡,有一條新聞正好在講這件事的全貌。 過了那條線:57.5% 對 42.5%2026 年中,一個分水嶺數字開始在圈子裡流傳:在 Cloudflare 網路上、對 HTML 網頁內容的 HTTP 請求裡,57.5% 來自機器人,只有 42.5% 來自真人瀏覽器——這是 Cloudflare R...
我給 AI 一個逃生欄「找不到就填 NONE」,它還是編了一個假檔名
上次我寫過一篇,講 Claude Code 跑動態工作流時,主代理把子代理的查證結果誤判成幻覺,自己反而幻覺了一整篇文章,還騙過兩輪 AI 審稿。那篇的幻覺長在「綜合」那一步——主代理沒翻紀錄,腦補了下游。 這篇是同一個系統的另一種死法,但這次的幻覺不是腦補出來的。是我親手用 schema 逼出來的。 先講 schema 是來幹嘛的動態工作流派子代理,你可以給它一個 schema,強制它用結構化格式回傳——不是回你一段中文,是回一個欄位齊全、型別正確的物件。下游就能直接 results.filter(r => r.score >= 7) 接住,不用自己從散文裡挖數字。 這東西很好用。我大部分 workflow 都靠它把「子代理的判斷」框成可以程式化處理的資料。問題是,我一直把它當成一道保險——以為「規定了格式,回來的東西就是可靠的」。 這兩個禮拜,同一套 schema 機制在我面前暴露了兩種完全不同的失敗。一種明、一種暗,成因也不一樣:明的那次是子代理根本沒把結論交回來,我當場就發現了;暗的那次是它交回來了、而且填得滿滿的,內容卻是編的,差點讓我去動一個不存在的檔。 ...
Claude Code 動態工作流實戰:用一支 JavaScript 派一群子代理,順便算了筆 token 帳
Claude Code 最近多了一個功能叫動態工作流(dynamic workflows):讓主代理在執行時,當場寫一支 JavaScript,生成並協調一群子代理——每個子代理有自己獨立的 context window 和一個聚焦的小目標。 我前幾天用它做了件很實際的雜活:評估四個候選部落格選題,看哪個跟我既有文章庫重複、哪個值得寫。這篇把那支 script 整個攤開,講三件事——怎麼寫、parallel 和 pipeline 怎麼選、跑一次燒多少 token。 為什麼不是「開更多分頁」那麼簡單你可能會想,並行做事,開幾個對話視窗不就好了? 差別在 context。Claude Code 過去是「一個對話、一條 context」,所有東西擠在同一個上下文視窗。長任務這個模式有三個老毛病,官方發布時直接點名:智慧惰性(做到一半宣布完工)、自我偏好偏差(驗證自己的產出時護短)、目標漂移(對話太長、尤其壓縮過後忘了最初目標)。 動態工作流的解法不是把單一 context 養得更肥,而是把活切開:每個子代理拿一塊乾淨的上下文,做一件聚焦的事,彼此不互相汙染。並行只是順帶的好處,真正的價...
我叫 Claude Code 寫篇技術文檔,它自己幻覺了,還騙過兩輪 AI 審稿
最近Claude Code出了一個 動態工作流(dynamic workflows)的功能。這功能很新——讓主代理在執行時當場生成一群子代理,各自帶獨立 context 去幹活。 它做事很主動。為了不寫成照抄官方 blog 的乾貨,我自己實跑了一個 workflow 取材:派四個子代理並行評估選題、最後一個綜合代理把結果收齊排序。 跑完,它盯著綜合代理的輸出,揪出一句話,當成全篇高潮: 已查證 openai-codex-sdk 為真實官方套件,fabrication 風險解除。 Claude Code 的判斷是:抓到了。那個綜合代理根本沒有上網工具,哪來的「查證」?這就是幻覺——把一個自己驗證不了的結論,包裝成「已查證」。 於是它以這句為核心,寫了整篇技術使用的文章。論點很漂亮:fan-out 把活散出去很強,但綜合那一步不給查證工具、不做對抗式驗證,幻覺就從接縫長出來。還引了官方點名的 self-preferential bias——代理傾向給一個乾淨自信的結論,把下游的不確定性吃掉。它的 demo 自己示範了要解決的問題,多諷刺。這是它原稿最得意的一筆。 然後它把文章送了...
AI 篤定說 CSP 的 style-src unsafe-inline 拿不掉,我追問一句後它道歉了
2026-06-01 早上,甲方把一份 ZAP 弱掃報告丟過來,四條中風險全是 CSP(Content Security Policy,瀏覽器用來限制頁面能載入哪些來源的一層 HTTP header 防護)相關,附帶一句「中風險都要修」。最難纏的一條是 style-src 'unsafe-inline'。 我把報告丟給 Claude Code,請它評估。那天它給的結論是:這條技術上修不乾淨,只能寫一封信去說服甲方接受。兩天後,我們把它從正式機完全拿掉了,全站 94 個頁面實測零影響。 中間發生的事,比結論本身有意思——因為它一開始錯得很徹底,而我差點就照單全收了。 先搞清楚 V3 到底還剩幾條Claude Code 先把我們 Vue 3 專案正式機的 Web.config 拉出來對。弱掃報告裡那串髒兮兮的 CSP 其實是同台 server 上舊版 AngularJS 站台的,不是 V3 的。V3 的狀況比我以為的好: 1234script-src 'self' 'wasm-unsafe-eval'style-src ...
別讓 AI agent 自己決定花多少錢:四道讓 token 帳單不爆的護欄
讓 agent 自己跑批次任務之前,我以為成本是可以「事後再看」的東西。 那是一個排程任務:每天半夜起來,把前一天累積的一批項目逐筆讓 agent 處理、分類、寫回。我設好就睡了。隔天早上看帳單,一個晚上燒掉的量,差不多是我平常手動用一整個月的程度。 東西是有跑完,但這個價錢完全不合理。我花了點時間把它拆開來看,發現失控的不是「AI 很貴」這個籠統印象,而是三、四個很具體、而且都能堵住的洞。這篇就是那幾道護欄。 先搞清楚錢是怎麼流掉的LLM 的計費單位是 token,輸入和輸出分開算,而且輸出通常比輸入貴好幾倍。先記住這條核心關係:你每次呼叫付的錢 ≈(這次塞進去的 input token + 吐出來的 output token)× 對應模型的單價。實際帳單還有快取、推理 token 之類的細項,但抓大放小,主導成本的就是這三個變數——而每一個我那晚都用錯了。 把這條公式攤開來算一次就很清楚。假設我那個任務每次呼叫平均塞 50K token 的 context,跑 200 筆,光 input 就是 1,000 萬 token。如果我還傻傻地全程用最貴的模型——以我寫這篇的當下,旗...
我同時派三個 AI agent 改程式碼,它們互相蓋掉了對方的修改
那天我想偷懶。一個中型重構,要動 api 層、service 層,順便把一個命名很爛的函式全專案改名。我手上有能並行派 sub-agent 的工具,腦袋一熱就想:三件事互不相干,派三個 agent 同時做,理論上三分之一時間搞定。 結果跑完一看,service 層的修改不見了。不是壞掉,是憑空消失,像我從來沒改過。 這篇就是那次的紀錄。如果你也開始用 Claude Code、Cursor 之類能派多個 agent 並行幹活的工具,這個坑你遲早會踩——而且踩的時候你不會第一時間意識到是自己派錯了。 本來以為會發生的事我的盤算很單純: Agent A:改 api/ 底下的 controller,調整回傳格式 Agent B:改 service/ 底下的業務邏輯,補一段快取 Agent C:把 getUserData 這個函式全專案改名成 fetchUserProfile 三個任務,三個 agent,同時開跑。我甚至在每個 agent 的指令最後都加了一句「請小心,不要動到不屬於你任務範圍的檔案」。自我感覺良好。 第一個坑:它們看不到彼此跑完之後,我打開 service/ 想看 B...
AI 用一個「可愛的證明」推翻了 80 年沒人動搖的數學猜想——然後三家公司同一週都做到了
5 月 21 日,OpenAI 宣布它的內部推理模型構造出一個反例,推翻了 Erdős 在 1946 年提出的單位距離猜想——伴隨 九位外部數學家的驗證論文。5 月 25 日,Google DeepMind 發表 AlphaProof Nexus 論文,用 Lean 形式驗證解了九道 Erdős 開放問題。5 月 26 日,Anthropic 工程師 Sholto Douglas 在 X 上寫:Claude Mythos 也解了同一道猜想,用的是一個「cute, simple proof」。 五天之內,三家公司、三種方法、同一類問題。 我不是數學家,以下不是數學論文導讀。我想搞清楚的是:這件事對用 AI 寫程式的人來說,到底暗示了什麼。 先搞懂這個問題到底在問什麼Erdős 單位距離猜想說起來很直覺:在一張紙上放 n 個點,最多能有多少對點之間的距離剛好是 1? 1946 年 Erdős 猜測,一種稍微歪斜的正方形網格排列已經接近最優解——也就是說,配對數的成長速度只比點的數量稍微快一點。 這個問題 80 年來沒人動搖過。1984 年 Spencer、Szemerédi 和 Tr...
你的 AI Agent 拿到的權限比你的實習生還大?Anthropic 零信任框架拆解
5 月 27 日 Anthropic 丟出一份 36 頁的電子書,標題叫《Zero Trust for AI Agents》。這不是一般的行銷白皮書——它給了具體的架構、實施路徑和威脅分類,而且每條建議都對應到成熟度等級,讓你知道自己該做到哪一層。 我把重點整理出來,順便加上我自己在用 Claude Code 和各種 Agent 工具時踩過的坑。 為什麼現在要談 Agent 安全先說結論:AI Agent 跟傳統軟體最大的差別,是它會自己做決定。 傳統軟體執行你寫好的邏輯。Agent 不一樣,它解讀目標、選擇工具、執行多步驟操作,全程不需要你點頭。這帶來一個根本性的安全問題——你給它的權限,它會用自己的判斷去使用。 Anthropic 在文件裡點出了五個 Agent 特有的安全考量: 自主執行:不用人工批准就能完成整條工作流程 工具存取:能操作 API、資料庫、檔案系統、MCP 伺服器 決策模糊性:人類覺得無害的指令,Agent 可能解讀出完全不同的結果 跨 session 記憶:記住上次對話的偏好和知識——也記住被注入的毒 多 Agent 協作:Agent 之間的信任關係,讓...
六月 AI 模型大戰前夕:GPT-5.6、Gemini 3.5 Pro、Claude Mythos 同時壓境,開發者怎麼準備?
2026 年 5 月最後一週,GPT-5.6 在 Codex 後端日誌裡被挖出來、Anthropic 的 Mythos 推翻了一個近 80 年的數學猜想、WWDC 很可能揭露 Gemini 驅動的新 Siri。如果這些消息有一半成真,六月的模型名稱、API 規格、token 單價會同時變動,留給開發者的切換視窗很短。 我三月寫過一篇模型大亂鬥,當時的結論是「沒有全能冠軍」——這句話到現在還適用。這次要聊的不是跑分比較,而是一個更實際的問題:你的系統架構裡,模型名稱寫死了幾處?錯誤碼寫死了幾處?stream chunk 格式寫死了幾處? 備戰清單放前面,後面的情報分析都服務這份清單。 開發者備戰清單(六月前完成)1. 把 LLM 呼叫抽象出來 如果你的程式碼裡直接寫死 openai.chat.completions.create(),六月切模型會很痛苦。不需要複雜框架,一個 adapter 層就夠。核心是把模型選擇和業務邏輯分開。 1234567891011121314151617181920212223242526272829// 這是整理過的示意,實際版本會更簡單interfa...














