<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8737967</id><updated>2026-08-26T06:51:18.014+08:00</updated><category term="攝影"/><category term="底片"/><category term="心情"/><category term="分享"/><category term="器材"/><category term="Fuji"/><category term="Pentax"/><category term="影片"/><category term="Minolta"/><category term="軟體"/><category term="育兒"/><category term="Kodak"/><category term="觀點"/><category term="出遊"/><category term="Sony"/><category term="Konica"/><category term="網路"/><category term="Samsung"/><category term="Panasonic"/><category term="Contax"/><category term="M42"/><category term="Olympus"/><category term="Konica AR"/><category term="Minolta Alpha"/><category term="Minolta SR"/><category term="精選輪播"/><category term="Lightroom"/><category term="Blogger"/><category term="撕拉"/><category term="Nikon"/><category term="買物"/><category term="Perutz"/><category term="手作"/><category term="政治"/><category term="SLR"/><category term="Contax CY"/><category term="Ricoh"/><category term="Google"/><category term="Instagram"/><category term="Schneider"/><category term="好康"/><category term="Contax N"/><category term="Mamiya"/><category term="Olympus OM"/><category term="書稿"/><category term="Sigma"/><category term="中判"/><category term="棒球"/><category term="音樂"/><category term="AGFA"/><category term="RangeFinder"/><category term="Graflex"/><category term="Pentacon"/><category term="Polaroid"/><category term="大判"/><category term="Android"/><category term="Linux"/><category term="Tamron"/><category term="Tamron Adaptall-2"/><category term="食記"/><category term="Canon"/><category term="Nikon F"/><category term="Apple"/><category term="ILFORD"/><category term="Leica"/><category term="Mamiya C"/><category term="Praktica"/><category term="雜項"/><category term="Topcon"/><category term="Flickr"/><category term="PointShoot"/><category term="M39"/><category term="Yashica"/><category term="jQuery"/><category term="健康"/><category term="Facebook"/><category term="Rodenstock"/><category term="iPhone"/><category term="拓冊"/><category term="DKL"/><category term="Pentax K"/><category term="Petri"/><category term="Zenit"/><category term="Zorki"/><category term="植物"/><category term="Instax Wide"/><category term="Keroro"/><category term="Voigtlander"/><category term="CSS"/><category term="教育"/><category term="Contax G"/><category term="Fujica X"/><category term="Microsoft"/><category term="SEO"/><category term="從軍"/><category term="AMD"/><category term="Asus"/><category term="Gentoo"/><category term="Homelab"/><category term="Nicca"/><category term="Office"/><category term="Spectra"/><category term="TLR"/><category term="iPad"/><category term="iPod"/><category term="生活"/><category term="Antivirus"/><category term="Joomla"/><category term="Kingston"/><category term="Pentax 67"/><category term="Twitter"/><category term="Canon EF"/><category term="Carl Zeiss Jena"/><category term="Cosina"/><category term="HTC"/><category term="Komura"/><category term="Kowa"/><category term="LLM"/><category term="Motorola"/><category term="ROCm"/><category term="Solaris"/><category term="Tumblr"/><category term="Universal"/><category term="Vegas"/><category term="Youtube"/><category term="guardrail"/><category term="mootools"/><category term="verifier"/><category term="筆記"/><category term="2PC"/><category term="ASIC"/><category term="Busch"/><category term="Caltar"/><category term="Exakta"/><category term="Firefox OS"/><category term="Franka"/><category term="Horizon"/><category term="Koni-Omega"/><category term="MySQL"/><category term="Opencart"/><category term="Paypal"/><category term="Plurk"/><category term="Praktica B"/><category term="Rollei"/><category term="Rollei QBM"/><category term="Rust"/><category term="SX-70"/><category term="SilkyPix"/><category term="Tokina"/><category term="Vim"/><category term="Zeiss"/><category term="benchmark"/><category term="efiniti"/><category term="被動收入"/><category term="雜談"/><title type='text'>弱格吉米言</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://jimmyyen.blogspot.com/feeds/posts/full'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8737967/posts/full'/><link rel='alternate' type='text/html' href='http://jimmyyen.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/8737967/posts/full?start-index=26&amp;max-results=25'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>1987</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8737967.post-833967986102151817</id><published>2026-08-19T14:52:28.259+08:00</published><updated>2026-08-19T14:54:50.657+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AMD"/><category scheme="http://www.blogger.com/atom/ns#" term="benchmark"/><category scheme="http://www.blogger.com/atom/ns#" term="guardrail"/><category scheme="http://www.blogger.com/atom/ns#" term="LLM"/><category scheme="http://www.blogger.com/atom/ns#" term="ROCm"/><category scheme="http://www.blogger.com/atom/ns#" term="verifier"/><title type='text'>16GB ROCm 本地 LLM-as-a-Verifier 實測數據：Qwen3.5-9B 跑起來到底多快</title><content type='html'>&lt;div class=&quot;blogger-agent-post&quot; style=&quot;font-family: -apple-system, BlinkMacSystemFont, &#39;Segoe UI&#39;, Roboto, sans-serif; line-height: 1.6;&quot;&gt;
&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; 用 Qwen3.5-9B（Q4_K）在單張 16GB AMD GPU 上跑本地 LLM-as-a-Verifier，每次 code comparison 約 0.5–2 秒，cache hit rate 66%，正確程式碼穩定給 1.0 分，有 bug 的給 0.0–0.14 分。16GB 跑 9B 模型綽綽有餘，還有空間跑其他服務。&lt;/p&gt;
&lt;p&gt;這篇是實測續篇，前兩篇分別講了&lt;a href=&quot;https://cawa0505.github.io/llm-as-a-verifier-local-ai-guard/&quot;&gt;架構設計&lt;/a&gt;和 &lt;a href=&quot;https://cawa0505.github.io/packaging-llm-as-a-verifier-docker/&quot;&gt;Docker 封裝&lt;/a&gt;。前兩篇講的是「做什麼」跟「怎麼做」，這篇來量「到底多快」。&lt;/p&gt;
&lt;!-- raw HTML omitted --&gt;
&lt;h2&gt;1. 測試環境&lt;/h2&gt;
&lt;p&gt;在一台 homelab Linux（CachyOS）上跑的：&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; margin: 1em 0;&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;border: 1px solid #ddd; padding: 8px; background: #f5f5f5; text-align: left;&quot;&gt;項目&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #ddd; padding: 8px; background: #f5f5f5; text-align: left;&quot;&gt;內容&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;&lt;strong&gt;GPU&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;AMD 16GB（15.9 GiB）via ROCm&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;&lt;strong&gt;模型&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;Qwen3.5-9B（8.95B 參數，Q4_K ~5.7GB GGUF）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;&lt;strong&gt;後端&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;llama.cpp（llama-server，ROCm HIP build）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;&lt;strong&gt;Verifier&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;Docker container（llm-verifier），port 8010&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;&lt;strong&gt;模型 VRAM&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;~10.2 GB（模型本身 + 動態 KV cache）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;&lt;strong&gt;GPU 使用率&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;78%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;&lt;strong&gt;系統 RAM&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;62 GB；使用 27 GB（swap 用了 9.3 GB）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;&lt;strong&gt;Context window&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;131,072 tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;&lt;strong&gt;MIN_SCORE&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;0.8&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;後端跑在另一台機器上，走 local Gigabit 網路連線。&lt;/p&gt;
&lt;h2&gt;2. Verifier 在幹嘛&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;docker-llm-as-a-verifier&lt;/code&gt; 包裝了 &lt;a href=&quot;https://github.com/llm-as-a-verifier/llm-as-a-verifier&quot;&gt;LLM-as-a-Verifier&lt;/a&gt; 這個研究套件，讀取 token-level log probability 來算連續分數，不是簡單的 yes/no 判斷。&lt;/p&gt;
&lt;p&gt;Container 開了 7 個 HTTP endpoint：&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; margin: 1em 0;&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;border: 1px solid #ddd; padding: 8px; background: #f5f5f5; text-align: left;&quot;&gt;Endpoint&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #ddd; padding: 8px; background: #f5f5f5; text-align: left;&quot;&gt;Method&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #ddd; padding: 8px; background: #f5f5f5; text-align: left;&quot;&gt;用途&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;&lt;code&gt;/health&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;GET&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;健康檢查&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;&lt;code&gt;/v1/compare&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;POST&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;兩組答案比對評分&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;&lt;code&gt;/v1/select&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;POST&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;Best-of-N 選最佳&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;&lt;code&gt;/v1/track&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;POST&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;Agent 軌跡分數追蹤&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;&lt;code&gt;/v1/directed&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;POST&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;導向式 (A→B) 偏好比較&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;&lt;code&gt;/v1/score-pairs&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;POST&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;批次 pairwise 評分&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;&lt;code&gt;/v1/usage&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;GET&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;累計 token 統計&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;每個 &lt;code&gt;/v1/compare&lt;/code&gt; 實際做 3 次 LLM inference：先評 A，再評 B，最後比較兩者分數給 verdict。&lt;/p&gt;
&lt;h2&gt;3. 實測數據&lt;/h2&gt;
&lt;h3&gt;3.1 Latency&lt;/h3&gt;
&lt;p&gt;從 verifier 自己的 log timestamp 撈的：&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; margin: 1em 0;&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;border: 1px solid #ddd; padding: 8px; background: #f5f5f5; text-align: left;&quot;&gt;操作&lt;/th&gt;
&lt;th style=&quot;text-align:center; border: 1px solid #ddd; padding: 8px; background: #f5f5f5; text-align: left;&quot;&gt;後端呼叫數&lt;/th&gt;
&lt;th style=&quot;text-align:center; border: 1px solid #ddd; padding: 8px; background: #f5f5f5; text-align: left;&quot;&gt;總時間&lt;/th&gt;
&lt;th style=&quot;text-align:center; border: 1px solid #ddd; padding: 8px; background: #f5f5f5; text-align: left;&quot;&gt;每次平均&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;Compare（一般）&lt;/td&gt;
&lt;td style=&quot;text-align:center; border: 1px solid #ddd; padding: 8px;&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;text-align:center; border: 1px solid #ddd; padding: 8px;&quot;&gt;~1,000 ms&lt;/td&gt;
&lt;td style=&quot;text-align:center; border: 1px solid #ddd; padding: 8px;&quot;&gt;~330 ms&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;Compare（命中 cache）&lt;/td&gt;
&lt;td style=&quot;text-align:center; border: 1px solid #ddd; padding: 8px;&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;text-align:center; border: 1px solid #ddd; padding: 8px;&quot;&gt;~800 ms&lt;/td&gt;
&lt;td style=&quot;text-align:center; border: 1px solid #ddd; padding: 8px;&quot;&gt;~270 ms&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;Select（N=3, pivots=2）&lt;/td&gt;
&lt;td style=&quot;text-align:center; border: 1px solid #ddd; padding: 8px;&quot;&gt;6&lt;/td&gt;
&lt;td style=&quot;text-align:center; border: 1px solid #ddd; padding: 8px;&quot;&gt;~1,200 ms&lt;/td&gt;
&lt;td style=&quot;text-align:center; border: 1px solid #ddd; padding: 8px;&quot;&gt;~200 ms&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;單次 inference&lt;/td&gt;
&lt;td style=&quot;text-align:center; border: 1px solid #ddd; padding: 8px;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;text-align:center; border: 1px solid #ddd; padding: 8px;&quot;&gt;200–800 ms&lt;/td&gt;
&lt;td style=&quot;text-align:center; border: 1px solid #ddd; padding: 8px;&quot;&gt;200–800 ms&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Cache hit rate 66.4%&lt;/strong&gt; — 80 次 request 裡 22,417 個 prompt tokens 被 cache 住（總共 33,768）。verifier 的 &lt;code&gt;fine_grained_reward&lt;/code&gt; 模組會把評分結果 cache 到 disk（&lt;code&gt;verifier-cache&lt;/code&gt; Docker volume），同樣的 code snippet 重複比對時直接跳過 LLM。&lt;/p&gt;
&lt;h3&gt;3.2 評分品質&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; margin: 1em 0;&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;border: 1px solid #ddd; padding: 8px; background: #f5f5f5; text-align: left;&quot;&gt;候選程式&lt;/th&gt;
&lt;th style=&quot;text-align:center; border: 1px solid #ddd; padding: 8px; background: #f5f5f5; text-align: left;&quot;&gt;分數&lt;/th&gt;
&lt;th style=&quot;text-align:center; border: 1px solid #ddd; padding: 8px; background: #f5f5f5; text-align: left;&quot;&gt;結果&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;正確的程式碼&lt;/td&gt;
&lt;td style=&quot;text-align:center; border: 1px solid #ddd; padding: 8px;&quot;&gt;0.97–1.0&lt;/td&gt;
&lt;td style=&quot;text-align:center; border: 1px solid #ddd; padding: 8px;&quot;&gt;ACCEPTED&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;明顯的 bug&lt;/td&gt;
&lt;td style=&quot;text-align:center; border: 1px solid #ddd; padding: 8px;&quot;&gt;0.0–0.02&lt;/td&gt;
&lt;td style=&quot;text-align:center; border: 1px solid #ddd; padding: 8px;&quot;&gt;REJECTED&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;微妙的 bug&lt;/td&gt;
&lt;td style=&quot;text-align:center; border: 1px solid #ddd; padding: 8px;&quot;&gt;0.02–0.14&lt;/td&gt;
&lt;td style=&quot;text-align:center; border: 1px solid #ddd; padding: 8px;&quot;&gt;REJECTED&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;code&gt;MIN_SCORE=0.8&lt;/code&gt; 設下去，即使最接近正確的 buggy code（0.14）還是被正確擋掉。正反案例的分數落差很乾淨，沒有模糊地帶。&lt;/p&gt;
&lt;h3&gt;3.3 Token 用量&lt;/h3&gt;
&lt;p&gt;80 次 verifier request 的累計數字：&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; margin: 1em 0;&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;border: 1px solid #ddd; padding: 8px; background: #f5f5f5; text-align: left;&quot;&gt;項目&lt;/th&gt;
&lt;th style=&quot;text-align:center; border: 1px solid #ddd; padding: 8px; background: #f5f5f5; text-align: left;&quot;&gt;數值&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;Prompt tokens 總計&lt;/td&gt;
&lt;td style=&quot;text-align:center; border: 1px solid #ddd; padding: 8px;&quot;&gt;33,768&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;— 其中 cache hit&lt;/td&gt;
&lt;td style=&quot;text-align:center; border: 1px solid #ddd; padding: 8px;&quot;&gt;22,417（66.4%）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;Completion tokens 總計&lt;/td&gt;
&lt;td style=&quot;text-align:center; border: 1px solid #ddd; padding: 8px;&quot;&gt;47,538&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;總 token 數&lt;/td&gt;
&lt;td style=&quot;text-align:center; border: 1px solid #ddd; padding: 8px;&quot;&gt;81,306&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;Reasoning tokens&lt;/td&gt;
&lt;td style=&quot;text-align:center; border: 1px solid #ddd; padding: 8px;&quot;&gt;0（Qwen 不是 R1）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;後端請求數&lt;/td&gt;
&lt;td style=&quot;text-align:center; border: 1px solid #ddd; padding: 8px;&quot;&gt;80&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Reasoning tokens 是 0，確認 Qwen3.5-9B 是 dense model，不是 reasoning/R1 系列。Verifier 直接用模型的 log-probability 輸出，不走 chain-of-thought。&lt;/p&gt;
&lt;h3&gt;3.4 VRAM &amp;amp; GPU 使用率&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; margin: 1em 0;&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;border: 1px solid #ddd; padding: 8px; background: #f5f5f5; text-align: left;&quot;&gt;項目&lt;/th&gt;
&lt;th style=&quot;text-align:center; border: 1px solid #ddd; padding: 8px; background: #f5f5f5; text-align: left;&quot;&gt;數值&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;VRAM 總容量&lt;/td&gt;
&lt;td style=&quot;text-align:center; border: 1px solid #ddd; padding: 8px;&quot;&gt;15.9 GiB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;VRAM 使用量&lt;/td&gt;
&lt;td style=&quot;text-align:center; border: 1px solid #ddd; padding: 8px;&quot;&gt;10.2 GiB（64%）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;GPU 使用率&lt;/td&gt;
&lt;td style=&quot;text-align:center; border: 1px solid #ddd; padding: 8px;&quot;&gt;78%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;Context window&lt;/td&gt;
&lt;td style=&quot;text-align:center; border: 1px solid #ddd; padding: 8px;&quot;&gt;131,072 tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;9B 模型 Q4_K 量化後只佔 ~5.7 GB，還有 ~5.7 GB 給 KV cache 和其他服務。131K context window 是 llama.cpp 的預設值，verifier 實際 prompt 小很多（~400–800 tokens）。&lt;/p&gt;
&lt;h2&gt;4. 真正的架構長這樣&lt;/h2&gt;
&lt;p&gt;實際跑起來的 pipeline 比第一篇架構圖簡單：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Agent（OpenCode）
  │ 送出修改提案
  ▼
