SSD Nodes Learn 🎉 VPS החל מ־$5.50/חודש
מדריכים Matt Connorמאת Matt Connor · עודכן 2026-08-13

איך לחבר סוכן קידוד ל-Ollama: מדריך הגדרות מלא

למדו כיצד להגדיר base URL ו-API key פיקטיבי כדי להריץ סוכן קידוד מקומית. המדריך מפרט את מגבלות ה-context length, הגדרות ה-keep-alive והמשימות שבהן מודל מקומי מנצח.

מהות החיבור

ניתן להשתמש ב-Ollama יחד עם סוכן הקידוד שלכם, והחיבור פשוט מכפי שנהוג לחשוב. עליכם לשנות כתובת בסיס (base URL) אחת ולבחור שם מודל אחד. שדה ה-API key עדיין דורש ערך, אך השרת המקומי מתעלם ממנו, לכן כל מחרוזת תקינה.

Ollama מאזין בפורט 11434 ומגיש שני מבני בקשות במקביל. /v1/chat/completions הוא המבנה התואם ל-OpenAI, והתיעוד של Ollama מציין כי המפתח שם נדרש אך אינו בשימוש. /v1/messages הוא המבנה התואם ל-Anthropic, שבו משתמש Claude Code. הסוכן שלכם כבר תומך באחד משני המבנים הללו, לכן אין צורך בשינויים נוספים.

חלק זה אורך חמש דקות. השאלה אם התוצאה שמישה תלויה בשתי הגדרות שכמעט איש אינו משנה: אורך ההקשר (context length) וה-keep-alive, וכן בהקצאת סוג המשימות שהמודל מיטיב לבצע. שניהם יפורטו בסעיפים נפרדים, והמגבלות הריאליות מופיעות בסוף.

אילו סוכני קידוד תומכים ב-base URL מקומי

המבחן הוא שאלה אחת: האם הכלי חושף הגדרה של base URL? אם כן, הוא יכול לתקשר עם השרת שלכם.

Ollama מפרסמת דפי אינטגרציה עבור Claude Code, OpenCode, Codex, Cline, Roo Code, Zed, סביבות פיתוח של JetBrains ו-VS Code. הכלי Aider מתעד את התמיכה שלו ב-Ollama בנפרד. זה מכסה את רוב מה שאנשים מתכוונים אליו כשהם אומרים "סוכן קידוד" באוגוסט 2026. לא כולם מדברים באותה שפה, וההבדל הזה הוא המקום שבו הגדרות נכשלות.

  • רוב הסוכנים דורשים endpoint תואם OpenAI. ספקו להם את ה-base URL ‏http://localhost:11434/v1 וכל מחרוזת API key שאינה ריקה.
  • הכלי Claude Code אינו מקבל base URL של OpenAI כלל. הוא משתמש ב-Anthropic Messages API, לכן הוא דורש ש-ANTHROPIC_BASE_URL יוגדר ל-http://localhost:11434, כאשר Ollama מגישה את /v1/messages.
  • הכלי Codex משתמש ב-OpenAI Responses API. Ollama מגישה גם את /v1/responses, שנוסף בגרסה 0.13.3.
  • סוכן ללא הגדרת base URL לא ניתן להפניה מחדש, כיוון שה-endpoint מוטמע בתוך הלקוח. הציבו שכבת תרגום מלפנים, כגון gateway מסוג LiteLLM באירוח עצמי, וחשפו מחדש את המודל שלכם בפורמט שהלקוח דורש.

Ollama יכולה לכתוב עבורכם את קובצי התצורה הללו. הפקודה ollama launch opencode מפעילה את OpenCode עם תצורה מוטמעת עבור המודל שתבחרו, ollama launch claude עושה את אותו הדבר עבור Claude Code, ו-ollama launch droid --config כותבת את התצורה מבלי להפעיל את הכלי.

התקנת Ollama ומשיכת מודל התומך בקריאה לכלים

curl -fsSL https://ollama.com/install.sh | sh
systemctl status ollama --no-pager
ollama pull qwen3-coder:30b
ollama ls

המתקין מוסיף יחידת systemd ומפעיל אותה, לכן systemctl status ollama אמור להציג active (running). אם הוא לא מציג זאת, journalctl -e -u ollama יציג את הסיבה לכך.

על המודל לתמוך בקריאה לכלים (tool calling), שכן זו הדרך שבה סוכן (agent) פועל. הוא קורא קובץ, כותב תיקון (patch), מריץ את הבדיקה, ולאחר מכן קורא את השגיאה ומנסה שוב. מודל שאינו מסוגל להפיק קריאה לכלי יתאר את העריכה בטקסט חופשי במקום לבצע אותה, והסוכן ייתקע בלולאה או ייעצר. חפשו את התווית tools בדף של המודל באתר ollama.com לפני המשיכה. הגרסה qwen3-coder:30b כוללת תמיכה זו, ונכון לאוגוסט 2026, תג זה הוא הורדה של 19 GB עם חלון הקשר (context window) של 256K. אם השרת שלכם מבוסס CPU בלבד או שחסר בו זיכרון RAM, חישובי הזיכרון עבור התג Qwen 27B בשרת VPS מראים מה באמת נכנס בטווח של 8 עד 64 GB לפני שתבצעו את ההורדה.

כעת ודאו אילו שמות השרת מגיש בפועל:

curl http://localhost:11434/v1/models

המחרוזות בתגובה זו הן מה שתצורת הסוכן שלכם חייבת להכיל, תו אחר תו. בדיקה זו מראש פותרת את רוב השגיאות מסוג "מודל לא נמצא". אם Ollama טרם הותקן, המדריך המלא נמצא ב-אירוח עצמי של LLM עם Ollama על גבי VPS.

הגדרת OpenCode לעבודה מול Ollama

ערוך את ~/.config/opencode/opencode.json:

{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "ollama": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "Ollama",
      "options": {
        "baseURL": "http://localhost:11434/v1"
      },
      "models": {
        "qwen3-coder:30b": {
          "name": "qwen3-coder 30b"
        }
      }
    }
  }
}

המפתח תחת models הוא שם המודל שנשלח ל-Ollama, לכן עליו להתאים בדיוק ל-ollama ls. השדה name הוא רק התווית שמופיעה בבורר המודלים. הפעל את opencode, עבור לספק Ollama, ונטר את journalctl -e -u ollama כדי לוודא שהבקשה הגיעה לשרת שלך ולא למקום אחר. הגדרת הסוכן עצמו מפורטת ב-הרצת OpenCode על גבי VPS.

הפניית Claude Code אל Ollama

export ANTHROPIC_AUTH_TOKEN=ollama
export ANTHROPIC_API_KEY=""
export ANTHROPIC_BASE_URL=http://localhost:11434
claude --model qwen3-coder:30b

המשתנה ANTHROPIC_API_KEY מוגדר כמחרוזת ריקה במכוון. השארת מפתח אמיתי בסביבת העבודה תגרום לשליחת הבקשות ל-API המארח, מה שיוביל לחיוב כספי במקום להסקה מקומית. הפקודה ollama launch claude מגדירה עבורכם את כל אלו.

עליכם להכיר את המגבלות של שכבת התאימות. היא אינה מממשת את tool_choice או את מנגנון ה-prompt caching, ואין לה נקודת קצה לספירת אסימונים (tokens), לכן מספרי האסימונים שאתם רואים הם הערכות המבוססות על ה-tokenizer של המודל עצמו. Claude Code כולל גם system prompt גדול וסט כלים רחב, ולכן הוא דורש הקשר (context) גדול יותר מאשר לקוח צ'אט רגיל. השאלה הרחבה יותר לגבי מה עובר ומה לא מכוסה ב-האם ניתן לארח את Claude באופן עצמי.

הפניית Aider אל Ollama

export OLLAMA_API_BASE=http://127.0.0.1:11434
aider --model ollama_chat/qwen3-coder:30b

התיעוד של Aider ממליץ על הקידומת ollama_chat/ במקום ollama/. הוא גם מאפשר להגדיר את חלון ההקשר (context window) לכל מודל בנפרד בתוך .aider.model.settings.yml, דבר שימושי כאשר מודל מסוים דורש חלון שונה מברירת המחדל של השרת:

- name: ollama_chat/qwen3-coder:30b
  extra_params:
    num_ctx: 65536

מדוע הגדרה תקינה עדיין מפיקה פלט חסר משמעות

זהו החלק החשוב ביותר. Ollama בוחרת אורך הקשר (context length) ברירת מחדל על בסיס ה-VRAM (זיכרון הווידאו ב-GPU) שהיא מזהה, וערכי ברירת המחדל הללו מפורסמים:

ChartOllama default context length by available VRAM, documented August 2026
The data behind this chart
[
  {
    "label": "Under 24 GiB VRAM",
    "default_context_tokens": "4,096"
  },
  {
    "label": "24 to 48 GiB VRAM",
    "default_context_tokens": "32,768"
  },
  {
    "label": "48 GiB VRAM or more",
    "default_context_tokens": "262,144"
  }
]

רוב תוכניות ה-VPS, וכל שרת מבוסס CPU בלבד, נופלים בשורה הראשונה: 4,096 טוקנים. רק GPU גדול מקבל את ה-262,144 טוקנים שבשורה האחרונה.

סוכן (agent) מעביר 4096 טוקנים לפני שהוא מבצע עבודה כלשהי. ה-system prompt, הגדרות הכלים, רשימת ה-repository והקובץ הראשון שהוא פותח כבר גדולים מכך. מה שקורה לאחר מכן הוא לב הבעיה: לא מתקבלת שגיאה. התיעוד של Aider מציין כי Ollama משליכה בשקט הקשר שחורג מהחלון. הטוקנים הישנים ביותר נמחקים, ולכן המודל עונה בביטחון על קובץ שהוא כבר לא יכול לראות, או שוכח הוראה שנתת שני שלבים קודם לכן. מנגנון זה עומד מאחורי רוב הדיווחים על כך שמודל מקומי "טיפש מדי" מכדי לכתוב קוד.

התיעוד של Ollama מציין שמשימות כמו סוכנים וכלי כתיבת קוד צריכות להיות מוגדרות ל-64000 טוקנים לפחות. הגדירו זאת בשרת:

sudo systemctl edit ollama.service

הוסיפו את השורות הבאות לקובץ ה-override:

[Service]
Environment="OLLAMA_CONTEXT_LENGTH=64000"

לאחר מכן בצעו טעינה מחדש והפעלה מחדש:

sudo systemctl daemon-reload
sudo systemctl restart ollama
ollama ps

ollama ps הוא הבדיקה. הוא מדפיס עמודת CONTEXT, ומספר זה הוא מה שהמודל קיבל בפועל. ה-ID וה-SIZE שלכם יהיו שונים:

NAME               ID              SIZE     PROCESSOR    CONTEXT    UNTIL
qwen3-coder:30b    a1b2c3d4e5f6    24 GB    100% GPU     64000      4 minutes from now

הגדירו זאת בשרת ולא בסוכן, משתי סיבות. בסכימת ה-chat completions של OpenAI אין שדה לאורך הקשר, לכן לקוח תואם-OpenAI לא יכול לבקש אחד כזה. בנוסף, ההגדרה היא ברמת השרת, כך שכל סוכן שתפנו לשרת יירש אותה. אם מודל מסוים זקוק לחלון שונה, צרו עותק שלו באמצעות Modelfile:

FROM qwen3-coder:30b
PARAMETER num_ctx 65536
ollama create qwen3-coder-64k -f Modelfile

הקשר אינו בחינם. חלון ארוך יותר צורך יותר זיכרון, לכן עקבו אחר עמודת PROCESSOR. 100% GPU הוא הערך הרצוי. ברגע שחלק מהמודל גולש ל-CPU, קצב הטוקנים יורד לרמה כזו שלולאת הסוכן הופכת לבלתי שמישה, ו-מדידת טוקנים לשנייה במודל שפה מקומי היא הדרך למצוא את הגבול האמיתי של השרת שלכם. התאמת גודל המכונה לפני הרכישה מוסברת ב-כמה RAM ו-CPU דרושים ל-VPS של סוכן כתיבת קוד.

שמירת המודל בזיכרון בין בקשות

כברירת מחדל, Ollama פורק מודל מהזיכרון 5 דקות לאחר הבקשה האחרונה. הגדרה זו מתאימה לצ'אט, אך אינה מתאימה לעבודה עם סוכנים. כאשר אתם עוצרים לקרוא diff, הטיימר ממשיך לרוץ, והבקשה הבאה תגרום לטעינה מחדש של עשרות גיגה-בייטים של משקולות מהדיסק לפני הופעת הטוקן הראשון. הדבר נחווה כקפיאה של המערכת.

OLLAMA_KEEP_ALIVE מקבל מחרוזת זמן כגון 10m או 24h, מספר שניות פשוט, -1 כדי לשמור את המודל בזיכרון ללא הגבלת זמן, או 0 כדי לפרוק אותו מיד. הגדירו זאת לצד אורך ההקשר (context length):

[Service]
Environment="OLLAMA_CONTEXT_LENGTH=64000"
Environment="OLLAMA_KEEP_ALIVE=-1"

