[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-cudf-turns-pandas-code-into-gpu-runs-zh":3,"article-related-cudf-turns-pandas-code-into-gpu-runs-zh":30,"series-tools-142b6b02-b02b-40a9-a9f5-e3e4807ef3d4":73},{"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":29},"142b6b02-b02b-40a9-a9f5-e3e4807ef3d4","cudf-turns-pandas-code-into-gpu-runs-zh","cuDF 讓 pandas 直接跑上 GPU","\u003Cp data-speakable=\"summary\">我拆解 cuDF 的 \u003Ca href=\"\u002Ftag\u002Fgpu\">GPU\u003C\u002Fa> dataframe 堆疊，順手給你一份能直接抄走的 pandas、Polars、Dask 起手式。\u003C\u002Fp>\u003Cp>我盯 cuDF 一陣子了，老實說它一開始真的很像那種「看起來很猛、裝起來很煩」的專案。你想把 pandas 工作搬去 GPU，結果先卡在 \u003Ca href=\"\u002Ftag\u002Fcuda\">CUDA\u003C\u002Fa> 版本、套件變體、到底該走哪個前端。功能不是問題，問題是你根本還沒開始算，就先被安裝流程消耗掉耐心。我最不爽的就是這種工具：嘴上說幫你加速，實際上先叫你補功課。\u003C\u002Fp>\u003Cp>但我後來\u003Ca href=\"\u002Fnews\u002Fgenpact-growth-story-built-on-bpo-scale-zh\">看懂\u003C\u002Fa>一件事，cuDF 不是單一套件在那邊硬扮萬能，它本來就是一整層堆疊。底下有 C++ 核心，上面有 Python 綁定，再往上才是 pandas、Polars、Dask 這些使用入口。這樣一拆，很多原本看起來很亂的東西就\u003Ca href=\"\u002Fnews\u002Fmyseum-scanon-privacy-first-moderation-bet-zh\">合理\u003C\u002Fa>了。第一次把它當成堆疊來看，我才真的知道自己該從哪一層下手，而不是在安裝文件裡面打轉。\u003C\u002Fp>\u003Ch2>我先看懂它不是一包，而是一整層堆疊\u003C\u002Fh2>\u003Cblockquote>cuDF is composed of multiple libraries including: libcudf, pylibcudf, cudf, cudf.pandas, cudf-polars, and dask-cudf.\u003C\u002Fblockquote>\u003Cp>翻譯一下就是：cuDF 不是一個「裝了就好」的單體，它是一家族套件。這件事很重要，因為每一層處理的問題都不一樣。你只看 Python \u003Ca href=\"\u002Ftag\u002Fapi\">API\u003C\u002Fa>，會忽略底層 GPU tabular primitive；你只看 C++，又會錯過真正讓人願意用它的原因，也就是既有 dataframe 程式碼能不能少改就上 GPU。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1782058732771-box2.png\" alt=\"cuDF 讓 pandas 直接跑上 GPU\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>我以前很常被這種平台型 repo 搞到煩。文件寫一堆內部名詞，但你明明只是想把一個 notebook 跑快一點。cuDF 這次反而算老實，README 直接把層級攤開來：\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Frapidsai\u002Fcudf\">RAPIDS cuDF GitHub\u003C\u002Fa>、\u003Ca href=\"https:\u002F\u002Fdocs.rapids.ai\u002Fapi\u002Fcudf\u002Fstable\u002F\">libcudf 文件\u003C\u002Fa>、\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Frapidsai\u002Fcudf\u002Ftree\u002Fmain\u002Fpython\u002Fpylibcudf\">pylibcudf\u003C\u002Fa>、\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Frapidsai\u002Fcudf\u002Ftree\u002Fmain\u002Fpython\u002Fcudf\">cudf\u003C\u002Fa>、\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Frapidsai\u002Fcudf\u002Ftree\u002Fmain\u002Fpython\u002Fcudf_polars\">cudf-polars\u003C\u002Fa>、\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Frapidsai\u002Fcudf\u002Ftree\u002Fmain\u002Fpython\u002Fdask_cudf\">dask-cudf\u003C\u002Fa>，你要哪條路，自己挑。\u003C\u002Fp>\u003Cp>實操上我會這樣判斷：如果你團隊本來就寫 pandas，先看 cudf.pandas；如果你已經在用 Polars，就看 cudf-polars；如果你是分散式 dataframe 工作，那就看 dask-cudf。不要一開始就問「cuDF 能不能支援我全部工作流」，這題太空泛。先問你現在到底在哪一層，答案會乾淨很多。\u003C\u002Fp>\u003Cul>\u003Cli>底層想碰 GPU tabular 原語：看 \u003Cstrong>libcudf\u003C\u002Fstrong>。\u003C\u002Fli>\u003Cli>想要 pandas 風格 API：看 \u003Cstrong>cudf\u003C\u002Fstrong>。\u003C\u002Fli>\u003Cli>想保留既有 pandas 程式碼：先碰 \u003Cstrong>cudf.pandas\u003C\u002Fstrong>。\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>安裝不是隨便裝，是 CUDA 版本配對\u003C\u002Fh2>\u003Cblockquote>You will need to match the major version number of your installed CUDA version with a -cu## suffix when installing from PyPI.\u003C\u002Fblockquote>\u003Cp>這句話其實就是整個安裝故事的核心。cuDF 的 PyPI wheel 不是亂發的，它是跟 CUDA major version 綁死的。你如果是 CUDA 13，就得裝 \u003Ccode>-cu13\u003C\u002Fcode>；你如果是 CUDA 12，就得裝 \u003Ccode>-cu12\u003C\u002Fcode>。這不是小註解，這是門檻。很多 GPU Python 工具爛就爛在這裡，大家嘴上都說「先 pip install 再說」，結果一半的人直接版本不合，另一半的人在錯的地方 debug 半天。\u003C\u002Fp>\u003Cp>我比較喜歡 cuDF 的地方，是它至少把這件事講在前面，不跟你玩模糊地帶。它也直接把你導去 \u003Ca href=\"https:\u002F\u002Fdocs.rapids.ai\u002Finstall\">RAPIDS 安裝指南\u003C\u002Fa>，先看作業系統、驅動、CUDA 支援版本，再決定要走 pip 還是 conda。這種順序我認同，因為 GPU 套件本來就不是「先裝再看」的玩法。\u003C\u002Fp>\u003Cp>我自己的實操建議很簡單：先確認三件事，作業系統、GPU 驅動、CUDA major version。確認完再選安裝路徑。習慣 pip 就用對應的 \u003Ccode>-cu12\u003C\u002Fcode> 或 \u003Ccode>-cu13\u003C\u002Fcode>；習慣 conda 就走 \u003Ccode>-c rapidsai\u003C\u002Fcode>；如果你是要追新版，再去看 nightly channel。不要一上來就把問題丟給 Python 環境，這通常只會讓你更氣。\u003C\u002Fp>\u003Cul>\u003Cli>PyPI 路線要先對齊 CUDA major version。\u003C\u002Fli>\u003Cli>conda 路線就老實用 RAPIDS channel。\u003C\u002Fli>\u003Cli>要從原始碼裝，再去看 repo 的 build \u002F contribution 文件。\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>cudf.pandas 是最不痛的切入口\u003C\u002Fh2>\u003Cblockquote>A zero-code change accelerator, cudf.pandas, for existing pandas code.\u003C\u002Fblockquote>\u003Cp>這句我覺得很關鍵，因為它直接回答了最實際的問題：我現有的 pandas 程式碼要改多少？答案通常是，比你想像少。你可以用 \u003Ccode>python -m cudf.pandas script.py\u003C\u002Fcode> 跑腳本，也可以在 notebook 裡先 \u003Ccode>%load_ext cudf.pandas\u003C\u002Fcode>，然後照樣 import pandas。支援的操作會被導到 GPU，至少先讓你知道哪些地方真的值得加速。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1782058735251-tnx0.png\" alt=\"cuDF 讓 pandas 直接跑上 GPU\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>我會把這個模式當成第一個實驗，不會一開始就急著重寫整條 pipeline。因為很多團隊卡在 GPU 導入，不是技術不行，是心理上以為自己得先大改程式碼才有資格試。這想法很煩，也很浪費時間。正確做法是先包住既有程式，挑一個慢 notebook 或 batch job 來試，先看那些重的 dataframe 操作是不是真的適合 GPU。\u003C\u002Fp>\u003Cp>實操上我會這樣做：先選一支最慢的 pandas 腳本，不改邏輯，只改啟動方式。跑一次原版、跑一次 cudf.pandas 版，量 runtime、量記憶體、量有沒有踩到不支援的 API。等你有數字，再決定要不要往 native cuDF API 走。沒有數字就談遷移，通常只是在開會。\u003C\u002Fp>\u003Cp>這條路還有一個好處，就是你會在真實上下文裡發現相容性問題。哪些 pandas API 其實已經夠快，哪些才是瓶頸，一次就看得出來。你不需要先寫一份很漂亮的 migration plan，你只需要先知道哪個步驟在拖慢你。\u003C\u002Fp>\u003Ch2>Polars 跟 Dask 不是附帶品，是正經入口\u003C\u002Fh2>\u003Cblockquote>cudf-polars: A Python library providing a GPU engine for Polars; dask-cudf: A Python library providing a GPU backend for Dask DataFrames.\u003C\u002Fblockquote>\u003Cp>這代表 cuDF 不只想吃 pandas，它也想接住 Polars 跟 Dask 這兩個常見生態。這很合理，因為現在很多團隊早就不是純 pandas 了。有些人改用 Polars，因為 lazy execution 比較順；有些人本來就在 Dask 上做分散式 dataframe。cuDF 不是逼大家換腦袋，而是把 GPU execution 插到既有習慣裡。\u003C\u002Fp>\u003Cp>README 裡的 Polars 範例我看得很順眼：掃 parquet、drop null、group by，最後用 \u003Ccode>collect(engine=\"gpu\")\u003C\u002Fcode>。我喜歡這種寫法，因為它把 GPU 的位置講清楚了，不是藏在奇怪的自訂抽象裡。Dask-cudf 也是同一個邏輯，保留 Dask 的思考方式，只是把 dataframe backend 換成 GPU 版本。\u003C\u002Fp>\u003Cp>我碰過混合團隊最知道這件事有多重要。A 組要 pandas 相容，B 組想用 lazy plan，C 組要 cluster execution。如果 GPU 方案只照顧其中一種，導入就會\u003Ca href=\"\u002Fnews\u002Fsk-telecom-anthropic-mythos-policy-flashpoint-zh\">變成政\u003C\u002Fa>治問題。cuDF 的做法比較務實，至少它沒有假裝一個 API 可以把所有人都哄好。\u003C\u002Fp>\u003Cp>實操上我會先畫出你現有的 dataframe 地圖。你如果是 Polars 使用者，就挑一條 lazy pipeline，直接試 \u003Ccode>engine=\"gpu\"\u003C\u002Fcode>。你如果是 Dask 使用者，就挑一個最吃時間的分散式 job，先看 GPU backend 能不能吃下去。你如果是 pandas 團隊，就先待在 cudf.pandas，不要急著跳 native API，先看結果再說。\u003C\u002Fp>\u003Cul>\u003Cli>\u003Ca href=\"https:\u002F\u002Fpola.rs\u002F\">Polars\u003C\u002Fa> 使用者先看 lazy plan 和 engine 選擇。\u003C\u002Fli>\u003Cli>\u003Ca href=\"https:\u002F\u002Fwww.dask.org\u002F\">Dask\u003C\u002Fa> 使用者先看分散式執行與 backend 切換。\u003C\u002Fli>\u003Cli>\u003Ca href=\"https:\u002F\u002Fpandas.pydata.org\u002F\">pandas\u003C\u002Fa> 使用者先從相容模式開始，不要先重寫。\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>這 repo 比較像生產環境工具，不像 demo 玩具\u003C\u002Fh2>\u003Cblockquote>Notable projects that use cuDF include Spark RAPIDS, Velox-cuDF, and Sirius.\u003C\u002Fblockquote>\u003Cp>這句話讓我比較放心。因為它代表 cuDF 不是只拿來做 notebook demo 的。README 直接點出幾個真正在用的專案：\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fspark-rapids\">Spark RAPIDS\u003C\u002Fa>、\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffacebookincubator\u002Fvelox\">Velox\u003C\u002Fa> 的 cuDF 整合、還有 \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fduckdblabs\u002Fsirius\">Sirius\u003C\u002Fa>。這不是裝飾，是訊號：cuDF 被設計成可以塞進更大的資料系統裡。\u003C\u002Fp>\u003Cp>翻譯一下就是，你評估 cuDF 的方式不該是「我要不要換一個 dataframe 套件」，而是「GPU tabular execution 在我現有資料流裡哪一段最划算」。這個問法好多了，因為它逼你去看整條路徑，而不是只看單點 \u003Ca href=\"\u002Ftag\u002Fbenchmark\">benchmark\u003C\u002Fa>。\u003C\u002Fp>\u003Cp>我很吃這一套，因為很多 GPU 專案都喜歡拿 toy example 先把你騙進來，等真的接到生產流程就開始掉漆。cuDF 至少把整合關係講出來，表示它預設自己是被嵌進系統裡，不是拿來當展示品。\u003C\u002Fp>\u003Cp>實操上，如果你們公司本來就有 Spark 或 SQL engine，不要把 cuDF 獨立拿出來看。直接挑一條資料路徑，從來源、轉換、到下游消費者都畫出來，然後找出最花 wall-clock time 的那一段。GPU 加速要是不能省到時間，就別硬上。\u003C\u002Fp>\u003Ch2>日常使用上，我會把它當平台依賴來管\u003C\u002Fh2>\u003Cblockquote>For bug reports or feature requests, please file an issue on the GitHub issue tracker.\u003C\u002Fblockquote>\u003Cp>這句看起來很普通，但它其實透露了專案的使用方式。cuDF 不是一次性丟給你用完就算，它預設你會回到 \u003Ca href=\"\u002Ftag\u002Fgithub\">GitHub\u003C\u002Fa> issue tracker、看文件、看貢獻流程、看版本相容性。這對一個深入堆疊底層的工具來說很正常，也很合理。\u003C\u002Fp>\u003Cp>我建議你把它當平台依賴，而不是一個「反正 pip 裝得起來」的小套件。先讀 README，再裝；先確認版本，再寫程式；先記錄 CUDA 假設，再交給團隊。你如果是多人協作，最好把安裝方式、CUDA 版本、conda\u002Fpip 選擇都寫進 README 或 runbook，不然之後一定有人在別台機器上重演同一個坑。\u003C\u002Fp>\u003Cp>我自己會特別注意三件事：一，版本要 pin；二，安裝筆記要留；三，出問題先看 issue tracker 跟文件，不要先在 Slack 裡亂猜。這種基礎工作雖然煩，但它會直接決定你是不是每次換環境都要重來一次。\u003C\u002Fp>\u003Cp>如果你真的要把 cuDF 放進團隊流程，我會建議你先從單一慢任務開始，不要整條資料管線一起搬。先驗證價值，再談擴大。這是我看這類工具最實際的態度：先讓它在一件事上證明自己，不要先把自己說服。\u003C\u002Fp>\u003Ch2>可抄的模板\u003C\u002Fh2>\u003Cpre>\u003Ccode># cuDF 導入起手式（可直接貼進團隊 README）\n\n## 1. 先選入口\n- 舊 pandas 程式碼不想大改：先用 cudf.pandas\n- 已經在用 Polars：先看 cudf-polars\n- 已經在用 Dask：先看 dask-cudf\n- 要碰底層 GPU tabular primitive：看 libcudf \u002F pylibcudf\n\n## 2. 先確認環境\n- 作業系統是否受支援： https:\u002F\u002Fdocs.rapids.ai\u002Finstall\n- GPU 驅動是否正確\n- CUDA major version 是 12 還是 13\n- 安裝路徑要跟 CUDA major version 對齊\n\n## 3. 安裝原則\n### pip\n- CUDA 13：裝對應的 -cu13 套件\n- CUDA 12：裝對應的 -cu12 套件\n\n### conda\n- 用 rapidsai channel\n- 團隊若有夜版需求，再評估 nightly channel\n\n## 4. 最小可行測試\n### pandas 相容模式\npython -m cudf.pandas script.py\n\n### notebook\n%load_ext cudf.pandas\nimport pandas as pd\n\ndf = pd.read_parquet(\"data.parquet\")\ndf = df.dropna().groupby([\"A\", \"B\"]).mean()\n\n### native cuDF\nimport cudf\n\ndf = cudf.read_parquet(\"data.parquet\")\ndf = df.dropna().groupby([\"A\", \"B\"]).mean()\n\n### Polars GPU engine\nimport polars as pl\n\nlf = pl.scan_parquet(\"data.parquet\")\nlf = lf.drop_nulls().group_by([\"A\", \"B\"]).mean()\nresult = lf.collect(engine=\"gpu\")\n\n## 5. 評估方式\n- 先保留原本 CPU 路徑\n- 比 runtime\n- 比記憶體\n- 比相容性\n- 只有真的省時間，才往更深的 native API 走\n\n## 6. 出問題怎麼辦\n- 看 GitHub repo： https:\u002F\u002Fgithub.com\u002Frapidsai\u002Fcudf\n- 看 API 文件： https:\u002F\u002Fdocs.rapids.ai\u002Fapi\u002Fcudf\u002Fstable\u002F\n- 要從原始碼裝，再看 contribution guide： https:\u002F\u002Fgithub.com\u002Frapidsai\u002Fcudf\u002Fblob\u002Fmain\u002FCONTRIBUTING.md\n\n## 7. 團隊備註\n- 把 CUDA 版本寫進 README\n- 把安裝方式寫進 runbook\n- 把已知不相容的 pandas API 記錄下來\n- 不要把 GPU 導入當成一次性試驗，當成平台依賴管理\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>這份模板我故意寫得很直白，因為我比較不想給你一份看起來很漂亮、實際上不能貼的 checklist。你如果要在團隊裡推 cuDF，順序就是這樣：先選入口、先對版本、先做最小測試、先量結果，再決定要不要擴大。\u003C\u002Fp>\u003Cp>原始來源是 \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Frapidsai\u002Fcudf\">https:\u002F\u002Fgithub.com\u002Frapidsai\u002Fcudf\u003C\u002Fa>，我拆的 package 層級、安裝邏輯、範例流程都來自這個 repo 與相關文件；上面這份導入模板跟實操順序，是我根據來源整理出的可直接拿去用的版本。\u003C\u002Fp>","我把 cuDF 的 GPU dataframe 堆疊拆開，順手整理成可直接抄走的 pandas、Polars、Dask 上 GPU 起手式。","github.com","https:\u002F\u002Fgithub.com\u002Frapidsai\u002Fcudf",null,"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1782058732771-box2.png","tools","zh","decd40da-6ddd-45f0-835f-7981d0f45111",[17,18,19,20,21],"cuDF","GPU dataframe","pandas","Polars","Dask",[23,24,25],"cuDF 不是單一套件，而是從 libcudf 到 cudf.pandas 的分層堆疊。","安裝前先對齊 CUDA major version，不然很容易卡在版本不合。","先用 cudf.pandas 或 Polars\u002FDask 入口做最小測試，再決定要不要重寫。",0,"2026-06-21T16:18:27.113079+00:00","2026-06-21T16:18:27.099+00:00","c3c88dd2-a940-438a-b359-0e5a24562273",{"tags":31,"relatedLang":32,"relatedPosts":36},[],{"id":15,"slug":33,"title":34,"language":35},"cudf-turns-pandas-code-into-gpu-runs-en","cuDF turns pandas code into GPU runs","en",[37,43,49,55,61,67],{"id":38,"slug":39,"title":40,"cover_image":41,"image_url":41,"created_at":42,"category":13},"551239ec-2ece-4733-989a-ff59d6b8141b","install-openclaw-windows-powershell-wsl2-zh","Windows PowerShell 安裝 OpenClaw 成果版","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1782093775396-g5vp.png","2026-06-22T02:02:28.203938+00:00",{"id":44,"slug":45,"title":46,"cover_image":47,"image_url":47,"created_at":48,"category":13},"27b9156f-d888-4fb6-8922-a607e16ad7c4","anthropic-github-repositories-claude-code-push-zh","Anthropic GitHub 91 個倉庫，Claude Code 加速","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1782082984505-d1hq.png","2026-06-21T23:02:28.590393+00:00",{"id":50,"slug":51,"title":52,"cover_image":53,"image_url":53,"created_at":54,"category":13},"4860bd59-d197-4c32-a4aa-e3f53aa08d7a","bigquery-vectorized-python-udfs-arrow-zh","BigQuery Arrow 向量化 Python UDF 實作","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1782027159471-91jd.png","2026-06-21T07:32:19.997774+00:00",{"id":56,"slug":57,"title":58,"cover_image":59,"image_url":59,"created_at":60,"category":13},"642eb00a-f3cd-422f-9d29-e113dc82e5d3","apples-gemini-powered-siri-seo-stakes-zh","Apple Siri 接上 Gemini，SEO 壓力升高","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1782011869139-s32t.png","2026-06-21T03:17:28.557729+00:00",{"id":62,"slug":63,"title":64,"cover_image":65,"image_url":65,"created_at":66,"category":13},"03ca3c65-1597-4a56-aaf5-09949ec0b995","databricks-custom-model-serving-endpoints-zh","Databricks 端點讓你少猜","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1782003811403-1hhn.png","2026-06-21T01:03:09.88432+00:00",{"id":68,"slug":69,"title":70,"cover_image":71,"image_url":71,"created_at":72,"category":13},"1210fbca-7d00-4a0d-9be2-39163079dbb0","go-turns-team-chaos-into-boring-builds-zh","Go 把團隊混亂變成穩定建置","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781971401098-zdl4.png","2026-06-20T16:02:53.571588+00:00",[74,79,84,89,94,99,104,109,114,119],{"id":75,"slug":76,"title":77,"created_at":78},"855cd52f-6fab-46cc-a7c1-42195e8a0de4","surepath-real-time-mcp-policy-controls-zh","SurePath 推出即時 MCP 政策控管","2026-03-26T07:57:40.77233+00:00",{"id":80,"slug":81,"title":82,"created_at":83},"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":85,"slug":86,"title":87,"created_at":88},"af9c46c3-7a28-410b-9f04-32b3de30a68c","prompting-in-2026-what-actually-works-zh","2026 提示工程，真正有用的是什麼","2026-03-26T08:08:12.453028+00:00",{"id":90,"slug":91,"title":92,"created_at":93},"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":95,"slug":96,"title":97,"created_at":98},"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":100,"slug":101,"title":102,"created_at":103},"a5f94120-ac0d-4483-9a8b-63590071ac6a","claude-code-vs-cursor-2026-zh","Claude Code 與 Cursor 深度對比：202…","2026-03-26T13:27:14.279193+00:00",{"id":105,"slug":106,"title":107,"created_at":108},"0975afa1-e0c7-4130-a20d-d890eaed995e","practical-github-guide-learning-ml-2026-zh","2026 機器學習入門 GitHub 實用指南","2026-03-27T01:16:49.712576+00:00",{"id":110,"slug":111,"title":112,"created_at":113},"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":115,"slug":116,"title":117,"created_at":118},"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":120,"slug":121,"title":122,"created_at":123},"3ce6e6e2-bac5-463e-9f8d-45caabcc61f7","awesome-ai-for-science-research-tools-map-zh","AI 科研工具清單，開始像地圖了","2026-03-27T01:46:50.521945+00:00"]