[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-dometrain-advanced-system-design-ops-template-zh":3,"article-related-dometrain-advanced-system-design-ops-template-zh":30,"series-tools-197a41a1-b4c2-43de-920f-26ccea9ab860":76},{"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},"197a41a1-b4c2-43de-920f-26ccea9ab860","dometrain-advanced-system-design-ops-template-zh","Dometrain 把系統設計變成營運模板","\u003Cp data-speakable=\"summary\">我把 Dometrain 的進階系統設計課拆成一份可直接抄的營運模板，重點是分散式狀態、發布安全、多租戶和故障處理。\u003C\u002Fp>\u003Cp>我看過太多系統設計內容，前半段都很像樣：畫框、講 quorum、談水平擴充，聽起來很順。可是我一用到真實系統，就開始不對勁。因為真正麻煩的不是圖畫不出來，而是上線後誰擁有狀態、重試會不會重複扣款、某個 tenant 爆量時誰先死、某個 region 掛掉時到底要不要硬切。這些才是每天會咬人的地方。\u003C\u002Fp>\u003Cp>我最近看的是 Dometrain 的 \u003Ca href=\"https:\u002F\u002Fdometrain.com\u002Fcourse\u002Fhands-on-advanced-system-design\u002F\">Hands-On: Advanced System Design\u003C\u002Fa>，作者是 \u003Ca href=\"https:\u002F\u002Fwww.nickchapsas.com\u002F\">Nick Chapsas\u003C\u002Fa>。它最對我胃口的地方，是它不把系統設計當作文科題目，而是直接往 ops 走：怎麼協調、怎麼補償、怎麼避免 poison message、怎麼做 canary、怎麼管多租戶。這才像真的在做服務，不是在白板上表演。\u003C\u002Fp>\u003Cp>我這篇不是在幫它吹捧。我是把它拆成我自己會拿去用的 playbook。你可以把它當成一份 architecture review 的檢查表，少掉很多「看起來可以」的幻覺。\u003C\u002Fp>\u003Cp>先講清楚：我引用的是課程\u003Ca href=\"\u002Fnews\u002Fcdns-stock-page-turns-noise-into-watchlist-zh\">頁面\u003C\u002Fa>本身，沒有看到它提供觀看數、星數或 bookmark 數，所以我不會亂編。這篇的重點是把課綱翻成能落地的做法，而不是幫任何人做流量公關。\u003C\u002Fp>\u003Ch2>不要把分散式狀態當成一台資料庫\u003C\u002Fh2>\u003Cblockquote>“You will start by tackling distributed state, exploring leader election among replicas, quorum reads and writes, and distributed locks.”\u003C\u002Fblockquote>\u003Cp>翻譯一下就是：你一旦有多個節點，狀態就不再是單機那種「誰先寫進去就算數」的簡單世界。你得先回答誰說了算、誰要等、誰可以重試、誰要退讓。沒有這些規則，系統只是在很多台機器上同時製造衝突。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1782270211960-bo9a.png\" alt=\"Dometrain 把系統設計變成營運模板\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>我很討厭那種把「我們有資料庫」當成「我們有協調能力」的說法。沒有。資料庫可以幫你，但它不會自動替你的應用決定誰是 leader、誰能拿鎖、誰要做 quorum。這些事情你不先定義，後面就會變成事故時才開始補作文。\u003C\u002Fp>\u003Cp>這一段我最在意的是 leader election、quorum reads\u002Fwrites、distributed locks 這三件事被放在一起。這代表課程不是只教你名詞，而是逼你面對「一致性到底怎麼被維持」。我之前在一個排程系統上踩過雷，大家都以為某個 job 只有一個 worker 會碰，結果 failover 後兩邊都覺得自己是 owner。最後不是 bug，而是設計沒寫清楚。\u003C\u002Fp>\u003Cp>實操寫法我會這樣做：\u003C\u002Fp>\u003Cul>\u003Cli>先列出哪些工作必須單一擁有者，像排程、補償、清理、對帳。\u003C\u002Fli>\u003Cli>對每個工作定義 leader 選舉或 lease 機制，不要只寫「用 lock」。\u003C\u002Fli>\u003Cli>把 quorum 規則寫成 failure matrix，說清楚半數掛掉時會怎樣。\u003C\u002Fli>\u003Cli>把鎖的 expiry、renewal、失敗回收寫進 runbook，不然 stale lock 早晚咬你。\u003C\u002Fli>\u003C\u002Ful>\u003Cp>我現在看任何架構圖，都會先問一個很土但很有效的問題：如果兩個 node 都覺得自己有權做同一件事，會發生什麼？答不出來，這\u003Ca href=\"\u002Fnews\u002Fmobile-app-production-14-design-choices-zh\">個設計\u003C\u002Fa>就還沒長大。\u003C\u002Fp>\u003Ch2>Saga 不是高級名詞，是補洞流程\u003C\u002Fh2>\u003Cblockquote>“You will learn how to implement Sagas using both orchestration and choreography, build Event Sourcing systems with snapshots, and construct Change Data Capture pipelines.”\u003C\u002Fblockquote>\u003Cp>也就是說，這章不是在講漂亮架構圖，而是在講交易邊界外面的爛事。真實業務流程常常不會整齊收尾：付款成功、庫存失敗；通知寄了兩次；使用者看到半套結果。這時候你不能再假裝一個 ACID transaction 能包住全世界，Saga 才是你面對半途失敗的方式。\u003C\u002Fp>\u003Cp>我喜歡這門課把 orchestration 和 choreography 分開講，因為很多人嘴上會把兩者混成「事件驅動」四個字，然後裝作差不多。根本不一樣。orchestration 有明確控制器，適合你想掌握流程順序和補償步驟；choreography 把責任分散到事件和 handler，彈性高，但也更容易長成事件義大利麵，最後沒人知道流程主控在哪。\u003C\u002Fp>\u003Cp>Event Sourcing 和 CDC 也放在同一脈絡裡，我覺得很合理。它們都在處理「變更要怎麼被保存、觀察、重放」。snapshot 不是裝飾品，是你真的 replay 不動之後的救命繩；CDC 也不是新潮詞，是你不想重寫舊系統，又得把變更同步出去時的務實解法。\u003C\u002Fp>\u003Cp>我之前碰過一個案子，產品想要 CRUD，稽核想要可追溯，資料團隊又想要可重放。三邊都沒錯，錯的是大家都想把自己的需求塞進同一種資料模型。最後我們承認有三個真相：寫模型、讀模型、歷史軌跡。承認這件事之後，架構才開始像架構，不再像願望清單。\u003C\u002Fp>\u003Cp>實操寫法我會這樣落地：\u003C\u002Fp>\u003Cul>\u003Cli>流程長、步驟多、要看得懂進度時，用 orchestration。\u003C\u002Fli>\u003Cli>每個服務都清楚擁有自己的反應邏輯時，才考慮 choreography。\u003C\u002Fli>\u003Cli>Event Sourcing 的 replay 開始痛了，就加 snapshot，不要硬撐。\u003C\u002Fli>\u003Cli>舊系統不能大改、又要拿到變更流時，再上 CDC。\u003C\u002Fli>\u003C\u002Ful>\u003Cp>這章給我的一句話是：別再把分散式工作流想成原子操作，直接設計 compensation、重放和衍生資料，少做很多白工。\u003C\u002Fp>\u003Ch2>重試安全不是加一個 retry 就結束\u003C\u002Fh2>\u003Cblockquote>“You will also learn how to guarantee reliable processing using idempotency keys, the outbox pattern, deduplication windows, and dead-letter queues for poison messages.”\u003C\u002Fblockquote>\u003Cp>白話講，這一章在教你一件很煩但很\u003Ca href=\"\u002Fnews\u002Fprime-day-pc-hardware-discounts-matter-most-zh\">重要\u003C\u002Fa>的事：重試會害死人，除非系統認得出這次是不是同一筆。沒有 idempotency，任何暫時性失敗都可能變成重複扣款、重複發送、重複建立資料。大家最愛說「反正重試就好」，但重試本身就是風險來源。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1782270206607-dlwy.png\" alt=\"Dometrain 把系統設計變成營運模板\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>我很喜歡課程把 outbox、deduplication window、DLQ 放在一起，因為這三個東西本來就該一起看。outbox 解的是資料庫寫入和訊息發佈不同步的問題；deduplication window 解的是 at-least-once delivery 的重複問題；dead-letter queue 解的是 poison message 卡死主線的問題。這些不是加分題，是基本防線。\u003C\u002Fp>\u003Cp>我以前看過一個團隊把 retry 拿來當信仰：失敗就重送，重送到成功為止。結果依賴服務一抖，自己的系統就像在打自己。那不是韌性，那是自動化自殘。真正的做法是先讓工作可重複，再讓失敗可隔離，最後才談恢復。\u003C\u002Fp>\u003Cp>實操寫法我會這樣做：\u003C\u002Fp>\u003Cul>\u003Cli>所有可能被客戶端或 worker 重送的操作，都加 idempotency key。\u003C\u002Fli>\u003Cli>資料寫入和事件發佈要一致時，用 outbox，不要賭兩邊同時成功。\u003C\u002Fli>\u003Cli>把 poison message 丟到 DLQ，並寫清楚誰有權重放、何時重放。\u003C\u002Fli>\u003Cli>timeout budget 要從最上層往下算，不要每個 service 各自亂設。\u003C\u002Fli>\u003C\u002Ful>\u003Cp>這一章其實很殘酷：可靠性不是一個功能，它是一堆限制條件。你愈早承認，後面愈少爆炸。\u003C\u002Fp>\u003Ch2>多區域不是多開幾台機器，是多一堆政治問題\u003C\u002Fh2>\u003Cblockquote>“We cover global scale by examining active-active multi-region deployments, resolving concurrent cross-region writes, and maintaining data residency.”\u003C\u002Fblockquote>\u003Cp>這句話我很有感。很多人一講 multi-region，腦中浮現的是「全球都快」。實際上你會先碰到的是延遲、衝突寫入、資料駐留法規，還有產品團隊想要 A 方案的速度、B 方案的安全、C 方案的成本，然後全部都要。\u003C\u002Fp>\u003Cp>課程把 active-passive 和 active-active 分開講，我覺得很必要。active-passive 比較像保守派，重點是好切換、好恢復；active-active 比較像愛折騰派，重點是區域獨立和在地寫入，但代價是衝突處理更麻煩。這兩種不是同一件事，只是都叫 multi-region。\u003C\u002Fp>\u003Cp>我以前看過一個跨區部署提案，簡報很漂亮，真正沒講的是：如果兩個 region 同時收到同一筆更新，誰贏？如果法規要求資料只能留在特定地區，路由和複寫怎麼配合？這些問題沒先寫下來，最後就會在 compliance review 被打回來，然後大家假裝很驚訝。\u003C\u002Fp>\u003Cp>實操寫法我會這樣做：\u003C\u002Fp>\u003Cul>\u003Cli>先選 region-primary 還是 region-symmetric，別一開始就想兩個都要。\u003C\u002Fli>\u003Cli>把跨區衝突怎麼解決寫清楚，別只寫「最後一致」。\u003C\u002Fli>\u003Cli>把使用者路由和資料放置分開設計，才看得出 latency 和 residency。\u003C\u002Fli>\u003Cli>真的要上線前，拿區域級故障做演練，不要只測服務重啟。\u003C\u002Fli>\u003C\u002Ful>\u003Cp>這章最實在的地方在於，它提醒我：全球化不是把伺服器撒出去而已，而是把政策、風險和協調成本一起撒出去。\u003C\u002Fp>\u003Ch2>觀測性如果不影響決策，就只是昂貴日記\u003C\u002Fh2>\u003Cblockquote>“You will see how to safely deploy, evolve, and monitor these systems using backward-compatible contract evolution, canary releases, distributed tracing, and SLO-based alerting with error budgets.”\u003C\u002Fblockquote>\u003Cp>翻成白話就是：你收再多 log、metric、trace，如果它不會影響上線、回滾、告警或 incident decision，那它只是很貴的紀錄檔。很多團隊說自己有 observability，實際上只是有很多圖，沒有判斷。\u003C\u002Fp>\u003Cp>我喜歡這一章把 tracing、SLO、error budget 放一起，因為這才是運營的正確順序。trace 讓你知道請求走去哪裡；metric 讓你知道系統長期怎麼變；log 讓你知道怪事發生時的細節；SLO 讓你知道使用者到底有沒有被傷到。少一個都可以活，但少了 SLO，大家就會回到「我覺得還好」這種很危險的說法。\u003C\u002Fp>\u003Cp>error budget 更重要。它把「這次 canary 能不能放」從感覺題變成數學題。你不是問自己有沒有膽量，而是問目前的錯誤率還剩多少空間可以冒險。這對喜歡憑直覺上版的人來說很不友善，但對系統來說很友善。\u003C\u002Fp>\u003Cp>實操寫法我會這樣做：\u003C\u002Fp>\u003Cul>\u003Cli>每條關鍵請求都帶 trace ID，跨 service 一路傳下去。\u003C\u002Fli>\u003Cli>只定一兩個真的對使用者有痛感的 SLO，別什麼都想量。\u003C\u002Fli>\u003Cli>告警要對準 error budget 的消耗，而不是每個小抖動都叫人起床。\u003C\u002Fli>\u003Cli>canary 和自動 rollback 要綁在同一條監控鏈上，別讓部署和觀測各做各的。\u003C\u002Fli>\u003C\u002Ful>\u003Cp>我自己的判斷很簡單：如果一套監控不能幫我決定要不要繼續 rollout，那它就還沒真的進到 ops。\u003C\u002Fp>\u003Ch2>多租戶的邊界，其實就是產品邊界\u003C\u002Fh2>\u003Cblockquote>“You will also explore … per-tenant quotas and role-based access control.”\u003C\u002Fblockquote>\u003Cp>這一段常常被低估。很多人以為多租戶只是資料表多一個 tenant_id，錯得很穩。真正的問題是隔離、公平、授權、成本控制一起來。當第一個大客戶開始吃掉 queue、cache、CPU、support 時，你才會發現你做的不是平台，是共享災難。\u003C\u002Fp>\u003Cp>課程把 rate limiting、quota、RBAC 拉進來，我覺得很務實。\u003Ca href=\"\u002Ftag\u002Ftoken\">token\u003C\u002Fa> bucket、bulkhead、per-tenant sharding、policy-based authorization 這些詞聽起來很工程，但本質上都在回答同一件事：誰可以做什麼、能做多少、做到什麼程度就該被擋下來。\u003C\u002Fp>\u003Cp>我以前看過一個 SaaS 專案，前端覺得自己只是登入，後端覺得自己只是 \u003Ca href=\"\u002Ftag\u002Fapi\">API\u003C\u002Fa>，結果某個大客戶把整個共享 queue 壓爆。那次之後我才真的相信：tenant 邊界不是附屬功能，它就是產品邊界。你不在 edge 管好，後面每個 service 都會替你付代價。\u003C\u002Fp>\u003Cp>實操寫法我會這樣做：\u003C\u002Fp>\u003Cul>\u003Cli>tenant 身分盡量在 gateway 就驗掉，不要拖到深層 service。\u003C\u002Fli>\u003Cli>quota 用 blast radius 來設，不要只看行銷方案。\u003C\u002Fli>\u003Cli>對 noisy neighbor 用 bulkhead，把影響切開。\u003C\u002Fli>\u003Cli>RBAC 和業務規則分離，不然權限一改就要重寫一堆邏輯。\u003C\u002Fli>\u003C\u002Ful>\u003Cp>這章我最想抄走的一句話是：平台要是做得好，大家會覺得它很無聊。這其實是最高讚美。\u003C\u002Fp>\u003Ch2>可抄的模板\u003C\u002Fh2>\u003Cpre>\u003Ccode># 系統設計轉營運模板：我自己會拿去開 review 的版本\n\n## 1) 分散式狀態\n- [ ] 哪些工作必須單一擁有者\n- [ ] leader election 或 lease 怎麼做\n- [ ] quorum read\u002Fwrite 的失敗行為\n- [ ] distributed lock 的 expiry \u002F renewal \u002F recovery\n- [ ] 兩個 node 同時自認擁有權時怎麼處理\n\n## 2) 工作流與補償\n- [ ] 哪些流程要 orchestration\n- [ ] 哪些流程才適合 choreography\n- [ ] 每一步失敗後的 compensation\n- [ ] event sourcing 是否需要 snapshot\n- [ ] 需不需要 CDC 來接舊系統\n\n## 3) 重試安全\n- [ ] 所有可重送操作都加 idempotency key\n- [ ] outbox 是否和寫入同交易邏輯\n- [ ] deduplication window 多久\n- [ ] poison message 怎麼進 DLQ\n- [ ] DLQ 的重放責任人是誰\n\n## 4) 故障隔離\n- [ ] timeout budget 是否從入口往下算\n- [ ] flaky dependency 是否有 circuit breaker\n- [ ] degraded mode 要怎麼降級\n- [ ] load shedding 何時啟動\n- [ ] fail open \u002F fail closed 的選擇\n\n## 5) 多區域\n- [ ] region-primary 還是 region-symmetric\n- [ ] active-passive 還是 active-active\n- [ ] 跨區寫入衝突怎麼解\n- [ ] data residency 規則怎麼落地\n- [ ] failover 有沒有真的演練過\n\n## 6) 觀測與發布\n- [ ] trace ID 是否跨 service 傳遞\n- [ ] SLO 是否對應使用者痛點\n- [ ] error budget 是否影響 rollout 決策\n- [ ] canary \u002F rollback 是否自動化\n- [ ] alert 是症狀還是噪音\n\n## 7) 多租戶\n- [ ] tenant identity 是否在 edge 驗證\n- [ ] quota 是否按 blast radius 設定\n- [ ] noisy neighbor 是否有 bulkhead\n- [ ] RBAC 是否獨立於業務邏輯\n- [ ] policy 是否可單獨調整\n\n## 8) 發版門檻\n如果下面任何一題答不出來，我不會說設計完成：\n- 誰擁有這個工作？\n- 重試會不會重複副作用？\n- 半途失敗怎麼補償？\n- 資料怎麼恢復？\n- 使用者痛點怎麼被觀測？\n- tenant \u002F region 邊界是什麼？\n- 回滾時會壞什麼？\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>這份模板不是為了好看，是為了逼人回答那些最容易被跳過的問題。我會拿它去做 design review，也會拿它去看自己是不是又在畫漂亮圖。\u003C\u002Fp>\u003Cp>原始來源是 Dometrain 的課程頁 \u003Ca href=\"https:\u002F\u002Fdometrain.com\u002Fcourse\u002Fhands-on-advanced-system-design\u002F\">Hands-On: Advanced System Design\u003C\u002Fa>，作者是 \u003Ca href=\"https:\u002F\u002Fwww.nickchapsas.com\u002F\">Nick Chapsas\u003C\u002Fa>。上面這份拆解和模板是我自己的整理，課程主軸是衍生自原始課綱，不是逐字轉錄。\u003C\u002Fp>","我把 Dometrain 的進階系統設計課拆成一份可抄模板，重點放在分散式狀態、發布安全、多租戶與營運操作。","dometrain.com","https:\u002F\u002Fdometrain.com\u002Fcourse\u002Fhands-on-advanced-system-design\u002F",null,"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1782270211960-bo9a.png","tools","zh","0b5e0100-8da6-4abd-9148-6ab05945d576",[17,18,19,20,21],"system design","distributed systems","saga","multi-region","observability",[23,24,25],"分散式系統不是畫圖而已，先定義誰擁有狀態、誰能重試、誰負責補償。","可靠性要靠 idempotency、outbox、DLQ、SLO 這些防線，不是靠一句「再試一次」。","多租戶和多區域的本質是邊界管理：權限、配額、資料駐留、衝突處理都要先寫清楚。",0,"2026-06-24T03:03:02.800408+00:00","2026-06-24T03:03:02.76+00:00","13637d9f-b9a5-40ff-9d37-af2ab7a697f1",{"tags":31,"relatedLang":35,"relatedPosts":39},[32,34],{"name":18,"slug":33},"distributed-systems",{"name":21,"slug":21},{"id":15,"slug":36,"title":37,"language":38},"dometrain-advanced-system-design-ops-template-en","Dometrain’s system design course turns theory into ops","en",[40,46,52,58,64,70],{"id":41,"slug":42,"title":43,"cover_image":44,"image_url":44,"created_at":45,"category":13},"05f9fc54-03f5-456e-9afb-68bcde52f3d9","cursor-spacex-ai-coding-productization-zh","Cursor把AI編程寫成產品","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1782277401593-t9xx.png","2026-06-24T05:02:57.192238+00:00",{"id":47,"slug":48,"title":49,"cover_image":50,"image_url":50,"created_at":51,"category":13},"8100f1b0-a28b-4860-86fb-6c73a41ecd6c","cdns-stock-page-turns-noise-into-watchlist-zh","CDNS 頁面變成監控清單","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1782268390133-iy9j.png","2026-06-24T02:32:49.699794+00:00",{"id":53,"slug":54,"title":55,"cover_image":56,"image_url":56,"created_at":57,"category":13},"684ec799-a705-4a79-b0fe-e48f759adf46","github-open-source-music-topic-shortlist-zh","GitHub 音樂主題頁把搜尋變名單","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1782243211683-rnqs.png","2026-06-23T19:33:00.766925+00:00",{"id":59,"slug":60,"title":61,"cover_image":62,"image_url":62,"created_at":63,"category":13},"582fd0b3-550d-43e4-8d68-746f7f701f29","ling-jichu-yong-ai-bianxian-shicao-muban-zh","零基础用AI变现的实操模板","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1782201813046-h6lm.png","2026-06-23T08:03:03.372395+00:00",{"id":65,"slug":66,"title":67,"cover_image":68,"image_url":68,"created_at":69,"category":13},"2b878a5d-02b0-466e-8a4f-a6993b7f6a7c","microsoft-copilot-studio-april-2026-updates-zh","Copilot Studio 4 月更新：治理與工作流升級","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1782192760962-c2dx.png","2026-06-23T05:32:15.322963+00:00",{"id":71,"slug":72,"title":73,"cover_image":74,"image_url":74,"created_at":75,"category":13},"1c790be3-fbbb-4ebd-b485-d1c1913043f9","n8n-mcp-workflows-ai-tool-hubs-zh","n8n MCP 把工作流變工具庫","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1782191904804-spby.png","2026-06-23T05:17:56.108259+00:00",[77,82,87,92,97,102,107,112,117,122],{"id":78,"slug":79,"title":80,"created_at":81},"855cd52f-6fab-46cc-a7c1-42195e8a0de4","surepath-real-time-mcp-policy-controls-zh","SurePath 推出即時 MCP 政策控管","2026-03-26T07:57:40.77233+00:00",{"id":83,"slug":84,"title":85,"created_at":86},"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":88,"slug":89,"title":90,"created_at":91},"af9c46c3-7a28-410b-9f04-32b3de30a68c","prompting-in-2026-what-actually-works-zh","2026 提示工程，真正有用的是什麼","2026-03-26T08:08:12.453028+00:00",{"id":93,"slug":94,"title":95,"created_at":96},"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":98,"slug":99,"title":100,"created_at":101},"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":103,"slug":104,"title":105,"created_at":106},"a5f94120-ac0d-4483-9a8b-63590071ac6a","claude-code-vs-cursor-2026-zh","Claude Code 與 Cursor 深度對比：202…","2026-03-26T13:27:14.279193+00:00",{"id":108,"slug":109,"title":110,"created_at":111},"0975afa1-e0c7-4130-a20d-d890eaed995e","practical-github-guide-learning-ml-2026-zh","2026 機器學習入門 GitHub 實用指南","2026-03-27T01:16:49.712576+00:00",{"id":113,"slug":114,"title":115,"created_at":116},"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":118,"slug":119,"title":120,"created_at":121},"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":123,"slug":124,"title":125,"created_at":126},"3ce6e6e2-bac5-463e-9f8d-45caabcc61f7","awesome-ai-for-science-research-tools-map-zh","AI 科研工具清單，開始像地圖了","2026-03-27T01:46:50.521945+00:00"]