שדה הבקשה keep_alive קיים רק בנקודות הקצה המקוריות של Ollama, /api/generate ו-/api/chat, ולא בנקודות הקצה התואמות, לכן סוכן אינו יכול להגדיר זאת עבור כל בקשה בנפרד. משתנה הסביבה הוא הכלי היחיד העומד לרשותכם. כאשר תזדקקו לזיכרון בחזרה, ollama stop qwen3-coder:30b יפרוק את המודל מבלי לעצור את השרת.

הרצת Ollama על שרת נפרד

Ollama מאזין כברירת מחדל ל-localhost. כדי לגשת אליו ממכונה אחרת, הגדירו את OLLAMA_HOST=0.0.0.0:11434 בתוך אותו systemd override ובצעו הפעלה מחדש לשירות.

בצעו זאת אך ורק ברשת פרטית. התיעוד של Ollama מציין כי לא נדרש אימות עבור ה-API המקומי, לכן פורט 11434 פתוח לאינטרנט משמעו שכל אחד יכול להשתמש בחומרה שלכם ולקרוא כל מידע שהסוכן שלכם שולח. קיימות שתי אפשרויות בטוחות. השאירו את ה-bind על localhost ובצעו העברת פורט (port forwarding) באמצעות SSH מהמחשב הנייד שלכם:

ssh -N -L 11434:localhost:11434 you@your-vps

הסוכן שלכם ימשיך להצביע על http://localhost:11434/v1 ולא יבחין בהבדל. האפשרות השנייה היא שימוש ב-VPN, כאשר Ollama מאזין לכתובת ה-VPN במקום ל-0.0.0.0. אם כמה אנשים או כמה סוכנים יחלקו שרת אחד, ה-scheduler של Ollama אינו בנוי לעומס כזה, ו-ההשוואה בין Ollama לבין vLLM מראה היכן מתחילים להרגיש את ההבדל בתפוקה.

מתי מודל קידוד מקומי מנצח, ומתי לא

סוכן המונע על ידי מודל שאתם מארחים אינו מחליף API חזיתי בכל משימה. הוא מנצח בבירור בארבעה סוגי עבודה:

  • עריכות מכניות מרובות, שבהן כל שינוי הוא קטן וניתן לבדיקה. שינוי שמות ברחבי ה-repository, הוספת type hints, כתיבת docstrings, ותרגום הערות. המודל רץ במשך שעות והחשבון אינו משתנה.
  • עבודה שאסור לה לצאת מהחומרה שלכם. קוד לקוח תחת הסכם סודיות, או repository פנימי שאסור לכם לשלוח לצד שלישי.
  • מכונות במצב Offline או מנותקות מהרשת (air-gapped), שבהן אין כלל API מאוחסן שאפשר לקרוא לו.
  • עלות צפויה. ברגע שהשרת שולם, סוכן ששורף tokens בלולאה אינו עולה דבר נוסף, בניגוד ל-API מבוסס תשלום לפי שימוש. איפה שרת GPU VPS הופך למשתלם לעומת עלות tokens של API מציג את החישובים.

הוא מפסיד במשימות ארוכות מרובות שלבים. "מצא מדוע הבדיקה הזו נכשלת, תקן את הסיבה, עדכן את הקוראים" דורש קריאות כלי (tool calls) רבות ומדויקות ברצף, כאשר כל ההיסטוריה נשארת בהקשר. מודל בטווח של 8B עד 14B על שרת צנוע ייצר קריאת כלי שגויה, או יאבד את התוכנית לאחר כמה סבבים, ואתם תבזבזו יותר זמן בניווט שלו מאשר המשימה הייתה לוקחת. זו אינה בעיית prompt שניתן לפתור באמצעות כתיבה טובה יותר. זו בעיית קיבולת.

הוא מפסיד גם בכל פעם שטעות היא יקרה ואתם לא מתכוונים לקרוא כל שורה. תנו למודל המקומי משימות צרות שהפלט שלהן ניתן לאימות, ושמרו מודל מאוחסן עבור עבודה שלא הייתם בודקים צעד אחר צעד.

מצבי כשל והודעות שיופיעו

curl: (7) Failed to connect to localhost port 11434 after 0 ms: Connection refused. השרת אינו פועל, או שהסוכן מוגדר להצביע על מארח אחר. הריצו את systemctl status ollama, ולאחר מכן את journalctl -e -u ollama.

הסוכן מדווח שהמודל אינו קיים. השם בקובץ התצורה שלכם אינו תואם לשם שהשרת מגיש. השוו אותו מול curl http://localhost:11434/v1/models והעתיקו את המחרוזת משם. ה־tag הוא חלק מהשם, לכן תצורה המציינת tag שמעולם לא הורד תיכשל, גם אם מותקן מודל דומה.