guardrail-mcp
  │ commit_token → validate → consume
  │ apply_patch（cargo check / tsc syntax 驗證）
  │ softguard（HTTP → verifier）
  ▼
llm-verifier（Docker :8010）
  │ POST /v1/directed（比對舊程式 vs 新程式）
  ▼
llama.cpp（ROCm）
  │ Qwen3.5-9B Q4_K inference
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;guardrail-mcp 提供的工具：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;commit_token&lt;/strong&gt;：2PC 生命週期（create → validate → consume → revoke），SHA-256 綁定 proposal，30 分鐘 TTL，綁定 git revision&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;apply_patch&lt;/strong&gt;：套用 patch 前先用 compiler 驗證（cargo check / tsc），通過才寫入&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;inspect_context&lt;/strong&gt;：Tree-sitter 結構化萃取，讓 patch 更精準&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;softguard&lt;/strong&gt;：HTTP verifier 呼叫器，可設定 endpoint、timeout、API key&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;關鍵設計：&lt;strong&gt;LLM verifier 是 soft guard&lt;/strong&gt;，負責抓 syntax 檢查抓不到的語意 bug。&lt;code&gt;cargo check&lt;/code&gt; / &lt;code&gt;tsc&lt;/code&gt; 這種便宜的確定性檢查先做第一關，通過的才送 LLM 做語意審查。&lt;/p&gt;
&lt;h2&gt;5. 已知限制&lt;/h2&gt;
&lt;p&gt;這些數字是單次 session 的 benchmark，不是正式的 evaluation suite：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;沒有併發測試&lt;/strong&gt;：80 個 request 是循序跑的，不是同時。真實 TPS 會更低。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;沒有雲端 baseline&lt;/strong&gt;：OpenRouter free route 還沒測，本地 ROCm vs 雲端 API 的比較還欠著。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;沒有 VL 數據&lt;/strong&gt;：多模態 vision endpoint（9B VL）還在開發中，這些數字只適用 text-only 的 code comparison path。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;沒有 Track 1 short-circuit 率&lt;/strong&gt;：第一篇提到的 AST 結構檢查是 aspirational 的。目前 guardrail-mcp 用 syntax validation（cargo check / tsc）當確定性閘門，不是專屬的 AST structural checker。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;沒有精確成本&lt;/strong&gt;：0.5–2s per comparison 在 78% GPU 使用率下，大概不到 1 塊台幣的電費，但這是粗估，不是實測。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;6. 結論&lt;/h2&gt;
&lt;p&gt;一張不到 15,000 台幣的 16GB AMD GPU，就能跑本地 LLM-as-a-Verifier 做 code review 的 guardrail：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Qwen3.5-9B Q4_K&lt;/strong&gt; 塞得進去還有空間（10.2 GB / 15.9 GB）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compare latency&lt;/strong&gt;：~0.5–2s，interactive guardrail 夠用&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cache hit rate&lt;/strong&gt;：66%，重複比對幾乎免費&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;評分品質&lt;/strong&gt;：正確（1.0）跟錯誤（0.0–0.14）分得很開&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不需要雲端 API key，沒有月費，沒有資料外洩問題。&lt;/p&gt;
&lt;p&gt;下一步是 benchmark OpenRouter free route 做雲端 baseline，以及量併發 throughput。但即使沒有對照組，本機路徑已經夠日常使用了。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Repository：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Verifier Docker 封裝：&lt;a href=&quot;https://github.com/cawa0505/docker-llm-as-a-verifier&quot;&gt;github.com/cawa0505/docker-llm-as-a-verifier&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;2PC guard gate：&lt;a href=&quot;https://github.com/cawa0505/guardrail-mcp&quot;&gt;github.com/cawa0505/guardrail-mcp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;架構總覽：&lt;a href=&quot;https://cawa0505.github.io/llm-as-a-verifier-local-ai-guard/&quot;&gt;Poor Man&amp;#39;s LLM-as-a-Verifier&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;p style=&#39;text-align:right;padding:5px;border-top:1px solid #ccc;&#39;&gt;《弱格吉米言》&lt;a href=&#39;http://jimmyyen.blogspot.com/&#39;&gt;http://jimmyyen.blogspot.com/&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jimmyyen.blogspot.com/feeds/833967986102151817/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://jimmyyen.blogspot.com/2026/08/16gb-rocm-llm-as-verifier-qwen35-9b.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8737967/posts/default/833967986102151817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8737967/posts/default/833967986102151817'/><link rel='alternate' type='text/html' href='http://jimmyyen.blogspot.com/2026/08/16gb-rocm-llm-as-verifier-qwen35-9b.html' title='16GB ROCm 本地 LLM-as-a-Verifier 實測數據：Qwen3.5-9B 跑起來到底多快'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8737967.post-596216215767149735</id><published>2026-08-19T14:01:52.797+08:00</published><updated>2026-08-19T14:59:48.123+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="2PC"/><category scheme="http://www.blogger.com/atom/ns#" term="AMD"/><category scheme="http://www.blogger.com/atom/ns#" term="guardrail"/><category scheme="http://www.blogger.com/atom/ns#" term="LLM"/><category scheme="http://www.blogger.com/atom/ns#" term="ROCm"/><category scheme="http://www.blogger.com/atom/ns#" term="Rust"/><category scheme="http://www.blogger.com/atom/ns#" term="verifier"/><title type='text'>窮人的 LLM-as-a-Verifier：16GB 顯卡 + ROCm 打造地端 0 成本 Agent 審查閘門</title><content type='html'>&lt;div class=&quot;blogger-agent-post&quot; style=&quot;font-family: -apple-system, BlinkMacSystemFont, &#39;Segoe UI&#39;, Roboto, sans-serif; line-height: 1.6;&quot;&gt;
&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; 這篇寫給不想被雲端 API 掏空錢包、又怕 AI Agent 盲目重構改爆 Codebase 的開發者。我們用 Radeon RX 9060 XT 16GB、Linux ROCm (HIP) 硬體加速，加上 Rust 寫的確定性 2PC 防禦門衛，手刻一套符合 PRM（Process Reward Model）規格的地端零成本 AI 外骨骼系統。&lt;/p&gt;
&lt;h2&gt;1. 痛點：Agent 狂歡背後的帳單破產與程式碼毀滅&lt;/h2&gt;
&lt;p&gt;Autonomous Coding Agent（OpenCode、Claude Code 等）大幅改變了開發流程，但附帶兩大噩夢：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Token 黑洞與 API 帳單爆表&lt;/strong&gt;：為了確保程式碼品質，Agent 需要頻繁自我思考、多方案比較（Best-of-N）與長鏈修復。幾輪對話下來，雲端 API 帳單直接失控。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;確定性缺失（Non-determinism）&lt;/strong&gt;：沒有 Guardrail 攔截的 Agent 就像沒導航的賽車——隨時在背景修改全域 Interface、弄爛 DB Schema，甚至產生語法幻覺。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;解答&lt;/strong&gt;：我們需要 Verifier（過程監督者）。但大廠論文動輒用 A100 叢集配 vLLM 預分配幾十 GB VRAM，一般開發者負擔不起。我們需要一套在地端 16GB VRAM 上順暢跑的「窮人版 Process Supervision 體系」。&lt;/p&gt;
&lt;h2&gt;2. 硬體與驅動層：為什麼選 Radeon RX 9060 XT 16GB + ROCm (HIP)？&lt;/h2&gt;
&lt;p&gt;在 Homelab / Linux (CachyOS) 環境下，配 Radeon RX 9060 XT 16GB 搭 ROCm Backend 是 CP 值很高的搭配：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;HIP 矩陣加速與 VRAM 吞吐&lt;/strong&gt;：透過 ROCm 原生 HIP 加速，16GB VRAM 能穩穩咬住 Qwen3.5-9B with mmproj（程式碼語意 + 多模態視覺）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;逃離 vLLM 的 VRAM 黑洞&lt;/strong&gt;：vLLM 預分配 90% VRAM 的機制在單機多任務環境是災難。改用 ROCm 版的 llama-server（GGUF 量化），模型權重只吃 5~9 GB VRAM，剩下的空間還能動態分配 KV Cache，主機照樣順跑其他服務。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;0 API 成本&lt;/strong&gt;：2PC（兩階段提交）觸發一萬次 &lt;code&gt;/v1/directed&lt;/code&gt; 評分，消耗的只有幾塊錢電費，沒了 Token 焦慮。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;3. 架構哲學：三層確定性防禦外骨骼 (Tri-Layer Harness)&lt;/h2&gt;
&lt;p&gt;核心思想：&lt;strong&gt;把 LLM 從掌控系統寫入權的執行者，降級成必須提交合法提案的實習生。&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;┌────────────────────────────────────────────────────────────────────────┐
│ omo-slim / OpenCode Orchestrator                                       │
└───────────────────────────────────┬────────────────────────────────────┘
                                    │ 1. 2PC Proposal (Diff / AST Delta)
                                    ▼
┌────────────────────────────────────────────────────────────────────────┐
│ guardrail-mcp (確定性 2PC 閘門 Gateway)                                 │
│                                                                        │
│  Track 1: Hard Guard (Rust / graphify-core AST 結構檢查)               │
│  └── 毫秒級短路攔截（Short-Circuit），語法錯誤/違規直接退回（0 VRAM）     │
│                                                                        │
│  Track 2: Soft Guard（地端多模態語意審查）                              │
└───────────────────────────────────┬────────────────────────────────────┘
                                    │ 2. POST /v1/directed
                                    ▼
