<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>LLM on Ricky</title><link>https://995facee.rickylin.pages.dev/zh-tw/categories/llm/</link><description>Recent content in LLM on Ricky</description><generator>Hugo -- gohugo.io</generator><language>zh-tw</language><lastBuildDate>Sat, 20 Jun 2026 22:55:33 +0800</lastBuildDate><atom:link href="https://995facee.rickylin.pages.dev/zh-tw/categories/llm/index.xml" rel="self" type="application/rss+xml"/><item><title>Local LLM on MacBookPro - Image</title><link>https://995facee.rickylin.pages.dev/zh-tw/posts/2026/20260620-local-llm-image/</link><pubDate>Sat, 20 Jun 2026 22:55:33 +0800</pubDate><guid>https://995facee.rickylin.pages.dev/zh-tw/posts/2026/20260620-local-llm-image/</guid><description>&lt;ul>
&lt;li>&lt;a href="https://huggingface.co/mlx-community" target="_blank" rel="noopener">https://huggingface.co/mlx-community&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/filipstrand/mflux" target="_blank" rel="noopener">https://github.com/filipstrand/mflux&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/lpalbou/mlx-gen" target="_blank" rel="noopener">https://github.com/lpalbou/mlx-gen&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://huggingface.co/AbstractFramework" target="_blank" rel="noopener">https://huggingface.co/AbstractFramework&lt;/a>&lt;/li>
&lt;/ul>
&lt;h4 id="install">Install&lt;/h4>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>uv tool install --upgrade mflux
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>uv tool install --upgrade --force mlx-gen
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="download-model">Download Model&lt;/h4>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># mlx-community/FLUX.2-klein-9B&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># AbstractFramework/z-image-turbo-8bit&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># AbstractFramework/qwen-image-edit-2511-8bit&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>HF_HUB_DISABLE_XET&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">1&lt;/span> hf download mlx-community/FLUX.2-klein-9B --local-dir FLUX.2-klein-9B --max-workers &lt;span style="color:#ae81ff">1&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="run">Run&lt;/h4>
&lt;h5 id="flux2-klein-9b">FLUX.2-klein-9B&lt;/h5>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>mflux-generate-flux2 &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --model &lt;span style="color:#e6db74">&amp;#34;/Users/ricky/git/mlx/FLUX.2-klein-9B&amp;#34;&lt;/span> &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --prompt &lt;span style="color:#e6db74">&amp;#39;Charmander from Pokemon, a specific Nintendo character, iconic appearance, very clean large eyes, friendly wide smile, smooth round belly, long distinct tail with simple flame outlines&amp;#39;&lt;/span> &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --steps &lt;span style="color:#ae81ff">6&lt;/span> &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --seed &lt;span style="color:#ae81ff">42&lt;/span> &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --width &lt;span style="color:#ae81ff">1240&lt;/span> &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --height &lt;span style="color:#ae81ff">1754&lt;/span> &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --output pics/charmander.png
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h5 id="z-image-turbo-8bit">z-image-turbo-8bit&lt;/h5>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>mlxgen generate &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --model /Users/ricky/git/mlx/z-image-turbo-8bit &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --prompt &lt;span style="color:#e6db74">&amp;#39;哆啦Ａ夢使用竹蜻蜓飛在天空中&amp;#39;&lt;/span> &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --steps &lt;span style="color:#ae81ff">6&lt;/span> &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --seed &lt;span style="color:#ae81ff">42&lt;/span> &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --width &lt;span style="color:#ae81ff">1240&lt;/span> &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --height &lt;span style="color:#ae81ff">1754&lt;/span> &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --output pics/doramon.png
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h5 id="qwen-image-edit-2511-8bit">qwen-image-edit-2511-8bit&lt;/h5>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>mlxgen generate &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --model /Users/ricky/git/mlx/qwen-image-edit-2511-8bit &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --prompt &lt;span style="color:#e6db74">&amp;#39;哆啦Ａ夢使用竹蜻蜓飛在天空中，旁邊有大雄&amp;#39;&lt;/span> &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --steps &lt;span style="color:#ae81ff">6&lt;/span> &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --seed &lt;span style="color:#ae81ff">42&lt;/span> &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --width &lt;span style="color:#ae81ff">1240&lt;/span> &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --height &lt;span style="color:#ae81ff">1754&lt;/span> &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --image-path pics/doramon.png &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --output pics/doramon1.png
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Articles</title><link>https://995facee.rickylin.pages.dev/zh-tw/posts/2026/20260603-articles/</link><pubDate>Wed, 03 Jun 2026 10:07:17 +0800</pubDate><guid>https://995facee.rickylin.pages.dev/zh-tw/posts/2026/20260603-articles/</guid><description>&lt;ul>
&lt;li>&lt;a href="https://medium.com/@0050211" target="_blank" rel="noopener">https://medium.com/@0050211&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://bitcoinbook-3nd-zh.doge.tg/" target="_blank" rel="noopener">精通比特幣&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://virtualosmuseum.org/" target="_blank" rel="noopener">https://virtualosmuseum.org/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://polypad.amplify.com/" target="_blank" rel="noopener">mathematical playground&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://hub.twinkleai.tw/" target="_blank" rel="noopener">台灣資料的 MCP Hub&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.kindyinfo.com/" target="_blank" rel="noopener">幼園通：幼兒園地圖查詢系統&lt;/a>&lt;/li>
&lt;li>&lt;strong>Github&lt;/strong>
&lt;ul>
&lt;li>&lt;a href="https://github.com/xiaolincoder/CS-Base" target="_blank" rel="noopener">小林 x 图解计算机基础&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/Haxxnet/Compose-Examples" target="_blank" rel="noopener">Awesome Docker Compose Examples&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/studyplace-io/Golang-Concurrency-Pattern-Demo" target="_blank" rel="noopener">Golang-Concurrency-Pattern-Demo&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/quii/learn-go-with-tests" target="_blank" rel="noopener">Learn Go with Tests&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/Admol/SystemDesign" target="_blank" rel="noopener">SystemDesign&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/erdong/prometheus-notes" target="_blank" rel="noopener">Prometheus Notes&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/rustcn-org/rust-algos" target="_blank" rel="noopener">Rust算法题解&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/jbranchaud/til" target="_blank" rel="noopener">📝 Today I Learned&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/GoogleCloudPlatform/golang-samples" target="_blank" rel="noopener">golang-samples&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/lifei6671/interview-go" target="_blank" rel="noopener">Golang 面试题搜集&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/xdite/learn-hack" target="_blank" rel="noopener">打造超人學習能力&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/smallnest/network_benchmark" target="_blank" rel="noopener">单机百万级别QPS 网络传输&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/ruanyf/ai-test-case" target="_blank" rel="noopener">AI 编程的测试用例&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/Andyyyy64/whichllm" target="_blank" rel="noopener">whichllm: Find the best local LLM that actually runs on your hardware.&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/neuphonic/neutts" target="_blank" rel="noopener">NeuTTS: On-device TTS model by Neuphonic&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/simonoppowa/OpenNutriTracker" target="_blank" rel="noopener">OpenNutriTracker is a free and open source calorie tracker with a focus on simplicity and privacy.&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/xai-org/x-algorithm" target="_blank" rel="noopener">Algorithm powering the For You feed on X&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/DigitalPlatDev/FreeDomain" target="_blank" rel="noopener">DigitalPlat FreeDomain: Free Domain For Everyone&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/antoinezambelli/forge" target="_blank" rel="noopener">forge: A Python framework for self-hosted LLM tool-calling and multi-step agentic workflows.&lt;/a>: Three ways to use it: Proxy server, WorkflowRunner, Guardrails middleware.&lt;/li>
&lt;li>&lt;a href="https://github.com/KeygraphHQ/shannon" target="_blank" rel="noopener">Shannon Lite is an autonomous, white-box AI pentester for web applications and APIs. It analyzes your source code, identifies attack vectors, and executes real exploits to prove vulnerabilities before they reach production.&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/manaflow-ai/cmux" target="_blank" rel="noopener">cmux: Ghostty-based macOS terminal with vertical tabs and notifications for AI coding agents&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/superset-sh/superset" target="_blank" rel="noopener">superset: Code Editor for the AI Agents Era - Run an army of Claude Code, Codex, etc. on your machine&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/soxoj/maigret" target="_blank" rel="noopener">Maigret collects a dossier on a person by username only, checking for accounts on a huge number of sites and gathering all the available information from web pages. No API keys required.&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/OpenBMB/VoxCPM" target="_blank" rel="noopener">VoxCPM2: Tokenizer-Free TTS for Multilingual Speech Generation, Creative Voice Design, and True-to-Life Cloning&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/Donchitos/Claude-Code-Game-Studios" target="_blank" rel="noopener">Turn Claude Code into a full game dev studio — 49 AI agents, 72 workflow skills, and a complete coordination system mirroring real studio hierarchy.&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/alistaitsacle/free-llm-api-keys" target="_blank" rel="noopener">https://github.com/alistaitsacle/free-llm-api-keys&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/helloianneo/ian-xiaohei-illustrations" target="_blank" rel="noopener">Ian Xiaohei Illustrations 是一个 Codex Skill，用来指导 AI Agent 为中文文章、帖子、博客、Notion 文档和方法论内容生成正文配图。&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/pewdiepie-archdaemon/odysseus" target="_blank" rel="noopener">odysseus: A self-hosted AI workspace &amp;ndash; meant to be the self-hosted version of the UI experience you get from ChatGPT and Claude. But with more jank and fun. Running on your own hardware, with your own data &amp;ndash; local-first, privacy-first, and no trojan.&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/mengxi-ream/read-frog" target="_blank" rel="noopener">🐸 Read Frog - Open Source Immersive Translate | 🐸 陪读蛙 - 开源沉浸式翻译&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/LiveContainer/LiveContainer" target="_blank" rel="noopener">LiveContainer is an app launcher (not emulator or hypervisor) that allows you to run iOS apps inside it.&lt;/a>: Allows you to install unlimited apps (3 app/10 app id free developer account limit does not apply here) with only one app &amp;amp; app id. You can also have multiple versions of an app installed with multiple data containers.&lt;/li>
&lt;li>&lt;a href="https://github.com/T8RIN/ImageToolbox" target="_blank" rel="noopener">Image Toolbox is a powerful app for advanced image manipulation. It offers dozens of features, from basic tools like crop and draw to filters, OCR, and a wide range of image processing options&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/evilsocket/nyx" target="_blank" rel="noopener">Nyx (goddess of the night in Greek mythology) is a self-contained script for cleaning forensic traces on Linux, macOS, and Windows.&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/bobeff/open-source-games" target="_blank" rel="noopener">Open source games&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/golang/groupcache" target="_blank" rel="noopener">groupcache&lt;/a>
&lt;ul>
&lt;li>&lt;a href="https://github.com/groupcache/groupcache-go" target="_blank" rel="noopener">groupcache-go&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a href="https://github.com/Archeb/peer.as" target="_blank" rel="noopener">PEER.AS — explore global BGP routing, IP prefixes, ASNs, AS_PATH, origins and peering. The whole thing runs in your browser: there is no backend, no API, and no database server. The site is just a bundle of static files you can host, fork, or mirror anywhere.&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Tool&lt;/strong>
&lt;ul>
&lt;li>&lt;a href="https://instances.vantage.sh/" target="_blank" rel="noopener">ec2instances.info&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://imagefree.net/zh-Hant" target="_blank" rel="noopener">https://imagefree.net/zh-Hant&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Article&lt;/strong>
&lt;ul>
&lt;li>&lt;a href="https://xdgbasedirectoryspecification.com/" target="_blank" rel="noopener">XDG Base Directory Spec&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://zackoverflow.dev/writing/zig-vs-rust-in-2026/" target="_blank" rel="noopener">Zig vs Rust in 2026&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://emschwartz.me/your-clippy-config-should-be-stricter/" target="_blank" rel="noopener">Your Clippy Config Should Be Stricter&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://blogblog.club/blogrollroll/" target="_blank" rel="noopener">部落卷卷&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://refactoringenglish.com/tools/hn-popularity/" target="_blank" rel="noopener">HN Popularity Contest&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://blainsmith.com/articles/httptrace-with-go/" target="_blank" rel="noopener">Tracing HTTP Requests with Go&amp;rsquo;s &lt;code>net/http/httptrace&lt;/code>&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>免費 3D 列印模型網站&lt;/strong>
&lt;ul>
&lt;li>&lt;a href="https://makerworld.com" target="_blank" rel="noopener">MakerWorld&lt;/a>: Bambu Lab 官方模型平台。很多模型已經附好列印參數（3MF），下載後可直接列印。適合新手。&lt;/li>
&lt;li>&lt;a href="https://www.printables.com" target="_blank" rel="noopener">Printables&lt;/a>: Prusa 官方社群平台。高品質免費模型很多，分類清楚。實用工具、收納、機械零件特別豐富。&lt;/li>
&lt;li>&lt;a href="https://www.thingiverse.com" target="_blank" rel="noopener">Thingiverse&lt;/a>: 歷史最悠久的 3D 模型網站之一。免費模型數量非常大。&lt;/li>
&lt;li>&lt;a href="https://thangs.com" target="_blank" rel="noopener">Thangs&lt;/a>: 兼具模型搜尋引擎與模型平台。可以搜尋多個模型網站的內容。有免費也有付費模型。&lt;/li>
&lt;li>&lt;a href="https://cults3d.com" target="_blank" rel="noopener">Cults3D&lt;/a>: 設計師作品較多。公仔、模型、Cosplay 道具品質高。付費模型比例較高，但也有免費下載區。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="xdg-base-directory-spec">XDG Base Directory Spec&lt;/h2>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Category&lt;/th>
&lt;th>Environment Variable&lt;/th>
&lt;th>Default Value&lt;/th>
&lt;th>FHS Approximation&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Configuration&lt;/td>
&lt;td>$XDG_CONFIG_HOME&lt;/td>
&lt;td>$HOME/.config&lt;/td>
&lt;td>/etc&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Data&lt;/td>
&lt;td>$XDG_DATA_HOME&lt;/td>
&lt;td>$HOME/.local/share&lt;/td>
&lt;td>/usr/share&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>State&lt;/td>
&lt;td>$XDG_STATE_HOME&lt;/td>
&lt;td>$HOME/.local/state&lt;/td>
&lt;td>/var/lib&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Cache&lt;/td>
&lt;td>$XDG_CACHE_HOME&lt;/td>
&lt;td>$HOME/.cache&lt;/td>
&lt;td>/var/cache&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-go" data-lang="go">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">package&lt;/span> &lt;span style="color:#a6e22e">main&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">import&lt;/span> (
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;os&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;fmt&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;log&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;path/filepath&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">func&lt;/span> &lt;span style="color:#a6e22e">getConfigDir&lt;/span>() (&lt;span style="color:#66d9ef">string&lt;/span>, &lt;span style="color:#66d9ef">error&lt;/span>) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">configDir&lt;/span> &lt;span style="color:#f92672">:=&lt;/span> &lt;span style="color:#a6e22e">os&lt;/span>.&lt;span style="color:#a6e22e">Getenv&lt;/span>(&lt;span style="color:#e6db74">&amp;#34;XDG_CONFIG_HOME&amp;#34;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e">// If the value of the environment variable is unset, empty, or not an absolute path, use the default&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">if&lt;/span> &lt;span style="color:#a6e22e">configDir&lt;/span> &lt;span style="color:#f92672">==&lt;/span> &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span> &lt;span style="color:#f92672">||&lt;/span> &lt;span style="color:#a6e22e">configDir&lt;/span>[&lt;span style="color:#ae81ff">0&lt;/span>:&lt;span style="color:#ae81ff">1&lt;/span>] &lt;span style="color:#f92672">!=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;/&amp;#34;&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">homeDir&lt;/span>, &lt;span style="color:#a6e22e">err&lt;/span> &lt;span style="color:#f92672">:=&lt;/span> &lt;span style="color:#a6e22e">os&lt;/span>.&lt;span style="color:#a6e22e">UserHomeDir&lt;/span>()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">if&lt;/span> &lt;span style="color:#a6e22e">err&lt;/span> &lt;span style="color:#f92672">!=&lt;/span> &lt;span style="color:#66d9ef">nil&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">return&lt;/span> &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>, &lt;span style="color:#a6e22e">err&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">return&lt;/span> &lt;span style="color:#a6e22e">filepath&lt;/span>.&lt;span style="color:#a6e22e">Join&lt;/span>(&lt;span style="color:#a6e22e">homeDir&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;.config&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;my-application-name&amp;#34;&lt;/span>), &lt;span style="color:#66d9ef">nil&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e">// The value of the environment variable is valid; use it&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">return&lt;/span> &lt;span style="color:#a6e22e">filepath&lt;/span>.&lt;span style="color:#a6e22e">Join&lt;/span>(&lt;span style="color:#a6e22e">configDir&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;my-application-name&amp;#34;&lt;/span>), &lt;span style="color:#66d9ef">nil&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">func&lt;/span> &lt;span style="color:#a6e22e">main&lt;/span>() {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">config_dir&lt;/span>, &lt;span style="color:#a6e22e">err&lt;/span> &lt;span style="color:#f92672">:=&lt;/span> &lt;span style="color:#a6e22e">getConfigDir&lt;/span>()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">if&lt;/span> &lt;span style="color:#a6e22e">err&lt;/span> &lt;span style="color:#f92672">!=&lt;/span> &lt;span style="color:#66d9ef">nil&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> panic(&lt;span style="color:#a6e22e">err&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">fmt&lt;/span>.&lt;span style="color:#a6e22e">Println&lt;/span>(&lt;span style="color:#a6e22e">config_dir&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;hr>
&lt;h2 id="whichllm">whichllm&lt;/h2>
&lt;p>&lt;code>uvx whichllm@latest&lt;/code>&lt;/p></description></item><item><title>Local LLM on MacBookPro</title><link>https://995facee.rickylin.pages.dev/zh-tw/posts/2026/20260601-local-llm/</link><pubDate>Mon, 01 Jun 2026 10:58:17 +0800</pubDate><guid>https://995facee.rickylin.pages.dev/zh-tw/posts/2026/20260601-local-llm/</guid><description>&lt;ul>
&lt;li>&lt;a href="https://huggingface.co/mlx-community" target="_blank" rel="noopener">https://huggingface.co/mlx-community&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/ml-explore/mlx-lm" target="_blank" rel="noopener">https://github.com/ml-explore/mlx-lm&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/jundot/omlx" target="_blank" rel="noopener">https://github.com/jundot/omlx&lt;/a>&lt;/li>
&lt;/ul>
&lt;h4 id="install">Install&lt;/h4>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># install hf&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>uv tool install &lt;span style="color:#e6db74">&amp;#34;huggingface_hub&amp;#34;&lt;/span> --with hf-xet --upgrade
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>hf auth login
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>hf auth whoami
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># install mlx_lm&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>uv tool install --force &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --from &lt;span style="color:#e6db74">&amp;#39;git+https://github.com/ml-explore/mlx-lm.git@refs/pull/1192/head&amp;#39;&lt;/span> mlx-lm &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --with &lt;span style="color:#e6db74">&amp;#39;transformers @ git+https://github.com/huggingface/transformers.git&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># install mlx-openai-server&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>uv pip install git+https://github.com/cubist38/mlx-openai-server.git --system
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># install [litellm](https://github.com/BerriAI/litellm)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>uv tool install &lt;span style="color:#e6db74">&amp;#39;litellm[proxy]&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># install [claw-code](https://github.com/ultraworkers/claw-code)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>cargo install agent-code
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="download-model">Download Model&lt;/h4>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>HF_HUB_DISABLE_XET&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">1&lt;/span> hf download mlx-community/DeepSeek-V4-Flash-4bit &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --local-dir deepseekV4 --repo-type model
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="run-server">Run Server&lt;/h4>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>mlx_lm.server --model /Users/ricky/git/mlx/deepseekV4 --port &lt;span style="color:#ae81ff">8080&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>or&lt;/strong>&lt;/p></description></item><item><title>Articles</title><link>https://995facee.rickylin.pages.dev/zh-tw/posts/2026/20260430-articles/</link><pubDate>Thu, 30 Apr 2026 11:46:57 +0800</pubDate><guid>https://995facee.rickylin.pages.dev/zh-tw/posts/2026/20260430-articles/</guid><description>&lt;ul>
&lt;li>&lt;a href="https://github.com/garrytan/gstack" target="_blank" rel="noopener">gstack: Use Garry Tan&amp;rsquo;s exact Claude Code setup: 23 opinionated tools that serve as CEO, Designer, Eng Manager, Release Manager, Doc Engineer, and QA&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/tw93/waza" target="_blank" rel="noopener">Waza: Engineering habits you already know, turned into skills Claude can run.&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/docmd-io/docmd" target="_blank" rel="noopener">docmd: Build production-ready documentation from Markdown in seconds.&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/hexiecs/talk-normal" target="_blank" rel="noopener">talk-normal: Make any LLM talk like a normal person. A system prompt that removes AI slop.&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.iqiipi.com/the-quiet-colossus.html" target="_blank" rel="noopener">The Quiet Colossus&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/smol-machines/smolvm" target="_blank" rel="noopener">smolvm: Tool to build &amp;amp; run portable, lightweight, self-contained virtual machines.&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://blog.calif.io/p/mad-bugs-even-cat-readmetxt-is-not" target="_blank" rel="noopener">MAD Bugs: &amp;ldquo;cat readme.txt&amp;rdquo; is not safe in iTerm2&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://aistupidlevel.info/" target="_blank" rel="noopener">https://aistupidlevel.info/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://markdown.new/" target="_blank" rel="noopener">https://markdown.new/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/JuliusBrussee/caveman" target="_blank" rel="noopener">caveman: Claude Code skill that cuts 65% of tokens by talking like caveman&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/shivampkumar/trellis-mac" target="_blank" rel="noopener">trellis-mac: This is a port of Microsoft&amp;rsquo;s TRELLIS.2 — a state-of-the-art image-to-3D model — from CUDA-only to Apple Silicon via PyTorch MPS. No NVIDIA GPU required.&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://opensource.posit.co/blog/2026-04-20_ggsql_alpha_release/" target="_blank" rel="noopener">ggsql: A grammar of graphics for SQL&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://lawsofsoftwareengineering.com/" target="_blank" rel="noopener">https://lawsofsoftwareengineering.com/&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://vidstudio.app/video-editor" target="_blank" rel="noopener">VidStudio: a browser based video editor that doesn&amp;rsquo;t upload your files&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/calcom/cal.diy" target="_blank" rel="noopener">cal.diy: Scheduling infrastructure for absolutely everyone.&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/microsoft/RustTraining" target="_blank" rel="noopener">RustTraining&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/duncaen/opendoas" target="_blank" rel="noopener">opendoas: A portable fork of the OpenBSD &lt;code>doas&lt;/code> command, is a minimal replacement for the venerable &lt;code>sudo&lt;/code>.&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/codeforreal1/compressO" target="_blank" rel="noopener">compressO: Convert any video/image into a tiny size. 100% free &amp;amp; open-source. Available for Mac, Windows &amp;amp; Linux.&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/tw93/kami" target="_blank" rel="noopener">kami: Part of a trilogy: Kaku (書く) writes code, Waza (技) drills habits, Kami (紙) delivers documents.&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/bergside/design-md-chrome" target="_blank" rel="noopener">design-md-chrome: Chrome extension to extract styles from any website and generate DESIGN.md files and design skills for AI based on TypeUI&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.a-nan53.tw/product/enter-adult-baseball-cowhide-glove/" target="_blank" rel="noopener">佐enter 成人碎牛皮手套&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/localsend/localsend" target="_blank" rel="noopener">localsend: An open-source cross-platform alternative to AirDrop&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://gtfobins.org" target="_blank" rel="noopener">GTFOBins is a curated list of Unix-like executables that can be used to bypass local security restrictions in misconfigured systems.&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/warpdotdev/warp" target="_blank" rel="noopener">Warp is an agentic development environment, born out of the terminal.&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/corbindavenport/just-the-browser" target="_blank" rel="noopener">Just the Browser: Remove AI features, telemetry data reporting, sponsored content, product integrations, and other annoyances from web browsers.&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://copy.fail/" target="_blank" rel="noopener">Copy Fail: CVE-2026-31431&lt;/a>&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="mad-bugs-cat-readmetxt-is-not-safe-in-iterm2">MAD Bugs: &amp;ldquo;cat readme.txt&amp;rdquo; is not safe in iTerm2&lt;/h2>
&lt;h3 id="the-core-bug">The core bug&lt;/h3>
&lt;p>The bug is a trust failure. iTerm2 accepts the SSH conductor protocol from terminal output that is not actually coming from a trusted, real conductor session. In other words, untrusted terminal output can impersonate the remote conductor.&lt;/p></description></item><item><title>把你的程式碼庫轉成單一的 LLM 提示詞。</title><link>https://995facee.rickylin.pages.dev/zh-tw/posts/2025/20251211-convert-your-codebase-into-a-single-llm-prompt/</link><pubDate>Thu, 11 Dec 2025 13:16:46 +0800</pubDate><guid>https://995facee.rickylin.pages.dev/zh-tw/posts/2025/20251211-convert-your-codebase-into-a-single-llm-prompt/</guid><description>&lt;ul>
&lt;li>&lt;a href="https://github.com/mufeedvh/code2prompt" target="_blank" rel="noopener">把你的程式碼庫轉成單一的 LLM 提示詞。&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>LLMs Hackmd Docs</title><link>https://995facee.rickylin.pages.dev/zh-tw/posts/2024/20240510-llm/</link><pubDate>Fri, 10 May 2024 10:08:00 +0800</pubDate><guid>https://995facee.rickylin.pages.dev/zh-tw/posts/2024/20240510-llm/</guid><description>&lt;ul>
&lt;li>&lt;a href="https://hackmd.io/@whYPD8MBSHWRZV6y-ymFwQ/ryqUCfu6T" target="_blank" rel="noopener">大型語言模型 LLMs 課程教學 課程大綱 (四)&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://hackmd.io/cZPGG0gQRCuG7pZGV-SlEg" target="_blank" rel="noopener">大型語言模型 LLMs 課程教學 課程大綱 (五)&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://hackmd.io/@whYPD8MBSHWRZV6y-ymFwQ/Bk3TbayAp" target="_blank" rel="noopener">大型語言模型 LLMs 課程教學 課程大綱 (六)&lt;/a>&lt;/li>
&lt;/ul>
&lt;ol>
&lt;li>LM STUDIO&lt;/li>
&lt;li>chromadb/chroma&lt;/li>
&lt;li>ollama/ollama&lt;/li>
&lt;li>mintplexlabs/anythingllm&lt;/li>
&lt;/ol></description></item><item><title>LLM 視覺化</title><link>https://995facee.rickylin.pages.dev/zh-tw/posts/2024/20240121-llm/</link><pubDate>Sun, 21 Jan 2024 12:40:00 +0800</pubDate><guid>https://995facee.rickylin.pages.dev/zh-tw/posts/2024/20240121-llm/</guid><description>&lt;ul>
&lt;li>&lt;a href="https://bbycroft.net/llm" target="_blank" rel="noopener">LLM 視覺化&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/bbycroft/llm-viz" target="_blank" rel="noopener">GitHub&lt;/a>&lt;/li>
&lt;/ul></description></item></channel></rss>