
איך להקים סוכן קוד מקומי ב-macOS עם Gemma 4 ו-llama.cpp
קייל האוולס מתעד מערך סוכן קוד מקומי ל-macOS: llama.cpp עם Metal, Gemma 4 26B-A4B, מודל טיוטה ספקולטיבי MTP ו-Pi. מהירות היצירה עלתה מ-58.2 ל-72.2 טוקנים בשנייה.
למה להריץ סוכן קוד מקומית
קייל האוולס נותר כמה פעמים בלי אינטרנט ובלי סוכן קוד, ולכן כשנתקל בעדכון „Gemma 4 רצה כעת פי 2 מהר יותר עם MTP“ בנוגע לחיזוי ריבוי טוקנים, החליט להריץ סוכן על ה-Mac שלו.
הדרישות היו מעשיות: מהירות שמאפשרת עבודה אמיתית; API תואם OpenAI כדי שכלים אחרים יוכלו לדבר איתו; ותמיכה בצילומי מסך ותמונות, כדי שאפשר יהיה להראות לסוכן תמונה של מה שהוא בנה.
המערך שנבחר בסוף
ההרכב הסופי: llama.cpp שנבנה עם Metal ב-macOS; Gemma 4 26B-A4B בפורמט GGUF; מודל טיוטה Q8 MTP לפענוח ספקולטיבי; מקרן מולטימודלי של Gemma 4; ו-Pi כסוכן הקוד הטרמינלי. הבדיקות נעשו על Apple M1 Max עם 64 ג'יגה-בייט זיכרון מאוחד והרצת macOS 15.7.7.
המודל הראשי הוא gemma-4-26B-A4B-it-UD-Q4_K_XL.gguf ממאגר Unsloth ב-Hugging Face, כ-16 ג'יגה-בייט; עם מודל הטיוטה והמקרן התיקייה גדלה לכ-17 ג'יגה-בייט. הבנצ'מרק השתמש בפרומפט אחד — פונקציית Python קומפקטית שמפרסת unified diff — עם כ-128 טוקנים בכל הרצה.
MTP מאיץ את היצירה בכ-24%
llama.cpp בסיסי עם האצת Metal הגיע ל-298.0 טוקני פרומפט בשנייה ול-58.2 טוקני יצירה בשנייה — שמיש, אך איטי לסוכן שמרבה לקרוא לכלים. הוספת מודל הטיוטה Q8 MTP העלתה את היצירה ל-72.2 טוקנים בשנייה. האוולס סרק את אורך הטיוטה מ-1 עד 6: הערך 3 היה המהיר ביותר (72.2), הערך 2 היה כמעט זהה (72.0), וערכים גבוהים יותר ירדו ל-63.7 ול-61.2. עיבוד הפרומפט נותר כמעט ללא שינוי — כ-296 טוקנים בשנייה — וההאצה הכוללת היא פי 1.24.
הוא השווה גם ל-MLX-LM, בציפייה שדווקא הוא ינצח על חומרת Mac: ההרצה הטובה ביותר ב-MLX הגיעה ל-45.8 טוקנים בשנייה, וגרסאות 4-bit קהילתיות היו איטיות עוד יותר — 43.9 ו-38.1. ניסיון להשתמש ב-MTP דרך gemma-4-swift-mlx נכשל, משום שנקודות השמירה של 26B ב-4-bit לא תאמו את מפתחות המשקלים שהטוען ציפה להם.
תמונות, התקנה והחלופה Qwen
לצילומי מסך שרת llama.cpp זקוק למקרן המולטימודלי של Gemma 4, שכן רק דגם ה-12B הוא מולטימודלי מטבעו; עם המקרן השרת מצהיר על תמיכה מולטימודלית ו-Pi יכול לשלוח תמונות. גם רשומת המודל ב-Pi חייבת לכלול טקסט ותמונה, אחרת פלט כלים עם תמונות לא נשלח למודל. הרצה חוזרת של הבנצ'מרק הטקסטואלי עם המקרן לא הראתה האטה.
הבנייה סטנדרטית: מתקינים cmake, git, tmux ו-Python 3.11 ב-Homebrew, מהדרים את llama.cpp עם Metal ו-Accelerate, מורידים את המודל, את טיוטת ה-MTP ואת mmproj-BF16.gguf, ואז מפעילים llama-server על 127.0.0.1:8080 עם --spec-type draft-mtp, --spec-draft-n-max 3 והקשר של 65,536 טוקנים. כך מתקבל endpoint תואם OpenAI בכתובת /v1, שאליו Pi מפנה ב-models.json שלו.
המסקנה: מודל הטיוטה MTP שווה שימוש — הוא מעלה את Gemma 4 מ-58.2 ל-72.2 טוקנים בשנייה ומשאיר את המערך פשוט. הוא מזכיר הצעה נפוצה לעבור ל-Qwen3.6 35B-A3B: הבנצ'מרקים שמצא מראים ש-Qwen טוב יותר כסוכן קוד, אך איטי יותר — כ-55 טוקנים בשנייה באותה תצורה, לעומת 72 ב-Gemma 4.
SiTech — פיתוח אתרים בכוח ה-AI
אנחנו בונים אתרים מהירים ומודרניים ומשלבים AI בתהליכי עבודה אמיתיים. יש לכם פרויקט או שאלה? נשמח לעזור.