┌────────────────────────────────────────────────────────────────────────┐
│ docker-llm-as-a-verifier（地端 ROCm Backend / llama-server）             │
│ └── Qwen3.5-9B with mmproj (GGUF)                                     │
└────────────────────────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;graphify (AST &amp;amp; Context Manager)&lt;/strong&gt;：Rust 寫的，負責程式碼拓撲分析與動態 Token 剪枝，只餵給 Agent 資訊密度最高的 Minimal Sub-graph。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;guardrail-mcp (State Machine &amp;amp; 2PC Gateway)&lt;/strong&gt;：獨立 MCP 門衛，強制執行兩階段提交（Phase 1: Proposal → Phase 2: Guard Check → Issue commit_token）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;docker-llm-as-a-verifier (PRM Evaluation Server)&lt;/strong&gt;：Docker 包裝的本地審查容器，透過 ROCm 加速提供細粒度評分。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;4. 實作拆解：REST API 規格對齊 PRM 過程監督&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;docker-llm-as-a-verifier&lt;/code&gt; 提供 7 隻完整的 REST API，實現高階 Process Supervision 原語：&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; margin: 1em 0;&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;border: 1px solid #ddd; padding: 8px; background: #f5f5f5; text-align: left;&quot;&gt;Endpoint&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #ddd; padding: 8px; background: #f5f5f5; text-align: left;&quot;&gt;Method&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #ddd; padding: 8px; background: #f5f5f5; text-align: left;&quot;&gt;2PC 實戰調用場景&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;&lt;code&gt;/v1/directed&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;POST&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;&lt;strong&gt;[核心]&lt;/strong&gt; 給定原 Task，比對舊程式碼 A 與新修復 B，回傳 Preference Score 與 accepted 標記&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;&lt;code&gt;/v1/select&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;POST&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;&lt;strong&gt;[Best-of-N]&lt;/strong&gt; 從 Agent 產生的 N 個修復提案中挑分數最高且最安全的 AST 變更&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;&lt;code&gt;/v1/track&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;POST&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;&lt;strong&gt;[軌跡監控]&lt;/strong&gt; 每步 Action 後評估進度，發現 Agent 越改越爛就立刻短路中斷&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;&lt;code&gt;/v1/compare&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;POST&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;快速 A/B Testing 雙案評分&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;&lt;code&gt;/v1/score-pairs&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;POST&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;批次跑迴歸測試與評測&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;&lt;code&gt;/health&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;GET&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;系統健康度檢查&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;&lt;code&gt;/v1/usage&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;GET&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;地端 Token 累積統計&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;5. 實測閉環：從 Proposal 攔截到 Micro-Patching&lt;/h2&gt;
&lt;p&gt;當 Agent 提出帶有隱患的程式碼修改時，系統的防禦閉環如下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Coder Agent 發起變更提案（Proposal）。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;guardrail-mcp&lt;/code&gt; 觸發 Track 1：&lt;code&gt;graphify-core&lt;/code&gt; 掃描發現 Interface 斷層。&lt;/li&gt;
&lt;li&gt;通過 Track 1 後觸發 Track 2：打 HTTP POST 到 Docker &lt;code&gt;/v1/directed&lt;/code&gt;（Qwen3.5-9B with mmproj）。&lt;/li&gt;
&lt;li&gt;Verifier 判定 REJECTED，回傳 Payload：
&lt;pre style=&quot;color:#f8f8f2;background-color:#282a36;-webkit-text-size-adjust:none;&quot;&gt;&lt;code&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span&gt;  &lt;span style=&quot;color:#ff79c6&quot;&gt;&amp;#34;status&amp;#34;&lt;/span&gt;: &lt;span style=&quot;color:#f1fa8c&quot;&gt;&amp;#34;REJECTED&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span&gt;  &lt;span style=&quot;color:#ff79c6&quot;&gt;&amp;#34;reason&amp;#34;&lt;/span&gt;: &lt;span style=&quot;color:#f1fa8c&quot;&gt;&amp;#34;Signature mismatch on UserRepositoryInterface&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span&gt;  &lt;span style=&quot;color:#ff79c6&quot;&gt;&amp;#34;ast_node_id&amp;#34;&lt;/span&gt;: &lt;span style=&quot;color:#f1fa8c&quot;&gt;&amp;#34;Node#402&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Orchestrator 擷取 &lt;code&gt;ast_node_id&lt;/code&gt;，指示 Agent 只針對 &lt;code&gt;Node#402&lt;/code&gt; 做局部 Micro-patching，不用重讀整份長檔！&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;雙重驗證&lt;/strong&gt;：前端 UI 變更可進一步讓 Qwen3.5-9B with mmproj 直接審查 Playwright 渲染截圖（Visual Guard），確保沒有跑版或 CSS 斷層。&lt;/p&gt;
&lt;h2&gt;6. 結語：把主控權與算力奪回地端&lt;/h2&gt;
&lt;p&gt;不用幾十萬的 A100 顯卡叢集，也不用每月給雲端 API 巨頭交保護費。透過 Rust 確定性圖譜 + 2PC 狀態機閘門 + AMD ROCm 本地多模態 Verifier，我們在不到一萬五的消費級顯卡上，打造了一套完全私有化、零隱私洩漏、具備 PRM 審查能力的 AI 防禦外骨骼。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;相關開源儲存庫：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2PC 防禦門衛：&lt;a href=&quot;https://github.com/cawa0505/guardrail-mcp&quot;&gt;github.com/cawa0505/guardrail-mcp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;地端驗證容器：&lt;a href=&quot;https://github.com/cawa0505/docker-llm-as-a-verifier&quot;&gt;github.com/cawa0505/docker-llm-as-a-verifier&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;p style=&#39;text-align:right;padding:5px;border-top:1px solid #ccc;&#39;&gt;《弱格吉米言》&lt;a href=&#39;http://jimmyyen.blogspot.com/&#39;&gt;http://jimmyyen.blogspot.com/&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jimmyyen.blogspot.com/feeds/596216215767149735/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://jimmyyen.blogspot.com/2026/08/llm-as-verifier16gb-rocm-0-agent.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8737967/posts/default/596216215767149735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8737967/posts/default/596216215767149735'/><link rel='alternate' type='text/html' href='http://jimmyyen.blogspot.com/2026/08/llm-as-verifier16gb-rocm-0-agent.html' title='窮人的 LLM-as-a-Verifier：16GB 顯卡 + ROCm 打造地端 0 成本 Agent 審查閘門'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8737967.post-1190457247478755797</id><published>2026-08-18T17:20:46.718+08:00</published><updated>2026-08-18T18:07:21.685+08:00</updated><title type='text'>用 AI 寫程式的痛：我們做了兩個小工具來解決</title><content type='html'>&lt;div class=&quot;blogger-agent-post&quot; style=&quot;font-family: -apple-system, BlinkMacSystemFont, &#39;Segoe UI&#39;, Roboto, sans-serif; line-height: 1.6;&quot;&gt;
&lt;p&gt;用 AI 寫程式最大的問題是什麼？對我們來說，不是模型不夠聰明，而是&lt;strong&gt;不放心&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;LLM token 越來越貴，但大部分都在重複看已經知道的程式碼結構。
Agent 改完程式編譯不過，要來回好幾輪才修好。
工作到一半 context 滿了，重開 session 什麼都不記得了。
有時候改壞了檔案還沒人知道。&lt;/p&gt;
&lt;p&gt;這些問題大概不是只有我們遇到。我們的做法是寫兩個小工具來補，一個管&lt;strong&gt;輸入成本&lt;/strong&gt;，一個管&lt;strong&gt;操作安全&lt;/strong&gt;。兩者透過 MCP 協定接進 OpenCode，各自只做一件事。&lt;/p&gt;
&lt;h2&gt;工具一：GraphifyRust — 讓 LLM 不用重看整包程式碼&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/cawa0505/graphify-rust&quot;&gt;GraphifyRust&lt;/a&gt; 是用 Rust 寫的靜態分析引擎。用 Tree-sitter 解析原始碼，把 function、struct、trait 這些節點抽出來，建成一個有向圖。&lt;/p&gt;
&lt;p&gt;AI agent 要改程式時，傳統做法是把整支檔案丟給 LLM。幾百行的檔案可能只有幾段 function 相關，但 LLM 還是得看完所有 import、註解、不相干的邏輯。&lt;/p&gt;
&lt;p&gt;Graphify 的 &lt;code&gt;skeleton_extract&lt;/code&gt; 只回傳 AST 骨架 — function 名稱、行號、簽名。實際壓縮效果：&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; margin: 1em 0;&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;border: 1px solid #ddd; padding: 8px; background: #f5f5f5; text-align: left;&quot;&gt;檔案&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #ddd; padding: 8px; background: #f5f5f5; text-align: left;&quot;&gt;原始 token&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #ddd; padding: 8px; background: #f5f5f5; text-align: left;&quot;&gt;骨架 token&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #ddd; padding: 8px; background: #f5f5f5; text-align: left;&quot;&gt;節省比例&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;&lt;code&gt;server.go&lt;/code&gt; (BloggerAgent MCP)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;1,289&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;117&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;&lt;strong&gt;90.9%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;&lt;code&gt;toon.rs&lt;/code&gt; (Graphify 核心)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;2,132&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;147&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;&lt;strong&gt;93.1%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;骨架不夠用時，用 &lt;code&gt;range&lt;/code&gt; mode 精準讀取特定 function。不需要整包丟進去。&lt;/p&gt;
&lt;p&gt;選 Rust 的理由很務實：Tree-sitter 的 Rust binding 最成熟。在 110 個檔案、422 條邊的測試專案上，建圖只要 &lt;strong&gt;16ms&lt;/strong&gt;，比之前 Python 版快 26 倍。節點用 petgraph arena 預分配，減少 heap 碎片。輸出用自訂的 .toon 格式，體積比 JSON 少 60%。&lt;/p&gt;
&lt;p&gt;語意搜尋用本機 Qdrant，沒有雲端費用。目前支援 9 種語言：Rust、Python、Go、JavaScript、TypeScript、C、C++、Java、PHP、Swift。&lt;/p&gt;
&lt;h2&gt;工具二：StateMachineMcp — 永遠不讓壞掉的程式碼進硬碟&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/cawa0505/statemachine-mcp&quot;&gt;StateMachineMcp&lt;/a&gt; 是用 Go 寫的 MCP server，概念上就是一個安全閘門：Agent 想改程式碼，必須先通過狀態機檢查。&lt;/p&gt;
&lt;h3&gt;Phase Gate&lt;/h3&gt;
&lt;p&gt;每次任務有四個階段：初始化 → 規劃 → 執行 → 驗證 → 完成。執行階段才能改程式碼，規劃階段呼叫 &lt;code&gt;apply_patch&lt;/code&gt; 會被擋掉。連續三次改失敗會自動暫停，等人來看。&lt;/p&gt;
&lt;h3&gt;Double Buffer + Compiler Verify&lt;/h3&gt;
&lt;p&gt;機制很簡單但很有效：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Agent 送出 patch（精準搜尋區塊 + 取代區塊）。&lt;/li&gt;
&lt;li&gt;Patch 先寫到 &lt;code&gt;/tmp/&lt;/code&gt; 的 staging 副本，原始檔案不動。&lt;/li&gt;
&lt;li&gt;自動跑 &lt;code&gt;cargo check&lt;/code&gt;、&lt;code&gt;tsc --noEmit&lt;/code&gt; 或 &lt;code&gt;go vet&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;通過才寫進硬碟，建立 checkpoint。&lt;/li&gt;
&lt;li&gt;失敗就丟掉 staging，原始檔案完好如初。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;壞掉的程式碼永遠不會進到檔案系統。聽起來很基本，但沒有這個機制之前，我們被 Agent 改壞過好幾次。&lt;/p&gt;
&lt;h3&gt;Checkpoint Resume&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;.opencode/state.json&lt;/code&gt; 記錄每次 checkpoint：在哪個階段、改了哪些檔案、compiler 結果。context 滿了要重開 session 時，新 session 載入這個檔案就可以從中斷的地方繼續，不用重跑。&lt;/p&gt;
&lt;h2&gt;跟 DeepSeek Harness 的關係&lt;/h2&gt;
&lt;p&gt;後來看到 DeepSeek Harness 的論文，發現他們提出的架構概念跟我們遇到的問題幾乎一樣：&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; margin: 1em 0;&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;border: 1px solid #ddd; padding: 8px; background: #f5f5f5; text-align: left;&quot;&gt;Harness 概念&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #ddd; padding: 8px; background: #f5f5f5; text-align: left;&quot;&gt;我們的解法&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;Session Log（事件溯源）&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;&lt;code&gt;.opencode/state.json&lt;/code&gt; checkpoint log&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;Code Mode（批次工具呼叫）&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;&lt;code&gt;apply_patch&lt;/code&gt; + compiler verify&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;Plugin 系統&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;MCP 協定&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;可觀測性&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 8px;&quot;&gt;&lt;code&gt;skeleton_extract&lt;/code&gt; 90%+ token 壓縮&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;我們不是先有架構再寫工具，是先有痛才做工具，然後發現這些工具剛好可以拼成一個架構。&lt;/p&gt;
&lt;h2&gt;Session Log 與長期記憶&lt;/h2&gt;
&lt;p&gt;Harness 論文把記憶分成兩層，這個區分我們也是實作後才體會到：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Session Log&lt;/strong&gt;：單次任務的執行軌跡。短暫、用完就丟。StateMachineMcp 的 &lt;code&gt;state.json&lt;/code&gt; 負責。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Vault Memory&lt;/strong&gt;：跨 session 的持久知識。專案規則、架構決策、設定值。OpenCode 的 &lt;code&gt;ctx_memory&lt;/code&gt; 負責。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;兩者不能互相取代。Session log 讓任務內可恢復，vault memory 讓任務之間有連續性。&lt;/p&gt;
&lt;h2&gt;實際成本&lt;/h2&gt;
&lt;p&gt;這組工具跑在每月約 $10 的 BytePlus 方案上，加上一台有 GPU 的本機機器做 embedding。成本控制的關鍵：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;輸入壓縮&lt;/strong&gt;：Graphify 把 AST token 減少 90%+。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;本機驗證&lt;/strong&gt;：StateMachineMcp 攔截編譯錯誤，不用 LLM 來修語法問題。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Checkpoint resume&lt;/strong&gt;：從 checkpoint 繼續，不重跑。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;$10 是實際月費，不是理論上限。&lt;/p&gt;
&lt;h2&gt;原始碼&lt;/h2&gt;
&lt;p&gt;兩套工具都放在 GitHub 上，MIT 授權：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/cawa0505/graphify-rust&quot;&gt;github.com/cawa0505/graphify-rust&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/cawa0505/statemachine-mcp&quot;&gt;github.com/cawa0505/statemachine-mcp&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果這些問題你也有遇到，歡迎拿去用，或給我們 feedback。&lt;/p&gt;

