@ExceptionHandler 為什麼攔不到?先看那個異常死在哪一層
先別管 handler 要怎麼寫。先看一個異常被 throw 出來之後,在變成回給前端的那包 JSON 之前,路上會經過誰的手。 這條路比大部分人想的短。而 @ExceptionHandler 只站在其中一小段。 搞清楚它站在哪,你就會知道為什麼有些錯誤永遠繞過你的 @RestControllerAdvice,而且再多寫幾個 handler 也救不回來。 一個 request 進來,其實要穿兩層皮外面那層是 Servlet 容器。Tomcat 收到連線、解析 HTTP、然後把這個 request 丟進 filter 鏈。你寫的 JWT 驗證 filter、Spring Security 那一整串 filter、log 用的 OncePerRequestFilter,全部住在這一層。 裡面那層才是 Spring MVC。filter 鏈跑完之後,request 交給 DispatcherServlet,它去查這個 URL 對應哪個 controller method,做參數綁定、呼叫你的方法、把回傳值序列化成 JSON。 @ExceptionHandler 住在裡面那層。它不是掛在...
把 Claude Code 接上 OpenTelemetry:你團隊每天燒多少 token,其實沒人知道
月底,主管在 Slack 丟一句:這個月團隊用 Claude Code 花了多少?哪個專案最燒? 你打開 /usage。上面有數字,很漂亮,但那是你這台筆電、這個帳號、這段期間的用量。團隊有十二個人。 兩條你大概已經試過的路第一條是去看帳單。帳單給你一個總額,準確到分。它不會告訴你這筆錢是花在那個跑了三天的重構上,還是花在有人拿它問了兩百次「幫我看一下這段 code」。一個總數等於沒有分佈,你拿它做不了任何決定。 第二條是叫大家自己回報。這條路的壽命通常是一週。第二週開始有人忘記填,第三週表格就變成考古遺址。 兩條路都堵住,是因為你想量的東西根本沒有量測點。家裡的電費單也是這樣,只有一個總金額,你懷疑是烘衣機在吃電,但手上沒有工具能驗證,只能靠感覺吵架。/usage 是那張帳單,接下來要裝的是插座上的分表。 一個環境變數,五分鐘看到數字Claude Code 內建 OpenTelemetry 匯出,預設是關的。開它需要兩件事,只做一件不會有任何反應。 第一件是總開關: 1export CLAUDE_CODE_ENABLE_TELEMETRY=1 第二件是告訴它資料要送去哪。想先...
AI 與科技新聞摘要 20260728
7 月 28 日,台北的交易螢幕上,南亞科、華邦電、旺宏、力成四檔記憶體股同時鎖在跌停板。想賣的人排隊,買方那一欄是空的。 跌停不是「跌得比較多」,跌停是流動性歸零。你手上那張紙在那個當下不能換成錢,不管你多想換。 同一天,一份上千人連署的公開信送到華府,Alphabet 的財報數字讓整個超大規模業者族群被市場重新定價,MCP 協定宣布把自己的地基整片挖掉重澆。攤開這一天的六則新聞,它們分屬完全不同的產業,卻共用同一個問題:出事的時候,還剩多少可以退的空間。 一、上千名 AI 從業者連署,要求政府「刻意放慢」前沿 AI超過一千名任職於前沿 AI 公司的員工簽了一封公開信,要求美國政府推動國際合作,發展出足夠的技術與治理工具,用來「刻意放慢」自動化 AI 的發展前沿。信裡的用字是 deliberately pace,講白了就是把速度調成人類跟得上的檔位,沒有要誰喊停。 簽名的人不是外圍評論者。OpenAI 首席科學家 Jakub Pachocki、OpenAI 共同創辦人之一 John Schulman、Anthropic 的部分共同創辦人,以及 Meta 與 Google Dee...
synchronized 還是 ReentrantLock?先問你有沒有這四種需求
先回答一個問題:你程式碼裡有沒有哪一段,等鎖等太久就應該放棄,去走別的路? 想不出來的話,這篇後面的內容你可以不用看。繼續用 synchronized,你沒有損失任何東西。 ReentrantLock 在很多團隊裡被當成「比較進階的鎖」。review 的時候看到有人寫 synchronized,還會有人留言問要不要換成 lock。這個直覺是錯的,而且錯得有點久了。 名字騙了你,可重入從來不是賣點ReentrantLock 這個名字翻成中文是「可重入鎖」。可重入的意思是:同一個執行緒已經拿到這把鎖了,再進來一次不會把自己卡死。 聽起來很厲害。問題是 synchronized 也可重入。 1234567public synchronized void outer() { inner(); // 同一個執行緒再拿一次同一把鎖,不會死鎖}public synchronized void inner() { // ...} 這段程式碼跑得好好的,JDK 1.0 時代就是這樣。所以如果你選 ReentrantLock 的理由是「它可以...
Claude Opus 5 實戰:價錢沒變,但你該改掉切任務的習慣
回想一下你以前是怎麼把工作交給 Opus 4.8 的。 多數人的做法都差不多:先把大任務手動切成七八個小包,一次餵一包,跑完看一眼、確認沒歪掉,再餵下一包。理由不是不信任它,是經驗告訴你,鏈條拉太長會出事——它會在第五步的時候忘記第二步的決定,或是在某個工具回傳空值的地方原地打轉。 所以你養成了一套習慣:切得夠碎、盯得夠緊、貴的模型只用在關鍵幾步。 Claude Opus 5 在 7 月 24 日上線了,價錢跟 Opus 4.8 完全一樣,每百萬 input token 五美元、output 二十五美元。帳單沒變,所以很容易以為這只是一次例行升級。但如果你繼續用舊習慣去用它,會浪費掉這次升級最值錢的部分。(來源:Anthropic) 以前:一次交一小段。現在:一次交一條鏈官方在 Frontier-Bench v0.1 上的說法是,Opus 5 超越所有其他模型,而且以更低的每任務成本,做到 Opus 4.8 兩倍以上的表現。 「每任務成本更低」這六個字比 benchmark 分數重要。單價沒降,但完成同一件事花的總 token 變少了,因為它繞路繞得比較少、重試比較少。 這個差別...
這週大家都忙著展示能力,沒人想接下出事之後的那張帳單(AI 與科技新聞摘要 2026/07/27)
模型參數這週衝上三兆,同一週圖書館在開課教人怎麼避開 AI。 這兩群人看起來活在不同的星球,但他們在問同一句話:這東西出事的時候,誰扛?這週五則新聞,五種不同的回答方式,而且沒有一個令人特別安心。 一、Kimi-K3 上架,開源第一次追到 3T 級Moonshot AI 在 7 月 27 日於 Hugging Face 上架 Kimi-K3,官方說法是「世界第一個開放的 3T 級模型」。架構換了新的一套,用上 Kimi Delta Attention 與 Attention Residuals,context window 針對 repository 規模的程式碼理解做過延伸,並且原生支援 tool calling、瀏覽與多步驟規劃這類 agent 能力。上架當天在 Hacker News 衝到五百多分。 要誠實標一下:截至寫稿時,模型卡上還沒有完整的對照 benchmark 和授權條款,這些得等權重完全公開後才能驗。所以「它到底多強」目前只有廠商說法,沒有第三方數字。 但即使把效能數字全部拿掉,這件事的意義也還在。開放權重追到 3T 級,代表前沿能力的擴散速度比大多數人的心理準...
你嫌 AI 廢話多,其實是沒告訴它交付長什麼樣
AI 回答太囉唆,是規格問題,不是智商問題。 這句話值得停一下。我們對 AI 的抱怨裡,有很大一塊其實不是「它答錯了」,而是「它答得太長」。你問一個 token 過期要怎麼修,它先花兩段解釋什麼是 JWT、再花一段說明為什麼會過期,真正要打的那行指令躲在第四段中間,結尾還補一句「希望這對你有幫助!」。你要的是一個動作,它給你一篇導讀。 大部分人碰到這件事的反應是怪模型。換一個更強的、換一家別的、或是在 prompt 尾巴加一句「請簡短回答」。第三種偶爾有用,但只撐一輪,下一個問題它又開始鋪陳。這很奇怪對吧?明明每次都講了,它每次都忘。 因為「簡短一點」根本不是規格。那是形容詞。 一份 Markdown,5.3k stari-have-adhd 是一個給 Claude Code、Codex、Cursor 用的 skill,GitHub 上已經 5.3k star。名字取得很直白,但它跟診斷無關。作者的意思是把 AI 的輸出改造成注意力友善的樣子:動作放最前面、多步驟編號、砍掉所有開場白和客套結尾。 有趣的是它打開來幾乎沒有程式碼。整個 repo 的核心就是一份 SKILL.md,裡...
一萬步不是科學,是行銷:健康數字大多有個「夠了就好」的甜蜜點
先問你一個問題:你上一次因為手環顯示今天只走了八千多步,硬是在睡前繞去多走兩圈,是什麼時候的事? 如果有,你並不孤單。而且你可能是為了一個沒有人驗證過的數字,犧牲了本來可以拿去睡覺的半小時。 先講最經典的那個。「每天一萬步」這句話,你我從小聽到大,聽起來像鐵一般的醫學結論。它其實是 1960 年代日本一家計步器廠商的廣告詞,那台機器的名字直譯過來就是「萬步計」。一個好記的整數,加上一台想賣的機器,僅此而已。 真正該追的數字,最近被算出來了。《Lancet Public Health》在七月底發表一份統合了 57 項研究的分析,結論是:跟每天只走約兩千步的人比,走到大約七千步,死亡風險就降低了 47%,失智、心血管疾病、憂鬱、第二型糖尿病的風險也一起往下掉。關鍵在後半句——過了七千步,這條曲線就明顯平掉了,從四千步進步到七千步能再降 17%,但七千往上加,效益小到幾乎看不出來。負責這份研究的雪梨大學流行病學家講得很不客氣:一萬步「沒有任何證據支持,只是隨口喊出來的一個整數」。(Heho、鏡報) 停一下。如果連「多走路」這種怎麼看都健康的事都有天花板,那是不是很多健康指標其實都長這樣...
這週 AI 圈忙著簽天價合約,卻發現真正缺的東西一度連買都買不到(AI 與科技新聞摘要 2026/07/26)
先問一個怪問題:當一家晶片公司掏出幾十億去入股它的大客戶,好讓這個客戶有錢回頭跟它買晶片,這筆交易到底是誰在賺誰的錢? 這週的 AI 新聞,幾乎每一則都在報天文數字。但把它們排在一起看,你會發現大家搶的其實不是同一樣東西。錢多到滿出來,稀缺的反而是那些用錢一時之間變不出來的:先進記憶體、電力、還有一個不會被新聞稿說服的物理世界。 一、AMD 砸最多 50 億入股 Anthropic,換 2GW 的晶片大單AMD 和 Anthropic 宣布策略合作:Anthropic 會部署最多 2GW 的 AMD MI450 系列 GPU,AMD 則依部署進度對 Anthropic 投資最多 50 億美元,是 AMD 第一次真金白銀入股這家公司。作為交換,Anthropic 承諾未來幾年向 AMD 採購「數百億美元」等級的晶片。 這種交易有個難聽但精準的名字,叫循環交易。上游供應商拿現金投資下游客戶,客戶再把這筆錢回頭變成對供應商的訂單,兩邊的營收和估值互相灌水。問題出在:當你的供應商同時是你的股東,這筆需求到底有幾分是真的,就變得很難查證。表面上 Anthropic 現在有四家算力供應商並存...
迴圈工程:把七層零件組成一台會自己轉的機器(AI Agent 架構全解析 8/8)
走了七篇,我們把一個 AI Agent 的 harness 拆到見骨:從能動性到底從哪來、最小的 agent loop 怎麼轉、怎麼拆解扛不動的複雜任務,一路拆到記憶與崩潰後的韌性、長時間非同步地跑、多代理分工協作,再到上一篇的MCP、外掛與可觀測性。每一篇都是在「一次 model 呼叫」的周圍多裝一個零件。這最後一篇要做的事只有一件——把散在桌上的零件全部組回去,變成一台你不在旁邊也能自己轉的機器。 這一層在書裡叫 Layer 7「組合」,主題是 loop engineering(迴圈工程)。它沒有發明任何新元件,它教的是怎麼把前面的迴圈疊起來,讓 agent 從「你一句一句餵 prompt」進化成「它自己找工作、自己做、自己驗、自己回報」。 從「下 prompt 的人」變成「設計 loop 的人」先講一個心態上的轉彎。你平常用 Claude Code 或任何 agent,其實一直在當那個「外層迴圈」:你想一個 prompt、讀它的輸出、判斷對不對、不對就再下一句、覺得可以了就收工。這整套「觸發 → 執行 → 檢查 → 重試」的流程,是靠你的手和你的眼睛在驅動的。你一離開座位,...














