[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-portainer-docker-standalone-upgrade-checklist-zh":3,"article-related-portainer-docker-standalone-upgrade-checklist-zh":30,"series-tools-eaafcfeb-80da-44b6-9b20-06e9846d52a5":82},{"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},"eaafcfeb-80da-44b6-9b20-06e9846d52a5","portainer-docker-standalone-upgrade-checklist-zh","Portainer 升級文把 Docker 更新變清單","\u003Cp data-speakable=\"summary\">我把 Portainer 的 \u003Ca href=\"\u002Ftag\u002Fdocker\">Docker\u003C\u002Fa> Standalone 升級流程拆成可直接複製的檢查清單，讓你不用邊升級邊猜。\u003C\u002Fp>\u003Cp>我用 Portainer 跑 Docker 一陣子了。老實說，它最煩的地方不是升級指令難，而是你每次一要動手，腦袋就同時開三個分頁：資料會不會不見、容器砍掉會不會把別的 stack 一起帶走、\u003Ca href=\"\u002Ftag\u002Fagent\">agent\u003C\u002Fa> 版本有沒有跟上。這種東西最容易把人卡住。命令本身很短，心理負擔卻很重。我以前也會在 \u003Ccode>docker rm\u003C\u002Fcode> 那一步停住，開始懷疑自己是不是要先備份到天荒地老。\u003C\u002Fp>\u003Cp>後來我去看 Portainer 的 \u003Ca href=\"https:\u002F\u002Fdocs.portainer.io\u002Fstart\u002Fupgrade\u002Fdocker\">Docker Standalone upgrade doc\u003C\u002Fa>，才發現它其實是在教一個很樸素的套路：把 runtime 換掉，資料留著，版本對齊，然後不要自作聰明。它沒有把升級寫成儀式感滿滿的大工程，反而像一張操作單。這種寫法我很買單，因為我不想在維運工具上玩猜謎。\u003C\u002Fp>\u003Ch2>Portainer 的核心思路其實很無聊，但很對\u003C\u002Fh2>\u003Cblockquote>To update to the latest version of Portainer Server, use the following commands to stop then remove the old version. Your other applications\u002Fcontainers will not be removed.\u003C\u002Fblockquote>\u003Cp>翻譯一下就是：Portainer 容器可以丟，資料不要丟。這句話看起來普通，但它其實是在劃清楚一件事：容器是可替換的執行層，真正重要的是外掛出去的 volume。這種設計才讓升級變成「換容器」而不是「重裝系統」。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780915698308-56pt.png\" alt=\"Portainer 升級文把 Docker 更新變清單\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>我之前帶一個小環境時，最怕的就是工具本身跟資料綁死。只要一升級就像在拆房子。Portainer 這份文件的好處，就是它一直提醒你：不要把 container filesystem 當成家。家要放在 named volume 裡，container 只是臨時住客。\u003C\u002Fp>\u003Cp>實操上我會這樣做：\u003C\u002Fp>\u003Cul>\u003Cli>先確認 Portainer 的資料真的在 named volume，例如 \u003Ccode>portainer_data\u003C\u002Fcode>。\u003C\u002Fli>\u003Cli>只停掉 Portainer 自己，不要碰你管理中的其他 containers 或 stacks。\u003C\u002Fli>\u003Cli>就算文件說安全，我還是會先備份 volume，這不是不信任，是避免自己手滑。\u003C\u002Fli>\u003C\u002Ful>\u003Cp>這也是我喜歡 Portainer 文件的地方。它沒有把升級包裝成什麼神秘流程，反而把最重要的界線講清楚：runtime 可換，state 要留。\u003C\u002Fp>\u003Ch2>版本對齊不是潔癖，是少走冤枉路\u003C\u002Fh2>\u003Cp>Portainer 文件很直接地說，server 跟 agent 要用同一版。這件事很多人會想偷懶，覺得「差一點點應該沒差吧」。我以前也這樣想，結果通常不是當場炸，而是開始出現那種很難描述的怪問題：連線怪怪的、環境看不到、UI 沒報錯但行為就是不對。\u003C\u002Fp>\u003Cp>也就是說，Portainer 不太吃「大概相容」這套。server 和 agent 不是各升各的就好，它們是配對關係。你如果 server 升了、agent 還卡在舊版，問題不一定馬上爆，但你會開始浪費時間猜到底是 Docker、網路、權限，還是版本不合。通常最後答案都很無聊，就是沒對齊。\u003C\u002Fp>\u003Cp>我自己遇過最煩的一次，是 lab 環境裡 server 先升，agent 晚了一拍。沒有大事故，但就是開始 flaky。那種感覺最差，因為你沒辦法很快證明是誰壞掉。文件把這件事講死，反而是幫你省時間。\u003C\u002Fp>\u003Cp>實操寫法我會抓三件事：\u003C\u002Fp>\u003Cul>\u003Cli>升級前先記下目前 server 版本，別只看 UI 右上角一眼帶過。\u003C\u002Fli>\u003Cli>能同步升 agent 就同步升，不要 server 先跑太遠。\u003C\u002Fli>\u003Cli>如果你還卡在 Portainer 1.x，先走到 2.0.0，再談最新版本，別想一步跳過去。\u003C\u002Fli>\u003C\u002Ful>\u003Cp>這裡我也順手補一個連結：Portainer 官方文件站是 \u003Ca href=\"https:\u002F\u002Fdocs.portainer.io\u002F\">docs.portainer.io\u003C\u002Fa>，它把不同平台的升級路徑拆開，這比把所有情況揉成一鍋好太多。\u003C\u002Fp>\u003Ch2>9443 和 HTTPS 這件事，別用舊習慣硬撐\u003C\u002Fh2>\u003Cp>文件裡有個很容易被忽略的點：從 Portainer CE 2.9、BE 2.10 開始，HTTPS 預設是開在 9443。這代表你不能再只盯著以前那個 HTTP 習慣，因為升級後的預設世界已經變了。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780915698500-6vyp.png\" alt=\"Portainer 升級文把 Docker 更新變清單\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>翻譯一下就是，Portainer 沒有故意刁難你，它只是把安全預設往前推了一格。問題在於，很多人升級完還在用舊書籤，直接打 \u003Ccode>http:\u002F\u002Fserver:9000\u003C\u002Fcode>，然後開始懷疑服務掛了。其實不是掛，是你還在用舊入口。\u003C\u002Fp>\u003Cp>我很常看到這種錯法，尤其是平常太依賴 bookmark 的人。升級本身沒出錯，錯的是你沒跟著改連線方式。這種 bug 最討厭，因為它看起來像故障，實際上是習慣。\u003C\u002Fp>\u003Cp>實操上我會這樣處理：\u003C\u002Fp>\u003Cul>\u003Cli>先確認 agent 和 edge agent 已經能用 HTTPS 溝通，再升 server。\u003C\u002Fli>\u003Cli>升完之後，主要入口改用 \u003Ccode>https:\u002F\u002Fyour-server:9443\u003C\u002Fcode>。\u003C\u002Fli>\u003Cli>只有真的需要過渡期時，才暫時保留 9000，不要把舊 HTTP 當永久方案。\u003C\u002Fli>\u003C\u002Ful>\u003Cp>如果你有自管憑證，Portainer 也有對應的 SSL 參數，這點我反而覺得很\u003Ca href=\"\u002Fnews\u002F6-crypto-ai-agents-compare-utility-fast-zh\">實用\u003C\u002Fa>。至少你不用把內網管理介面交給預設憑證亂跑，還得回頭查半天到底是哪個路徑沒掛上。\u003C\u002Fp>\u003Ch2>升級不是遷移，是替換 runtime\u003C\u002Fh2>\u003Cp>Portainer server 的更新流程其實很短：停掉舊容器、刪掉舊容器、拉新 image、用同一個 volume 跑新容器。文件還特別寫了，其他 applications\u002Fcontainers 不會被移除。這句話很重要，因為它把升級的邏輯講得很乾淨。\u003C\u002Fp>\u003Cp>也就是說，你不是在「搬家」，你是在「換一台新的 Portainer 執行個體」，然後把原本的資料庫接回去。這個心智模型一旦建立，很多恐懼會直接少一半。因為你知道真正要保護的是資料，不是那個舊 container id。\u003C\u002Fp>\u003Cp>我現在看 admin 工具都會用這個角度判斷：它是不是把 state 外掛出去？如果是，那升級就應該像換電池，不該像拆主機板。Portainer 這份文件就是在教你用這種方式思考。\u003C\u002Fp>\u003Cp>實操寫法可以很直接：\u003C\u002Fp>\u003Cul>\u003Cli>先 \u003Ccode>docker stop\u003C\u002Fcode> 再 \u003Ccode>docker rm\u003C\u002Fcode>，但只動 Portainer 自己。\u003C\u002Fli>\u003Cli>拉對 edition 的 \u003Ccode>lts\u003C\u002Fcode> image，不要亂挑 tag。\u003C\u002Fli>\u003Cli>重跑 container 時，volume、port、restart policy 都維持原樣。\u003C\u002Fli>\u003C\u002Ful>\u003Cp>我也建議你把 Portainer 當成\u003Ca href=\"\u002Fnews\u002Fuchn-ai-token-gated-infrastructure-template-zh\">基礎設施\u003C\u002Fa>的一部分，而不是一般 app。管理工具如果每次升級都像賭博，那你整個維運\u003Ca href=\"\u002Fnews\u002Foracle-oke-kubernetes-support-schedule-zh\">節奏\u003C\u002Fa>都會被它拖慢。\u003C\u002Fp>\u003Ch2>agent 那段才是真正容易翻車的地方\u003C\u002Fh2>\u003Cp>很多人升 Portainer 只看 server，結果真正出事的是 agent。文件把 agent 更新獨立出來，我覺得這很誠實。它不是附錄，而是另一條流程：停 agent、刪 agent、拉 \u003Ccode>portainer\u002Fagent:lts\u003C\u002Fcode>、再跑起來。\u003C\u002Fp>\u003Cp>翻譯一下就是，agent 不是什麼可有可無的小配件。它有自己的身份，還可能帶著 \u003Ccode>AGENT_SECRET\u003C\u002Fcode>。你如果 server 有設 secret，agent 升級時沒帶同一組環境變數，連線就會卡住。那種錯很煩，因為看起來像網路問題，實際上只是少打一個參數。\u003C\u002Fp>\u003Cp>我自己最怕的就是晚上臨時 refresh agent，覺得應該很快，結果卡在 secret 或 port 9001。這種時候你會很想怪 Docker，但通常是自己少看了一行文件。Portainer 把這件事寫出來，等於先幫你把坑標好。\u003C\u002Fp>\u003Cp>實操方式我會這樣做：\u003C\u002Fp>\u003Cul>\u003Cli>server 和 agent 版本盡量同步，不要 server 先升、agent 放著不管。\u003C\u002Fli>\u003Cli>如果你有用 \u003Ccode>AGENT_SECRET\u003C\u002Fcode>，升級時原封不動帶回去。\u003C\u002Fli>\u003Cli>確認 \u003Ccode>9001\u003C\u002Fcode> 在你的網路環境裡是可達的，別等升完才發現防火牆擋掉。\u003C\u002Fli>\u003C\u002Ful>\u003Cp>另外，Portainer 的 GitHub 在 \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fportainer\u002Fportainer\">github.com\u002Fportainer\u002Fportainer\u003C\u002Fa>，真遇到奇怪案例時，我會去那邊看 issue 和實際討論，比自己在腦內推理快很多。\u003C\u002Fp>\u003Ch2>備份那句話不是裝飾，是保命線\u003C\u002Fh2>\u003Cp>文件有提醒你在任何更新前先備份目前的 Portainer 設定。這句話很容易被滑過去，因為前面的 commands 看起來太乾淨了。但老實說，越是看起來乾淨的流程，越要先備份。人類最常犯的錯就是把「步驟很少」誤認成「風險很低」。\u003C\u002Fp>\u003Cp>翻譯一下就是，Portainer 本身不是脆弱，而是你對環境的記憶通常很脆弱。你會忘記自訂憑證路徑，忘記某個額外 port，忘記當初為什麼多加一個 flag。等你真的出事，最值錢的不是勇氣，是備份。\u003C\u002Fp>\u003Cp>我對這件事的立場很硬：任何會管理容器、stack、registry、environment 的工具，升版本前都該先備份。不是因為官方不可信，是因為你自己不可能記得所有細節。\u003C\u002Fp>\u003Cp>實操上我會做這幾件事：\u003C\u002Fp>\u003Cul>\u003Cli>先備份 Portainer 的 data volume，再開始任何升級動作。\u003C\u002Fli>\u003Cli>把原本 run command 的 custom flags 記下來，別只靠記憶。\u003C\u002Fli>\u003Cli>順手記住目前 image tag 和版本，萬一要 rollback 才有路走。\u003C\u002Fli>\u003C\u002Ful>\u003Cp>如果你把這整個流程看成一句話，那就是：保留資料、替換 runtime、確認入口、再核對版本。真的不用搞得很戲劇化。\u003C\u002Fp>\u003Ch2>可抄的模板\u003C\u002Fh2>\u003Cpre>\u003Ccode># Portainer Docker Standalone 升級清單\n\n## 升級前\n- [ ] 確認目前 Portainer 版本\n- [ ] 確認是 CE 還是 BE\n- [ ] 備份 Portainer data volume\n- [ ] 確認 agent 版本和 server 對齊\n- [ ] 如果還在 1.x，先規劃到 2.0.0 的中繼升級\n- [ ] 確認 agent \u002F edge agent 已經能用 HTTPS 溝通\n- [ ] 記下原本 container 的 custom flags、port、憑證路徑\n\n## 升級 Portainer Server\n# 停止舊容器\ndocker stop portainer\n\n# 移除舊容器\ndocker rm portainer\n\n# 拉對應版本的 image\n# Community Edition\ndocker pull portainer\u002Fportainer-ce:lts\n\n# Business Edition\n# docker pull portainer\u002Fportainer-ee:lts\n\n# 重新啟動新容器\n# Community Edition\ndocker run -d --name=portainer --restart=always \\\n  -p 8000:8000 -p 9443:9443 \\\n  -v \u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock \\\n  -v portainer_data:\u002Fdata \\\n  portainer\u002Fportainer-ce:lts\n\n# Business Edition\n# docker run -d --name=portainer --restart=always \\\n#   -p 8000:8000 -p 9443:9443 \\\n#   -v \u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock \\\n#   -v portainer_data:\u002Fdata \\\n#   portainer\u002Fportainer-ee:lts\n\n## 過渡期選項\n# 如果你真的還需要舊 HTTP 入口，暫時加上：\n# -p 9000:9000\n\n# 如果你有自訂 TLS 憑證\n# --sslcert \u002Fpath\u002Fto\u002Fcert\u002Fportainer.crt \\\n# --sslkey \u002Fpath\u002Fto\u002Fcert\u002Fportainer.key\n\n## 升級 Portainer Agent\n# 停止舊 agent\n# docker stop portainer_agent\n# docker rm portainer_agent\n\n# 拉 agent image\n# docker pull portainer\u002Fagent:lts\n\n# 重新啟動 agent\n# docker run -d --name portainer_agent --restart=always \\\n#   -p 9001:9001 \\\n#   -v \u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock \\\n#   -v \u002Fvar\u002Flib\u002Fdocker\u002Fvolumes:\u002Fvar\u002Flib\u002Fdocker\u002Fvolumes \\\n#   portainer\u002Fagent:lts\n\n# 如果 server 有設定 AGENT_SECRET，這裡也要帶回來\n#   -e AGENT_SECRET=yoursecret\n\n## 升級後\n- [ ] 打開 https:\u002F\u002Fyour-server-address:9443\n- [ ] 確認版本號已更新\n- [ ] 確認 environments 和 agents 都連上了\n- [ ] 確認自訂憑證仍然正常\n- [ ] 如果有臨時開 9000，升完後記得關掉\n- [ ] 確認 update notification 已消失\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>這份模板是我把 Portainer 官方 \u003Ca href=\"https:\u002F\u002Fdocs.portainer.io\u002Fstart\u002Fupgrade\u002Fdocker\">Docker Standalone upgrade doc\u003C\u002Fa> 拆成可直接照抄的版本。原始步驟和版本規則來自官方文件，我加的是檢查順序、風險提示，還有比較適合\u003Ca href=\"\u002Ftag\u002F台灣開發者\">台灣開發者\u003C\u002Fa>直接拿去用的操作語氣。\u003C\u002Fp>\u003Cp>如果你要我給一句最短的結論：Portainer 的升級不是在拼技術，是在拼你有沒有把資料和 runtime 分開想。這個想通了，整份文件就不再像說明書，而像一張可以直接執行的清單。\u003C\u002Fp>","我把 Portainer 的 Docker Standalone 升級流程拆成可直接複製的檢查清單，讓你不用邊升級邊猜。","docs.portainer.io","https:\u002F\u002Fdocs.portainer.io\u002Fstart\u002Fupgrade\u002Fdocker",null,"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780915698308-56pt.png","tools","zh","4fb85167-2ea8-49c7-bc45-6f94b51526a6",[17,18,19,20,21],"Portainer","Docker","upgrade checklist","agent","HTTPS",[23,24,25],"Portainer 升級的重點是保留 volume、替換 container，不是重裝整套系統。","server 和 agent 版本要對齊，1.x 也要先經過 2.0.0 中繼升級。","9443\u002FHTTPS、AGENT_SECRET、備份 volume 這三件事最容易被忽略。",2,"2026-06-08T10:47:47.228222+00:00","2026-06-08T10:47:47.213+00:00","5136ca27-f5b6-4525-86b0-3103b1f7b8bd",{"tags":31,"relatedLang":41,"relatedPosts":45},[32,34,35,37,39],{"name":21,"slug":33},"https",{"name":20,"slug":20},{"name":19,"slug":36},"upgrade-checklist",{"name":17,"slug":38},"portainer",{"name":18,"slug":40},"docker",{"id":15,"slug":42,"title":43,"language":44},"portainer-docker-standalone-upgrade-checklist-en","Portainer’s upgrade doc turns Docker updates into a checklist","en",[46,52,58,64,70,76],{"id":47,"slug":48,"title":49,"cover_image":50,"image_url":50,"created_at":51,"category":13},"41f49cc3-fa13-466f-87e5-575cfa2c9fb8","rust-worth-the-hype-2026-right-jobs-zh","Rust 在 2026 年值得追捧，但只適合對的工作","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780921978132-e1b0.png","2026-06-08T12:32:20.943246+00:00",{"id":53,"slug":54,"title":55,"cover_image":56,"image_url":56,"created_at":57,"category":13},"f45d93f2-b8a6-45cd-ac56-b4d349df410b","supabase-docker-self-hosting-guide-zh","Supabase Docker 自架更實用了","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780916611381-kymc.png","2026-06-08T11:02:31.738639+00:00",{"id":59,"slug":60,"title":61,"cover_image":62,"image_url":62,"created_at":63,"category":13},"8a892f4a-7b09-41e6-aca0-c1295694ae58","cursor-teams-pricing-adds-96-premium-seat-zh","Cursor Teams 加推 $96 Premium 座位","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780909379891-7ue2.png","2026-06-08T09:02:25.073041+00:00",{"id":65,"slug":66,"title":67,"cover_image":68,"image_url":68,"created_at":69,"category":13},"aa52c4a3-9a96-402b-8153-e152f9fd96bc","awesome-ai-summerschool-ai-events-shortlist-zh","Awesome AI Summer School 變短名單","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780905804300-zfvf.png","2026-06-08T08:02:46.455036+00:00",{"id":71,"slug":72,"title":73,"cover_image":74,"image_url":74,"created_at":75,"category":13},"2f526e1b-9aa1-4503-9927-31ce0009741c","rustup-rust-official-toolchain-installer-zh","Rustup 是 Rust 官方工具鏈安裝器","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780903080771-8z56.png","2026-06-08T07:17:37.219276+00:00",{"id":77,"slug":78,"title":79,"cover_image":80,"image_url":80,"created_at":81,"category":13},"871c382b-188c-4eb7-a2b6-978e0183f18f","rust-cli-project-5-practical-steps-zh","Rust CLI 天氣工具五步實作","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780898582793-87p5.png","2026-06-08T06:02:31.211769+00:00",[83,88,93,98,103,108,113,118,123,128],{"id":84,"slug":85,"title":86,"created_at":87},"855cd52f-6fab-46cc-a7c1-42195e8a0de4","surepath-real-time-mcp-policy-controls-zh","SurePath 推出即時 MCP 政策控管","2026-03-26T07:57:40.77233+00:00",{"id":89,"slug":90,"title":91,"created_at":92},"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":94,"slug":95,"title":96,"created_at":97},"af9c46c3-7a28-410b-9f04-32b3de30a68c","prompting-in-2026-what-actually-works-zh","2026 提示工程，真正有用的是什麼","2026-03-26T08:08:12.453028+00:00",{"id":99,"slug":100,"title":101,"created_at":102},"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":104,"slug":105,"title":106,"created_at":107},"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":109,"slug":110,"title":111,"created_at":112},"a5f94120-ac0d-4483-9a8b-63590071ac6a","claude-code-vs-cursor-2026-zh","Claude Code 與 Cursor 深度對比：202…","2026-03-26T13:27:14.279193+00:00",{"id":114,"slug":115,"title":116,"created_at":117},"0975afa1-e0c7-4130-a20d-d890eaed995e","practical-github-guide-learning-ml-2026-zh","2026 機器學習入門 GitHub 實用指南","2026-03-27T01:16:49.712576+00:00",{"id":119,"slug":120,"title":121,"created_at":122},"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":124,"slug":125,"title":126,"created_at":127},"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":129,"slug":130,"title":131,"created_at":132},"3ce6e6e2-bac5-463e-9f8d-45caabcc61f7","awesome-ai-for-science-research-tools-map-zh","AI 科研工具清單，開始像地圖了","2026-03-27T01:46:50.521945+00:00"]