[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-claude-code-rust-native-terminal-interface-zh":3,"article-related-claude-code-rust-native-terminal-interface-zh":30,"series-tools-300d082a-4df5-4a26-8b5b-7dff73dd0da3":77},{"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},"300d082a-4df5-4a26-8b5b-7dff73dd0da3","claude-code-rust-native-terminal-interface-zh","Claude Code Rust 把終端機變輕了","\u003Cp data-speakable=\"summary\">\u003Ca href=\"\u002Ftag\u002Fclaude-code\">Claude Code\u003C\u002Fa> \u003Ca href=\"\u002Fnews\u002Frust-built-different-update-server-admins-zh\">Rust\u003C\u002Fa> 把原本偏重的終端機介面換成 Rust 原生單一二進位，重點是降啟動成本、降記憶體、修好捲動與複製貼上。\u003C\u002Fp>\u003Cp>我用一堆 terminal \u003Ca href=\"\u002Ftag\u002Fagent\">agent\u003C\u002Fa> 之後，真的很容易看出哪個介面在裝忙。模型回得不差，工具也能跑，可整個手感就是卡。按一下鍵要等，往上翻紀錄像在跟虛擬清單搏鬥，複製貼上還會冒出一種「我其實是網頁套殼」的味道。最煩的是，這些工具明明是要幫我省時間，卻常常把我拖進 UI 的泥巴裡。\u003C\u002Fp>\u003Cp>Claude Code 也有這種感覺。功能本身有用，但原本那層 Node.js 加 React Ink 的 TUI，總讓我覺得自己在拖著一個前端框架做終端機的工作。直到我看到 \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fsrothgan\u002Fclaude-code-rust\">srothgan\u002Fclaude-code-rust\u003C\u002Fa>，我才停下來仔細看。它沒有在那邊喊口號，就是很直白地說：把介面換成 Rust 原生二進位，讓終端機回到終端機該有的樣子。\u003C\u002Fp>\u003Cp>我喜歡這種做法，因為它通常比較誠實。真正的改善，很多時候不是換模型、不是改 prompt，而是把那層一直在吃效能、吃注意力、吃耐心的包袱先拿掉。\u003C\u002Fp>\u003Ch2>原本那層 TUI 真的太肥了\u003C\u002Fh2>\u003Cblockquote>「Drop-in replacement for Anthropic's stock Node.js\u002FReact Ink TUI, built for performance and a better user experience.」\u003C\u002Fblockquote>\u003Cp>翻譯一下就是：它不是要重做 \u003Ca href=\"\u002Ftag\u002Fclaude\">Claude\u003C\u002Fa> Code 的腦袋，而是先把卡住手感的那層介面換掉。原本的 Node.js \u002F React Ink TUI 可以做事，但它做事的方式很像把網頁元件硬塞進終端機。能跑不代表適合，這差很多。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781854439295-lkeg.png\" alt=\"Claude Code Rust 把終端機變輕了\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>我之前看過不少 terminal 工具都犯同一種毛病：明明只是要顯示 prompt、接鍵盤事件、渲染輸出，卻搞得像在跑一個迷你瀏覽器。React Ink 很方便沒錯，但它還是 React。只要你開始把 UI 邏輯、事件處理、渲染節奏全塞進前端思維，終端機就會慢慢失去那種「打字就有反應」的乾脆感。\u003C\u002Fp>\u003Cp>Claude Code Rust 這邊改用 \u003Ca href=\"https:\u002F\u002Fwww.rust-lang.org\u002F\">Rust\u003C\u002Fa>、\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fcrossterm-rs\u002Fcrossterm\">Crossterm\u003C\u002Fa>、\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fratatui-org\u002Fratatui\">Ratatui\u003C\u002Fa>，方向就很清楚：終端機事件直接處理，畫面直接渲染，不要再繞一圈 Web runtime。這不是什麼炫技，這是把該薄的地方變薄。\u003C\u002Fp>\u003Cp>我自己在用 agent shell 的時候最有感的，就是輸入回饋。如果你按鍵之後要等，使用者就會開始預判延遲，然後整個流程會變得很煩。介面一旦讓人開始「等」，它就輸了。\u003C\u002Fp>\u003Cp>實操上，我會建議你這樣看待自己的 agent UI：\u003C\u002Fp>\u003Cul>\u003Cli>模型層跟終端機 UI 分開，不要綁死。\u003C\u002Fli>\u003Cli>能用原生 terminal 控制的，就不要自己重造一套瀏覽器行為。\u003C\u002Fli>\u003Cli>先砍掉 UI 的重量，再談功能花樣。\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>記憶體和啟動時間，才是最先撞到的痛點\u003C\u002Fh2>\u003Cp>這個 repo 很直接地把成本寫出來：原本那層介面大概是 \u003Cstrong>200-400MB baseline\u003C\u002Fstrong>，原生二進位則是 \u003Cstrong>約 20-50MB\u003C\u002Fstrong>。這不是「有感提升」那種空話，這是直接少掉一大塊常駐負擔。你如果是筆電開一堆 terminal、IDE、\u003Ca href=\"\u002Ftag\u002Fdocker\">Docker\u003C\u002Fa>、瀏覽器的人，這種差距會非常有感。\u003C\u002Fp>\u003Cp>它還提到啟動時間從 \u003Cstrong>2-5 秒\u003C\u002Fstrong> 降到 \u003Cstrong>100ms 內\u003C\u002Fstrong>。我不需要把這件事講得很文青，因為它就是很現實：兩秒多的延遲，足夠讓我在開工具前先猶豫一下；100ms 內的反應，才像一個真的在終端機裡的東西。你不會一直盯著它等，它就該是這樣。\u003C\u002Fp>\u003Cp>我以前也踩過這種坑。工具本身不差，但每次打開都像在載入一個小型應用程式，久了之後我就懶得開。沒有人會公開說「我不用這工具是因為記憶體太醜」，但實際上大家就是會默默放棄。\u003C\u002Fp>\u003Cp>所以這裡的重點不是「Rust 比較帥」，而是「原生 binary 把最先感受到的摩擦拿掉」。這件事對互動式工具特別重要，因為互動式工具的價值就是回應快。一慢，整個體驗就垮。\u003C\u002Fp>\u003Cp>我會怎麼實作檢查？很簡單：\u003C\u002Fp>\u003Cul>\u003Cli>先看常駐記憶體，不要只看峰值。\u003C\u002Fli>\u003Cli>量冷啟動到第一個可用 prompt 的時間。\u003C\u002Fli>\u003Cli>狂打字、連續刪字、快速切換命令，測回饋延遲。\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>捲動紀錄和複製貼上不是小事，是基本功\u003C\u002Fh2>\u003Cblockquote>「Scrollback : Broken virtual scrolling that loses history」\u003C\u002Fblockquote>\u003Cp>翻譯一下就是：原本那套捲動紀錄很可能不是在尊重終端機，而是在用 UI 元件的方式硬管歷史資料。這種做法看起來很現代，實際上常常很雷。因為開發者要的不是漂亮動畫，是能把五頁前的輸出找回來。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781854433731-bf7u.png\" alt=\"Claude Code Rust 把終端機變輕了\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>這個 repo 也直接點出複製貼上的問題。原本的做法不是吃原生 terminal 行為，而是自己做一套 custom 版本。這種東西在 demo 時很安靜，一旦你開始複製長輸出、貼回指令、選取多行內容，它就開始露餡。你會發現自己不是在用工具，而是在遷就工具。\u003C\u002Fp>\u003Cp>我自己最受不了的就是這種「看起來差不多，實際上一直在偷改你操作」的介面。終端機裡最重要的就是一致性：選取要像終端機，貼上要像終端機，捲動也要像終端機。你如果把這些重新發明，卻又做得比原生差，那使用者只會覺得麻煩。\u003C\u002Fp>\u003Cp>Claude Code Rust 的價值就在這裡：它把控制權還給終端機本身。不是每個互動都要自己包一層規則，很多時候直接尊重系統習慣就夠了。\u003C\u002Fp>\u003Cp>實操寫法我會這樣定：\u003C\u002Fp>\u003Cul>\u003Cli>把 scrollback 當成正式功能，不是附加品。\u003C\u002Fli>\u003Cli>測長段落輸出能不能正常回翻。\u003C\u002Fli>\u003Cli>測多行複製、貼回 shell、選取跨區塊內容。\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>真正該保的，是協定，不是外殼\u003C\u002Fh2>\u003Cp>這個專案有一個我覺得很重要的點：它不是重做後端，而是透過本機 \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fanthropic-agent-sdk\">Anthropic Agent SDK\u003C\u002Fa> bridge 去接同一套 Claude Code 能力。也就是說，模型行為、工具呼叫、檔案編輯、權限流程這些核心契約，基本上都還在。改的是前端殼，不是整套系統的語意。\u003C\u002Fp>\u003Cp>這種切法很務實。因為如果你做的是 CLI 或 agent shell，最怕的不是畫面不好看，而是你一改 UI 就把原本的工具行為搞歪。協定一歪，除錯會很痛。你會以為是模型怪怪的，其實只是你那層包裝在亂改輸入輸出。\u003C\u002Fp>\u003Cp>README 也明講這不是 fork 或偷來的實作，而是從零做的原生前端，靠官方 Agent SDK 當 runtime 依賴。這點我會給肯定，因為它至少把邊界講清楚了。\u003Ca href=\"\u002Fnews\u002Fopen-source-tools-vibe-coding-cybersecurity-zh\">開源\u003C\u002Fa>專案最怕那種「看起來像替代品，實際上邊界說不清」的情況，後面維護會很煩。\u003C\u002Fp>\u003Cp>如果你也想做類似的替代 UI，我會建議你先寫一份契約清單：\u003C\u002Fp>\u003Cul>\u003Cli>哪些工具呼叫一定要保留。\u003C\u002Fli>\u003Cli>哪些權限提示不能改語意。\u003C\u002Fli>\u003Cli>哪些檔案編輯流程必須跟原版一致。\u003C\u002Fli>\u003C\u002Ful>\u003Cp>把這些先釘死，UI 才有資格變薄。否則你只是把複雜度從一個地方搬到另一個地方。\u003C\u002Fp>\u003Ch2>安裝要夠笨，使用者才會願意試\u003C\u002Fh2>\u003Cp>這個專案的安裝方式也很對路：直接用 \u003Ccode>npm install -g claude-code-rust\u003C\u002Fcode>。安裝時會拉對應平台的預編譯 binary，然後提供 \u003Ccode>claude-rs\u003C\u002Fcode> 指令。這種設計很重要，因為 terminal 工具如果第一步就要你自己編譯、自己處理相依套件，很多人會直接關掉。\u003C\u002Fp>\u003Cp>它也有講清楚前置條件：需要 Node.js 18+ 來跑 Agent SDK bridge，還要有既有的 Claude Code 驗證檔 \u003Ccode>~\u002F.claude\u002Fconfig.json\u003C\u002Fcode>。這代表它不是獨立玩具，而是站在既有 Claude Code 生態上做前端替換。這樣反而合理，因為它沒有假裝自己能把整個系統從頭重建。\u003C\u002Fp>\u003Cp>我很吃這種誠實的說法。你要做 wrapper，就老實說你是 wrapper；你要依賴外部 SDK，就老實說你依賴什麼。把安裝門檻講清楚，使用者才不會在第一次執行時覺得被坑。\u003C\u002Fp>\u003Cp>實操上，我會把這幾點寫進 README：\u003C\u002Fp>\u003Cul>\u003Cli>一行安裝指令。\u003C\u002Fli>\u003Cli>明確列出需要的 runtime。\u003C\u002Fli>\u003Cli>明確列出需要的登入或設定檔。\u003C\u002Fli>\u003Cli>講清楚哪些費用與限制仍然由上游服務決定。\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>費率與限制不是 UI 的功勞，但一定要講\u003C\u002Fh2>\u003Cp>README 也有提到一件很現實的事：Agent SDK 的計費規則沒有被這個專案改掉，而且 \u003Ca href=\"\u002Ftag\u002Fanthropic\">Anthropic\u003C\u002Fa> 先前公告過的 credit 變動目前是暫停的。也就是說，你用 \u003Ccode>claude -p\u003C\u002Fcode> 或這種第三方前端，還是照正常 Claude 訂閱限制在跑。這件事很無聊，但很重要，因為很多人會把「介面變快」誤會成「使用成本變低」。\u003C\u002Fp>\u003Cp>我覺得這種地方最該誠實。UI 再漂亮、啟動再快，也不會改變你背後的計量方式。你如果在做基於第三方 SDK 的工具，最好一開始就把 billing、quota、auth 邊界寫進文件，不要等使用者被扣到有感才發現規則沒變。\u003C\u002Fp>\u003Cp>這個專案也有連到 \u003Ca href=\"https:\u002F\u002Fclaude.ai\u002Fdocs\">Claude 官方文件\u003C\u002Fa>，這很合理。因為真正會影響使用行為的，還是上游服務的條款和限制，不是你這層 shell 長得多漂亮。\u003C\u002Fp>\u003Cp>所以我的結論很簡單：這類工具的價值，不是幫你省錢，是幫你少受介面折磨。差別要分清楚，不然會期待錯地方。\u003C\u002Fp>\u003Ch2>可抄的模板\u003C\u002Fh2>\u003Cpre>\u003Ccode>## 原生終端機 agent UI 改造模板（可直接套用）\n\n這份模板適合拿來改造任何「原本 TUI 太重、像網頁套殼」的 agent 工具。\n\n### 目標\n- 保留後端協定與工具呼叫行為\n- 把終端機 UI 換成原生、輕量、低延遲的實作\n- 讓捲動、複製貼上、輸入回饋回到終端機原生手感\n\n### 改造原則\n1. 先保協定，再換外殼\n   - 不改模型互動語意\n   - 不改工具呼叫格式\n   - 不改權限與檔案編輯流程\n\n2. UI 層盡量薄\n   - 用原生 terminal library 處理鍵盤與畫面\n   - 不引入不必要的瀏覽器 runtime\n   - 渲染、輸入、狀態管理分層清楚\n\n3. 先量三個數字\n   - 常駐記憶體\n   - 冷啟動到第一個可用 prompt 的時間\n   - 快速輸入時的回饋延遲\n\n4. 一定要測的終端機行為\n   - 長篇 scrollback 回翻\n   - 多行複製貼上\n   - 快速刪字與方向鍵操作\n   - 貼上 shell 指令與程式碼區塊\n\n5. 文件要先講清楚\n   - 需要哪些 runtime\n   - 需要哪些登入檔或設定檔\n   - 費率與限制由誰決定\n   - 哪些行為仍沿用上游服務規則\n\n### README 可直接貼的說明\n這個專案是一個原生終端機前端，負責包住既有的 agent SDK 或後端協定。它不重做模型行為，只把原本偏重的 UI 層換成較輕的原生 binary，目標是更快啟動、更低記憶體占用，以及更接近真正終端機的操作手感。\n\n### 發佈前檢查清單\n- [ ] 冷啟動時間可接受\n- [ ] 常駐記憶體不會離譜\n- [ ] scrollback 行為正常\n- [ ] copy\u002Fpaste 不需要自訂怪招\n- [ ] 安裝方式一行就懂\n- [ ] 依賴、登入、費率邊界寫清楚\n\n### 適合的定位句\n這不是重做 agent 腦袋，這只是把終端機外殼變薄，讓互動回到該有的速度與手感。\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>我會把 Claude Code Rust 這種做法看成一種很實際的\u003Ca href=\"\u002Fnews\u002Fglm-5-vibe-coding-agentic-engineering-zh\">工程\u003C\u002Fa>選擇：不跟模型硬拼，不跟使用者耍花樣，只是把那層最容易拖慢體驗的 UI 拿掉。這種改善不性感，但很值錢。\u003C\u002Fp>\u003Cp>原始來源是 \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fsrothgan\u002Fclaude-code-rust\">GitHub repo\u003C\u002Fa> 與 \u003Ca href=\"https:\u002F\u002Fsrothgan.github.io\u002Fclaude-code-rust\u002F\">專案文件\u003C\u002Fa>；我這篇是根據 README、文件與 repo 內容做的拆解，模板段落是我整理後可直接抄去用的版本。\u003C\u002Fp>","我拆 Claude Code Rust 的做法：把厚重 TUI 拆掉，改成 Rust 原生單一二進位，連同記憶體、啟動速度、捲動與複製貼上一起整理成可抄模板。","github.com","https:\u002F\u002Fgithub.com\u002Fsrothgan\u002Fclaude-code-rust",null,"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781854439295-lkeg.png","tools","zh","014be76a-746c-4892-b144-90c05a0c61c6",[17,18,19,20,21],"Claude Code","Rust","TUI","Crossterm","Ratatui",[23,24,25],"把厚重的 TUI 換成原生 Rust binary，先砍掉介面層的延遲與記憶體負擔。","真正該保的是 agent 協定與工具行為，不是那層容易拖慢體驗的外殼。","捲動、複製貼上、冷啟動與常駐記憶體，才是 terminal agent 最先該量的指標。",0,"2026-06-19T07:33:29.722095+00:00","2026-06-19T07:33:29.697+00:00","ddbe17bf-4560-43f7-af76-3e7d6e08e601",{"tags":31,"relatedLang":36,"relatedPosts":40},[32,34],{"name":18,"slug":33},"rust",{"name":17,"slug":35},"claude-code",{"id":15,"slug":37,"title":38,"language":39},"claude-code-rust-native-terminal-interface-en","Claude Code Rust trims TUI overhead to one binary","en",[41,47,53,59,65,71],{"id":42,"slug":43,"title":44,"cover_image":45,"image_url":45,"created_at":46,"category":13},"d2a143b9-efa1-4ffd-adcb-7a315ae6344e","renesas-acquires-altium-pcb-design-tool-update-zh","瑞萨全资收购 Altium，PCB 教程更新","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781859766720-ow6s.png","2026-06-19T09:02:23.113145+00:00",{"id":48,"slug":49,"title":50,"cover_image":51,"image_url":51,"created_at":52,"category":13},"1e47b8fc-1eab-4342-83bd-a270d59a41f9","rust-forum-week-25-turns-ideas-into-shipping-work-zh","Rust 論壇週報把想法變交付","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781857111111-md5g.png","2026-06-19T08:18:04.893117+00:00",{"id":54,"slug":55,"title":56,"cover_image":57,"image_url":57,"created_at":58,"category":13},"819930d2-f83c-42e1-be18-fc65eb212184","open-source-tools-vibe-coding-cybersecurity-zh","開源工具把 vibe coding 變安全","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781852614083-gnj4.png","2026-06-19T07:03:08.602553+00:00",{"id":60,"slug":61,"title":62,"cover_image":63,"image_url":63,"created_at":64,"category":13},"60a23c5e-d9df-4186-a30e-5d2c123a0ed6","model-triage-coding-tests-cost-win-zh","模型分流把測試成本壓下來","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781840895287-vp1r.png","2026-06-19T03:47:51.801299+00:00",{"id":66,"slug":67,"title":68,"cover_image":69,"image_url":69,"created_at":70,"category":13},"79548e00-424f-482a-81c2-4a64d29e011c","fine-tuning-llms-locally-sft-lora-dpo-zh","本地微調 LLM：SFT、LoRA、DPO","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781839069344-gzrv.png","2026-06-19T03:17:21.792772+00:00",{"id":72,"slug":73,"title":74,"cover_image":75,"image_url":75,"created_at":76,"category":13},"fa5c39c9-8213-4432-a19d-fd67f085fdca","vercel-eve-agents-as-directories-zh","把 agents 變成目錄","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781828288993-qss6.png","2026-06-19T00:17:45.298522+00:00",[78,83,88,93,98,103,108,113,118,123],{"id":79,"slug":80,"title":81,"created_at":82},"855cd52f-6fab-46cc-a7c1-42195e8a0de4","surepath-real-time-mcp-policy-controls-zh","SurePath 推出即時 MCP 政策控管","2026-03-26T07:57:40.77233+00:00",{"id":84,"slug":85,"title":86,"created_at":87},"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":89,"slug":90,"title":91,"created_at":92},"af9c46c3-7a28-410b-9f04-32b3de30a68c","prompting-in-2026-what-actually-works-zh","2026 提示工程，真正有用的是什麼","2026-03-26T08:08:12.453028+00:00",{"id":94,"slug":95,"title":96,"created_at":97},"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":99,"slug":100,"title":101,"created_at":102},"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":104,"slug":105,"title":106,"created_at":107},"a5f94120-ac0d-4483-9a8b-63590071ac6a","claude-code-vs-cursor-2026-zh","Claude Code 與 Cursor 深度對比：202…","2026-03-26T13:27:14.279193+00:00",{"id":109,"slug":110,"title":111,"created_at":112},"0975afa1-e0c7-4130-a20d-d890eaed995e","practical-github-guide-learning-ml-2026-zh","2026 機器學習入門 GitHub 實用指南","2026-03-27T01:16:49.712576+00:00",{"id":114,"slug":115,"title":116,"created_at":117},"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":119,"slug":120,"title":121,"created_at":122},"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":124,"slug":125,"title":126,"created_at":127},"3ce6e6e2-bac5-463e-9f8d-45caabcc61f7","awesome-ai-for-science-research-tools-map-zh","AI 科研工具清單，開始像地圖了","2026-03-27T01:46:50.521945+00:00"]