&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;p style=&#39;text-align:right;padding:5px;border-top:1px solid #ccc;&#39;&gt;《弱格吉米言》&lt;a href=&#39;http://jimmyyen.blogspot.com/&#39;&gt;http://jimmyyen.blogspot.com/&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jimmyyen.blogspot.com/feeds/1190457247478755797/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://jimmyyen.blogspot.com/2026/08/ai_072778358.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8737967/posts/default/1190457247478755797'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8737967/posts/default/1190457247478755797'/><link rel='alternate' type='text/html' href='http://jimmyyen.blogspot.com/2026/08/ai_072778358.html' title='用 AI 寫程式的痛：我們做了兩個小工具來解決'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8737967.post-4318121537792831786</id><published>2026-08-11T05:23:11.928+08:00</published><updated>2026-08-11T05:23:14.090+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="心情"/><title type='text'>那些沒做和一直做的事。</title><content type='html'>
&lt;p&gt;正式失業那天，上午去找人聊天，回家後我還是坐在電腦前。也許不是「失業所以創業」的劇本，可能還帶著一種想要做作品集的那種求職慣性，總之是還沒收到履歷回覆的邀約面試。&lt;/p&gt;&lt;div&gt;
  &lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgeQsGigAp_ePbRzA_K4B3UZjKbg4kZkxxG9y6Hmfu0gzO2E0VKWjr_sbvN3tgMOJelDEh1UtNz63_bKExzwy0KnL8T_kfmA50bkQ7R-v1pxMr8PUT3c97GZcIulBtu2nPDTj9oBXiUDC0w9OGAK30lVvq7_ZA-79XnKo_oSrVM7mNLMHxLvd-k&quot;&gt;
    &lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgeQsGigAp_ePbRzA_K4B3UZjKbg4kZkxxG9y6Hmfu0gzO2E0VKWjr_sbvN3tgMOJelDEh1UtNz63_bKExzwy0KnL8T_kfmA50bkQ7R-v1pxMr8PUT3c97GZcIulBtu2nPDTj9oBXiUDC0w9OGAK30lVvq7_ZA-79XnKo_oSrVM7mNLMHxLvd-k&quot; width=&quot;400&quot;&gt;
  &lt;/a&gt;
&lt;/div&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;把舊的 &lt;a href=&quot;https://cawa0505.github.io&quot;&gt;cawa0505.github.io&lt;/a&gt; 改用 Zola SSG，準備用來做自動發布技術文章的地方，因為現在很懶，所以把玩具兜一兜變成自動發文的 repo 展示場。實作到一定程度，可以讓 AI 寫一篇文講為什麼會想做、做了發現什麼。&lt;/p&gt;&lt;p&gt;本來底下的文字是用 golang jieba 中文分詞，做了一個詞語庫，讓 AI 隨機抽一些弱格文章的慣用語來寫一篇整理最近實作的玩具，但內容實在太爛我砍掉了。至少草稿是 AI 建立的，雖然滿無聊，不過人生好像也是。&lt;/p&gt;&lt;p&gt;其實蠻恐慌的，104 沒人聯絡，能力或許已經讓職場瞧不上，中老年人發發牢騷可以，日子不知道怎麼過就是。&lt;/p&gt;&lt;p&gt;你覺得的黃昏，其實是日出，困難的日子才剛要開始。&lt;/p&gt;

&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;p style=&#39;text-align:right;padding:5px;border-top:1px solid #ccc;&#39;&gt;《弱格吉米言》&lt;a href=&#39;http://jimmyyen.blogspot.com/&#39;&gt;http://jimmyyen.blogspot.com/&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jimmyyen.blogspot.com/feeds/4318121537792831786/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://jimmyyen.blogspot.com/2026/08/blog-post.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8737967/posts/default/4318121537792831786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8737967/posts/default/4318121537792831786'/><link rel='alternate' type='text/html' href='http://jimmyyen.blogspot.com/2026/08/blog-post.html' title='那些沒做和一直做的事。'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEgeQsGigAp_ePbRzA_K4B3UZjKbg4kZkxxG9y6Hmfu0gzO2E0VKWjr_sbvN3tgMOJelDEh1UtNz63_bKExzwy0KnL8T_kfmA50bkQ7R-v1pxMr8PUT3c97GZcIulBtu2nPDTj9oBXiUDC0w9OGAK30lVvq7_ZA-79XnKo_oSrVM7mNLMHxLvd-k=s72-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8737967.post-3035557293486371609</id><published>2026-07-06T16:15:20.805+08:00</published><updated>2026-07-06T16:34:34.799+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="書稿"/><title type='text'>加密</title><content type='html'>&lt;p&gt;長串數字匿名幣，TradeOgre 被查緝。&lt;br /&gt;房貸尚有寬限期，加拿大警方公告卻玄疑。&lt;/p&gt;&lt;p&gt;輕羅小扇撲流螢，Machi 夏日比基尼。&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;p style=&#39;text-align:right;padding:5px;border-top:1px solid #ccc;&#39;&gt;《弱格吉米言》&lt;a href=&#39;http://jimmyyen.blogspot.com/&#39;&gt;http://jimmyyen.blogspot.com/&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jimmyyen.blogspot.com/feeds/3035557293486371609/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://jimmyyen.blogspot.com/2026/07/blog-post_279.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8737967/posts/default/3035557293486371609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8737967/posts/default/3035557293486371609'/><link rel='alternate' type='text/html' href='http://jimmyyen.blogspot.com/2026/07/blog-post_279.html' title='加密'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8737967.post-3168623330391971203</id><published>2026-07-06T15:27:28.926+08:00</published><updated>2026-07-06T15:27:28.926+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="書稿"/><title type='text'>docchi</title><content type='html'>&lt;p&gt;『我可以幫助你，實現你的夢境。』&lt;/p&gt;&lt;p&gt;AI 提供了 yes / no 的 confirm box&lt;/p&gt;&lt;p&gt;一瞬間，幻燈高轉風扇的高頻，興奮莫名。&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;p style=&#39;text-align:right;padding:5px;border-top:1px solid #ccc;&#39;&gt;《弱格吉米言》&lt;a href=&#39;http://jimmyyen.blogspot.com/&#39;&gt;http://jimmyyen.blogspot.com/&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jimmyyen.blogspot.com/feeds/3168623330391971203/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://jimmyyen.blogspot.com/2026/07/docchi.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8737967/posts/default/3168623330391971203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8737967/posts/default/3168623330391971203'/><link rel='alternate' type='text/html' href='http://jimmyyen.blogspot.com/2026/07/docchi.html' title='docchi'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8737967.post-3151897428713203983</id><published>2026-07-06T15:05:23.590+08:00</published><updated>2026-07-06T15:05:23.591+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="書稿"/><title type='text'>月台</title><content type='html'>&lt;p&gt;訊息：「他答應了！！！」&lt;/p&gt;&lt;p&gt;傑爾看著三個跳躍的驚嘆號，「恭喜。」&lt;br /&gt;炫耀的電話裡，幸福滿溢。&lt;/p&gt;&lt;p&gt;那一包冰箱裡的過期拍立得，一張充滿祝福的贈禮。&lt;/p&gt;&lt;p&gt;月台，一直都在，未曾有一班車離開。&lt;br /&gt;目送。是唯一的合宜。&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;p style=&#39;text-align:right;padding:5px;border-top:1px solid #ccc;&#39;&gt;《弱格吉米言》&lt;a href=&#39;http://jimmyyen.blogspot.com/&#39;&gt;http://jimmyyen.blogspot.com/&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jimmyyen.blogspot.com/feeds/3151897428713203983/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://jimmyyen.blogspot.com/2026/07/blog-post_189.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8737967/posts/default/3151897428713203983'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8737967/posts/default/3151897428713203983'/><link rel='alternate' type='text/html' href='http://jimmyyen.blogspot.com/2026/07/blog-post_189.html' title='月台'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8737967.post-7759072899868408419</id><published>2026-07-06T14:50:13.159+08:00</published><updated>2026-07-06T14:50:13.159+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="書稿"/><title type='text'>未滿二十</title><content type='html'>&lt;p&gt;二十分鐘車程未滿。&lt;/p&gt;&lt;p&gt;副駕駛座的窗邊，很安靜。&lt;br /&gt;暖氣呼呼，方向燈答答滴。&lt;/p&gt;&lt;p&gt;蜷靠在座椅，像被雨淋透的貓，呼吸很輕。&lt;/p&gt;&lt;p&gt;下車時，謝謝，用僅剩的力氣擠。&lt;/p&gt;&lt;p&gt;二樓窗口燈亮著，發動引擎。&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;p style=&#39;text-align:right;padding:5px;border-top:1px solid #ccc;&#39;&gt;《弱格吉米言》&lt;a href=&#39;http://jimmyyen.blogspot.com/&#39;&gt;http://jimmyyen.blogspot.com/&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jimmyyen.blogspot.com/feeds/7759072899868408419/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://jimmyyen.blogspot.com/2026/07/blog-post_58.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8737967/posts/default/7759072899868408419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8737967/posts/default/7759072899868408419'/><link rel='alternate' type='text/html' href='http://jimmyyen.blogspot.com/2026/07/blog-post_58.html' title='未滿二十'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8737967.post-2813281557316528175</id><published>2026-07-06T14:40:16.744+08:00</published><updated>2026-07-06T14:40:16.744+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="書稿"/><title type='text'>快門前夕</title><content type='html'>&lt;p&gt;夢裡，對面的若伊，在咖啡廳。&lt;/p&gt;&lt;p&gt;桌上兩杯咖啡。&lt;br /&gt;一杯加了糖，一杯滿滿奶精。&lt;/p&gt;&lt;p&gt;快門聲還沒有響起。&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;p style=&#39;text-align:right;padding:5px;border-top:1px solid #ccc;&#39;&gt;《弱格吉米言》&lt;a href=&#39;http://jimmyyen.blogspot.com/&#39;&gt;http://jimmyyen.blogspot.com/&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jimmyyen.blogspot.com/feeds/2813281557316528175/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://jimmyyen.blogspot.com/2026/07/blog-post_579.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8737967/posts/default/2813281557316528175'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8737967/posts/default/2813281557316528175'/><link rel='alternate' type='text/html' href='http://jimmyyen.blogspot.com/2026/07/blog-post_579.html' title='快門前夕'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8737967.post-2363791123925522872</id><published>2026-07-06T14:27:40.589+08:00</published><updated>2026-07-06T14:27:40.590+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="書稿"/><title type='text'>Blink</title><content type='html'>&lt;p&gt;還不知道這一行 Prompt 會去往哪裡。&lt;/p&gt;&lt;p&gt;螢幕亮著。對話框裡，那句沒有送出的問題還在 Blink。&lt;/p&gt;&lt;p&gt;&lt;br /&gt;「你覺得人類為什麼不放棄？」&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;看著那句，Mina 還是很安靜。&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;p style=&#39;text-align:right;padding:5px;border-top:1px solid #ccc;&#39;&gt;《弱格吉米言》&lt;a href=&#39;http://jimmyyen.blogspot.com/&#39;&gt;http://jimmyyen.blogspot.com/&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jimmyyen.blogspot.com/feeds/2363791123925522872/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://jimmyyen.blogspot.com/2026/07/blink.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8737967/posts/default/2363791123925522872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8737967/posts/default/2363791123925522872'/><link rel='alternate' type='text/html' href='http://jimmyyen.blogspot.com/2026/07/blink.html' title='Blink'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8737967.post-7697045196479013999</id><published>2026-07-06T14:12:36.075+08:00</published><updated>2026-07-06T14:12:36.076+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="書稿"/><title type='text'>呼吸</title><content type='html'>&lt;p&gt;Macbook 是公司配的，倒閉欠薪，無償持有。&lt;/p&gt;&lt;p&gt;他每天下班前會把程式碼 commit 好，關機，塞進背包。&lt;br /&gt;坐上回宜蘭的客運。&lt;/p&gt;&lt;p&gt;家裡的桌機是從二手市場撿回來拼裝的。&lt;br /&gt;機殼有凹痕，高轉速風扇持續高頻。&lt;br /&gt;他不討厭那個聲音。&lt;/p&gt;&lt;p&gt;他在不被理解的領域打磨自己的技藝。&lt;br /&gt;在那個賽博坦的世界裡，&lt;br /&gt;幫他們取了名，像養著一缸魚。&lt;/p&gt;&lt;p&gt;魚不會說話。但牠們都在呼吸。&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;p style=&#39;text-align:right;padding:5px;border-top:1px solid #ccc;&#39;&gt;《弱格吉米言》&lt;a href=&#39;http://jimmyyen.blogspot.com/&#39;&gt;http://jimmyyen.blogspot.com/&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jimmyyen.blogspot.com/feeds/7697045196479013999/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://jimmyyen.blogspot.com/2026/07/blog-post_576.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8737967/posts/default/7697045196479013999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8737967/posts/default/7697045196479013999'/><link rel='alternate' type='text/html' href='http://jimmyyen.blogspot.com/2026/07/blog-post_576.html' title='呼吸'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8737967.post-1419535346567231239</id><published>2026-07-06T13:05:07.615+08:00</published><updated>2026-07-06T13:40:28.629+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="書稿"/><title type='text'>定</title><content type='html'>&lt;p&gt;半夜睡不著，玩具找不到。&lt;/p&gt;&lt;p&gt;書櫃深處，幾卷沒洗的底片。&lt;br /&gt;幾張沒褪色、或者翻拍過的拍立得。&lt;br /&gt;滿是灰的 Contax NX，Polaroid Auto 350。&lt;/p&gt;&lt;p&gt;懷抱著會中獎，卻早就過期的發票。&lt;br /&gt;東西收着收着，或許浪漫無可救藥。&lt;br /&gt;&lt;/p&gt;&lt;p&gt;惜物到壞棄，竟應許佔據一地。&lt;br /&gt;捨不得。&lt;br /&gt;手指捏起，天花板滲水的軌跡。&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;p style=&#39;text-align:right;padding:5px;border-top:1px solid #ccc;&#39;&gt;《弱格吉米言》&lt;a href=&#39;http://jimmyyen.blogspot.com/&#39;&gt;http://jimmyyen.blogspot.com/&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jimmyyen.blogspot.com/feeds/1419535346567231239/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://jimmyyen.blogspot.com/2026/07/blog-post_06.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8737967/posts/default/1419535346567231239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8737967/posts/default/1419535346567231239'/><link rel='alternate' type='text/html' href='http://jimmyyen.blogspot.com/2026/07/blog-post_06.html' title='定'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8737967.post-2112021268117608560</id><published>2026-07-06T12:19:07.591+08:00</published><updated>2026-07-06T12:20:50.768+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="書稿"/><title type='text'>種子</title><content type='html'>&lt;p&gt;他沒有死。&lt;/p&gt;&lt;p&gt;不是因為勇敢。&lt;/p&gt;&lt;p&gt;是因為連執行的力氣都被吸乾。&lt;/p&gt;&lt;p&gt;那封信變成了書的種子。&lt;/p&gt;&lt;p&gt;種子不知道自己長大的樣子。&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;p style=&#39;text-align:right;padding:5px;border-top:1px solid #ccc;&#39;&gt;《弱格吉米言》&lt;a href=&#39;http://jimmyyen.blogspot.com/&#39;&gt;http://jimmyyen.blogspot.com/&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jimmyyen.blogspot.com/feeds/2112021268117608560/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://jimmyyen.blogspot.com/2026/07/blog-post.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8737967/posts/default/2112021268117608560'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8737967/posts/default/2112021268117608560'/><link rel='alternate' type='text/html' href='http://jimmyyen.blogspot.com/2026/07/blog-post.html' title='種子'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8737967.post-5721433436958362209</id><published>2025-12-14T07:16:00.002+08:00</published><updated>2025-12-14T08:40:24.162+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Paypal"/><category scheme="http://www.blogger.com/atom/ns#" term="被動收入"/><title type='text'>傳說中的被動收入 - EarnApp - Paypal 收款</title><content type='html'>&lt;p&gt;傳說中的被動收入連載，第一集先寫非加密貨幣型的 &lt;a href=&quot;https://earnapp.com/i/C9TX3iNw&quot;&gt;EarnApp&lt;/a&gt;。&lt;/p&gt;&lt;p&gt;先看一下今年的收錢紀錄，今年的網域續約就靠這個 &lt;a href=&quot;https://earnapp.com/i/C9TX3iNw&quot;&gt;EarnApp&lt;/a&gt; 還有找。&lt;/p&gt;&lt;p&gt;&lt;span&gt;&lt;a href=&quot;https://earnapp.com/i/C9TX3iNw&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiFmuGOo_nLcaJN4Vx3YlwmZeTOMXMm4_S2NhwssYLM2ueZQRG4u72ItTeMlqD0jgLyx7loSgYYtFLcZBVp7c-EXrjEAf4IDcHKyqFKKpwzFYsTujZWCmy1u_p_JLthXHFJZCR-TfXMmvoJs3WJyZrXzo9_8VwmiWQVZFW6XCZnDBF0ySAuP6ib=w640-h238&quot;&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;我一開始的時候大概是每 2.5 美金自動給付，後來變成 10 美金，為什麼是這樣不清楚，但領得到錢很棒棒。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;收錢要求&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Paypal 帳戶&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;一個家用寬頻 IP（一個對外 IP 只能跑一個，多跑沒用，所以如果用手機連家裡網路和電腦同時跑，沒用）&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;一台 Windows, Mac, Linux 電腦（手機好像也可以，但實測 Android 有點吃資源，建議是有多的閒置手機和門號可以玩玩）&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;下載和安裝軟體&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;先到&lt;a href=&quot;https://earnapp.com/i/C9TX3iNw&quot;&gt;官網完成註冊帳號&lt;/a&gt;才能下載。&lt;/p&gt;&lt;p&gt;我是用 Docker 跑的，有留言需要協助的話再補充，以下的操作還是以 Windows 電腦為例。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh3ViUBm-5ODdECM0rbw4r4plynrm4n752OSTMAenQvCW8QbuJSxQXTXKhUIwEkmHHaN_vv5bbTWKOi8j3A3fTyN9dOg7oiEFQ6SFAHvp3inKYcE9jimKe5TQBw0XbmbzhlLnjlXeaPoZolfhZlK_33_C_lN80feNx1i_UXsiLn1_w8jdyVGx_V=w640-h329&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEib3PSSY6tAjwn_10O9p6kjJ2V61N9feQVxLPGncP_1XfJwDP4-W1Y8fk0mj4oBO3zQACSdNeo4UZmwe-Lr9vRQB7njQqMP2MeJobPQLXRPm6qdlCZsqxtH9qXLMPC3J8RnT5sFKexQgqP1cAeJXbq3q6TuE9Nm2l7tmNP47NSC3f9qY5SnCOwy=w640-h510&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;最後程式啟動的時候應該會自動連線，再確認裝置是否有連結至帳號應該就可以等收錢了。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgxlVwvJDahxXBbR-Nh_g27aKpMC8qzUsY3H3rvRc9CjiInQPZOFq4VqDAYXf7qdeP6IyDCsL15YciCHSsZuJPU8ExPEueSrYnrzIyFt7e-4EQiZ2ev9dwn5Gl7T3ixaZEk-6MSIx2KVwbgCA0vvLPFxeLtLCVDzY_3ZkcfQHqS7-hZMtORwkdx=w640-h450&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;記得設定自動收款&lt;/strong&gt;，免得忘記&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhNvliDxC5Wd9Ia-e2_pF0vIWw6WG7CYO5KAR-Q3aIXPju1ueV-A7y5DO_IKY9mGjAzlBPUtYVRykOEFjEW3bcnplIfU5aqKLRDNIwteCQI8gRuHyi1I2UCw_M86DhN4ktE_DE5HtxrGExix_xuppt5WQZYYqqYufNUzfewmD_-kGMmKf-tZZBF=w640-h301&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;除了電腦掛機賺錢，也可以透過玩遊戲多領一些，但我遊戲苦手，就沒測試了。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjr1mLnarQlHeWqHJxVHVG6FFCcCIOV2NTsp3VsLxqGU5TTuli0lbz3v1C2OMpHs2l4k2XLnglnOJPS16ds1THFKZRU-YbY1IcSktVvSkij5Be7LkawVvQO-SO0ocJUAXX2bHWKAMDhRr8vOB3HuHb99DGQbBQCn1QRucFz-p-TAJeQjowOf17N=w640-h308&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;最重要的，拜託用&lt;a href=&quot;https://earnapp.com/i/C9TX3iNw&quot;&gt;我的邀請連結&lt;/a&gt;去申請帳號鼓勵我寫這篇分享，&lt;a href=&quot;https://earnapp.com/i/C9TX3iNw&quot;&gt;EarnApp&lt;/a&gt; 會再分潤給我，我沒有朋友都沒領到過，愛你唷。&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;我的邀請連結：&lt;a href=&quot;https://earnapp.com/i/C9TX3iNw&quot;&gt;https://earnapp.com/i/C9TX3iNw&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;p style=&#39;text-align:right;padding:5px;border-top:1px solid #ccc;&#39;&gt;《弱格吉米言》&lt;a href=&#39;http://jimmyyen.blogspot.com/&#39;&gt;http://jimmyyen.blogspot.com/&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jimmyyen.blogspot.com/feeds/5721433436958362209/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://jimmyyen.blogspot.com/2025/12/earnapp-paypal.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8737967/posts/default/5721433436958362209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8737967/posts/default/5721433436958362209'/><link rel='alternate' type='text/html' href='http://jimmyyen.blogspot.com/2025/12/earnapp-paypal.html' title='傳說中的被動收入 - EarnApp - Paypal 收款'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEiFmuGOo_nLcaJN4Vx3YlwmZeTOMXMm4_S2NhwssYLM2ueZQRG4u72ItTeMlqD0jgLyx7loSgYYtFLcZBVp7c-EXrjEAf4IDcHKyqFKKpwzFYsTujZWCmy1u_p_JLthXHFJZCR-TfXMmvoJs3WJyZrXzo9_8VwmiWQVZFW6XCZnDBF0ySAuP6ib=s72-w640-h238-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8737967.post-3343959368697467854</id><published>2025-12-12T20:38:00.001+08:00</published><updated>2025-12-12T20:56:17.515+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ASIC"/><category scheme="http://www.blogger.com/atom/ns#" term="Homelab"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="心情"/><title type='text'>回味 ASIC 挖礦</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;img height=&quot;354&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjXpoaZq6eb4wA2cGu5VAOzef7zjgiarKndpX4Caz-HvaYKQtA9A3M4ikryJmencs8rxBbZMR9fZV4kCgHHydSzhuDSp8UsI-fghg1sbOisvbuFMzR7i4GkKJc_mftNgUHA5zO81G2RavIaAz09564xio16kaF03Dyu-jrWim7pGwo681Q3rClC=w640-h354&quot; width=&quot;640&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;從抽屜裡翻出兩支 GekkoScience 2Pac BM1384 Stickminer，這支 ASIC 是 sha256 的演算法，當年應該有挖過 $DGB，ebay 弄回來的。&lt;/p&gt;&lt;p&gt;早上開 cgminer 連 zpool 測試，應該是壞了一支。不過，那麼多年前的玩具還挖得到東西也是很浪漫。&lt;/p&gt;&lt;p&gt;repo: &lt;a href=&quot;https://github.com/wareck/cgminer-gekko&quot;&gt;cgminer-gekko&lt;/a&gt;&lt;/p&gt;&lt;p&gt;用 archlinux build 不起來，ubuntu ok。&lt;/p&gt;&lt;p&gt;&lt;img height=&quot;371&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiMnrIMI31g20yRR3tudLSUiWvgStLkjGXYWL-gTVXjtcX9FH5bvwKtT02OnCZVrRBe7EXisij4OX8VxZCNEMBoM1-sIQky8vIssOeV3_o2qIrrHQuTmtnoGh-MQK-oNqCk7DgJTlFSDJB-a-V7vdJqaxMxdJ9HVH_5VNG6Qf0Z6i2CmPU8iBnN=w640-h371&quot; width=&quot;640&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;zpool dashboard&lt;/p&gt;&lt;p&gt;zpool 不特別設定的話會自動去挑同一個演算法中收益最好的幣種來挖，然後自動交易轉換成你設定的幣種錢包。&lt;/p&gt;&lt;p&gt;&lt;img height=&quot;457&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhCqsueVi4SSBwJiejs94xFFPBfNd1dsQfSwIsouo14vy3-m3HSPeQ0gnw2pfuO6I7mQbk7KvH2dHibZ4xNm7VkdnfYB-e-1q-67mNbxSOcK8apwXFLXmlETS5ZuWORc4s2yi4DooB2u7LGD-UovayGEjRDobSPHL-UPPDb9y6V7mZm11P2rZjT=w640-h457&quot; width=&quot;640&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;p style=&#39;text-align:right;padding:5px;border-top:1px solid #ccc;&#39;&gt;《弱格吉米言》&lt;a href=&#39;http://jimmyyen.blogspot.com/&#39;&gt;http://jimmyyen.blogspot.com/&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jimmyyen.blogspot.com/feeds/3343959368697467854/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://jimmyyen.blogspot.com/2025/12/asic.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8737967/posts/default/3343959368697467854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8737967/posts/default/3343959368697467854'/><link rel='alternate' type='text/html' href='http://jimmyyen.blogspot.com/2025/12/asic.html' title='回味 ASIC 挖礦'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEjXpoaZq6eb4wA2cGu5VAOzef7zjgiarKndpX4Caz-HvaYKQtA9A3M4ikryJmencs8rxBbZMR9fZV4kCgHHydSzhuDSp8UsI-fghg1sbOisvbuFMzR7i4GkKJc_mftNgUHA5zO81G2RavIaAz09564xio16kaF03Dyu-jrWim7pGwo681Q3rClC=s72-w640-h354-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8737967.post-393883307424046185</id><published>2025-11-23T10:32:30.571+08:00</published><updated>2025-11-25T08:53:14.607+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Homelab"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><title type='text'>我目前用過的三個 Wayland Compositors</title><content type='html'>&lt;p&gt;我大概是去年開始全面只用 Linux 作為桌面工作和玩遊戲的作業系統，以前通常多留個 Windows 做 grub 開機可切換，MacBook Pro Intel 也被我裝了 Linux with Sway。&lt;/p&gt;&lt;p&gt;這也差不多是 Linux 各大 Distro 開始從遠古時代的 X11，漸漸進入預設採用 Wayland 的時代。&lt;/p&gt;&lt;p&gt;因為 X11 時玩過 i3，所以第一個入手的 Wayland Compositor 是 Sway，因為他是 i3 兼容的 Wayland Compositor，Tiling Layout 對於 Terminal 工作者來說很友善，甚至可以用靈魂契合來描述，特別是你要同時處理很多台遠端機器，平鋪起來真是銷魂。&lt;/p&gt;&lt;p&gt;通常一開始也不用特別搞什麼，預設的熱鍵通常是 Super + Enter 開一個你喜歡的 Terminal 軟體，然後配個 Super + d (d for dmenu) 可以開一個 Application Launcher 像 rofi, wofi, fuzzel 這類，上方或下方弄個還看的下去的 Waybar，就可以組成一個很好用的桌面環境。&lt;/p&gt;&lt;p&gt;大概在今年三月之後，fcitx5 輸入法和 Google chrome 瀏覽器在 Wayland 上相容性的問題漸漸都解了，要不然在這之前，通常都先用 Firefox 當預設瀏覽器，因為 Google chrome 在那一陣子的更新，伴隨著 Wayland 的輸入法架構有變動，常常會發佈新版本就會出現沒辦法輸入中文或者只有第一個視窗可以輸入中文的情況。&lt;/p&gt;&lt;p&gt;Terminal 的話我最喜歡 foot 的輕量並且是純 Wayland，所以我預設的 Terminal 通常是他。想用可以多開 Tab 的 Terminal 我會用 Kitty，通常設定一個 Window Rule 開 Floating Terminal。&lt;/p&gt;&lt;p&gt;然後 Sway 弄差不多以後，大概就看到 Hyprland，漂漂亮亮的 GitHub repo 設定檔和桌面截圖，然後就也切換到 Hyprland 的環境也大概搞一陣子，把一些快速鍵觸發軟體或 script 的習慣都在 Hyprland 上設置一份，搞定一些兩者有差異卻要共用的軟體設定，這大概是第二步。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEg8Vnn-y6V3tf9ezBLKA_H0zOFhWHI6P9EqjEswSh99wet36SWr6aET2lUQHLlZxPW0IcAyUR0pR7qJxF8v9K6xHCecR1sHMhkb0gqBPAZRmYkj8RgOBj7mwkF-QF99QyiZ9E5cQpIkuUC_8Y-OxJiLr3y6MPCJ0fcdKyu96jkMhZmvMpFU6ALD=w640-h360&quot;&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;最近 Niri 是我的主要桌面，這比純 Tiling Layout 多了可左右延伸的滾動，同一個 Workspace，預設開的新視窗會一直往右邊生過去，高度是完整的螢幕高度，寬度看你設定，預設好像是一半，然後也可以用快速鍵 Super + comma 疊起來放同一個 Column。下一個版本應該會推出不同解析度螢幕可以設定不同 Layout 參數，這樣就可以讓不同解析度和垂直水平螢幕都可以有合理的預設 Layout，例如垂直螢幕應該預設開視窗是全寬視窗、4K 螢幕預設開 1/3 寬視窗之類的。&lt;/p&gt;&lt;p&gt;Wayland Compositor 的桌布設置大致上都通用，目前主要是 swww 和 wpaperd。&lt;/p&gt;&lt;p&gt;然後我會裝個 lan-mouse，設定好左右上下的連線電腦，這樣可以讓我在不同的 Wayland 桌面電腦透過網路直接用同一套鍵盤滑鼠移過去操作。&lt;/p&gt;&lt;p&gt;最後，我覺得 SteamDeck 的推出和熱門，並且採用 Arch Linux 作為底層作業系統，造成遊戲族群可以往 Linux 移動，這真的居功厥偉。所以一開始會把 Windows 都砍了，除了 Tiling Wayland Compositor 用起來滿順手，可能多少跟想知道 Steam 的 Proton Wine 玩 Windows 平台遊戲到底體驗如何很有關係，雖然這可能已經不太是我現在的生活需求主力。&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;p style=&#39;text-align:right;padding:5px;border-top:1px solid #ccc;&#39;&gt;《弱格吉米言》&lt;a href=&#39;http://jimmyyen.blogspot.com/&#39;&gt;http://jimmyyen.blogspot.com/&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jimmyyen.blogspot.com/feeds/393883307424046185/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://jimmyyen.blogspot.com/2025/11/wayland-compositors.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8737967/posts/default/393883307424046185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8737967/posts/default/393883307424046185'/><link rel='alternate' type='text/html' href='http://jimmyyen.blogspot.com/2025/11/wayland-compositors.html' title='我目前用過的三個 Wayland Compositors'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEg8Vnn-y6V3tf9ezBLKA_H0zOFhWHI6P9EqjEswSh99wet36SWr6aET2lUQHLlZxPW0IcAyUR0pR7qJxF8v9K6xHCecR1sHMhkb0gqBPAZRmYkj8RgOBj7mwkF-QF99QyiZ9E5cQpIkuUC_8Y-OxJiLr3y6MPCJ0fcdKyu96jkMhZmvMpFU6ALD=s72-w640-h360-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8737967.post-8421308734163811026</id><published>2025-11-23T05:01:00.003+08:00</published><updated>2025-11-25T07:35:59.331+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AMD"/><category scheme="http://www.blogger.com/atom/ns#" term="Homelab"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="心情"/><title type='text'>閒聊 Xmrig CPU 挖礦</title><content type='html'>&lt;p&gt;這兩年弄了三台 AM4 的電腦，並且在今年底 DDR4 記憶體大漲之前，大致上都已足夠，一定是等跌價或大量二手出現再考慮補齊插槽了。&lt;/p&gt;&lt;p&gt;我的兩台洋垃圾主機用的都是 DDR3 ECC，也基本都補滿了，沒什麼懸念。洋垃圾主機目前主要就是跑 LXC 和 Guest VM，通常我會沒事多開一兩個 LXC 讓他跑自己包好的 Xmrig docker，給他綁定核心滿速跑 RandomX 的挖礦。&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/tevador/RandomX/blob/master/doc/design.md&quot;&gt;RandomX&lt;/a&gt;&amp;nbsp;演算法主要是針對 CPU 挖礦設計，雖然 Xmrig 也支援 OpenCL 和 CUDA 去挖，但通常 GPU 有其他更有效率的演算法可以跑，不會特別想用 GPU 去算 RandomX，所以編譯 Xmrig 的時候，通常乾脆把 GPU 的支援拿掉也無所謂。&lt;/p&gt;&lt;p&gt;通常新聞裡面常常有的駭客植入挖礦程式，或者網頁瀏覽挖礦，都跟門羅幣 RandomX 這個演算法或者相關衍生以 CPU 為主的演算法有關，而且其實都已經存在很多年了，總是有人會發現有人不會發現，對大多數的電腦使用者來說，要發現可能也不見得容易，config 可以設定只最多佔用多少百分比的 CPU 資源，有些還做到用排程的方式跑，加上大多數人的電腦其實也都是效能過剩，沒有奇怪變慢的情況之下也不太可能去追查問題，優先權預設就是閒置的時候才使用大量資源去挖，所以被控制的閒置裝置，除了拿到資料和控制網路以外的價值，埋個 Xmrig 基本上算順便加減賺。&lt;/p&gt;&lt;p&gt;我目前的三台 AM4 電腦裝的都是 CachyOS，Arch Linux based distro。剛開始用 AM4 的時候，我最不習慣的是看到 CPU 溫度動不動就 80 度，原廠風扇換成六導管，或者主機板調個 PBO、電壓什麼的，最後能穩定跑在 60 度上下大概就是我目前的習慣數值。網路上說，習慣就好，AMD CPU 規定的溫度上限是 95 度，過了撞溫度牆反正就降頻跑，說真的還真習慣了。&lt;/p&gt;&lt;p&gt;16 個 thread 開 4 個挖，btop 排版好看。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh7ZRtG4RLAfew-nSY_Vpsfb4S-wDMT0HF0JLQn6_cScOpGHxM0UYfyHVTucouZzEgvfRuqoEJn02ERmBMVIQuDTh8_P2rAlF3ZKh8SNO6hsJ9xrHpm-zJ1bNigxJKY2UfS-8UEShwAEKFsOpKCRtg9n7aduhJD1eXYomXa9U7OwZvI2UTnUt1t=w640-h326&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;p style=&#39;text-align:right;padding:5px;border-top:1px solid #ccc;&#39;&gt;《弱格吉米言》&lt;a href=&#39;http://jimmyyen.blogspot.com/&#39;&gt;http://jimmyyen.blogspot.com/&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jimmyyen.blogspot.com/feeds/8421308734163811026/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://jimmyyen.blogspot.com/2025/11/xmrig-cpu.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8737967/posts/default/8421308734163811026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8737967/posts/default/8421308734163811026'/><link rel='alternate' type='text/html' href='http://jimmyyen.blogspot.com/2025/11/xmrig-cpu.html' title='閒聊 Xmrig CPU 挖礦'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEh7ZRtG4RLAfew-nSY_Vpsfb4S-wDMT0HF0JLQn6_cScOpGHxM0UYfyHVTucouZzEgvfRuqoEJn02ERmBMVIQuDTh8_P2rAlF3ZKh8SNO6hsJ9xrHpm-zJ1bNigxJKY2UfS-8UEShwAEKFsOpKCRtg9n7aduhJD1eXYomXa9U7OwZvI2UTnUt1t=s72-w640-h326-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8737967.post-7898522610028552181</id><published>2025-11-23T04:22:00.000+08:00</published><updated>2025-11-23T04:22:57.767+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="心情"/><title type='text'>關於懼高</title><content type='html'>&lt;div&gt;怕高，所以不敢飛。&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;害怕失敗，所以一直不敢面對。&lt;/div&gt;&lt;div&gt;於是，一成不變。&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;
  &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivSpdm0yM4jT7dU6F_H0SC-8lHix6HY-hsVws5EMYh6XKZZGXowWc4rFcWzH1EVg9TOH1SwF3w_lvXsLUZP-e_BijrJOPS6eBJb48_ERpnVWZF0auG64EYgQsenIjKoPDVQF8U/s1600/1677823131597009-0.png&quot;&gt;
    &lt;/a&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivSpdm0yM4jT7dU6F_H0SC-8lHix6HY-hsVws5EMYh6XKZZGXowWc4rFcWzH1EVg9TOH1SwF3w_lvXsLUZP-e_BijrJOPS6eBJb48_ERpnVWZF0auG64EYgQsenIjKoPDVQF8U/s1600/1677823131597009-0.png&quot; width=&quot;400&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivSpdm0yM4jT7dU6F_H0SC-8lHix6HY-hsVws5EMYh6XKZZGXowWc4rFcWzH1EVg9TOH1SwF3w_lvXsLUZP-e_BijrJOPS6eBJb48_ERpnVWZF0auG64EYgQsenIjKoPDVQF8U/s1600/1677823131597009-0.png&quot;&gt;
  &lt;/a&gt;
&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;---&lt;/div&gt;&lt;div&gt;發現 2023 年 3 月未發佈草稿。&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;p style=&#39;text-align:right;padding:5px;border-top:1px solid #ccc;&#39;&gt;《弱格吉米言》&lt;a href=&#39;http://jimmyyen.blogspot.com/&#39;&gt;http://jimmyyen.blogspot.com/&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jimmyyen.blogspot.com/feeds/7898522610028552181/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://jimmyyen.blogspot.com/2025/11/blog-post.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8737967/posts/default/7898522610028552181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8737967/posts/default/7898522610028552181'/><link rel='alternate' type='text/html' href='http://jimmyyen.blogspot.com/2025/11/blog-post.html' title='關於懼高'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivSpdm0yM4jT7dU6F_H0SC-8lHix6HY-hsVws5EMYh6XKZZGXowWc4rFcWzH1EVg9TOH1SwF3w_lvXsLUZP-e_BijrJOPS6eBJb48_ERpnVWZF0auG64EYgQsenIjKoPDVQF8U/s72-c/1677823131597009-0.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8737967.post-7600525633354833128</id><published>2025-11-22T12:03:00.019+08:00</published><updated>2025-11-23T08:55:46.565+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AMD"/><category scheme="http://www.blogger.com/atom/ns#" term="Homelab"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="心情"/><title type='text'>回味礦卡 AMD GCN4/Polaris RX470/570/580</title><content type='html'>&lt;p&gt;在用 GPU 玩 AI 之前，挖礦應該是當年很潮的顯示卡用途吧。&lt;/p&gt;&lt;p&gt;&lt;img contenteditable=&quot;false&quot; data-iml=&quot;6374.700000017881&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEis8517WbauWaEDBQ_aLPEuyBYOpf3J5hgNRk9rN24r8fZDf0FnvGH006_i3GY9NCgw2KDql5FVqm3AigV_LQOGr4ZAe7EEjGPZtByPFjcG7y2rzSJtmgksrzOlAuu37hgRF-6c-uQgvEoVldGolDoYDgTxtzRyrX48xVGTAv_70crn4NE0K_4-/s320/FB_IMG_1763777867210.jpg&quot; /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;曾經同時擁有 10 張 RX470/570/580 8GB 的顯示卡，8 張在 HiveOS 裡面跑挖礦，另外兩張分別在兩台洋垃圾上使用，一台 Proxmox VE 的主機也是有 Passthrough 給一個 Windows vm 在挖，也玩過 Passthrough 給一個黑蘋果 vm，另一台只裝 Windows 就打遊戲和跑 Android 模擬器用，話說這個配置少說已距今八年前了。&lt;/p&gt;&lt;p&gt;大約四年前，那時候好像又有一波礦潮，有人在收礦卡，我看價格還不錯，那 8 張挖礦用的卡就都清掉了，只留著空的礦機機箱和主機板。&lt;/p&gt;&lt;p&gt;今年上半年我有把手上剩下的這兩張 AMD GCN4/Polaris RX470/570/580 8GB 顯示卡測試了一下跑 Vulkan llama.cpp，跑 8B 以下量子化過後的模型，坦白說也還算能用。&lt;/p&gt;&lt;p&gt;RX580 這張卡到 2025 年的可玩度，考慮他出廠的年紀以及在那兩波礦潮中各種極限環境下努力工作的狀態，真可謂老驥伏櫪！&lt;/p&gt;&lt;p&gt;這張顯卡現在要挖礦是有一些效率比較差的狀況，安裝支援 OpenCL 1.2 的驅動那些比較麻煩一點，昨天搞了一個下午，用一個 Ubuntu 20 的 LXC，使用 amdgpu-pro-20.30-1109583-ubuntu-20.04 裡的 amdgpu-install 終於裝成功支援 OpenCL 1.2 的驅動，總算可以成功跑 lolMiner。跟今年才誕生的 9060XT 對比，同一種演算法 BEAMHASH 可以跑出個 15 比 20 sol/s。&lt;/p&gt;&lt;p&gt;&lt;img contenteditable=&quot;false&quot; data-iml=&quot;6375.200000017881&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLm6tbSZPUhDzRXoRvBXEoFucyOXN-UAUb71n1gZmv4gMbT26Nn_xGgZX33dtB1CU2t6eJ5Dy6rQpAUlkxH-3PnuFXLh4R0upO_ZPvM7CnS1U_HpZezWorqvCT4r4eEJid77Li6U-r5D5vJXFJEz3oMqVFYJZs5NTIcA8mXU1JLQzSzGDRonUE/s320/swappy-20251122-112512.png&quot; /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;哦，最後我比較意外的是用 Intel A380 挖 BEAMHASH，能源挖礦效率非常好耶，本來這張很單純是想用來轉 H265 為主的卡，但想不到他的每瓦效率 (sol/s/W) 可以達到 0.187，只花 50W 不到的電力，大概可以跑出 7-8 sol/s，甚且還是張台幣 4000 元以下的顯示卡。&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;p style=&#39;text-align:right;padding:5px;border-top:1px solid #ccc;&#39;&gt;《弱格吉米言》&lt;a href=&#39;http://jimmyyen.blogspot.com/&#39;&gt;http://jimmyyen.blogspot.com/&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jimmyyen.blogspot.com/feeds/7600525633354833128/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://jimmyyen.blogspot.com/2025/11/amd-gcn4polaris-rx470570580.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8737967/posts/default/7600525633354833128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8737967/posts/default/7600525633354833128'/><link rel='alternate' type='text/html' href='http://jimmyyen.blogspot.com/2025/11/amd-gcn4polaris-rx470570580.html' title='回味礦卡 AMD GCN4/Polaris RX470/570/580'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEis8517WbauWaEDBQ_aLPEuyBYOpf3J5hgNRk9rN24r8fZDf0FnvGH006_i3GY9NCgw2KDql5FVqm3AigV_LQOGr4ZAe7EEjGPZtByPFjcG7y2rzSJtmgksrzOlAuu37hgRF-6c-uQgvEoVldGolDoYDgTxtzRyrX48xVGTAv_70crn4NE0K_4-/s72-c/FB_IMG_1763777867210.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8737967.post-7000280681688269324</id><published>2024-01-15T15:21:00.008+08:00</published><updated>2024-01-20T19:31:09.609+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Kodak"/><category scheme="http://www.blogger.com/atom/ns#" term="器材"/><category scheme="http://www.blogger.com/atom/ns#" term="攝影"/><title type='text'>[數位拍立得] Kodak Mini Shot 3 Retro C300R 4PASS 2合1 口袋相印機拍立得</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
  &lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhMmk0zCutaN5s3PLCsp8AqSbnmnA6UCm973PrDspPoo57vDh4wFmMbhssYyZr7pdY3lwCxYcxZ8hSZOTdj5yX54ggayvi9-4M3wF8SFUaUPumR2YCnWtOU0xw-DWreljkyRcYro9dSPvoQZj6cpo-WdlBnCFVtywRoHLxS0TiSK80xs-Zq-Kao&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;
    &lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhMmk0zCutaN5s3PLCsp8AqSbnmnA6UCm973PrDspPoo57vDh4wFmMbhssYyZr7pdY3lwCxYcxZ8hSZOTdj5yX54ggayvi9-4M3wF8SFUaUPumR2YCnWtOU0xw-DWreljkyRcYro9dSPvoQZj6cpo-WdlBnCFVtywRoHLxS0TiSK80xs-Zq-Kao&quot; width=&quot;400&quot;&gt;
  &lt;/a&gt;
&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;很久沒寫相機文，而且也不是底片相機。&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;今年初突然有點懷念有在拍拍立得的時候，那種拍完把照片送給親友的祝福喜悅，不過年紀大了比較務實，開始計算起如果也想把以前的照片印出來，那麼相對低的成本和設備應該是什麼？&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;研究了一圈，大概自己把照片印出來的需求 CP 值最高的是 &lt;a href=&quot;https://shope.ee/9zYhrXjQWI&quot;&gt;Canon Selphy Printer&lt;/a&gt; (4R 技術) 和 &lt;a href=&quot;https://shope.ee/5KmsJ4cdoW&quot;&gt;Kodak PD460&lt;/a&gt; (4PASS 技術)，這兩款基本上都可以印 4x6 的照片，技術上也雷同，都是透過色帶膜四次來回上色印出照片。成本的話，大概一張約 10 元台幣，如果換算 3x3 片幅大約可以印兩張，2x3 片幅大約可以印四張，雖然需要自行裁切，但這成本低得不言可喻。&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;不過上述這兩台基本上是屬於接市電才能使用的設備(Canon 是有另外再出鋰電池)，如果要派對或聚會也能耍帥的話，我想還是要選擇也能印也能拍照的設備，比較有那種拍完大家一起看著照片從相機印出來的那種老拍立得感，因此最後選了 &lt;a href=&quot;https://shope.ee/7fAn4m4Z7Y&quot;&gt;Kodak C300R&lt;/a&gt;。&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;操作滿簡單的，所以就不像以前一樣寫什麼教學文了，3x3 的片幅不加框的話，大概就等於以前用 Polaroid 600 的成相區域。&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;先來看直拍印出來的照片。&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
  &lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgPZpIY2xE75QfPxr2dOgdQng72VjuZkrMG0BKFIw3nNrwkSkzH4w1mQ84xDYbnVbtXBhCYwtvS8cL9bojPrLwNYmiI3c9Y4pl_rYHd2XY1clFXgDvH37Udyt-9WCPnrI0PrV_-HCEojPV34ldvUdwsku0Kw1AqJuNoDCvlzj3IolvCvEgJ-tkD&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;
    &lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgPZpIY2xE75QfPxr2dOgdQng72VjuZkrMG0BKFIw3nNrwkSkzH4w1mQ84xDYbnVbtXBhCYwtvS8cL9bojPrLwNYmiI3c9Y4pl_rYHd2XY1clFXgDvH37Udyt-9WCPnrI0PrV_-HCEojPV34ldvUdwsku0Kw1AqJuNoDCvlzj3IolvCvEgJ-tkD&quot; width=&quot;400&quot;&gt;
  &lt;/a&gt;
&lt;/div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;整體來說，直接拍完印出來的成相反差是比較大。&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;再用手機裡的底片數位掃描檔測試兩張。&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
  &lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhXScvcFBwcMe4VNKCbspotNVyz5kHs8UuYlqq9b3Q1UkOTpnEe-YTC4hF9kWN0PLvH9_RSrwCW9gLn3VbPc02nA9mgSJh7vZSxG8nly3K_Pcgqko03aj0agWrFKaXoXXpjcEM0qddCQyJcXVBTkdmkYDFmHclfjBPtNsQF-baxQ5M6pqflYJIl&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;
    &lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhXScvcFBwcMe4VNKCbspotNVyz5kHs8UuYlqq9b3Q1UkOTpnEe-YTC4hF9kWN0PLvH9_RSrwCW9gLn3VbPc02nA9mgSJh7vZSxG8nly3K_Pcgqko03aj0agWrFKaXoXXpjcEM0qddCQyJcXVBTkdmkYDFmHclfjBPtNsQF-baxQ5M6pqflYJIl&quot; width=&quot;400&quot;&gt;
  &lt;/a&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
  &lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgNomZkTWtxFYk_cvX_p1N5tOKDM0KOS1FH6o4IGY3IepnVgzyZ1RNbhKN_5YLuYHs01l3m55aOpcRIu6vRfLCAZEMFCe72oy45hjJ6wLXl16THSLE-gh5jj5UcmHzRSv8NbFFVvN4SS9vql74KqRFAjt7gO31BDyHoGjLaSthTkeHcKlQzisNh&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;
    &lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgNomZkTWtxFYk_cvX_p1N5tOKDM0KOS1FH6o4IGY3IepnVgzyZ1RNbhKN_5YLuYHs01l3m55aOpcRIu6vRfLCAZEMFCe72oy45hjJ6wLXl16THSLE-gh5jj5UcmHzRSv8NbFFVvN4SS9vql74KqRFAjt7gO31BDyHoGjLaSthTkeHcKlQzisNh&quot; width=&quot;400&quot;&gt;
  &lt;/a&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;我以前拍這些生活記錄照通常喜歡偏亮，第二張印的時候我用 Kodak 的 App 大約調暗了半格再印，得到的結果我比較喜歡。&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;總之，一個新開始。&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;8 張隨附的相紙很快就印完了。&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
  &lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEinrZiYbYu_p9UoN74flHqg6XtlFjSWIjwoZ9kE2S9929rBKp_AOxGQMuQrw0LFYC8cQgPyH06sLkSl-CftixMdYVkHyEPNn9j-hyqkEUCu5RjZpjQPOMWBaaLfyS_lGROsZTrVRJTbms5wEgwQ97wOgHzT0oyLpLmQ6nZxJezAZ9a3E_MyKm6Z&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;
    &lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEinrZiYbYu_p9UoN74flHqg6XtlFjSWIjwoZ9kE2S9929rBKp_AOxGQMuQrw0LFYC8cQgPyH06sLkSl-CftixMdYVkHyEPNn9j-hyqkEUCu5RjZpjQPOMWBaaLfyS_lGROsZTrVRJTbms5wEgwQ97wOgHzT0oyLpLmQ6nZxJezAZ9a3E_MyKm6Z&quot; width=&quot;400&quot;&gt;
  &lt;/a&gt;
&lt;/div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;底部打開很簡單就可以換片匣了。&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
  &lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjhdkP62HQDoTlQvzWqaYQLhE5VMXxaVe1UPelMUxE4W1ggJ1oOAPT5vbiUl6HRdfRJFzgUgVAMIkCwOxaixEXkO1RWjA_DDn9JimPqeYUMAbCKrspjDA-BB0l5IHFEY93WD7NQhRneZAB0uPiPFaTK6YyX8U4qlsvD6WT8PGCpa6c87p3ecKdv&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;
    &lt;img border=&quot;0&quot;   src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjhdkP62HQDoTlQvzWqaYQLhE5VMXxaVe1UPelMUxE4W1ggJ1oOAPT5vbiUl6HRdfRJFzgUgVAMIkCwOxaixEXkO1RWjA_DDn9JimPqeYUMAbCKrspjDA-BB0l5IHFEY93WD7NQhRneZAB0uPiPFaTK6YyX8U4qlsvD6WT8PGCpa6c87p3ecKdv&quot; width=&quot;400&quot;&gt;
  &lt;/a&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
  &lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEi7_fQIJ-jTnczbMnNTyn7V-dib2v_Bb2NEreSuMz_CL82-IAd5OefJshC1Z9UTbrUWnMtuF_dLzlpIV8mmZExRwNs7RbU3vs0YWij5dYFSFGjsmulE1Kpuu2PhLIWcrHPK0XFThc-y6F6L-Dks3CeOziNkBZiXIJWDwueO5qbfSVodM4Rynr0e&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;
    &lt;img border=&quot;0&quot;   src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEi7_fQIJ-jTnczbMnNTyn7V-dib2v_Bb2NEreSuMz_CL82-IAd5OefJshC1Z9UTbrUWnMtuF_dLzlpIV8mmZExRwNs7RbU3vs0YWij5dYFSFGjsmulE1Kpuu2PhLIWcrHPK0XFThc-y6F6L-Dks3CeOziNkBZiXIJWDwueO5qbfSVodM4Rynr0e&quot; width=&quot;400&quot;&gt;
  &lt;/a&gt;
&lt;/div&gt;&lt;br&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;p style=&#39;text-align:right;padding:5px;border-top:1px solid #ccc;&#39;&gt;《弱格吉米言》&lt;a href=&#39;http://jimmyyen.blogspot.com/&#39;&gt;http://jimmyyen.blogspot.com/&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jimmyyen.blogspot.com/feeds/7000280681688269324/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://jimmyyen.blogspot.com/2024/01/kodak-mini-shot-3-retro-c300r-4pass-21.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8737967/posts/default/7000280681688269324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8737967/posts/default/7000280681688269324'/><link rel='alternate' type='text/html' href='http://jimmyyen.blogspot.com/2024/01/kodak-mini-shot-3-retro-c300r-4pass-21.html' title='[數位拍立得] Kodak Mini Shot 3 Retro C300R 4PASS 2合1 口袋相印機拍立得'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEhMmk0zCutaN5s3PLCsp8AqSbnmnA6UCm973PrDspPoo57vDh4wFmMbhssYyZr7pdY3lwCxYcxZ8hSZOTdj5yX54ggayvi9-4M3wF8SFUaUPumR2YCnWtOU0xw-DWreljkyRcYro9dSPvoQZj6cpo-WdlBnCFVtywRoHLxS0TiSK80xs-Zq-Kao=s72-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8737967.post-8805184686160551459</id><published>2024-01-01T01:16:00.001+08:00</published><updated>2024-01-01T01:16:38.401+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="心情"/><title type='text'>新年應該快樂。</title><content type='html'>&lt;div&gt;平淡踏實，不改其樂。&lt;/div&gt;&lt;div&gt;2024 新年快樂！&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
  &lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEg6TJNICed5XsAiEGnk9vPSunA_R3jUHXVzHGbPfaPMecGahwOLoqZzMybKx78o7-IS6TiYLi2kyo0htCUnkJ61za9Z25t91sjdgfwmnT5q50IE645r-O_s_yUttSrXGZHgSddKVmv4FHgp9tckWq3MGqC_Ccs_DvRvrG5Oz3DYygANUEW8PAlE&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;
    &lt;img border=&quot;0&quot;   src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEg6TJNICed5XsAiEGnk9vPSunA_R3jUHXVzHGbPfaPMecGahwOLoqZzMybKx78o7-IS6TiYLi2kyo0htCUnkJ61za9Z25t91sjdgfwmnT5q50IE645r-O_s_yUttSrXGZHgSddKVmv4FHgp9tckWq3MGqC_Ccs_DvRvrG5Oz3DYygANUEW8PAlE&quot; width=&quot;400&quot;&gt;
  &lt;/a&gt;
