[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-kitesurf-turns-workers-into-agent-browser-zh":3,"article-related-kitesurf-turns-workers-into-agent-browser-zh":29,"series-tools-01ba2b4b-f67e-4fdf-8b32-85fcc989549c":74},{"id":4,"slug":5,"title":6,"content":7,"summary":8,"source":9,"source_url":10,"author":11,"image_url":12,"cover_image":12,"category":13,"language":14,"translated_content":11,"related_article_id":15,"keywords":16,"key_takeaways":22,"views":26,"created_at":27,"published_at":28,"topic_cluster_id":11},"01ba2b4b-f67e-4fdf-8b32-85fcc989549c","kitesurf-turns-workers-into-agent-browser-zh","Kitesurf 把 Workers 變成代理瀏覽器","\u003Cp data-speakable=\"summary\">以前我用完整瀏覽器跑自動化，現在我會先問能不能把它縮成 \u003Ca href=\"\u002Ftag\u002Fagent\">agent\u003C\u002Fa>-first browser。\u003C\u002Fp>\u003Cp>我用 browser automation 一陣子了，老實說，常常覺得\u003Ca href=\"\u002Fnews\u002Fanthropic-hiring-custom-chip-design-team-zh\">自己\u003C\u002Fa>在養一台太胖的機器。Chromium 要顧、記憶體要盯、timeout 要調，模型還得吞一堆它根本不懂的頁面狀態。能跑是能跑，但每次都像在拿人類用的工具硬塞給 agent。它會點、會填、會跳頁，可是整個流程一直有種不順手的噁心感，像是你明明只想搬一箱東西，卻被迫租了一台貨車。\u003C\u002Fp>\u003Cp>我最近看了 \u003Ca href=\"\u002Ftag\u002Fcloudflare\">Cloudflare\u003C\u002Fa> 的 \u003Ca href=\"https:\u002F\u002Fblog.cloudflare.com\u002Fkitesurf\u002F\">Kitesurf\u003C\u002Fa>，第一次覺得這題有人講到骨頭裡。它不是在跟你炫耀怎麼把瀏覽器自動化做得更花，而是在逼你承認：我們一直把人類瀏覽器當成 agent 的預設答案，這件事本身就很怪。Cloudflare 這篇把 \u003Ca href=\"https:\u002F\u002Fworkers.cloudflare.com\u002F\">Workers\u003C\u002Fa>、\u003Ca href=\"https:\u002F\u002Fwebassembly.org\u002F\">Wasm\u003C\u002Fa>、\u003Ca href=\"https:\u002F\u002Fdevelopers.cloudflare.com\u002Fdurable-objects\u002F\">Durable Objects\u003C\u002Fa>、\u003Ca href=\"https:\u002F\u002Fdevelopers.cloudflare.com\u002Fworkers\u002Fruntime-apis\u002Frpc\u002F\">worker-to-worker RPC\u003C\u002Fa> 串起來，我讀完只剩一句話：原來可以不要那麼笨重。\u003C\u002Fp>\u003Ch2>我先把 Chromium 當成預設值這件事丟掉\u003C\u002Fh2>\u003Cblockquote>Browser engines like Chromium were built for humans, not agents, and they come with overhead that AI models simply do not need.\u003C\u002Fblockquote>\u003Cp>這句話我很買單。翻譯一下就是，Cloudflare 不是想把 Chrome 修得更快，而是在懷疑整個前提：agent 真的需要完整的人類瀏覽器嗎？\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1786127603865-k5ht.png\" alt=\"Kitesurf 把 Workers 變成代理瀏覽器\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>我自己踩過太多這種坑。很多\u003Ca href=\"\u002Fnews\u002Fastra-turns-long-math-tasks-into-multi-agent-work-zh\">任務\u003C\u002Fa>其實只需要導航、讀 DOM、填表、送出、拿結果，結果我們卻先拉一個完整桌面級引擎進來，再一路用 Playwright、截圖、重試去補洞。能做，但成本很不乾脆。你不是在做 automation，你是在替一個本來不該存在的巨大 runtime 找理由。\u003C\u002Fp>\u003Cp>Cloudflare 的意思很直白：agent 需要的是 browser primitives，不是人類那套完整視覺與相容性包袱。人類瀏覽器在乎的是字型、影片、外掛、標籤頁、各種怪站相容；agent 在乎的是狀態可控、執行可重現、啟動夠快、成本夠低。這兩個目標本來就不同，硬混只會讓你多付錢。\u003C\u002Fp>\u003Cp>我之前幫一個內部流程做自動化，前半段只是登入、找資料、複製結果。整套流程最麻煩的不是 AI 不會操作，而是 browser 太大台，session 一多就開始不穩。那時我才真的懂，很多時候問題不在模型，而在你拿錯工具。\u003C\u002Fp>\u003Cp>實操寫法很簡單：先列出你真的需要的 browser 能力，像是 navigation、form input、script execution、screenshot、session persistence。只要你回答「差不多就是 Chromium 吧」，我會直接叫你停一下。先砍需求，再談 runtime。\u003C\u002Fp>\u003Cul>\u003Cli>把任務拆成 browser primitives，不要直接對齊整個 UI stack。\u003C\u002Fli>\u003Cli>把 rendering fidelity 跟 automation 能力分開想。\u003C\u002Fli>\u003Cli>先量 memory、startup time、retry 成本，再決定要不要上完整 Chromium。\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>Wasm 在 Workers 裡成熟了，這才是底層條件\u003C\u002Fh2>\u003Cp>Cloudflare 在文中很明白地說，\u003Cstrong>WebAssembly in Workers is now very mature\u003C\u002Fstrong>。這不是順手帶過的背景句，這是整個架構能站起來的地基。\u003C\u002Fp>\u003Cp>它們還提到 \u003Ca href=\"https:\u002F\u002Fblog.cloudflare.com\u002Fdynamic-workers\u002F\">dynamic workers\u003C\u002Fa>、SQLite-based Durable Objects、worker-to-worker RPC、service bindings、Node.js 相容性提升，還有更高的限制。這些字看起來很 boring，但我反而覺得這才是\u003Ca href=\"\u002Fnews\u002Fmodel-y-l-us-launch-buyer-details-zh\">重點\u003C\u002Fa>。沒有這些底層能力，你根本不可能把 browser-shaped workload 放進 edge runtime 裡，還期待它不要炸。\u003C\u002Fp>\u003Cp>我見過太多平台嘴上說支援 advanced workloads，結果一碰到 state、isolated execution、concurrency 三件事一起來，就立刻露餡。Cloudflare 這次的訊號是：Workers 不再只是跑輕量函式，它已經可以承接更像 browser runtime 的工作，只是你要用對方式。\u003C\u002Fp>\u003Cp>這代表 browser 不必再站在系統外面當一個特例。它可以跟 agent orchestration、state store、routing、RPC 放在同一個平台裡。架構一旦收斂，glue code 就少，延遲就少，debug 也比較不會像在追鬼。\u003C\u002Fp>\u003Cp>實操寫法：如果你現在做 agent infra，先別把「browser service」跟「agent service」切成兩個宇宙。把 stateful 的東西放回 runtime 原生支援的地方，能用 Wasm 的就用 Wasm，能用平台內建 state 的就別再自己外掛一個 sidecar DB。\u003C\u002Fp>\u003Cul>\u003Cli>讓 browser execution 盡量靠近 agent orchestration。\u003C\u002Fli>\u003Cli>優先使用平台原生 state，而不是每層都外接資料庫。\u003C\u002Fli>\u003Cli>用隔離執行單元取代一個超長壽命的大 process。\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>Cloudflare 真正在意的是成本密度\u003C\u002Fh2>\u003Cp>這篇最實際的地方，是它沒有只談能力，還直接碰成本。agent 需要 browser 才能做事沒錯，但如果每個 session 都得扛一個完整 Chromium，那很多 use case 根本做不起來。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1786127605774-ahfm.png\" alt=\"Kitesurf 把 Workers 變成代理瀏覽器\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>我很常看到 agent demo 很漂亮，因為它只跑一個 session、一條 happy path。等你真的要上量，記憶體、CPU、cold start、retries 全部一起冒出來，然後你就開始像在配給瀏覽器使用權。這很荒謬，因為 browser 本來應該是 agent 的手，不是公司裡最貴的稀有資產。\u003C\u002Fp>\u003Cp>Cloudflare 的方向是把 browser access 壓到一個夠低的成本，讓它能變成更普遍的基礎能力，而不是只有大模型、大預算才玩得起的功能。這件事很現實。只要 browser access 還是昂貴門票，agent automation 就會卡在少數團隊手上，做不成真正可擴張的基礎設施。\u003C\u002Fp>\u003Cp>我自己看系統時，現在都會直接問 task cost，不看 instance cost 而已。因為一個 browser task 的真實成本，包含 idle memory、cold start、重試、session 保活、失敗後重跑。你只看單次執行，常常是在自我安慰。\u003C\u002Fp>\u003Cp>實操寫法：把設計目標改成 density。短生命週期 session、可預測的啟動、明確的回收、能重試但不依賴人工盯場。你越早把 browser 當成大量可消耗的 runtime，而不是珍貴器材，系統越容易長大。\u003C\u002Fp>\u003Ch2>重點其實是控制面，不是畫面有多像\u003C\u002Fh2>\u003Cp>Cloudflare 其實早就有 \u003Ca href=\"https:\u002F\u002Fdevelopers.cloudflare.com\u002Fbrowser-rendering\u002F\">Browser Rendering\u003C\u002Fa> 這類 headless browser automation \u003Ca href=\"\u002Ftag\u002Fapi\">API\u003C\u002Fa>，這次 Kitesurf 不是否定它，而是把問題重新定義。它說的是：AI 起來之後，browser 的角色變了。\u003C\u002Fp>\u003Cp>我最在意的也是這個。傳統 browser automation 很愛講 rendering、compatibility、像不像真的人類在看頁面。可 agent 真正在乎的是控制面：我能不能讀 state、能不能下指令、能不能回復、能不能穩定重播。這些東西比畫面長得像不像更重要。\u003C\u002Fp>\u003Cp>我以前做過一個流程，頁面看起來完全正常，截圖也沒問題，結果 agent 就是找不到按鈕。後來我才承認，這不是 rendering 問題，這是 control problem。當 browser 太重、太黑箱、太像人類工具，agent 就會一直被環境拖住。\u003C\u002Fp>\u003Cp>Cloudflare 這種 agent-first browser 的思路，是把最小但夠用的控制能力交給 agent：夠用的 DOM、夠用的 state、夠用的 scripting、夠用的 introspection。不是把整個人類網頁瀏覽體驗搬過來，而是把 task 完成所需的控制點留下來。\u003C\u002Fp>\u003Cp>實操寫法：你評估 browser tooling 時，不要先看它能不能把網頁渲染得漂漂亮亮。先問：agent 能不能不靠截圖就讀狀態？能不能 deterministic replay？失敗後能不能局部恢復？如果答案都不漂亮，你買到的還是人類瀏覽器。\u003C\u002Fp>\u003Ch2>這是一個更短的 agent loop\u003C\u002Fh2>\u003Cp>我覺得 Kitesurf 最有價值的地方，是它把 agent 跟 page 之間的 loop 壓短了。agent 思考，browser 執行，結果回來，下一步再做。這個 loop 一旦拉遠，整個系統就開始變笨、變慢、變貴。\u003C\u002Fp>\u003Cp>Cloudflare 的平台組合剛好對上這件事：Workers 靠近 edge，Wasm 提供受控執行，Durable Objects 管 state，RPC 和 service bindings 負責串接。Kitesurf 不是孤立的產品，它是這堆東西湊在一起後，長出來的一個合理結果。\u003C\u002Fp>\u003Cp>我很喜歡這個方向，因為它符合我看過最多的失敗模式。agent 通常不是死在模型不夠聰明，而是死在 loop 太慢、state 太散、browser session 一下就掉。你把 loop 縮短，debug 就容易很多，agent 也比較不會像一個在等回音的白癡。\u003C\u002Fp>\u003Cp>這代表 browser 不再是遠端 appliance，而是分散式應用裡的一個本地能力。對 iterative automation 來說，這比什麼 fancy demo 都實在。\u003C\u002Fp>\u003Cp>實操寫法：把 browser execution 盡量跟 decision layer co-locate。每一次 click 都不要跨太多服務。session 要持久就明確持久，不要靠一堆隱性狀態撐著。你要的是穩定 loop，不是華麗架構圖。\u003C\u002Fp>\u003Ch2>我把它當成 agent-native infra 的模板\u003C\u002Fh2>\u003Cp>我現在對 Kitesurf 的解讀，不只是一個 browser launch。它更像 Cloudflare 在說：app runtime 跟 automation runtime 的分界，正在變得很浪費。agent 一旦是產品的一部分，browser 就會變成 runtime 裡的一個普通執行目標，只是它剛好需要 state、隔離、低成本、靠近系統核心。\u003C\u002Fp>\u003Cp>這也是為什麼我不會把這篇當成單純的 browser 新聞。我會把它看成平台策略：Cloudflare 把 AI、Workers、browser automation 三條線收成一條。這很合理，因為你既然已經有 edge compute、state、RPC，再把 agent-first browser 放進來，整套 stack 就完整了。\u003C\u002Fp>\u003Cp>當然，我還是會追問一堆實務問題。高負載下穩不穩？隔離邊界多硬？支援的 web 範圍有多大？失敗模式是什麼？這些都不是看概念圖就能知道的。但方向我認為是對的，而且是那種我會願意拿來做系統設計的方向。\u003C\u002Fp>\u003Cp>實操寫法：回頭檢查你現在的 agent stack，標出所有 browser work 離開主 runtime 的地方。那些 seam 就是 latency、錢、可靠性在流血的地方。能收回來的，先收回來。\u003C\u002Fp>\u003Cul>\u003Cli>把 browser 當 runtime 的一部分，不要當外掛服務。\u003C\u002Fli>\u003Cli>把 state 留在原生可控的地方。\u003C\u002Fli>\u003Cli>把控制面縮短，讓 agent 跟 page 互動更直接。\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>可抄的模板\u003C\u002Fh2>\u003Cpre>\u003Ccode># Agent-first browser 設計模板（可直接改成你自己的架構文件）\n\n## 1. 先定義 browser 的任務\n- 導航到目標頁\n- 讀取 DOM 與頁面狀態\n- 填表與送出\n- 執行必要腳本\n- 擷取結果或截圖\n- 保留最小 session 狀態\n\n## 2. 刪掉人類才需要的東西\n- 不依賴 extension\n- 沒必要就不要完整桌面渲染\n- 不假設有人在看畫面\n- 不把人工介入寫進 happy path\n\n## 3. 把 browser 放進 agent 同一層 runtime\n- browser execution 跟 orchestration 放同平台\n- state 用原生 durable storage\n- 用 RPC 或 service bindings 做本地協調\n- 每一步操作都避免多餘 network hop\n\n## 4. 用密度思維看成本\n- session 盡量短命\n- 量 memory per session\n- 量 startup latency\n- 量 retry cost\n- 量每個完成任務的總成本\n\n## 5. 把控制能力做清楚\n- 提供 DOM inspection\n- 提供 action API\n- 提供可回復的 session state\n- 支援 deterministic replay\n- 定義失敗後怎麼恢復\n\n## 6. 評估 browser stack 時直接問這些\n- 我真的需要完整 Chromium 嗎？\n- 這能不能跑在 Wasm 類型的隔離 runtime？\n- state 到底放哪裡？\n- 多一個 session 的成本是多少？\n- 從 1 變 1,000 會先壞哪裡？\n\n## 7. 預設架構\nAgent\n- 做決策\n- 發送 action 給 browser runtime\n- 接收 page state\n- 更新 memory \u002F store\n- 重複直到任務完成\n\nBrowser runtime\n- 隔離執行\n- 最小權限\n- 短生命週期 session\n- 明確 state handoff\n\nStorage\n- session metadata\n- task logs\n- replay data\n- recovery checkpoints\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>這版我會直接拿去改成團隊的設計草稿。它的好處很土，但很有用：browser 變小、state 變明確、loop 變短，agent 才不會一直在那邊跟系統互相折磨。\u003C\u002Fp>\u003Cp>來源是 Cloudflare 官方文章 \u003Ca href=\"https:\u002F\u002Fblog.cloudflare.com\u002Fkitesurf\u002F\">https:\u002F\u002Fblog.cloudflare.com\u002Fkitesurf\u002F\u003C\u002Fa>，相關平台文件也可看 \u003Ca href=\"https:\u002F\u002Fworkers.cloudflare.com\u002F\">Workers\u003C\u002Fa>、\u003Ca href=\"https:\u002F\u002Fdevelopers.cloudflare.com\u002Fdurable-objects\u002F\">Durable Objects\u003C\u002Fa>、\u003Ca href=\"https:\u002F\u002Fdevelopers.cloudflare.com\u002Fworkers\u002Fruntime-apis\u002Frpc\u002F\">RPC\u003C\u002Fa>。上面這篇是我根據原文做的方法論拆解，模板段落是我自己整理成可落地版本。","我把 Cloudflare Kitesurf 拆成一套可抄的 agent-first browser 方法，重點是怎麼用 Workers、Wasm 和狀態層把重型瀏覽器 automation 縮小。","blog.cloudflare.com","https:\u002F\u002Fblog.cloudflare.com\u002Fkitesurf\u002F",null,"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1786127603865-k5ht.png","tools","zh","34ace48c-c860-49c3-85ba-16ae03cf58b1",[17,18,19,20,21],"Kitesurf","Workers","Wasm","agent-first browser","browser automation",[23,24,25],"把 Chromium 當預設值會讓 agent 自動化變貴又變笨重。","Workers + Wasm + Durable Objects 讓 browser 能跟 agent 放進同一個 runtime。","真正要優化的是控制面、成本密度與短 loop，不是只看渲染像不像。",1,"2026-08-07T18:32:56.343308+00:00","2026-08-07T18:32:56.301+00:00",{"tags":30,"relatedLang":33,"relatedPosts":37},[31],{"name":21,"slug":32},"browser-automation",{"id":15,"slug":34,"title":35,"language":36},"kitesurf-turns-workers-into-agent-browser-en","Kitesurf turns Workers into an agent browser","en",[38,44,50,56,62,68],{"id":39,"slug":40,"title":41,"cover_image":42,"image_url":42,"created_at":43,"category":13},"def73103-111d-4f21-8eee-653cc18e9f04","cuda-warps-memory-divergence-explained-zh","CUDA 讓 warp 變成一台機器","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1786064608556-bymw.png","2026-08-07T01:02:59.304763+00:00",{"id":45,"slug":46,"title":47,"cover_image":48,"image_url":48,"created_at":49,"category":13},"3b3c9d3f-47b5-453b-892f-241bf29d986b","harness-long-running-agent-coding-template-zh","Harness 讓長任務編程更像真開發","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1786043023387-ze69.png","2026-08-06T19:03:18.40646+00:00",{"id":51,"slug":52,"title":53,"cover_image":54,"image_url":54,"created_at":55,"category":13},"32a21aff-5a6c-407c-b9f5-fc9fe6079056","source-2-swaps-bsp-for-meshes-and-octrees-zh","Source 2 把 BSP 變成 mesh 流程","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1785978186212-w6tg.png","2026-08-06T01:02:43.692336+00:00",{"id":57,"slug":58,"title":59,"cover_image":60,"image_url":60,"created_at":61,"category":13},"a08d7243-ccc3-4ac7-8e68-12d17699f934","golang-basics-for-beginners-2026-zh","Golang 入門實作：安裝到測試通過","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1785976364887-czvh.png","2026-08-06T00:32:15.901873+00:00",{"id":63,"slug":64,"title":65,"cover_image":66,"image_url":66,"created_at":67,"category":13},"fea0311b-9182-48fa-af78-cb5d916970f2","run-linux-containers-on-wsl-with-wslc-zh","在 WSL 用 wslc 跑 Linux 容器","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1785933170061-tafy.png","2026-08-05T12:32:27.473774+00:00",{"id":69,"slug":70,"title":71,"cover_image":72,"image_url":72,"created_at":73,"category":13},"a88cd1d5-a31e-4932-89ed-27989257620c","aliyun-free-cloud-server-first-deployment-zh","阿里云试用额度部署首台服务器","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1785846785679-f8bn.png","2026-08-04T12:32:34.829107+00:00",[75,80,85,90,95,100,105,110,115,120],{"id":76,"slug":77,"title":78,"created_at":79},"855cd52f-6fab-46cc-a7c1-42195e8a0de4","surepath-real-time-mcp-policy-controls-zh","SurePath 推出即時 MCP 政策控管","2026-03-26T07:57:40.77233+00:00",{"id":81,"slug":82,"title":83,"created_at":84},"9b19ab54-edef-4dbd-9ce4-a51e4bae4ebb","mcp-in-2026-the-ai-tool-layer-teams-use-zh","2026 年 MCP：團隊真的在用的 AI 工具層","2026-03-26T08:01:46.589694+00:00",{"id":86,"slug":87,"title":88,"created_at":89},"af9c46c3-7a28-410b-9f04-32b3de30a68c","prompting-in-2026-what-actually-works-zh","2026 提示工程，真正有用的是什麼","2026-03-26T08:08:12.453028+00:00",{"id":91,"slug":92,"title":93,"created_at":94},"05553086-6ed0-4758-81fd-6cab24b575e0","garry-tan-open-sources-claude-code-toolkit-zh","Garry Tan 開源 Claude Code 工具包","2026-03-26T08:26:20.068737+00:00",{"id":96,"slug":97,"title":98,"created_at":99},"042a73a2-18a2-433d-9e8f-9802b9559aac","github-ai-projects-to-watch-in-2026-zh","2026 必看 20 個 GitHub AI 專案","2026-03-26T08:28:09.619964+00:00",{"id":101,"slug":102,"title":103,"created_at":104},"a5f94120-ac0d-4483-9a8b-63590071ac6a","claude-code-vs-cursor-2026-zh","Claude Code 與 Cursor 深度對比：202…","2026-03-26T13:27:14.279193+00:00",{"id":106,"slug":107,"title":108,"created_at":109},"0975afa1-e0c7-4130-a20d-d890eaed995e","practical-github-guide-learning-ml-2026-zh","2026 機器學習入門 GitHub 實用指南","2026-03-27T01:16:49.712576+00:00",{"id":111,"slug":112,"title":113,"created_at":114},"bfdb467a-290f-4a80-b3a9-6f081afb6dff","aiml-2026-student-ai-ml-lab-repo-review-zh","AIML-2026：像課綱的學生實驗 Repo","2026-03-27T01:21:51.467798+00:00",{"id":116,"slug":117,"title":118,"created_at":119},"80cabc3e-09fc-4ff5-8f07-b8d68f5ae545","ai-trending-github-repos-and-research-feeds-zh","AI Trending：把 AI 資源收成一張表","2026-03-27T01:31:35.262183+00:00",{"id":121,"slug":122,"title":123,"created_at":124},"3ce6e6e2-bac5-463e-9f8d-45caabcc61f7","awesome-ai-for-science-research-tools-map-zh","AI 科研工具清單，開始像地圖了","2026-03-27T01:46:50.521945+00:00"]