你有一台只剩 8GB 記憶體的舊筆電,想讓 AI 自己讀檔、改一個 Python 程式、跑檢查,卻不想先買 GPU。Ling 3.0 Tiny+Pi 看起來像一條路:小模型負責想下一步,Pi 負責把它接上檔案與終端機。問題是,能聊天和能交出可驗收的程式,是兩件事。
這篇寫給第一次接觸本機模型與 Coding Agent、但願意照指令開終端機的讀者。我會先用白話拆解零件,再給你一個可複製的固定任務、驗收方式與停損線。這是來源核對後的操作指南;文中的命令與預期輸出是測試方案,不是 AlphaLab 在 8GB 舊機跑出的成績。
文章目錄會帶你依序看懂記憶體預算、接線、工具呼叫、驗收和失敗排查。先把測試放在沒有私密資料的獨立帳號或隔離環境;Pi 的工作目錄只是起點,不能限制它能讀到什麼。
先說結論:8GB 舊機能試,但交付要看證據
- 一句話公式:本機 Coding Agent = GGUF 模型(決定下一步)+ llama.cpp(提供推論服務)+ Pi(讀檔、寫檔、執行命令)+ 你的驗收測試。
- 截至 2026 年 9 月 30 日,Ling 官方 GGUF 倉庫列出 Q4_K_M 約 4.82 GB;這是模型檔大小,不等於載入後的總 RAM。8GB 仍須留空間給作業系統、Pi、上下文快取與其他程式。
- 社群作者說自己在 2017 年 i5、8GB、CPU 環境以 Q6 量化做完一個腳本約 20 分鐘、約 10 tokens/s。這是單人自述;CPU、量化、上下文與任務不同,不能當你的速度保證。
- 本文的成功標準是看得到 Pi 的工具呼叫、檔案真的改了、兩個檢查都通過,且沒有持續 swap 或當機;只看最後一句「完成」不算。
Ling 3.0 Tiny+Pi 是什麼?先認識四個零件
把這套組合想成一間小工作室:Ling 是想法、GGUF 是壓縮行李、llama.cpp 是翻譯員兼接待台、Pi 是能碰鍵盤的助手。模型自己只會產生文字;Pi 讓它選擇讀檔、寫檔或執行命令,再把結果送回模型,形成一輪一輪的工作。想先搞懂這個迴圈,可以讀 Agent Harness 的白話說明;想看更接近程式結構的版本,再讀 從零搭 Agent Harness。