הסוכן עונה בטקסט חופשי ולעולם אינו עורך קובץ. או שלמודל אין תמיכה ב־tools, או שהבקשה בצירוף הגדרות הכלים שלה כבר ממלאת את חלון ההקשר (context window). בדקו את התווית tools בדף המודל, ולאחר מכן בדקו את העמודה CONTEXT בתוך ollama ps.

שתיקה ארוכה לפני ה־token הראשון, ואז מהירות רגילה. ה־keep-alive פג והמשקולות (weights) נקראות שוב מהדיסק. הגדירו את OLLAMA_KEEP_ALIVE.

המודל סותר קובץ שהוא בדיוק קרא. קיטום הקשר (context truncation). ollama ps מציג בדרך כלל ערך CONTEXT קטן ממה שחשבתם שהגדרתם, כיוון שמשתנה הסביבה הגיע ל־shell שלכם במקום ליחידת ה־systemd.

הכל עובד, לאט, ו־PROCESSOR אינו 100% GPU. המודל בצירוף ההקשר שלו אינו נכנס ב־VRAM. הקטינו את אורך ההקשר, או עברו למודל קטן יותר או ל־quantisation קטן יותר.

FAQ

האם ניתן להפנות את Claude Code אל Ollama?

כן, אך לא באמצעות כתובת URL תואמת OpenAI. Claude Code משתמש ב-Anthropic Messages API, ו-Ollama מספקת ממשק זה ב-/v1/messages באותו פורט 11434. יש לייצא את ANTHROPIC_BASE_URL=http://localhost:11434, ANTHROPIC_AUTH_TOKEN=ollama ואת ANTHROPIC_API_KEY ריק, ולאחר מכן להפעיל את הכלי עם claude --model qwen3-coder:30b. הפקודה ollama launch claude תכתוב עבורך את אותן הגדרות. שכבת התאימות אינה מממשת את tool_choice או את מנגנון ה-prompt caching, ואין לה נקודת קצה לספירת טוקנים, לכן ספירת הטוקנים המוצגת היא הערכה בלבד.

מדוע המודל המקומי שלי עונה על קוד שהוא אינו יכול לראות?

מכיוון שהבקשה חורגת מחלון ההקשר (context window), והחלק הישן ביותר שלה הוסר ללא הודעת שגיאה. Ollama קובעת את ברירת המחדל של ההקשר לפי נפח ה-VRAM שהיא מזהה; מתחת ל-24 GiB, ברירת המחדל היא 4,096 טוקנים, כמות שחורגת מה-system prompt והגדרות הכלים של הסוכן עוד לפני תחילת העבודה. יש להגדיר את OLLAMA_CONTEXT_LENGTH=64000 ביחידת ה-systemd, להפעיל מחדש את Ollama, ולוודא שעמודת CONTEXT ב-ollama ps מציגה את הערך החדש.

איזה מודל כדאי להריץ עבור סוכן קידוד ב-VPS?

בחר את המודל הגדול ביותר הנושא תווית tools שנכנס בזיכרון עם חלון הקשר של 64k, ועדיף מודל שעבר כוונון (tuned) לקוד. qwen3-coder:30b היא התשובה הנפוצה עבור שרת GPU עם מספיק VRAM. מתחת ל-14B פרמטרים בערך, מודל עדיין יכול לענות היטב על שאלות בנושא קוד, אך ייכשל בעריכות מרובות שלבים, שכן עבודת סוכן רגישה מאוד לטעויות עיצוב קטנות בקריאות לכלים (tool calls). בצע בדיקה עם משימה אמיתית מתוך המאגר שלך במקום להשתמש ב-prompt לדוגמה.

האם אני זקוק ל-GPU כדי להריץ סוכן קידוד על מודל עצמאי?

בפועל, כן. הסקה (inference) מבוססת CPU בלבד עובדת ותקינה עבור שאלות בודדות, אך סוכן שולח בקשות רבות לכל משימה וכל אחת מהן קוראת מחדש היסטוריה ארוכה; לכן, קצב טוקנים איטי יהפוך משימה של שתי דקות לשעה שלמה. בדוק את עמודת PROCESSOR ב-ollama ps: כל ערך שאינו 100% GPU מעיד על כך שחלק מהמודל רץ על ה-CPU, וקצב הטוקנים יורד באופן משמעותי.

#ollama#coding-agent#openai-compatible#local-llm#self-hosted-ai