把舊遊戲卡變成本地 AI 程式助手

把舊遊戲卡變成本地 AI 程式助手

📌 本文重點

  • 16GB 顯卡即可本地跑 Qwen 3.8-27B 程式助手
  • llama.cpp + MTP 把長上下文推理速度壓到可用
  • 少數高階指令即可讓 Agent 自動讀 repo、寫 code、跑測試

用一張 16GB 顯卡,把 Qwen 3.8-27B 跑在自己機器上,變成一個能讀 repo、寫 code、自己跑測試的本地程式助手。


核心功能:這套組合能幫你做什麼?

1. 在 16GB 顯卡上跑 27B 長上下文 Agent

  • Qwen 3.8-27B 是阿里開源的大模型,在 Reddit 實測 裡,表現接近商用雲端模型,特別擅長長上下文推理和實務知識。
  • 社群已針對 16GB VRAM 做過完整配置分享,可在 73k context 下跑 agentic coding,單專案可吃超過百萬 token 歷史。參考設定。
  • 透過 GGUF 量化 + cache 量化,搭配 CPU RAM,把 27B 模型擠進「遊戲卡 + 小主機」這種平價組合。

💡 關鍵: 只要 16GB 顯卡就能在本地處理 73k 以上長上下文,支援單專案百萬 token 歷史。

你可以做的:
– 把原本只能打遊戲的 16GB 顯卡,變成一台完全離線的 AI 程式助手。
– 不依賴雲端,內網就能讓 AI 幫你寫 CLI 工具、重構專案。