- 模型:Ling 3.0 Tiny 官方模型卡截至 2026 年 9 月 30 日列出 7.9B 總參數、每個 token 約 1.3B 啟用參數。啟用量影響每步計算,總權重仍要佔儲存與記憶體;「1.3B 啟用」不能解讀成只有 1.3B 模型的 RAM 需求。
- 量化:把權重以較少位元存放。官方 GGUF 倉庫截至 2026 年 9 月 30 日列出 Q4_K_M 4.82 GB、Q5_K_M 5.64 GB、Q6_K 6.5 GB、Q8_0 8.41 GB。8GB 機器先以 Q4_K_M 作候選,仍須看實際載入情況;更大的檔案會擠壓其他記憶體預算。
- 服務:llama.cpp 的
llama-server把本機 GGUF 變成 Pi 可呼叫的服務。--jinja啟用工具呼叫所需的聊天模板處理;服務能傳工具格式,不代表模型每次都會正確選工具。 - 執行層:Pi 在你啟動它的系統權限下讀檔、改檔、跑命令。Pi 官方安全文件說明它不會逐一要求每次工具呼叫批准;測試請使用沒有密碼與重要資料的獨立帳號或隔離環境。
8GB 的真正限制:先算預算,再下載
模型檔只是第一張帳單。載入後還有運行程式、上下文快取、作業系統和 Pi 本身。Pi 官方範例使用 -c 32768,並提醒原生上下文可能要更多記憶體;舊筆電的第一輪可以把 -c 設成 4096 當保守的實驗起點,不是保證足夠。若連系統提示與工具定義都放不下,就要在記憶體允許時加大;加大後出現持續 swap,則停止這台機器上的測試。
先查看記憶體、可用磁碟空間與 Python/Node 版本。Pi 的 官方 Quickstart要求 npm 安裝路線使用 Node.js 22.19 或更新版;模型下載至少需要容納 GGUF 檔案與暫存空間。macOS 可在活動監視器看「記憶體壓力」和交換使用量;Linux 可用 free -h 與 vmstat 1。不要只看 CPU 百分比:如果 swap 一直上升,慢可能是記憶體不足而非模型「思考較久」。
停止條件先寫清楚:服務無法載入、作業系統開始長時間換頁、Pi 進入反覆壓縮上下文、或同一固定任務在你可接受的等待時間內沒有檔案與測試進展,就收工並保留紀錄。想先理解本機模型的記憶體與量化取捨,可讀 本機 LLM 記憶體選型指南;要比較自架成本,可讀 本機模型與代管成本。
Ling 3.0 Tiny+Pi 安裝:依官方路線接上 llama.cpp
步驟 1:準備乾淨環境與工具
以下以 macOS/Linux 終端機為例。先依 llama.cpp 官方發行頁取得含 router 支援的當前 llama-server,再以 llama-server --help 確認本機程式接受 --models-dir、--no-models-autoload 與 --jinja。舊 CPU 的指令集也要和預編譯檔相容;若一啟動就出現非法指令,請換符合該機器的官方 build,而不是繼續測模型。
Node 版本合格後,Pi 的 npm 指令是 npm install -g --ignore-scripts @earendil-works/pi-coding-agent,接著用 pi --version 確認安裝。這一步會寫入你的全域 npm 位置;請先在專用測試帳號做。若想先看 Pi 和其他 Coding Agent 的分工,可參考 Hermes Agent 與 Coding Agent 的比較。
步驟 2:啟動 CPU 服務
建立模型目錄:mkdir -p "$HOME/models"。另開一個終端機,啟動 llama-server --models-dir "$HOME/models" --no-models-autoload --jinja --host 127.0.0.1 --port 8080 -ngl 0 -c 4096。這是把 Pi 官方 llama.cpp router 範例改為小上下文與零層 GPU offload 的 CPU 起步配置;保留這個視窗,觀察載入和錯誤日誌。127.0.0.1 只讓本機連線,別為了方便改成對外監聽。
注意:不要在這條 router 指令加 -m 或 --model;Pi 文件指出那會切成單模型模式。若命令的選項與你安裝的版本不合,先對照當前 llama-server --help 和官方文件,記下版本,再調整,不要照抄舊教學的參數。
步驟 3:用 Pi 下載、載入並選模型
在隔離的測試帳號啟動 Pi:pi。輸入 /login llama.cpp,router URL 用 http://127.0.0.1:8080。因為服務帶了 --no-models-autoload,連線完成後輸入 /llama,選擇下載模型,指定 inclusionAI/Ling-3.0-tiny-GGUF:Q4_K_M;等待下載與載入完成,再用 /model 選已載入的模型。這條路徑和命令都來自 Pi 的本機模型文件;官方 GGUF 頁可供你核對量化名稱。
如果下載中斷或載入失敗,先看服務日誌與磁碟剩餘空間;若是 RAM 不夠,先關閉其他程式、保留 Q4_K_M,別直接換更大的 Q6。/llama 也能卸載模型;Pi 文件說它不會默默刪除已下載的檔案。
固定小任務:讓工具呼叫留下可驗收結果
先用一般終端機在專用測試帳號建立空資料夾,例如 mkdir -p "$HOME/ling-pi-lab" && cd "$HOME/ling-pi-lab"。建立 orders.csv,內容是第一行 amount,接著三行分別為 12、8、5。這裡的數字是測試資料,不是模型表現。
在這個資料夾重新啟動 pi,給它一個精確任務:「請讀取 orders.csv,建立 total.py:接收 CSV 路徑作為唯一參數,讀取 amount 欄,將整數加總後只輸出總和。使用 Python 標準函式庫,不安裝套件。完成後實際執行 python3 total.py orders.csv,回報輸出與你改的檔案。」如果資料夾中有你不認識的設定或擴充套件,先檢查 Pi 的專案信任提示;隔離帳號比只換資料夾更重要。
預期的驗收命令由你自己執行:test "$(python3 total.py orders.csv)" = 25。再建立只有表頭 amount 的 empty.csv,執行 test "$(python3 total.py empty.csv)" = 0。兩條命令都回傳成功、total.py 確實存在且內容合理,才算交付。若第一個通過、第二個失敗,記錄為「部分完成」,讓 Pi 看錯誤後修一次;不要把它口頭宣稱的完成當成成功。
觀察 Pi 畫面或其 JSONL session 檔格式:模型是否選了讀檔、寫檔、執行命令,工具回傳後是否修正程式。可記下 llama-server 的版本、GGUF 量化、CPU 型號、RAM、-c、初次載入時間、整段任務時間、輸出 tokens/s(若服務日誌有提供)、最高記憶體與 swap、兩個測試結果、一次錯誤。沒有量到的欄位寫「未量」,不要補估計值。
怎麼判斷值得繼續?把速度、正確率與風險分開
- 先看正確:兩個本機命令是否真的通過?若 Pi 只給了一段看似正確的程式、沒有寫檔或沒有跑命令,這次屬於工具流程未完成。
- 再看等待:用同一份 CSV、同一 prompt、同一量化與上下文重跑;把首次載入和生成時間分開。Reddit 的 20 分鐘/10 tokens/s 只代表作者當時的那台 2017 年 i5、8GB、Q6 配置,不能和你的 Q4_K_M 起點直接比較。
- 最後看負擔:持續 swap、系統卡頓或服務因記憶體終止,比模型回答稍慢更能說明這台機器的邊界。降低同時開啟的程式與上下文後若仍如此,就換更小模型或改用遠端推論,不要把 8GB 當成硬闖指標。
模型卡裡的廠商速度與基準測試使用其他硬體、量化與測試設定,無法推導舊 Intel CPU 的任務耗時。比較本機小模型與其他路線時,可把同一工作交給你已在用的工具,照同一組檔案與測試評估;本機小模型與工具能力與 Coding Agent 的取捨可幫你擴充選型視角。
常見坑:看見它會說,不等於它會做
1. 模型載入時就卡死?
先核對官方 GGUF 名稱及檔案大小,再檢查可用 RAM、swap 與服務日誌。Q4_K_M 只是較小的官方選項;若載入仍不穩,這台機器對這個組合的測試結果就是「資源不足」。
2. Pi 只回答文字,沒有讀檔或跑命令?
核對服務有 --jinja、Pi 已選到已載入模型,以及 session 裡有無工具呼叫事件。llama.cpp 文件說工具格式可透過 Jinja 處理,但具體模型的選工具品質要靠你的固定任務驗收;語言流暢不能替代這一步。
3. 跑一半說上下文滿了?
先縮短任務、只給必要檔案。-c 4096 是為 8GB RAM 探路的設定;若 Pi 的提示和工具結果需要更多上下文,而 RAM 還有空間,可在重啟服務後逐步增加。記住新舊 -c 的結果不能混成同一組速度比較。
FAQ:新手最常問的 8 件事
Q1:8GB 一定跑得動嗎?
不一定。官方 Q4_K_M 檔案約 4.82 GB,實際還要容納上下文與系統負擔。以能否穩定載入、無持續 swap、固定任務通過為準。
Q2:1.3B 啟用參數等於只要 1.3B 的記憶體嗎?
不是。模型卡同時列出 7.9B 總參數;每 token 啟用量描述的是計算路徑,不能當成整包權重只佔 1.3B 的證明。
Q3:為什麼從 Q4_K_M 而不是 Q6 開始?
先留記憶體餘裕。官方 GGUF 檔案分別約 4.82 GB 和 6.5 GB。社群作者用 Q6 跑完一次,不表示你的 8GB 系統也有相同餘裕。
Q4:Pi 會每次執行前問我嗎?
不要依賴逐次確認。Pi 官方安全文件說它不會對每個工具呼叫要求批准;把帳號、檔案、憑證與網路權限限制在測試所需範圍。
Q5:只建立測試資料夾算沙盒嗎?
不算。Pi 官方文件明確指出工作資料夾無法阻止同一程序讀取帳號本來能讀到的其他路徑;獨立帳號、容器或 VM 才能形成更實在的邊界。
Q6:模型寫出答案就算任務成功嗎?
不算。本題要看到實際檔案、工具呼叫和兩條你親自跑過的檢查。模型最後一句「完成」只是報告。
Q7:10 tokens/s 和 20 分鐘是預期值嗎?
不是。那是 Reddit 原作者對一台 2017 年 i5、8GB、Q6 環境的自述;任務、CPU、上下文和量化都會改變結果。
Q8:如果 8GB 跑不起來,這篇還有用嗎?
有。同一固定任務與驗收表可以拿去測更小的 GGUF 或遠端模型,分辨是記憶體、工具格式,還是模型改碼品質出了問題。
給新手的 5 個重點
- 記住公式:模型想下一步,llama.cpp 服務回答,Pi 才能操作檔案與命令。
- 先用官方 Q4_K_M 和小上下文探路,把檔案大小與實際 RAM 分開。
- 用獨立帳號或隔離環境測,工作資料夾本身不是安全邊界。
- 把固定 CSV 任務的工具呼叫、檔案、兩項測試和資源記錄留存。
- 若持續 swap 或任務沒有進展,停止並換路線;不要把社群單次速度當保證。
接著閱讀
左右滑動查看更多推薦
結語:先證明能交付,再談換模型
Ling 3.0 Tiny+Pi 的有趣之處,是讓一台老機器也有機會把「生成文字」接成「修改檔案、執行命令、看回饋」的循環。真正的答案不在參數量或別人的 20 分鐘,而在你的收據:同一個小任務,工具有動、檔案有變、測試有過,機器也撐得住。先在隔離環境跑完上述 CSV 練習,記下失敗樣本,再決定是否把它放進日常工作;若想繼續系統學習 AI 工具,可從 AlphaLab 課程挑一條適合自己的路線。






