Qwen3-0.6B 本地部署教學:在樹莓派上跑大型語言模型

前言 你以為跑大型語言模型(LLM)一定要有一張 expensive 的顯卡、一台配備頂級 CPU 的伺服器嗎?錯了。 阿里巴巴的 Qwen3 系列在 2025 年 4 月發表時,最引人注目的不是那個 235B 參數的 MoE 旗艦模型,而是那個只有 0.6B(6 億)參數 的迷你版本——Qwen3-0.6B。它體積小到什麼程度?量化後只有約 523 MB,連你的手機都能裝。 而這篇文章要帶你用一台樹莓派(Raspberry Pi),在本地跑起這個「麻雀雖小,五臟俱全」的語言模型。不需要雲端、不需要網路、隱私全在自己手上。 什麼是 Qwen3-0.6B? Qwen3-0.6B 是 Qwen3 系列中最輕量的稠密(Dense)模型,於 2025 年 4 月 29 日由阿里巴巴 Qwen 團隊發布,採用 Apache 2.0 授權,可自由商用。 核心規格 項目 規格 參數數量 0.6B(0.44B 非嵌入層) Transformer 層數 28 層 注意力機制 GQA(16 個 Query heads / 8 個 KV heads) 上下文長度 32,768 tokens 詞彙表大小 151,669 tokens 訓練語料 約 36 兆 tokens(119 種語言) 授權 Apache 2.0 為什麼 0.6B 值得關注? 別看它參數少,Qwen3-0.6B 經歷了從大模型(Qwen3-32B 和 Qwen3-235B-A22B)到小模型的知識蒸餾過程,继承了思考模式切換和推理能力。 ...

GGUF 量化實戰:在 Raspberry Pi 上跑 Qwen3 7B 的完整流程

前言:把 AI 塞進信用卡大小的電腦 你大概聽過「大語言模型要跑在顯卡上」,但你有沒有想過,一台只要 35 美元的 Raspberry Pi 也能跑 70 億參數的 Qwen3? 這聽起來像魔法,但背後的技術其實很樸實——GGUF 量化(GPT-Generated Unified Format)。它把原本需要 16 GB 記憶體的模型壓縮到 4 GB,還不需要任何獨顯,純粹用 CPU 就能跑。 這篇文章會帶你走完整流程:從模型下載、量化選擇、到在 Raspberry Pi 上實際跑起來。無論你是硬體玩家、邊緣運算愛好者,還是單純想省錢跑 AI 的窮人,這篇都適合你。 什麼是 GGUF?為什麼它能讓你省記憶體? GGUF 是 llama.cpp 專案開發的模型格式。它的核心思想很直接:把模型的權重用更少的 bit 來表示。 一般 PyTorch 模型用的是 FP16(16 位元浮點數),一個參數佔 2 bytes。但如果你把精度降到 4 bit(也就是 0.5 bytes),模型檔案就能縮小到原來的四分之一。 不過別急著喊「砍掉重練」——GGUF 的量化不是「一刀切」。它採用混合精度量化(K-quants),讓重要權重保持高精度、不重要的權重用低精度。這就像用不同粗細的筆來畫畫:重要的線條用細筆、背景用粗筆,整體看起來幾乎沒差。 量化格式 7B 模型大小 所需記憶體 品質損失 BF16(原始) ~15.6 GB ~17 GB 無 Q8_0 ~8.3 GB ~10 GB <0.1% Q6_K ~6.4 GB ~8 GB ~0.1% Q4_K_M ~4.8 GB ~6 GB ~1.7% Q3_K_M ~3.9 GB ~5 GB ~6% Q2_K ~3.1 GB ~4 GB ~15% 來源:llama.cpp 官方 perplexity 測試。Q4_K_M 是品質與大小的最佳平衡點,也是這篇文章的推薦格式。 ...

Windows 上用 OpenCode 寫程式:從零開始的完整安裝指南(2025)

前言 如果你最近混程式圈,應該聽過 OpenCode 這名字。這個開源 AI coding agent 在 GitHub 上已經突破了 17 萬顆星,被譽為「終端機裡最強的人工智慧程式助手」。 簡單來說,OpenCode 讓你用自然語言跟 AI 對話,它就能幫你讀程式碼、寫功能、修 bug、做 code review——而且一切發生在你熟悉的終端機介面裡。 對於 Windows 使用者來說,OpenCode 的安裝方式有幾種選擇,官方也建議使用 WSL(Windows Subsystem for Linux)來獲得最佳體驗。但這篇文章就是要從零開始,帶你一步步把 OpenCode 裝好、設定好、跑起來。 不管你是完全沒碰過 terminal 的小白,還是想嘗試新工具的開發者,這篇都會讓你一次上手。 什麼是 OpenCode?為什麼值得裝? 在深入安裝之前,先簡單認識一下 OpenCode 到底是什麼。 OpenCode 是一個開源的 AI coding agent,由 Anomaly Co 開發。它提供三種使用方式: TUI(Terminal User Interface):在終端機裡用文字介面跟 AI 互動,這也是這篇文章的重點 Desktop App:桌面應用程式,適合不想碰 terminal 的用戶 IDE Extension:作為 IDE 擴充功能使用 它的核心特色是「雙 Agent 架構」: build agent(預設):擁有完整存取權,可以讀寫檔案、執行 bash 指令,適合開發工作 plan agent:唯讀模式,不會修改檔案,適合探索陌生程式碼或做規劃 還有內建的 general subagent,可以用 @general 呼叫,處理複雜的多步驟任務。 ...

從零部署 Hermes Agent:打造會跟你一起成長的 AI 助手

前陣子有個朋友跟我說:「哥,我試了好幾個 AI 工具,Claude 好用但貴、ChatGPT 免費但笨、自己架的又老是斷線。有沒有那種『裝一次就管用、還會越用越聰明』的?」 我說:「有啊,叫 Hermes Agent。」 他問:「這東西聽起來很硬核,我這種不會寫程式的人用得了嗎?」 我說:「你連這個都看得懂,絕對用得了。」 這篇文章不是那種「複製貼上就跑」的速成教學——我想跟你聊聊我怎麼從零開始,把 Hermes Agent 架起來、設好 provider、寫 skill、用 tool,然後讓它真的變成我每天的工作夥伴。如果你也想要一個「會跟你一起成長」的 AI 助手,這篇會讓你看到完整的實戰過程。 什麼是 Hermes Agent? 先說結論:Hermes Agent 是一個開源的 AI agent 框架,由 Nous Research 開發。它跟 Claude Code、OpenAI Codex 屬於同一類工具——能讀檔案、跑指令、操作瀏覽器、搜尋網頁,甚至透過 Telegram 跟你聊天。 但 Hermes 有幾個讓我看上它的特色: 自我進化:遇到複雜任務後,它會自動把經驗存成 skill,下次遇到同樣問題就變快了 跨平台:同一個 agent 可以同時跑在終端機、Telegram、Discord、Slack 上 不限模型:OpenRouter、Anthropic、OpenAI、DeepSeek、本地模型,想換就換 跨會話記憶:昨天跟你聊過的偏好、習慣,今天還記得 簡單來說,它不是那種「你問一句、它答一句」的聊天機器人,而是一個「住在你機器裡、會記住事情、會自己學東西」的助手。 第一步:兩分鐘裝好 Hermes 的安裝非常直覺,Linux/macOS 上一行指令搞定: curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash 安裝完重載 shell(source ~/.bashrc),然後輸入 hermes 就能開始聊天。 Windows 用戶也沒問題,PowerShell 跑一行: iex (irm https://hermes-agent.nousresearch.com/install.ps1) 注意:安裝器會自動處理 Python 3.11、Node.js、ffmpeg 等依賴,不需要你手動裝一堆東西。 ...

裝完 OpenCode 別急著用!10 個必設的 Config 設定,效能直接翻倍

前言 OpenCode 這個開源 AI Coding Agent 最近在 GitHub 上爆紅,星數已經突破 160K。但很多新手裝好之後就直接開始 opencode run,結果遇到各種問題:token 爆炸、模型選錯、工具亂開、MCP server 連不上…… 其實 OpenCode 的設定檔 opencode.jsonc 提供了超多進階選項,只要設對,效能和體驗可以直接提升好幾個等級。 這篇文章我會整理 10 個最重要的設定項目,幫你一次搞定 OpenCode 的最佳化配置。 1. 設定 $schema 讓編輯器自動補完 很多人在寫 opencode.jsonc 的時候都沒有加 schema,結果編輯器無法提供自動補完和語法檢查。 { "$schema": "https://opencode.ai/config.json", // ... 你的設定 } 加上這行之後,VS Code 或其他支援 JSON Schema 的編輯器就能自動提示可用的設定項目,再也不怕打錯欄位名稱。 2. 用 model 和 small 分工,省 token 又快速 OpenCode 支援雙模型設定:model 負責主要編碼任務,small 負責輕量任務(像是自動產生對話標題、簡短摘要等)。 { "model": "anthropic/claude-sonnet-4", "small": "anthropic/claude-haiku-3-5" } 這樣設的好處是: 主要任務用強大的模型,保證輸出品質 輕量任務用便宜的模型,大幅節省 token 費用 避免每個小操作都消耗昂貴模型的 token 如果你用的是 OpenRouter,可以這樣寫: ...

AI Comic Factory 本地部署:讓 ChatGPT 寫劇本、FLUX 畫圖,自動生成漫畫

前陣子我看到一個超有趣的 Hugging Face Space——AI Comic Factory,它能把一段文字提示自動變成有分鏡、對白、標題的完整漫畫。簡單來說,你輸入「一隻偵探狗在雨夜追查失竊的魚」,它就會幫你生成多格漫畫,連分鏡腳本、角色對白、旁白字幕都幫你寫好。 但官方 Space 有個限制:免費用戶一次只能生成一頁,而且排隊等 GPU 很痛苦。今天這篇文章,我要帶你把 AI Comic Factory 完整部署到自己家裡,換上自己的 LLM(ChatGPT、Claude、Gemini 都可以)和繪圖模型(SDXL、FLUX 都行),然後邊喝咖啡邊看 AI 幫你畫漫畫。 什麼是 AI Comic Factory? AI Comic Factory 是由 Hugging Face 研究者 jbilcke-hf 開發的開源專案,GitHub 上已經有 1.3k 顆星(雖然 2025 年 10 月正式归档為唯讀,但程式碼完全可用)。它的核心概念很直觀:用 LLM 寫劇本 + 用繪圖模型畫圖 = 自動生成漫畫。 整個流程長這樣: 你輸入故事概念和畫風(例如:「偵探狗在雨夜追查失竊的魚 || 黑色電影風格」) LLM 分析提示,自動生成每個分鏡的繪圖指令、角色對白(第一人稱)、旁白字幕 繪圖模型(如 SDXL)根據每個分鏡的指令生成圖片 自動疊加對白氣泡和字幕,輸出完整的漫畫頁面 可以匯出為 PDF,直接分享或列印 它支援的畫風超過十種:美式漫畫(50 年代 / 現代)、日式漫畫、法比漫畫(Franco-Belgian)、日本畫(Nihonga)、復古照片小說、股票攝影風……甚至古埃及壁畫風格都有。 技術架構:雙引擎協作 AI Comic Factory 的架構可以拆成兩個獨立但協作的部分: 1. LLM 引擎(劇本大腦) 負責把你的故事概念拆解成具體的分鏡腳本。每個分鏡包含: ...

零 GPU 也能語音克隆!在 PVE LXC 上部署 MOSS-TTS-Nano 新手完整教學

最近 AI 語音克隆技術越來越熱門,但大多數方案都需要昂貴的 GPU 來跑。如果你跟我一樣,手上只有一台 Proxmox VE(PVE)伺服器,沒有 GPU 直通,該怎麼辦? 這篇文章要帶你在 PVE 的 LXC 容器裡,完全依靠 CPU 跑起來 MOSS-TTS-Nano——一個僅 0.1B 參數的輕量級語音合成模型。不需要 GPU、不需要複雜設定,四核心 CPU 就能流暢運行。 什麼是 MOSS-TTS-Nano? MOSS-TTS-Nano 是一個開源的語音克隆(Voice Cloning)模型,由 OpenMOSS 團隊開發。它的 ONNX 版本特別適合 CPU 環境,因為: 零 GPU 依賴:移除了 PyTorch,改用 ONNX Runtime 進行推理 體積極小:僅 0.1B 參數,記憶體佔用極低 語音克隆:只需一段參考音檔,就能複製指定人的聲音 OpenAI 格式相容:透過 bridge.py 可以偽裝成標準 TTS API,直接給 SillyTavern 用 簡單來說,它讓你用最低的成本,體驗最完整的語音克隆功能。 前置準備 硬體需求 項目 最低要求 建議值 CPU 4 核心 4 核心以上 記憶體 4 GB 8 GB 硬碟 20 GB 20 GB 以上 GPU 不需要 不需要 作業系統 建議使用 Ubuntu 22.04 LTS 或 24.04 LTS 作為 LXC 容器的作業系統。 ...

瀏覽器裡的 FFmpeg:零上傳、離線跑的影片編輯器,30 種操作一次看完

前言 每次要剪個影片、轉個格式,第一個浮現的畫面是什麼? 打開 DaVinci Resolve 等三分鐘、開啟 Premiere 等五分鐘、或者打開某個線上工具、上傳檔案、等進度條、等伺服器處理、然後下載——整套流程下來,一杯咖啡都涼了。 如果你曾經受夠了這種流程,這篇文章就是為你寫的。 今天介紹一個叫 ffmpeg-webCLI 的開源專案,它把整個 FFmpeg 塞進你的瀏覽器裡。沒有伺服器上傳、不需要安裝軟體、甚至離線也能跑。30 多種影片操作,從格式轉換到浮水印疊加,全部在本地完成。 重點是:你看完這篇文章的時候,應該已經會用了。 先搞懂一個問題:FFmpeg 怎麼跑在瀏覽器裡? FFmpeg 原本是命令列工具,Linux 伺服器上的常客。但 FFmpeg 團隊做了件很酷的事——把核心編譯成 WebAssembly(WASM),讓它能在瀏覽器裡跑。 ffmpeg-webCLI 的背後就是 ffmpeg.wasm 這個庫。簡單說,你第一次打開網頁時,會下載約 31 MB 的 WASM 檔案(之後瀏覽器會快取,下次幾乎秒開)。之後所有影片處理都在你的裝置上完成,檔案不離開你的電腦。 這意味著什麼? 隱私:你的影片不會上傳到任何伺服器 速度:不走網路傳輸,直接處理本地檔案 離線:首次載入後,關掉網路照樣能用 第一步:打開它,花 30 秒上手 直接到 ffmpeg-webCLI 的官方網站 (或把原始碼 clone 下來用 npx serve docs 在本機跑)。 畫面很乾淨,就三個步驟: 點 Load ffmpeg(首次會下載 WASM 檔案,等個幾秒) 拖入或選擇你的影片檔案 選操作、調整參數、點 Process Video 就這三步。沒有選單、沒有面板堆疊、沒有學不完的功能表。 小提醒:COOP / COEP Headers 如果你自己在本機部署,需要設定兩個 HTTP Headers: C C r r o o s s s s - - O O r r i i g g i i n n - - O E p m e b n e e d r d - e P r o - l P i o c l y i : c y s : a m r e e - q o u r i i r g e i - n c o r p 這是因為 ffmpeg.wasm 用到了 SharedArrayBuffer,瀏覽器需要這兩個 Header 才能啟動。專案自帶的 server.js 或 npx serve 都會自動幫你設定好。 ...

Uber 每月 $1,500 的 AI 工具上限,是瘋狂還是理性?

最近看到 Simon Willison 寫了一篇很有意思的短文,談到 Uber 對旗下工程師使用 AI 編碼工具(像是 Claude Code、Cursor 等)設定了每個月 $1,500 美金的使用上限。 先來交代一下背景。Uber 在 2026 年前三個月就把全年的 AI 預算燒光了。這其實並不令人意外——因為他們設定預算的時間點是在 2025 年,那時誰能預料到 token 消耗型編碼代理工具(coding agents)會變得這麼可怕地吃錢呢? 根據 Bloomberg 的報導,Uber 的規定是: 每位員工每種 AI 編碼工具每月限額 $1,500 美金的 token 消費。也就是說,每個工具的花費不會影響到另一個工具的預算。這個限制適用於 Cursor、Anthropic 的 Claude Code 等代理式編碼軟體。 一個合理的數字? $1,500 美金一個月,聽起來多嗎? Simon 覺得這是一個相當理性的政策回應。比起那些鼓勵員工爭搶 AI 使用量的「token 排行榜」(tokenmaxxing leaderboards),這種有上限的做法反而更 sensible。 但真正讓我停下來想的是他算的一筆帳。 AI 成本 vs. 工程師薪資 假設每位工程師平均使用兩個 AI 工具,那麼: 每月:$1,500 × 2 = $3,000 每年:$3,000 × 12 = $36,000 而根據 Levels.fyi 的數據,Uber 美國工程師的中位數年薪是 $330,000。 ...

Elixir v1.20 釋出:現在支援漸進式類型系統了!

前言 2022 年,Elixir 團隊宣布要為這個語言加入「集合論類型系統」(set-theoretic type system)。經過四年的研發,由 CNRS 與 Remote 合作、Fresha 和 Tidewave 贊助,這個願景終於在 Elixir v1.20 中實現了第一個重要里程碑。 這篇文章由 Elixir 創始人 José Valim 親自撰寫,我來幫你整理重點,用比較輕鬆的方式看懂這次更新到底有什麼了不起。 什麼是「漸進式類型系統」? 簡單來說,Elixir v1.20 現在可以對每一個 Elixir 程式進行類型推論和漸進式類型檢查,而且不需要你寫任何類型註解(type annotations)。 這意味著什麼呢? Elixir 現在會自動幫你找出死程式碼(dead code) 會找出已驗證的 bug(verified bugs)—— 這些是如果執行到就一定會在執行時期失敗的類型錯誤 不需要你加註解、不會增加開發者負擔、誤報率極低 換句話說,你什麼都不用改,Elixir 就免費送你一堆潛在 bug 讓你修。 Elixir 的 dynamic() 類型:跟其他語言的 any() 不一樣 很多漸進式類型系統(比如 TypeScript)都有類似 any 的類型,意思是「什麼都可以,不做檢查」。但 Elixir 的漸進式類型叫做 dynamic(),而且有兩個重要特性: 1. 相容性(Compatibility) dynamic() 類型在呼叫函數時,只有當「傳入的類型」和「函數接受的類型」完全不相交(disjoint)時,才會報錯。 舉個例子: value_or_error = if value > 1 do value else "not well" end Map.fetch!(value_or_error, :some_key) 這裡 value_or_error 的類型是 dynamic(integer() or binary())。而 Map.fetch! 只接受 map。因為 integer 和 binary 跟 map 完全不重疊,所以會報一個已驗證的 bug。 ...