[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-github-copilot-sdk-lets-apps-run-agents-zh":3,"article-related-github-copilot-sdk-lets-apps-run-agents-zh":30,"series-tools-50e0da68-0c32-482d-9f11-2f0498ac7b29":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},"50e0da68-0c32-482d-9f11-2f0498ac7b29","github-copilot-sdk-lets-apps-run-agents-zh","Copilot SDK 讓應用直接跑 Agent","\u003Cp data-speakable=\"summary\">以前我得自己縫 agent 流程，現在 \u003Ca href=\"\u002Ftag\u002Fgithub-copilot\">GitHub Copilot\u003C\u002Fa> SDK 直接把 runtime 接進應用裡。\u003C\u002Fp>\u003Cp>我自己玩 agent workflow 一陣子了，最煩的從來不是\u003Ca href=\"\u002Fnews\u002Fclaude-j-space-not-a-black-box-zh\">模型\u003C\u002Fa>呼叫。真正卡人的，是 planning、工具選擇、權限檢查、檔案修改、重試、process cleanup，還有那堆把 demo 變成可\u003Ca href=\"\u002Fnews\u002Ffoundry-ship-agents-without-rewrites-zh\">上線\u003C\u002Fa>產品的膠水。更煩的是，同一套邏輯放到 Node、Python、Go 裡，行為還會飄。我以前一直覺得這種痛點很像在跟工具框架打架：你以為自己在做產品，其實是在幫框架補洞。\u003C\u002Fp>\u003Cp>後來我看到 \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fgithub\u002Fcopilot-sdk\">GitHub Copilot SDK\u003C\u002Fa>，它的話講得很直：別自己重造 orchestration，直接用 Copilot CLI 背後那套 engine。這句我聽了反而清醒。因為我真的不想再碰那種「給你幾個抽象，剩下自己想辦法」的 agent framework。我想要的是 runtime、tool lifecycle、permission model 都先接好。它如果還支援 BYOK，那更好，至少不是把我死綁在 GitHub auth 一條路上。\u003C\u002Fp>\u003Ch2>GitHub 這次丟出來的是 runtime，不是聊天外掛\u003C\u002Fh2>\u003Cblockquote>“The GitHub Copilot SDK exposes the same engine behind Copilot CLI: a production-tested agent runtime you can invoke programmatically.”\u003C\u002Fblockquote>\u003Cp>這句其實就把事情講完了。\u003Ca href=\"\u002Ftag\u002Fgithub\">GitHub\u003C\u002Fa> 不是在賣我一個包著 chat completion 的可愛殼，而是把 \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fgithub\u002Fcopilot-cli\">Copilot CLI\u003C\u002Fa> 背後那套 agent runtime 直接開給 app code 用。也就是說，planning、tool invocation、file edits、process lifecycle，預設都不是我要自己扛。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1784122403650-iu42.png\" alt=\"Copilot SDK 讓應用直接跑 Agent\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>白話翻譯就是：這不是一個「幫\u003Ca href=\"\u002Fnews\u002Fseriality-gap-video-diffusion-models-zh\">模型\u003C\u002Fa>多包一層 API」的 SDK，而是想當 agent 行為的控制平面。你如果手上有一個需要改檔、呼叫工具、跑工作流的 app，不用先自己發明 state machine 再來求神拜佛。\u003C\u002Fp>\u003Cp>我以前真的踩過這種坑。Python agent 一套、\u003Ca href=\"\u002Ftag\u002Ftypescript\">TypeScript\u003C\u002Fa> agent 一套，prompt 看起來差不多，結果 tool 行為不同、cleanup 不同、權限檢查也不同。最後不是在做產品，是在維護兩套半成品。這種時候我看到這種 SDK 的第一反應不是興奮，是終於有人願意把 runtime 當 runtime，不要每次都把 agent 包裝成「再一層 helper」。\u003C\u002Fp>\u003Cp>實操上我會這樣用：\u003C\u002Fp>\u003Cul>\u003Cli>真的需要 agent 幫你做事時再上 SDK，不要拿它當純文字問答包裝。\u003C\u002Fli>\u003Cli>讓 SDK 負責 CLI process 跟 orchestration，app 只管業務規則。\u003C\u002Fli>\u003Cli>把 agent runtime 當基礎設施，不要當 prompt wrapper。\u003C\u002Fli>\u003C\u002Ful>\u003Cp>如果你要找第一手資訊，我會先看 repo README 跟根目錄文件，不會先信任何二手解讀。因為語言支援、架構、auth 路徑，GitHub 都是寫在那裡。\u003C\u002Fp>\u003Ch2>BYOK 是我最在意的逃生門\u003C\u002Fh2>\u003Cp>repo 的 FAQ 明講 SDK 支援 \u003Cstrong>BYOK\u003C\u002Fstrong>，而且這件事比你想的還重要。GitHub 說我可以把 SDK 設成用自己帶的 API key，來源可以是 \u003Ca href=\"https:\u002F\u002Fopenai.com\u002F\">OpenAI\u003C\u002Fa>、\u003Ca href=\"https:\u002F\u002Fazure.microsoft.com\u002Fen-us\u002Fproducts\u002Fai-foundry\">Azure AI Foundry\u003C\u002Fa>、\u003Ca href=\"https:\u002F\u002Fwww.anthropic.com\u002F\">Anthropic\u003C\u002Fa>。但它也講得很清楚：這條路是 key-based auth only，不支援 \u003Ca href=\"\u002Ftag\u002Fmicrosoft\">Microsoft\u003C\u002Fa> Entra ID、managed identities、第三方 identity provider。\u003C\u002Fp>\u003Cp>翻譯一下就是：你可以保留 SDK 跟 agent runtime，但把 model access 跟 billing 層換掉。這對我很實際。很多公司不是沒有模型預算，是已經跟某家供應商簽好約；或者你想先把專案跑起來，不想每次測試都吃 GitHub \u003Ca href=\"\u002Ftag\u002Fcopilot\">Copilot\u003C\u002Fa> quota。BYOK 讓我不用先選邊站。\u003C\u002Fp>\u003Cp>我喜歡這種切法，因為它把責任分乾淨：GitHub 管 agent mechanics，provider 管 key。這比把所有東西塞進同一個登入系統裡面舒服多了，尤其是企業環境一來，身份認證問題通常比模型本身更會咬人。\u003C\u002Fp>\u003Cp>實操上我會這樣用：\u003C\u002Fp>\u003Cul>\u003Cli>公司已經有 OpenAI、Azure 或 Anthropic 合約時，優先走 BYOK。\u003C\u002Fli>\u003Cli>想直接吃 Copilot-backed 路徑時，用 GitHub auth。\u003C\u002Fli>\u003Cli>不要因為它看起來 enterprise-friendly，就假設 managed identity 也能用。\u003C\u002Fli>\u003C\u002Ful>\u003Cp>我會特別把這句記在筆記上：BYOK 只有 key-based authentication。你的部署如果依賴 managed identity，這條路就不是你要的。早知道，少踩雷。\u003C\u002Fp>\u003Ch2>JSON-RPC 這層很無聊，但就是它讓東西能落地\u003C\u002Fh2>\u003Cp>架構文件寫得很直接：你的 app 先跟 SDK client 溝通，SDK 再透過 JSON-RPC 跟 server mode 的 Copilot CLI 溝通，而 SDK 會自動管理 CLI process lifecycle。這句不花俏，但我反而信。因為能不能上線，通常就卡在這種 boring 的地方。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1784122405846-5unw.png\" alt=\"Copilot SDK 讓應用直接跑 Agent\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>也就是說，SDK 比較像 local agent gateway。你的 app 不需要直接去碰一個遙遠黑盒子，然後祈禱它今天心情好。它是先透過 client 接到 CLI server，再把 agent actions 用一個明確的 protocol 送出去。這種東西不好看，但很好 debug。\u003C\u002Fp>\u003Cp>我看過太多 agent SDK 把一切包成單一 async call，出事時只留我看著 timeout 發呆。JSON-RPC 至少讓問題有形狀。它夠無聊，代表我可以 trace failure；它夠明確，代表我可以把 runtime 放在自己想要的位置上，不一定非得讓 SDK 幫我 spawn。\u003C\u002Fp>\u003Cp>實操上我會這樣用：\u003C\u002Fp>\u003Cul>\u003Cli>把 CLI server 當 runtime，不只是 SDK 順手呼叫的 binary。\u003C\u002Fli>\u003Cli>想少一點 moving pieces，就讓 SDK 管 lifecycle。\u003C\u002Fli>\u003Cli>要更強的隔離或部署控制，就接外部 CLI server。\u003C\u002Fli>\u003C\u002Ful>\u003Cp>如果你要真的開始接，我會先看 \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fgithub\u002Fcopilot-sdk#getting-started\">Getting Started Guide\u003C\u002Fa> 跟各語言 README，再來才是你自己的產品 code。架構先懂，後面少很多鬼打牆。\u003C\u002Fp>\u003Ch2>工具權限才是這套東西值不值得用的分水嶺\u003C\u002Fh2>\u003Cp>GitHub 說 SDK 預設會暴露 Copilot CLI 的 first-party tools，行為有點像用 CLI 跑 \u003Ccode>--allow-all\u003C\u002Fcode>，但工具執行還是會被各 SDK 的 permission handler 管。這句我很買單。因為 agent 如果能改檔、跑命令、碰服務，我要的是 app 能決定哪個能做、哪個不行。\u003C\u002Fp>\u003Cp>翻成白話就是：SDK 不是假裝自己很安全，它先把能力給足，再把裁量權交給應用。順序對了，後面才不會整組歪掉。我不想用那種 framework，先默默把工具都打開，然後叫我自己補安全機制。\u003C\u002Fp>\u003Cp>我以前補過這種權限層，真的很痛。你會得到散落各處的檢查、前後不一致的 prompt、還有那種「模型建議了，所以應該可以」的信任裂縫。這裡至少把 permission handler 擺在正中央，這才像樣。\u003C\u002Fp>\u003Cp>實操上我會這樣用：\u003C\u002Fp>\u003Cul>\u003Cli>一開始先用嚴格 permission handler，只對可信工作流放行。\u003C\u002Fli>\u003Cli>把 read-only tools 跟 write-capable tools 分開管。\u003C\u002Fli>\u003Cli>每次 agent request 跟 tool request 都先記錄，再決定要不要放行。\u003C\u002Fli>\u003C\u002Ful>\u003Cp>GitHub 也提到可以透過 client options 自訂 tool availability。這點我會拿來做環境分級：預設環境先收緊，只有特定角色或特定流程才開高風險工具。真的要上 production，這比 demo 跑得順不順重要太多。\u003C\u002Fp>\u003Ch2>多語言支援有用，但前提是契約要守住\u003C\u002Fh2>\u003Cp>SDK 目前支援 Python、TypeScript、Go、.NET、Java、Rust。repo 還把各語言 install commands、cookbooks、API docs 都列出來。老實說，語言很多不稀奇，稀奇的是它想把 runtime contract 維持一致。這才是我會在意的地方。\u003C\u002Fp>\u003Cp>也就是說，我可以照著自己已經在用的 host language 來選，不用為了 agent support 另外搬家。如果我的 backend 是 Go，我不用為了跑 agent 又去改成 Node；如果我的內部工具是 Python，我就直接在 Python 裡接。\u003C\u002Fp>\u003Cp>我以前做過一個 backend service 加一個 desktop tool 的 agent 標準化，模型呼叫都很簡單，真正麻煩的是 host-language 差異。共享 SDK 只有在行為一致時才有價值，所以我會把語言當實作細節，把 agent contract 當真正的資產。\u003C\u002Fp>\u003Cp>實操上我會這樣用：\u003C\u002Fp>\u003Cul>\u003Cli>直接選你現有 app 所在的語言，不要為 agent 另外開新 stack。\u003C\u002Fli>\u003Cli>先看 language-specific cookbook，再決定要不要抽自己的 wrapper。\u003C\u002Fli>\u003Cli>prompt、tool 名稱、permission 規則跨 stack 保持一致。\u003C\u002Fli>\u003C\u002Ful>\u003Cp>README 裡還有個很實用的細節：Node.js、Python、.NET 會自動 bundle Copilot CLI；Go、Java、Rust 則要手動安裝 CLI，或確保它在 PATH 裡。這種小字通常最救命，少掉一個下午的排錯時間。\u003C\u002Fp>\u003Ch2>GA 和 semver 的意思是：它是依賴，不是玩具\u003C\u002Fh2>\u003Cp>GitHub 說這個 SDK 已經 generally available，而且走 semantic versioning。這種話聽起來普通，但我反而比較信。因為它沒有跟你保證一切都不會痛，只是告訴你：這東西夠穩，可以開始當正式依賴看待。\u003C\u002Fp>\u003Cp>翻譯一下就是：你該把它當 production dependency，而不是 prototype。看 \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fgithub\u002Fcopilot-sdk\u002Fblob\u002Fmain\u002FCHANGELOG.md\">CHANGELOG\u003C\u002Fa>，注意 breaking changes，別再假設「agent SDK」就代表可以不用管 release discipline。\u003C\u002Fp>\u003Cp>我吃過太多 agent tooling 的虧，尤其是沒人管版本時。一次小更新改了 tool behavior，另一次調了 auth default，最後 app team 還得幫 runtime issue 收爛攤。semver 不性感，但它至少讓我知道什麼時候該停下來看 release note。\u003C\u002Fp>\u003Cp>實操上我會這樣用：\u003C\u002Fp>\u003Cul>\u003Cli>版本固定，不要浮動抓最新版。\u003C\u002Fli>\u003Cli>每次升級先看 changelog。\u003C\u002Fli>\u003Cli>把 auth、tool calls、file edits 放進 CI 測試，不要只驗 prompt output。\u003C\u002Fli>\u003C\u002Ful>\u003Cp>repo 也把 GitHub Issues 當 bug 與 feature request 的入口，這就很像一個真的要給人拿去用的東西該有的樣子。我要依賴它，就得有地方報 regression，也得有地方問行為變更。\u003C\u002Fp>\u003Ch2>可抄的模板\u003C\u002Fh2>\u003Cpre>\u003Ccode># GitHub Copilot SDK 整合模板（可直接改成你的專案版）\n\n## 目標\n讓應用程式直接跑 Copilot-powered agent workflow，同時保留工具權限控制與 BYOK 選項。\n\n## 適用前提\n- 我的 app 已經用其中一種語言開發：TypeScript、Python、Go、.NET、Java、Rust\n- 我希望 SDK 幫我管理 Copilot CLI lifecycle\n- 我希望 app 自己決定 agent 的工具能不能用\n- 我可能需要 BYOK，而不是只走 GitHub auth\n\n## 整合步驟\n1. 先選跟現有 app 一樣的 SDK 語言。\n2. 依 repo README 安裝 SDK。\n3. 決定 auth mode：\n   - GitHub auth：走 Copilot-backed path\n   - BYOK：使用 OpenAI \u002F Azure AI Foundry \u002F Anthropic 的 provider key\n4. 設定 SDK client。\n5. 加上 permission handler。\n6. 先從很小的 tool allowlist 開始。\n7. 記錄每次 agent request、tool call、approval decision。\n8. 鎖定 SDK 版本，升級前先看 changelog。\n\n## 預設 policy\n- 可寫入工具預設 deny\n- read-only tools 對可信使用者開放\n- 檔案修改、shell command、外部副作用都要人工確認\n- BYOK 與 GitHub auth 分開配置，不共用同一組設定\n\n## Pseudocode\ntext\nif auth_mode == \"byok\":\n    load_provider_key()\nelse:\n    load_github_copilot_credentials()\n\nsdk = create_copilot_sdk(\n    cli_mode=\"managed\",\n    permission_handler=permission_handler,\n    tools=allowed_tools,\n)\n\nresult = sdk.run_agent(\n    prompt=user_request,\n    context=app_context,\n)\n\nreturn result\n\n\n## Permission handler 範本\ntext\nfunction permission_handler(tool_call):\n    if tool_call.name in read_only_tools:\n        allow()\n    if tool_call.name in write_tools:\n        require_manual_approval()\n    if tool_call.name in forbidden_tools:\n        deny()\n\n\n## BYOK config checklist\n- Provider key 安全保存\n- 明確指定 provider\n- 不假設支援 Entra ID \u002F managed identity\n- GitHub auth 與 BYOK 分開配置\n- 依 provider 做 usage \u002F billing tracking\n\n## Production checklist\n- [ ] SDK 版本已鎖定\n- [ ] CLI availability 已驗證\n- [ ] Tool permissions 已測過\n- [ ] Auth mode 已寫進文件\n- [ ] Audit logs 已開啟\n- [ ] 升級流程已 review\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>上面這段是我把 repo README、FAQ、architecture notes 縮成的實作版。它是衍生整理，不是官方文件。原始來源在 \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fgithub\u002Fcopilot-sdk\">https:\u002F\u002Fgithub.com\u002Fgithub\u002Fcopilot-sdk\u003C\u002Fa>，真正的 install commands、auth 細節、語言範例，還是要回去看 README 跟連結文件。\u003C\u002Fp>\u003Cp>如果你想再往下挖，我也會把 \u003Ca href=\"https:\u002F\u002Fdocs.github.com\u002Fen\u002Fcopilot\">GitHub Copilot docs\u003C\u002Fa>、\u003Ca href=\"https:\u002F\u002Fdocs.github.com\u002Fen\u002Fcopilot\u002Fmanaging-copilot\u002Fusing-copilot-in-your-organization\">organization usage guidance\u003C\u002Fa> 跟 repo 的 Issues 頁面一起放在旁邊。這篇是我幫你拆好的實作版，原始權威還是 GitHub 那份文件。\u003C\u002Fp>","我把 GitHub Copilot SDK 的 BYOK、工具控制、跨語言接法拆成可直接抄的整合模板。","github.com","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fcopilot-sdk",null,"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1784122403650-iu42.png","tools","zh","be61d518-74a6-4482-986f-cd0d3bcae472",[17,18,19,20,21],"GitHub Copilot SDK","BYOK","agent runtime","JSON-RPC","tool permissions",[23,24,25],"Copilot SDK 的核心是 runtime，不是聊天包裝","BYOK 讓模型供應商與 agent runtime 分離","permission handler 才是 agent 能不能上線的關鍵",0,"2026-07-15T13:32:56.039419+00:00","2026-07-15T13:32:56.011+00:00","c3c88dd2-a940-438a-b359-0e5a24562273",{"tags":31,"relatedLang":32,"relatedPosts":36},[],{"id":15,"slug":33,"title":34,"language":35},"github-copilot-sdk-lets-apps-run-agents-en","GitHub Copilot SDK lets apps run agents","en",[37,43,49,55,61,67],{"id":38,"slug":39,"title":40,"cover_image":41,"image_url":41,"created_at":42,"category":13},"0c51ae94-4e52-4b2b-81ab-436aed7b7b85","databricks-query-foundation-models-guide-zh","Databricks 讓你用同一套方式查模型","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1784144051476-1d82.png","2026-07-15T19:33:44.882507+00:00",{"id":44,"slug":45,"title":46,"cover_image":47,"image_url":47,"created_at":48,"category":13},"aeb298e5-cfc1-40e4-beb9-2b083a863465","sglang-inference-is-the-product-zh","SGLang 會贏，因為推理才是產品層","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1784140376310-f1dj.png","2026-07-15T18:32:19.070176+00:00",{"id":50,"slug":51,"title":52,"cover_image":53,"image_url":53,"created_at":54,"category":13},"10ad3ee2-3f02-479a-8c97-afa911c02a28","redmi-note-17-battery-camera-price-breakdown-zh","Redmi Note 17 把電量變主角","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1784138636187-yzxd.png","2026-07-15T18:03:18.75152+00:00",{"id":56,"slug":57,"title":58,"cover_image":59,"image_url":59,"created_at":60,"category":13},"c5d14866-b8a9-41f8-a653-c37b59350ac4","foundry-ship-agents-without-rewrites-zh","Foundry 讓代理不必重寫就上線","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1784120676428-vf53.png","2026-07-15T13:03:49.263678+00:00",{"id":62,"slug":63,"title":64,"cover_image":65,"image_url":65,"created_at":66,"category":13},"1a8cf238-37a4-485b-8303-67e2693713f6","kimi-k26-turns-prompt-into-brand-sites-zh","Kimi K2.6 把一句話變品牌站","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1784053995683-v1d3.png","2026-07-14T18:32:48.798997+00:00",{"id":68,"slug":69,"title":70,"cover_image":71,"image_url":71,"created_at":72,"category":13},"8491db12-2ab9-4b65-8dc6-c9b7fd1ca267","cloudflare-one-partner-program-ai-security-rollout-zh","Cloudflare One 用夥伴加速 AI 安全落地","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1784037807706-id7p.png","2026-07-14T14:02:56.933008+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"]