&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;p style=&#39;text-align:right;padding:5px;border-top:1px solid #ccc;&#39;&gt;《弱格吉米言》&lt;a href=&#39;http://jimmyyen.blogspot.com/&#39;&gt;http://jimmyyen.blogspot.com/&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jimmyyen.blogspot.com/feeds/8805184686160551459/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://jimmyyen.blogspot.com/2024/01/blog-post.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8737967/posts/default/8805184686160551459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8737967/posts/default/8805184686160551459'/><link rel='alternate' type='text/html' href='http://jimmyyen.blogspot.com/2024/01/blog-post.html' title='新年應該快樂。'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEg6TJNICed5XsAiEGnk9vPSunA_R3jUHXVzHGbPfaPMecGahwOLoqZzMybKx78o7-IS6TiYLi2kyo0htCUnkJ61za9Z25t91sjdgfwmnT5q50IE645r-O_s_yUttSrXGZHgSddKVmv4FHgp9tckWq3MGqC_Ccs_DvRvrG5Oz3DYygANUEW8PAlE=s72-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8737967.post-532163093858896880</id><published>2023-09-14T10:50:00.002+08:00</published><updated>2023-09-14T12:52:37.471+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="心情"/><title type='text'>騎腳踏車上班</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
  &lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgBje69ztvAvdzSQXpl0meqNcy0to5BjITatz5PpAu4eSUBur-U5H__tKBE6PDOUe_N6aP1Y-WSTWf-82cYQ2SHKFOJC60hJu9JeBpuoo2Y_N2LWOznTnhfG0zLJcYiiQ_EmB9GrLsHBwGdzHz5FLPqp8Uy86cGMtpKopZfy1c3HKEIw66hrNG5&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;
    &lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgBje69ztvAvdzSQXpl0meqNcy0to5BjITatz5PpAu4eSUBur-U5H__tKBE6PDOUe_N6aP1Y-WSTWf-82cYQ2SHKFOJC60hJu9JeBpuoo2Y_N2LWOznTnhfG0zLJcYiiQ_EmB9GrLsHBwGdzHz5FLPqp8Uy86cGMtpKopZfy1c3HKEIw66hrNG5&quot; width=&quot;400&quot;&gt;
  &lt;/a&gt;
&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;昨天下午騎腳踏車去公司開週會，時間大約 15~20 分，感覺可以。&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;每日的買咖啡日常，會經過安農溪，也可以體驗都市人來宜蘭住民宿騎腳踏車的週末行程。&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;新的交通日常？&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;p style=&#39;text-align:right;padding:5px;border-top:1px solid #ccc;&#39;&gt;《弱格吉米言》&lt;a href=&#39;http://jimmyyen.blogspot.com/&#39;&gt;http://jimmyyen.blogspot.com/&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jimmyyen.blogspot.com/feeds/532163093858896880/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://jimmyyen.blogspot.com/2023/09/blog-post_14.html#comment-form' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8737967/posts/default/532163093858896880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8737967/posts/default/532163093858896880'/><link rel='alternate' type='text/html' href='http://jimmyyen.blogspot.com/2023/09/blog-post_14.html' title='騎腳踏車上班'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEgBje69ztvAvdzSQXpl0meqNcy0to5BjITatz5PpAu4eSUBur-U5H__tKBE6PDOUe_N6aP1Y-WSTWf-82cYQ2SHKFOJC60hJu9JeBpuoo2Y_N2LWOznTnhfG0zLJcYiiQ_EmB9GrLsHBwGdzHz5FLPqp8Uy86cGMtpKopZfy1c3HKEIw66hrNG5=s72-c" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8737967.post-1319124508558057435</id><published>2023-09-13T07:27:00.002+08:00</published><updated>2023-09-13T07:29:44.711+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="心情"/><title type='text'>關於無力</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
  &lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhAc2jED6RJP_hS_N2IdgqcRHPOm5DO9VWPRRops7-oZPHXQR02iDGOVlufXnO3Lg3P22XHDuVO_MV-yLSaytx4dargaee8ZHLg8npxWhkBAYWyluUzvtS6GEqBvvHWKqBjb7oTSZwz2p9caDLeW0sb0l_itze11durlZBiq5em9nEX7csNTRYb&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;
    &lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhAc2jED6RJP_hS_N2IdgqcRHPOm5DO9VWPRRops7-oZPHXQR02iDGOVlufXnO3Lg3P22XHDuVO_MV-yLSaytx4dargaee8ZHLg8npxWhkBAYWyluUzvtS6GEqBvvHWKqBjb7oTSZwz2p9caDLeW0sb0l_itze11durlZBiq5em9nEX7csNTRYb&quot; width=&quot;400&quot;&gt;
  &lt;/a&gt;
&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;很多事，總會讓人感到無力。&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;上面這張圖是停路邊被撞壞後照鏡的小拖鞋，那個月的香菸少抽了 10 包。&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;克制、謙虛、盡責、誠實，這些自以為重要的價值，在現實與世俗的面前，盡顯蒼白而無力。&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;詐騙是錯的，但如果成為股東出得起錢，這家公司就會是他們說了算。寧可讓公司倒掉也不發薪水的決定，小蝦米無力反抗就算了，還傻呼呼的留到最後一刻才離開。&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;權錢有勢者關心的是，如何讓你不知道他怎麼富有，從而加深階級門檻，維護既得利益。&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;週末水箱水管爆掉的小拖鞋，修車廠說可能需要拆引擎檢查有沒有因為過熱傷到。&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;我現在擔心的是，要不要借錢把車子修好用來代步，還是幽默的改騎腳踏車然後說自己重視健康？&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;人們鍾愛某些互嗆互罵，彼此指責，說謊圓謊，各說各話的戲碼，我當然也愛看。心裡想的是，能不能真的找到一些榜樣，克制、謙虛、盡責、誠實，那可能會讓我覺得世界還有一些光，即使微弱也足以自信的告訴自己，堅持下去，理想就算是夢，也是值得。&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;p style=&#39;text-align:right;padding:5px;border-top:1px solid #ccc;&#39;&gt;《弱格吉米言》&lt;a href=&#39;http://jimmyyen.blogspot.com/&#39;&gt;http://jimmyyen.blogspot.com/&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jimmyyen.blogspot.com/feeds/1319124508558057435/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://jimmyyen.blogspot.com/2023/09/blog-post.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8737967/posts/default/1319124508558057435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8737967/posts/default/1319124508558057435'/><link rel='alternate' type='text/html' href='http://jimmyyen.blogspot.com/2023/09/blog-post.html' title='關於無力'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEhAc2jED6RJP_hS_N2IdgqcRHPOm5DO9VWPRRops7-oZPHXQR02iDGOVlufXnO3Lg3P22XHDuVO_MV-yLSaytx4dargaee8ZHLg8npxWhkBAYWyluUzvtS6GEqBvvHWKqBjb7oTSZwz2p9caDLeW0sb0l_itze11durlZBiq5em9nEX7csNTRYb=s72-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8737967.post-7980750756364413824</id><published>2023-04-07T18:00:00.001+08:00</published><updated>2023-04-07T18:47:18.799+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="心情"/><category scheme="http://www.blogger.com/atom/ns#" term="植物"/><title type='text'>關於擺拍</title><content type='html'>&lt;div&gt;剪切多肉種進一吋盆&lt;span style=&quot;letter-spacing: 0.2px;&quot;&gt;裡，&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;letter-spacing: 0.2px;&quot;&gt;即使無法預知成功率，&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;letter-spacing: 0.2px;&quot;&gt;卻絕對是擺拍神器。&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
  &lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgAvmHF6Lusqq0f774JO3O6HEfr0pbD9u7uQXtN3bFmV-dezfpSpmO4g0DcAcVpZiUiDrYS1vntGtV3SR_1Fg6Ht63NqyhC8T1tJJSF_Rti7MHu2DghUngUoQWLjjHEQtEubJB27kxpiUBA0iAZOCNxo8ZN5mDSSXeXJ0D4QV46bdWrDPMS2g&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;
    &lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgAvmHF6Lusqq0f774JO3O6HEfr0pbD9u7uQXtN3bFmV-dezfpSpmO4g0DcAcVpZiUiDrYS1vntGtV3SR_1Fg6Ht63NqyhC8T1tJJSF_Rti7MHu2DghUngUoQWLjjHEQtEubJB27kxpiUBA0iAZOCNxo8ZN5mDSSXeXJ0D4QV46bdWrDPMS2g&quot; width=&quot;400&quot;&gt;
  &lt;/a&gt;
&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;p style=&#39;text-align:right;padding:5px;border-top:1px solid #ccc;&#39;&gt;《弱格吉米言》&lt;a href=&#39;http://jimmyyen.blogspot.com/&#39;&gt;http://jimmyyen.blogspot.com/&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jimmyyen.blogspot.com/feeds/7980750756364413824/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://jimmyyen.blogspot.com/2023/04/blog-post.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8737967/posts/default/7980750756364413824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8737967/posts/default/7980750756364413824'/><link rel='alternate' type='text/html' href='http://jimmyyen.blogspot.com/2023/04/blog-post.html' title='關於擺拍'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEgAvmHF6Lusqq0f774JO3O6HEfr0pbD9u7uQXtN3bFmV-dezfpSpmO4g0DcAcVpZiUiDrYS1vntGtV3SR_1Fg6Ht63NqyhC8T1tJJSF_Rti7MHu2DghUngUoQWLjjHEQtEubJB27kxpiUBA0iAZOCNxo8ZN5mDSSXeXJ0D4QV46bdWrDPMS2g=s72-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8737967.post-4645615741231133386</id><published>2023-03-30T12:32:00.001+08:00</published><updated>2023-04-07T17:57:29.825+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="心情"/><category scheme="http://www.blogger.com/atom/ns#" term="植物"/><title type='text'>關於緣分</title><content type='html'>小時候有一次颱風天，風雨過後二樓後陽台的水桶裡多了隻巴西紅耳龜，直到現在我都想不通是哪兒來的。&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;我家三樓頂也有棵飛來的榕樹，說飛來可能不是他自己飛，是鳥兒飛來，&lt;span style=&quot;letter-spacing: 0.2px;&quot;&gt;挨著女兒牆鳥兒大概痾了便便，就把吃下的果子留在那兒。&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;letter-spacing: 0.2px;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;letter-spacing: 0.2px;&quot;&gt;長了幾年也沒特別在意，去年初已經高過女兒牆，牆面盤滿氣根，健壯到讓人擔心根到底往哪裡長的地步，找了個週末下午處理到沒力氣，還剩塊根，撒上鹽和鹽酸。&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;今年初偶然再上樓頂，驚見這段以為已經封殺徹底的榕樹根，從邊邊芽點又沿著女兒牆長了上來，令人讚嘆的頑強！月初某週末上午，跟它打了商量，住樓頂讓人操心，既然有這遠道而來的緣分，那麼請您搬來樓下的盆子裡住吧。&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;囤物癖作用在植物上，扦插繁殖應該是很好的解放。&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;那天挑了四五條看起來順眼的小枝條，去掉所有的葉子，放隔天扦插到盆子裡。&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;新長出來的六七片小葉子還真可愛呢！&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
  &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgW1eppqPk0BCRqCqm4ZIIMP2qqvxpEduDRHDRth62SqNwJWFOqi2a9E9aO-ZIty8xBbFe2XO0OoVmtsI7P9Rv2pJzbdYPj8f28UrGpo0h0IIjBYI64CP6ih-9IAmJ_J1nJCBYe/s1600/1680150724471572-0.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;
    &lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgW1eppqPk0BCRqCqm4ZIIMP2qqvxpEduDRHDRth62SqNwJWFOqi2a9E9aO-ZIty8xBbFe2XO0OoVmtsI7P9Rv2pJzbdYPj8f28UrGpo0h0IIjBYI64CP6ih-9IAmJ_J1nJCBYe/s1600/1680150724471572-0.png&quot; width=&quot;400&quot;&gt;
  &lt;/a&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;p style=&#39;text-align:right;padding:5px;border-top:1px solid #ccc;&#39;&gt;《弱格吉米言》&lt;a href=&#39;http://jimmyyen.blogspot.com/&#39;&gt;http://jimmyyen.blogspot.com/&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jimmyyen.blogspot.com/feeds/4645615741231133386/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://jimmyyen.blogspot.com/2023/03/blog-post_30.html#comment-form' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8737967/posts/default/4645615741231133386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8737967/posts/default/4645615741231133386'/><link rel='alternate' type='text/html' href='http://jimmyyen.blogspot.com/2023/03/blog-post_30.html' title='關於緣分'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgW1eppqPk0BCRqCqm4ZIIMP2qqvxpEduDRHDRth62SqNwJWFOqi2a9E9aO-ZIty8xBbFe2XO0OoVmtsI7P9Rv2pJzbdYPj8f28UrGpo0h0IIjBYI64CP6ih-9IAmJ_J1nJCBYe/s72-c/1680150724471572-0.png" height="72" width="72"/><thr:total>1</thr:total></entry></feed>