2. llama.cpp v0.1.0 + FastMTP / adaptive MTP:把延遲壓到能用

  • llama.cpp v0.1.0 是穩定版,支援多平台(Windows / Linux / macOS / Apple Silicon),對 GGUF 模型友善。版本連結
  • HauhauCS 的 FastMTP(多 token 預測)在 Qwen 3.8-27B 上可達 3 倍輸出速度提升:模型頁面。
  • llama.cpp 的 adaptive MTP(PR#27210)會依情境自動調整 MTP 深度:簡單部分快出,多步推理時才放慢,代碼生成速度可提升 10–50%。

💡 關鍵: 結合 FastMTP 與 adaptive MTP,可以把原本「一秒一 token」的體驗提升到實際可用的程式生成速度。

你可以做的:
– 在同一台機器上,從「一秒一 token」變成「可以實際用來寫 code」的速度。
– 不用糾結 MTP 數字,用 adaptive 模式就能有不錯的平衡。


3. 真正的「Agent」:少數幾個高階提示就能跑完整專案

  • Qwen 3.8-27B 在所謂 medium reasoning 模式下,對「代理式編碼」特別吃香:實測 benchmark 顯示,比 xhigh 模式更省 token、更少請求,完成度相近。
  • 你只要給它幾個高階指令(例如:讀 repo、規劃任務、按計畫實作),讓它自己呼叫 shell/測試,就能完成一個小專案。

你可以做的:
– 把它當成「本地版 Cursor Agent」:讓它自己看專案、拆任務、寫程式、跑測試。


適合誰用?

  • 個人開發者 / 接案工程師:
  • 想用 Qwen 3.8-27B 協助寫後端 / CLI 工具,但又不想每月付雲端費用。
  • 例:在家用 3060 16GB + N100 補一台小主機,做本地私有助手。

  • 公司內部專案:

  • 需要把專案 code、內部文件給 LLM 看,但有資料不出防火牆的限制。
  • 例:在 CI/CD server 上掛一個 Qwen Agent,協助寫腳本、改 pipeline。

  • AI 工具愛好者 / 自架控:

  • 喜歡試不同量化、推理引擎,把效能擠到極限。
  • 例:對比 medium reasoning + adaptive MTP vs xhigh + 固定 MTP 的速度與品質差異。

工具與環境:一次給你可複製的配置

1. 必要硬體與系統建議

最低建議(接近 Reddit 實測環境):

  • GPU:RTX 4060/5060 Ti 16GB,或同級 16GB 顯卡
  • CPU:Intel N100 以上(有 AVX2 更好)
  • RAM:32GB(推薦 48GB+,上下文拉長時更穩)
  • 系統:Ubuntu 22.04 / Windows 11(本文以 Linux 命令為例)

行動:檢查自己機器:

nvidia-smi  # 看 VRAM 容量
free -h     # 看 RAM

2. 模型與 llama.cpp 安裝

Step 1:抓 llama.cpp v0.1.0

git clone https://github.com/ggml-org/llama.cpp.git
cd llama.cpp
git checkout v0.1.0
make -j$(nproc)

Step 2:下載 Qwen 3.8-27B GGUF

建議用 HauhauCS Aggressive + MTP 版本:

下載範例(用 hf_hub_download 或直接瀏覽器下載):

mkdir -p models/qwen-3.8-27b
# 將下載好的 .gguf 放進這個資料夾
mv ~/Downloads/Qwen3.8-27B-*-Q5_K_M.gguf models/qwen-3.8-27b/

3. 實測好用的啟動指令(16GB VRAM)

下面是一個可直接用來跑 Agent 的作者實測配置(參考自 1M+ token 實作):

./bin/llama-server \
  -m models/qwen-3.8-27b/Qwen3.8-27B-*-Q5_K_M.gguf \
  --ctx-size 73000 \
  --batch-size 512 \
  --n-gpu-layers 45 \
  --gpu-layers-split auto \
  --cache-type-k q8_0 \
  --cache-type-v q8_0 \
  --no-mmap \
  --temp 0.8 \
  --top_p 0.9 \
  --seed 42 \
  --mtl 4 \
  --mtp-adaptive

關鍵說明:

  • --ctx-size 73000:長上下文,適合讀整個 repo。
  • --cache-type-k/v q8_0:cache 量化,換取更大上下文與速度。
  • --mtp-adaptive:啟用 adaptive MTP,自動調整多 token 推理深度。
  • --mtl 4:多執行緒,視 CPU 調整(8 核可用 6–8)。

行動:啟動後,瀏覽器開 http://localhost:8080,確認模型可以互動,再往下走 Agent Workflow。


Workflow 示範:讓本地 Qwen 自己寫一個 CLI 工具

目標:寫一個「掃描專案中 TODO 註解並輸出報表」的 Python CLI 工具,讓 Agent 自己:

  1. 讀 repo
  2. 規劃任務
  3. 分步撰碼
  4. 呼叫 pytest 或自訂測試

1. 準備一個 repo + agent shell

假設你的專案在 ~/projects/todo-cli:

cd ~/projects/todo-cli
python -m venv .venv
source .venv/bin/activate
pip install pytest

準備一個簡單的「Agent shell」腳本(例如 agent_shell.py),透過 HTTP 調用 llama.cpp,並允許它執行有限制的 shell 指令:

import subprocess, json, requests, os

API_URL = "http://localhost:8080/completion"

ALLOWED_CMDS = ["pytest", "python", "ls", "cat"]

def call_llm(prompt):
    payload = {
        "prompt": prompt,
        "max_tokens": 512,
        "temperature": 0.7
    }
    r = requests.post(API_URL, json=payload)
    return r.json()["content"]

def run_cmd(cmd):
    if cmd.split()[0] not in ALLOWED_CMDS:
        return "[blocked command]"
    return subprocess.run(cmd, shell=True, capture_output=True, text=True).stdout

if __name__ == "__main__":
    while True:
        user = input("You> ")
        if user.strip() == "exit":
            break
        resp = call_llm(user)
        print("Agent>", resp)

行動:確保你能從命令列下指令,讓 Agent 先以「聊天模式」回答,再逐步加上工具使用(shell 執行)。


2. 用高階提示引導 Qwen 變成程式助手

示範系統提示(可貼進 Web UI 或 agent_shell 的第一個請求):

你是一位本地程式助手,目標是在不依賴外網的情況下,完成整個專案開發流程。

能力與規則:
1. 你可以要求我執行指令,例如:`RUN: pytest`、`RUN: ls`、`RUN: cat filename`。
2. 每次回答時,如果需要實際操作,請先說明要做什麼,再給出一行 `RUN:` 指令。
3. 每個階段先列出簡短計畫,再實作。
4. 對於程式碼修改,請輸出完整檔案內容,而不是差異片段。

接著,使用者只需幾個高階指令:

  1. 讀 repo + 規劃任務

text
請先用 `RUN: ls` 和 `RUN: find . -maxdepth 3` 理解專案結構,之後提出一個開發計畫:
目標是寫一個 `todo_report` CLI,掃描整個 repo 的 TODO 註解,輸出為 JSON 檔。

  1. 實作 CLI

text
依照你的計畫,先實作最小可用版本的 `todo_report`,用 Python 實作,並寫對應的 pytest 測試。

  1. 自動測試與修正

text
實作完成後,請要求我執行 `RUN: pytest`,你再根據測試結果修正程式。

你會看到的典型互動流程:

  • 模型要求 RUN: ls、RUN: cat ... → 你在 shell 中照做,把結果貼回給它。
  • 它產生 todo_report.py 完整檔案內容 → 你存檔。
  • 它產生測試檔 → 你存檔,執行 pytest,貼回錯誤訊息。
  • 迭代 2–3 輪,CLI 工具就完成了。

重點:整個過程你只下了 3–4 個高階指令,其餘由 Agent 自己規劃與修正。


進階調校:reasoning 模式、量化與「記憶」

1. medium vs xhigh reasoning:怎麼選?

根據 agentic coding benchmark:

  • medium reasoning:
  • 得分較高、請求數幾乎減半,生成 token 也少三分之一。
  • 非常適合「多輪小步」的代理任務(寫 code、修測試)。

  • xhigh reasoning:

  • 單次 prompt 的嚴苛推理題可能略好,但耗時、耗 token。

💡 關鍵: 實測顯示 medium reasoning 在代理式編碼中比 xhigh 更省時、省 token,完成度相近。

建議:

  • 本地 Agent 預設用 medium。
  • 偶爾需要「一次回答寫完一篇長文或複雜設計」時,再開 xhigh。

2. 量化與快取:怎麼不犧牲太多品質?

實用組合(16GB 卡):

  • 權重:Q4_K_M 起跳,追求品質用 Q5_K_M。
  • KV cache:q8_0 或 q6_K,在長上下文時性價比佳。

調整原則:

  • 若 VRAM 爆掉 → 降權重量化或減 --n-gpu-layers,讓更多層跑在 CPU。
  • 若輸出過慢 → 開 --mtp-adaptive 或固定 --mtp 3,配合 --batch-size 512 以上。

3. 延伸玩法:簡單「長期記憶」

你可以加一層「記憶層」,例如:

  • 使用簡單檔案索引:
  • 把重要檔案(設計文件、規格)摘要成短段落,存 JSON。
  • 開發時先用關鍵字搜尋相關摘要,附在 prompt 開頭,讓 Qwen 有「記憶」。

  • 像 ai-memory 那樣記錄對話:

  • 把每次對話中重要決策(例如:架構選擇、命名約定)存到 memory.md。
  • 每次新任務前,把 memory.md 摘要貼給模型。

行動:先在專案根目錄加一個 ai_memory/,把設計決策和重要檔案摘要集中存放,讓下一次 Agent 啟動時也能延續上下文。


怎麼開始:一鍵腳本 + 三個可套用 Prompt

1. 安裝腳本(Linux 範例)

# 安裝依賴\sudo apt update && sudo apt install -y build-essential git python3-venv

# 取得 llama.cpp v0.1.0
git clone https://github.com/ggml-org/llama.cpp.git
cd llama.cpp
git checkout v0.1.0
make -j$(nproc)

# 建立模型資料夾
mkdir -p models/qwen-3.8-27b
# 將從 Hugging Face 下載的 Qwen3.8-27B GGUF 放入上述資料夾

echo "完成:請下載 GGUF 模型到 models/qwen-3.8-27b,然後執行啟動命令。"

2. 一行啟動命令(可直接複製)

./bin/llama-server \
  -m models/qwen-3.8-27b/Qwen3.8-27B-*-Q5_K_M.gguf \
  --ctx-size 73000 --batch-size 512 --n-gpu-layers 45 \
  --cache-type-k q8_0 --cache-type-v q8_0 \
  --temp 0.8 --top_p 0.9 --mtl 4 --mtp-adaptive

3. 三個可直接用的 Agent prompt 範本

(1) Repo 讀取與理解

你是一位本地程式助手,目標是理解這個 repo 的結構與目的。
請:
1. 用 `RUN:` 指令要求我列出檔案與重要檔案內容。
2. 整理出專案用途、主要模組、依賴關係。
3. 最後輸出一段 <SUMMARY> ... </SUMMARY> 作為後續任務的簡要說明。

(2) 新功能開發(CLI 工具)

根據目前 repo 的內容,規劃並實作一個新 CLI 工具:
需求:{在此描述}
步驟:
1. 先列出開發計畫(檔案變更列表)。
2. 依序產出完整檔案內容。
3. 為新功能撰寫至少一個 pytest 測試。
每個階段如果需要檔案內容或測試結果,請用 `RUN:` 指令要求我執行。

(3) 重構與程式碼審查

請針對這個模組進行重構,目標:
- 提升可讀性
- 避免重複邏輯
- 保持對外 API 不變
流程:
1. 要求我貼上目前檔案內容。
2. 提出重構建議清單。
3. 輸出重構後的完整檔案。
4. 建議或修改對應的測試。

照著這套流程,你今天就能把舊遊戲卡升級成一個能讀 repo、寫 code、自己跑測試的本地 Qwen 3.8 程式助手。


🚀 你現在可以做的事

  • 在自己的機器上執行 nvidia-smi 和 free -h,確認硬體是否符合 16GB VRAM + 32GB RAM 的建議配置
  • 按文中步驟安裝 llama.cpp v0.1.0,下載 Qwen 3.8-27B GGUF 到 models/qwen-3.8-27b 並用啟動指令跑起來
  • 在一個現有 repo 中建立 agent_shell.py,貼上提供的系統 prompt,實際讓本地 Qwen 幫你完成一個小型 CLI 工具或重構任務

留言

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *