[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-mcp-use-turns-any-llm-into-an-mcp-agent-zh":3,"article-related-mcp-use-turns-any-llm-into-an-mcp-agent-zh":30,"series-tools-1c5cd4d7-edea-49bb-a340-2ed8719d19e7":79},{"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},"1c5cd4d7-edea-49bb-a340-2ed8719d19e7","mcp-use-turns-any-llm-into-an-mcp-agent-zh","mcp-use 讓任意 LLM 接上 MCP","\u003Cp data-speakable=\"summary\">這篇直接拆 mcp-use 的 agent 流程，最後給你一份可複製的模板，把任意 LLM 接到任意 MCP server。\u003C\u002Fp>\u003Cp>我最近一直在玩 MCP，玩到有點煩。不是 MCP 不行，是很多人把它做得像展示品：server 有了、client 有了、demo 也能跑，然後一碰到真實工作流就開始卡。模型綁死、工具綁死、wrapper 綁死，最後你不是在做 agent，你是在維護一坨很會聊天的黏土。\u003C\u002Fp>\u003Cp>我看到 \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fmcp-use\" target=\"_blank\" rel=\"noopener noreferrer\">mcp-use\u003C\u002Fa> 時就停了一下。不是因為它多炫，而是它把我最在意的那件事講得很直白：把任意 LLM 接到任意 MCP server，讓 agent 的工具層保持在你手上。這種東西才有實戰味，不然一切都只是 demo。\u003C\u002Fp>\u003Cp>我今天想拆的不是「這專案有多厲害」，而是它背後那套方法論：模型跟工具要分開、設定要顯性、agent loop 要可控，還有你到底該\u003Ca href=\"\u002Fnews\u002Fopen-source-mcp-gateways-2026-governance-zh\">怎麼\u003C\u002Fa>把這套東西抄進自己的專案裡。這才是有用的部分。\u003C\u002Fp>\u003Cp>這篇的觸發來源就是 \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fmcp-use\" target=\"_blank\" rel=\"noopener noreferrer\">mcp-use GitHub repo\u003C\u002Fa> 跟它的 README。README 沒有給我什麼神話故事，它就是老老實實講它是個 fullstack framework，用來做 MCP apps、servers 跟 custom agents。\u003C\u002Fp>\u003Ch2>先把模型跟工具拆開，不要再混成一鍋\u003C\u002Fh2>\u003Cblockquote>mcp-use 是一個開源 library，讓開發者可以把任意 LLM 接到任意 MCP server，做出有工具能力的 custom agents，而且不用綁死 closed-source 或 app-specific client。\u003C\u002Fblockquote>\u003Cp>翻譯一下就是：模型是模型，工具是工具，兩者不要硬黏在一起。這句話聽起來很廢，但我真的看過太多專案一開始就把兩者混成一個黑盒，然後後面每改一次需求都在拆炸彈。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780709595581-msqf.png\" alt=\"mcp-use 讓任意 LLM 接上 MCP\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>mcp-use 的思路是先把工具面定義成 MCP server，再讓 LLM 透過 agent 去選工具、呼叫工具、讀工具結果。也就是說，模型不是主角，模型只是決策器；真正的能力在工具層。這個心法很重要，因為你一旦把模型當主角，後面就很容易開始迷信 prompt，忘了系統設計。\u003C\u002Fp>\u003Cp>我以前做過一個內部助理，前期大家都很開心，因為它會講話、會總結、會裝懂。結果一旦要接內部 API、文件搜尋、瀏覽器自動化，整個架構就開始歪。原因很簡單：我先選了模型，再硬塞工具。那不是 agent，那是把聊天窗硬改成工作台，當然會痛。\u003C\u002Fp>\u003Cp>實操上我會先倒過來做：先列工具，再選模型。這個 agent 要查什麼？要讀檔嗎？要跑瀏覽器嗎？要打內部服務嗎？工具邊界先定好，模型只是接在上面的思考層。這樣你才有辦法換模型，不會每換一次供應商就重寫一輪。\u003C\u002Fp>\u003Cul>\u003Cli>先定任務邊界，再選模型，不要反過來。\u003C\u002Fli>\u003Cli>工具能力盡量收進 MCP server，不要散在 app 裡的私房小抄。\u003C\u002Fli>\u003Cli>把 agent 做成可替換的薄層，模型才有機會隨時換。\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>設定要攤開來寫，不要藏在 UI 後面\u003C\u002Fh2>\u003Cp>我喜歡 mcp-use 的另一個點，是它把設定寫得很白。README 裡的範例是用 MCP client config 明確定義 server，包含 command、args 跟 env。這種東西看起來一點都不性感，但我就是偏愛這種沒廢話的寫法。\u003C\u002Fp>\u003Cp>白話講，這代表工具來源是可讀的、可查的、可版本控制的。不是你點了某個 UI 才知道它底下接了什麼，也不是某個神秘 wrapper 幫你偷接本機環境。這件事很重要，因為 AI 專案最常死在「大家都以為有記錄，但其實沒有」。\u003C\u002Fp>\u003Cpre>\u003Ccode>client = MCPClient(config = {\n  \"mcpServers\": {\n    \"playwright\": {\n      \"command\": \"npx\",\n      \"args\": [\"@playwright\u002Fmcp@latest\"],\n      \"env\": { \"DISPLAY\": \":1\" }\n    }\n  }\n})\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>我以前踩過一個坑：demo 在我電腦上跑得超順，換到同事機器就開始抽風。後來才發現它其實偷偷依賴某個 browser session 跟某個本機狀態。這種東西最煩，因為你不是在 debug 功能，你是在找幽靈。\u003C\u002Fp>\u003Cp>實操上我會把 MCP server 設定放進版本控制，當成部署設定來管，不是當成「先跑起來再說」的臨時檔。你如果一個 team 兩個人以上，這件事就更不能省。設定不顯性，最後一定會有人說「我本機可以啊」，然後大家一起浪費下午。\u003C\u002Fp>\u003Cp>這裡我也會順手把 \u003Ca href=\"https:\u002F\u002Fmodelcontextprotocol.io\u002F\" target=\"_blank\" rel=\"noopener noreferrer\">Model Context Protocol\u003C\u002Fa> 當成契約本身來看。mcp-use 只是 adapter 層，真正的接口是 MCP。你把這個層次看清楚，後面就不會把 library 當成宇宙中心。\u003C\u002Fp>\u003Ch2>別被單一 client 綁住，模型要能換\u003C\u002Fh2>\u003Cp>README 裡提到 mcp-use 相容於任何 \u003Ca href=\"\u002Ftag\u002Flangchain\">LangChain\u003C\u002Fa> 支援的 LLM provider。這句看起來像相容性說明，實際上是整個架構能不能活下來的差別。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780709606681-yviw.png\" alt=\"mcp-use 讓任意 LLM 接上 MCP\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>翻譯一下就是：今天你可以用 \u003Ca href=\"\u002Ftag\u002Fopenai\">OpenAI\u003C\u002Fa>，明天換 \u003Ca href=\"\u002Ftag\u002Fanthropic\">Anthropic\u003C\u002Fa>，後天換別的 provider，agent 的工具層不用整個重寫。模型變成可替換零件，不是綁約。這很重要，因為你在做 agent 時，往往不是在找「唯一最強模型」，而是在不同模型之間找平衡：規劃能力、工具遵循、成本、延遲，全部都要算。\u003C\u002Fp>\u003Cp>我自己很常遇到這種情況：某個模型規劃比較穩，另一個模型對工具輸出比較老實，第三個模型便宜到適合拿來先跑 prototype。你如果把 agent 跟單一 provider 綁死，這些比較都會變得很痛苦。每次換模型都像在拆房子，不是在換燈泡。\u003C\u002Fp>\u003Cp>實作上我會把模型層包在一個明確的 provider abstraction 裡，像 \u003Ca href=\"https:\u002F\u002Fpython.langchain.com\u002F\" target=\"_blank\" rel=\"noopener noreferrer\">LangChain\u003C\u002Fa> 這種已經有人整理好的接口。mcp-use 負責工具橋接，LangChain 負責模型接入，兩者各做各的。這樣你測的是 agent 行為，不是一直在改 glue \u003Ca href=\"\u002Fnews\u002Fhow-to-understand-codex-chatgpt-merge-zh\">code\u003C\u002Fa>。\u003C\u002Fp>\u003Cul>\u003Cli>模型用來比較行為，不要拿來綁架整個架構。\u003C\u002Fli>\u003Cli>工具 contract 固定，模型可以隨時換。\u003C\u002Fli>\u003Cli>評估時看 task-level 成果，不要只看單輪輸出漂不漂亮。\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>agent loop 才是重點，不是一句 prompt 就結束\u003C\u002Fh2>\u003Cp>README 的範例很短，但它其實把 runtime 形狀講得很清楚：先建 LLM，再建 MCP client，再建 agent，最後用一個 max step limit 去跑任務。這不是聊天機器人那種一次性輸出，這是迭代式工作流。\u003C\u002Fp>\u003Cp>也就是說，agent 會看工具、選工具、呼叫工具、讀回傳、再決定下一步，直到完成任務或撞到步數上限。這差很多。前者是你問一句它回一句；後者是它真的在做事。當你要它碰真實流程時，這種差異就很要命。\u003C\u002Fp>\u003Cp>我現在看 agent 專案，第一個會盯的就是 step limit。沒上限，agent 很容易開始繞圈；有上限，至少它會在失控前停下來。三十步不是神奇數字，但它透露出一個態度：這東西預設就是多輪推理，不是單次問答。\u003C\u002Fp>\u003Cp>實操上我會先設保守的 step cap，再看任務是不是需要更多空間。然後我一定會 log 每次 tool call。因為你 debug agent 的時候，最想知道的不是它「有沒有很聰明」，而是它到底是哪一步選錯工具、哪一步讀錯結果、還是哪一步根本跑太久。\u003C\u002Fp>\u003Cp>README 裡的餐廳搜尋例子很簡單，但模式可以直接換皮：內部文件搜尋、瀏覽器研究、資料清理、報表整理，控制流都一樣。這就是我喜歡這種架構的原因，任務會變，loop 不用變。\u003C\u002Fp>\u003Ch2>動態選 server 才像真的在 orchestrate\u003C\u002Fh2>\u003Cp>mcp-use 提到的一個功能是 dynamic server selection，意思是 agent 可以根據任務挑最適合的 MCP server。這個我真的有感，因為一旦你開始有兩個以上工具域，固定綁死就會變得很笨。\u003C\u002Fp>\u003Cp>白話講，不是每個動作都丟同一個工具箱。你有 browser server、file server、internal API server，agent 可以根據 prompt 跟上下文去選。這件事的價值不在「很酷」，而在「不會把 prompt 寫成垃圾場」。\u003C\u002Fp>\u003Cp>我之前做過一個同時要查網頁跟查內部文件的 agent。只要我硬把兩者塞進同一個 tool surface，prompt 就開始膨脹，輸出也開始亂。問題不是工具太少，是工具邊界太爛。動態選 server 至少讓 agent 有選擇，但不是放任它亂來。\u003C\u002Fp>\u003Cp>實操上我會把工具按工作類型切開，不按功能炫不炫切。瀏覽器一組、檔案一組、內部業務邏輯一組。每個 server 都小一點，測試也容易一點。這樣 agent 要路由時，才不會像在雜貨店找螺絲起子。\u003C\u002Fp>\u003Cp>如果你想要一個簡單的心法，我會把 MCP server 當成窄而清楚的 service，而不是大雜燴工具。越專，agent 越容易選；越專，我也越容易 debug。這個道理很土，但很有用。\u003C\u002Fp>\u003Ch2>fullstack 不是噱頭，是把 demo 拉到可維護的那條線\u003C\u002Fh2>\u003Cp>repo 描述把 mcp-use 說成 fullstack framework，涵蓋 MCP apps for \u003Ca href=\"\u002Ftag\u002Fchatgpt\">ChatGPT\u003C\u002Fa>、Claude，還有 MCP servers for \u003Ca href=\"\u002Ftag\u002Fai-agents\">AI agents\u003C\u002Fa>。這句話我覺得值得留意，因為它不是單純的 SDK，還在碰 app 的組裝方式。\u003C\u002Fp>\u003Cp>翻譯一下就是：它想處理的不只是「怎麼呼叫工具」，還有「怎麼把這個 agent 做成一個別人能用、團隊能維護的東西」。這是很多 agent library 最常漏掉的地方。它們很會 demo，但一碰到 auth、UI、部署、權限切分，就開始裝死。\u003C\u002Fp>\u003Cp>我喜歡這種 fullstack 角度，不是因為我想把事情做大，而是因為我不想每次都從腳本長出一個半成品。你如果有一條清楚的 app 組裝路徑，prototype 才有機會真的變成可交付的功能，不然最後只剩「我本機跑得動」。\u003C\u002Fp>\u003Cp>實操上我會把專案拆成三層：第一層是 MCP servers，專心暴露工具；第二層是 agent runtime，專心做決策與呼叫；第三層是 app shell，負責登入、UI、部署、監控。三層分開，你才有辦法換其中一層，不用整個推倒重來。\u003C\u002Fp>\u003Cp>但我也不會腦衝把所有東西都塞進去。fullstack framework 最可怕的地方，就是很容易讓人以為自己在搭平台。其實很多時候你只是需要一個乾淨的工具邊界跟一條能跑的流程，其他都先別急。\u003C\u002Fp>\u003Ch2>可抄的模板\u003C\u002Fh2>\u003Cpre>\u003Ccode>import asyncio\nfrom langchain_openai import ChatOpenAI\nfrom mcp_use import MCPAgent, MCPClient\n\n# 1) 先把 MCP servers 寫清楚\n#    這份 config 直接進版本控制，別藏在 UI 後面\nclient = MCPClient(config={\n    \"mcpServers\": {\n        \"browser\": {\n            \"command\": \"npx\",\n            \"args\": [\"@playwright\u002Fmcp@latest\"],\n            \"env\": {\"DISPLAY\": \":1\"}\n        },\n        \"files\": {\n            \"command\": \"node\",\n            \"args\": [\".\u002Fservers\u002Ffile-server.js\"]\n        },\n        \"internal_api\": {\n            \"command\": \"node\",\n            \"args\": [\".\u002Fservers\u002Finternal-api-server.js\"],\n            \"env\": {\n                \"API_BASE_URL\": \"https:\u002F\u002Fexample.internal\",\n                \"API_TOKEN\": \"${API_TOKEN}\"\n            }\n        }\n    }\n})\n\n# 2) 模型獨立選，別跟工具綁死\n#    你要換 provider，只改這裡\nllm = ChatOpenAI(\n    model=\"gpt-4o\",\n    api_key=\"${OPENAI_API_KEY}\"\n)\n\n# 3) agent loop 要有步數上限\n#    先保守，真的需要再加\nagent = MCPAgent(\n    llm=llm,\n    client=client,\n    max_steps=20\n)\n\n# 4) 任務要寫得夠具體\n#    不要丟一句「幫我處理一下」就想下班\nasync def main():\n    result = await agent.run(\n        \"Research the top three internal docs for onboarding, then summarize them.\"\n    )\n    print(result)\n\nif __name__ == \"__main__\":\n    asyncio.run(main())\n\n# 我會死守的幾條規則：\n# - 一個 MCP server 對一類工作\n# - 模型可以換，tool contract 盡量不動\n# - server config 要可讀、可追蹤\n# - 每次 tool call 都要 log\n# - agent 步數先設上限\n# - secrets 不要進 source control\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>如果是我自己開新專案，我會先把上面這個骨架抄下來，再慢慢換成我自己的 server、模型跟任務。\u003Ca href=\"\u002Fnews\u002F5-google-home-speaker-details-for-buyers-zh\">重點\u003C\u002Fa>不是那個 model 名稱，也不是那個 tool command，而是那個結構：server 放一邊、模型放一邊、agent loop 卡中間。\u003C\u002Fp>\u003Cp>mcp-use 真正值得偷的，不是某個 API 名字，而是它逼你把工具面講清楚、把模型面保持可替換、把 agent 當成可控流程而不是魔法。這套東西如果你有在做 AI 工作流，真的比空談 agent 智能有用太多。\u003C\u002Fp>\u003Cp>來源致謝：原始材料來自 \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fmcp-use\" target=\"_blank\" rel=\"noopener noreferrer\">https:\u002F\u002Fgithub.com\u002Fmcp-use\u003C\u002Fa> 與其 README，另外參考了 \u003Ca href=\"https:\u002F\u002Fmodelcontextprotocol.io\u002F\" target=\"_blank\" rel=\"noopener noreferrer\">MCP 官方網站\u003C\u002Fa> 和 \u003Ca href=\"https:\u002F\u002Fpython.langchain.com\u002F\" target=\"_blank\" rel=\"noopener noreferrer\">LangChain 文件\u003C\u002Fa>。上面的拆解與模板是我根據原始內容整理出的衍生版本，不是直接複製 repo 原文。","我拆 mcp-use 的 MCP agent 流程，整理成可直接複製的模板，讓你把任意 LLM 接到任意 MCP server。","github.com","https:\u002F\u002Fgithub.com\u002Fmcp-use",null,"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780709595581-msqf.png","tools","zh","a5824981-f27c-47dc-b00f-46362511f345",[17,18,19,20,21],"MCP","LLM agent","LangChain","tool orchestration","fullstack framework",[23,24,25],"先把工具層和模型層拆開，agent 才能換模型不換骨架。","MCP server 設定要顯性、可版本控制，別藏在 UI 或臨時狀態裡。","agent loop 要設步數上限並記錄 tool call，才有辦法真的 debug。",0,"2026-06-06T01:32:49.46641+00:00","2026-06-06T01:32:49.443+00:00","ddbe17bf-4560-43f7-af76-3e7d6e08e601",{"tags":31,"relatedLang":11,"relatedPosts":42},[32,34,36,38,40],{"name":18,"slug":33},"llm-agent",{"name":19,"slug":35},"langchain",{"name":17,"slug":37},"mcp",{"name":21,"slug":39},"fullstack-framework",{"name":20,"slug":41},"tool-orchestration",[43,49,55,61,67,73],{"id":44,"slug":45,"title":46,"cover_image":47,"image_url":47,"created_at":48,"category":13},"68b2b111-c4b6-4d5e-a073-43fc188227c7","open-source-mcp-gateways-2026-governance-zh","5 個開源 MCP Gateway 怎麼選","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780708700534-qvgd.png","2026-06-06T01:17:52.493298+00:00",{"id":50,"slug":51,"title":52,"cover_image":53,"image_url":53,"created_at":54,"category":13},"f8de6238-b95e-4c3c-a49b-a996ebd434eb","kubernetes-github-repo-123k-stars-zh","Kubernetes GitHub 星星破 12.3 萬","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780705091582-9uod.png","2026-06-06T00:17:50.242207+00:00",{"id":56,"slug":57,"title":58,"cover_image":59,"image_url":59,"created_at":60,"category":13},"01308889-03ae-47c0-9655-4a563de8597d","gemini-turns-googles-ai-stack-into-one-app-zh","Gemini 把 Google AI 變成一個入口","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780700603553-z64z.png","2026-06-05T23:02:59.580372+00:00",{"id":62,"slug":63,"title":64,"cover_image":65,"image_url":65,"created_at":66,"category":13},"af6cfa19-1991-42bb-a65a-52409ec61a1a","113-ai-entities-tracked-ai-weekly-dashboard-zh","113 個 AI 實體被 AI Weekly 追蹤","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780688876697-ieow.png","2026-06-05T19:47:26.53926+00:00",{"id":68,"slug":69,"title":70,"cover_image":71,"image_url":71,"created_at":72,"category":13},"6bded3dc-c3ec-4688-bd4c-0e955f0ba8e0","codeium-windsurf-cascade-cursor-competition-zh","1.5億美元後，Codeium推Windsurf搶Cursor","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780687074307-ua8q.png","2026-06-05T19:17:24.447407+00:00",{"id":74,"slug":75,"title":76,"cover_image":77,"image_url":77,"created_at":78,"category":13},"a8e55ad4-b3b6-4549-88b4-3018f592fc98","ai-coding-agents-2026-practical-roadmap-zh","2026 AI 程式代理怎麼變","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780677193915-bb5p.png","2026-06-05T16:32:41.380799+00:00",[80,85,90,95,100,105,110,115,120,125],{"id":81,"slug":82,"title":83,"created_at":84},"855cd52f-6fab-46cc-a7c1-42195e8a0de4","surepath-real-time-mcp-policy-controls-zh","SurePath 推出即時 MCP 政策控管","2026-03-26T07:57:40.77233+00:00",{"id":86,"slug":87,"title":88,"created_at":89},"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":91,"slug":92,"title":93,"created_at":94},"af9c46c3-7a28-410b-9f04-32b3de30a68c","prompting-in-2026-what-actually-works-zh","2026 提示工程，真正有用的是什麼","2026-03-26T08:08:12.453028+00:00",{"id":96,"slug":97,"title":98,"created_at":99},"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":101,"slug":102,"title":103,"created_at":104},"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":106,"slug":107,"title":108,"created_at":109},"a5f94120-ac0d-4483-9a8b-63590071ac6a","claude-code-vs-cursor-2026-zh","Claude Code 與 Cursor 深度對比：202…","2026-03-26T13:27:14.279193+00:00",{"id":111,"slug":112,"title":113,"created_at":114},"0975afa1-e0c7-4130-a20d-d890eaed995e","practical-github-guide-learning-ml-2026-zh","2026 機器學習入門 GitHub 實用指南","2026-03-27T01:16:49.712576+00:00",{"id":116,"slug":117,"title":118,"created_at":119},"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":121,"slug":122,"title":123,"created_at":124},"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":126,"slug":127,"title":128,"created_at":129},"3ce6e6e2-bac5-463e-9f8d-45caabcc61f7","awesome-ai-for-science-research-tools-map-zh","AI 科研工具清單，開始像地圖了","2026-03-27T01:46:50.521945+00:00"]