{"id":546,"date":"2026-11-10T15:27:59","date_gmt":"2026-11-10T15:27:59","guid":{"rendered":"https:\/\/blog.nibelheim.fr\/?p=546"},"modified":"2026-11-10T15:27:59","modified_gmt":"2026-11-10T15:27:59","slug":"ia-locale-avec-ollama-et-codage-agentique-dans-visual-studio-code","status":"publish","type":"post","link":"https:\/\/blog.nibelheim.fr\/?p=546","title":{"rendered":"IA locale avec Ollama et codage agentique dans Visual Studio Code"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Ayant d\u00e9couvert par le biais de mon boulot cette incroyable d\u00e9cadence de pouvoir <strong>pondre un programme sans toucher une tra\u00eetre ligne de code<\/strong>, j&#8217;ai cherch\u00e9 \u00e0 reproduire \u00e7a chez moi &#8211; au taff, on a un abonnement payant pour une somme inconnue que jamais je ne l\u00e2che \u00e0 titre personnel <em>(c&#8217;est \u00e7a, \u00eatre une pince, prenez note)<\/em>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Pr\u00e9requis<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Sachez qu&#8217;<strong>\u00e9crire anglais<\/strong> et globalement <strong>avoir un bon niveau<\/strong> est \u00e0 ce jour primordial, car les mod\u00e8les de code sont surtout entra\u00een\u00e9s en anglais. La traduction peut fonctionner mais elle rajoute une couche d&#8217;ambigu\u00eft\u00e9 qui complique sensiblement les choses.<br>Qwen3-coder qu&#8217;on va utiliser ici est plut\u00f4t \u00e0 l&#8217;aise en fran\u00e7ais, mais \u00e7a peut ne pas \u00eatre le cas d&#8217;autres mod\u00e8les!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ensuite, <strong>n&#8217;attendez pas de miracle<\/strong>. Peu importe comment vous vous en sortez en anglais, un mod\u00e8le local se prend g\u00e9n\u00e9ralement une temp\u00eate par un ChatGPT en ligne, m\u00eame forfait gratuit.<br>Vous ne jouez pas dans la m\u00eame cat\u00e9gorie. Vous faites globalement moins fondre les ours sur la banquise, c&#8217;est \u00e7a de pris, mais le mod\u00e8le local sera g\u00e9n\u00e9ralement plus neuneu, faudra bien lui expliquer. Encore. Nan, pas comme \u00e7a.<br>D&#8217;o\u00f9 la n\u00e9cessit\u00e9 d&#8217;un anglais assez costaud.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ayez les id\u00e9es claires<\/strong>. Ce n&#8217;est pas miraculeux, \u00e0 d\u00e9faut de savoir coder, vous \u00eatre ma\u00eetre d&#8217;oeuvre. Donc, il vous revient de savoir d\u00e9composer et b\u00e2tir votre logiciel brique par brique. Personnellement, je trouve \u00e7a tr\u00e8s marrant, mais \u00e7a requiert d&#8217;avoir une id\u00e9e pr\u00e9cise de ce que vous attendez.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Il vous fait un ordinateur puissant<\/strong>. Pas de ouf, mais un minimum.<br>Typiquement, je tourne sur un pas tout neuf AMD Ryzen 7 5700X avec&#8230; 48Go de RAM. Sous Linux Mint, l&#8217;ami l\u00e9ger. <br>32Go suffiraient, mais j&#8217;ai eu de l&#8217;argent.<br>Et une carte graphique RTX 3060 12Go. Cette derni\u00e8re donn\u00e9e est importante car les mod\u00e8les tournent pr\u00e9f\u00e9rentiellement sur la carte graphique, se nourrissant de leur puissance, mais aussi de leur VRAM. Malheureusement, la plupart des cartes graphiques embarquent 8Go ou moins de VRAM. Et donc, le mod\u00e8le &#8220;ne rentre pas&#8221; et doit tourner sur RAM et CPU. Et c&#8217;est, para\u00eet-il, fort lent. Sachant que c&#8217;est d\u00e9j\u00e0 pas dingue en l&#8217;\u00e9tat sur GPU moyen comme le mien.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Enfin, je tourne comme je l&#8217;ai dit sous Linux. Les outils que je vais utiliser existent aussi sous Windows, et Mac, j&#8217;en sais fichtre rien. Mais du coup, le tuto ci-dessous va s&#8217;articuler autour de Linux. Pas d&#8217;inqui\u00e9tude, de ce que j&#8217;en ai vu, c&#8217;est plut\u00f4t transparent<em> (ou &#8220;chien de Mickey lumineutre&#8221;)<\/em>.<br><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Installation de Visual Studio Code<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Tout se passe ici : <a href=\"https:\/\/code.visualstudio.com\/download\">https:\/\/code.visualstudio.com\/download<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Choisissez la version qui vous convient et installez-la avec les options par d\u00e9faut. Rien \u00e0 raconter.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Installation de Ollama<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ollama permet de faire tourner les mod\u00e8les en local et de les rendre possiblement interactifs avec, au hasard, Visual Studio Code.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sous Linux, entrez la commande :<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code><strong>curl -fsSL https:\/\/ollama.com\/install.sh | sh<\/strong><\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sous Windows, soit vous installez via la commande Powershell d\u00e9crite ici : <a href=\"https:\/\/ollama.com\/download\/windows\">https:\/\/ollama.com\/download\/windows<\/a> , soit vous cliquez sur le lien de cette m\u00eame page (<a href=\"https:\/\/ollama.com\/download\/OllamaSetup.exe\" data-type=\"link\" data-id=\"https:\/\/ollama.com\/download\/OllamaSetup.exe\">celui-ci<\/a>) pour t\u00e9l\u00e9charger l&#8217;installeur.<br>Le reste, \u00e7a marche tout seul &#8211; pensez \u00e0 red\u00e9marrer histoire qu&#8217;Ollama soit dans le PATH.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">T\u00e9l\u00e9chargement du mod\u00e8le<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Apr\u00e8s avoir test\u00e9 plusieurs mod\u00e8les sans trop de succ\u00e8s, celui qui a fonctionn\u00e9 pour moi est Qwen3-coder:30B. Non seulement il est compatible Ollama, mais est aussi compatible Agent et tools <em>(le plus important, c&#8217;est comme \u00e7a que les interactions se font pour compiler, etc)<\/em>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ouvrez un terminal ou une invite de commande Windows et entrez :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>ollama pull qwen3-coder:30b<\/strong><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ceci va t\u00e9l\u00e9charger le mod\u00e8le qui prend environ 19Go.<br>Une fois termin\u00e9 :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>ollama run qwen3-coder:30b<\/strong><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Apr\u00e8s quelques secondes &#8211; \u00e7a peut prendre du temps le premier coup, et d\u00e9pendant de votre machine &#8211; vous devriez avoir un prompt qui ressemble \u00e0 \u00e7a :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>>>> <em>Send a message (\/? for help)<\/em><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Vous pouvez taper la discute si \u00e7a vous chante.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Configuration de Visual Studio Code<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Lancez Visual Studio Code, puis cliquez sur la roulette en bas \u00e0 gauche :<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"72\" height=\"115\" src=\"https:\/\/blog.nibelheim.fr\/wp-content\/uploads\/2026\/11\/image-edited.png\" alt=\"\" class=\"wp-image-549\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Cliquez ensuite sur <strong>Extensions<\/strong>. Entrez ensuite <strong>Cline<\/strong> dans la barre de recherche :<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"213\" src=\"https:\/\/blog.nibelheim.fr\/wp-content\/uploads\/2026\/11\/image-1-edited-1024x213.png\" alt=\"\" class=\"wp-image-551\" srcset=\"https:\/\/blog.nibelheim.fr\/wp-content\/uploads\/2026\/11\/image-1-edited-1024x213.png 1024w, https:\/\/blog.nibelheim.fr\/wp-content\/uploads\/2026\/11\/image-1-edited-300x62.png 300w, https:\/\/blog.nibelheim.fr\/wp-content\/uploads\/2026\/11\/image-1-edited-768x160.png 768w, https:\/\/blog.nibelheim.fr\/wp-content\/uploads\/2026\/11\/image-1-edited.png 1266w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Puis cliquez sur le minuscule <strong>Install<\/strong> \u00e0 c\u00f4t\u00e9 de la petite case Auto Update.<br>Ceci vous aura install\u00e9 l&#8217;extension Cline avec son ic\u00f4ne dans la barre de gauche :<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"74\" height=\"327\" src=\"https:\/\/blog.nibelheim.fr\/wp-content\/uploads\/2026\/11\/image-3-edited.png\" alt=\"\" class=\"wp-image-554\" srcset=\"https:\/\/blog.nibelheim.fr\/wp-content\/uploads\/2026\/11\/image-3-edited.png 74w, https:\/\/blog.nibelheim.fr\/wp-content\/uploads\/2026\/11\/image-3-edited-68x300.png 68w\" sizes=\"auto, (max-width: 74px) 100vw, 74px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Cliquez dessus, puis s\u00e9lectionnez <strong>Bring my own API key<\/strong> :<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"574\" height=\"422\" src=\"https:\/\/blog.nibelheim.fr\/wp-content\/uploads\/2026\/11\/image-6-edited.png\" alt=\"\" class=\"wp-image-560\" srcset=\"https:\/\/blog.nibelheim.fr\/wp-content\/uploads\/2026\/11\/image-6-edited.png 574w, https:\/\/blog.nibelheim.fr\/wp-content\/uploads\/2026\/11\/image-6-edited-300x221.png 300w\" sizes=\"auto, (max-width: 574px) 100vw, 574px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Puis <strong>Continue<\/strong> :<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"435\" height=\"117\" src=\"https:\/\/blog.nibelheim.fr\/wp-content\/uploads\/2026\/11\/image-5-edited.png\" alt=\"\" class=\"wp-image-558\" srcset=\"https:\/\/blog.nibelheim.fr\/wp-content\/uploads\/2026\/11\/image-5-edited.png 435w, https:\/\/blog.nibelheim.fr\/wp-content\/uploads\/2026\/11\/image-5-edited-300x81.png 300w\" sizes=\"auto, (max-width: 435px) 100vw, 435px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Dans API provider, s\u00e9lectionnez dans la liste <strong>Ollama<\/strong>, puis cochez <strong>Use custom base url<\/strong> et entrez <strong>http:\/\/localhost:11434<\/strong> <em>(si vous n&#8217;avez rien touch\u00e9 \u00e0 Ollama, par d\u00e9faut c&#8217;est \u00e7a)<\/em>.<br>Laissez Ollama API Key <strong>vide<\/strong>, on n&#8217;en a pas besoin ici.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Le mod\u00e8le d\u00e9tect\u00e9 devrait \u00eatre <strong>qwen3-coder:30b<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Model Context Window peut \u00eatre mis \u00e0 <strong>32768<\/strong>, mais \u00e7a va d\u00e9pendre de votre machine. Plus le contexte est vaste, meilleur sera le r\u00e9sultat (en gros), mais plus gros sera l&#8217;impact sur le calcul des r\u00e9ponses&#8230;<br>Si \u00e7a d\u00e9conne \u00e0 pleins tubes lors de vos essais, il faudra baisser (par exemple \u00e0 8192) et voir si \u00e7a marche mieux.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"441\" height=\"902\" src=\"https:\/\/blog.nibelheim.fr\/wp-content\/uploads\/2026\/11\/image-7-edited.png\" alt=\"\" class=\"wp-image-562\" srcset=\"https:\/\/blog.nibelheim.fr\/wp-content\/uploads\/2026\/11\/image-7-edited.png 441w, https:\/\/blog.nibelheim.fr\/wp-content\/uploads\/2026\/11\/image-7-edited-147x300.png 147w\" sizes=\"auto, (max-width: 441px) 100vw, 441px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Vous pouvez acc\u00e9der \u00e0 ces r\u00e9glages dans la petite roulette en haut \u00e0 droite de Cline :<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"675\" height=\"128\" src=\"https:\/\/blog.nibelheim.fr\/wp-content\/uploads\/2026\/11\/image-8-edited.png\" alt=\"\" class=\"wp-image-564\" srcset=\"https:\/\/blog.nibelheim.fr\/wp-content\/uploads\/2026\/11\/image-8-edited.png 675w, https:\/\/blog.nibelheim.fr\/wp-content\/uploads\/2026\/11\/image-8-edited-300x57.png 300w\" sizes=\"auto, (max-width: 675px) 100vw, 675px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Ensuite, en bas, cliquez sur Auto-approve. L\u00e0, vous d\u00e9cidez ce qui requiert votre aval ou non.<br>Evidemment, le &#8220;pire&#8221; est surtout Execute commands : l\u00e0, vous donnez carte blanche \u00e0 votre IA pour effacer tout et n&#8217;importe quoi. L\u00e0, c&#8217;est vous qui voyez, mais moi, je mange des gu\u00eapes donc j&#8217;ai tout coch\u00e9 :<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"661\" height=\"283\" src=\"https:\/\/blog.nibelheim.fr\/wp-content\/uploads\/2026\/11\/image-9-edited.png\" alt=\"\" class=\"wp-image-566\" srcset=\"https:\/\/blog.nibelheim.fr\/wp-content\/uploads\/2026\/11\/image-9-edited.png 661w, https:\/\/blog.nibelheim.fr\/wp-content\/uploads\/2026\/11\/image-9-edited-300x128.png 300w\" sizes=\"auto, (max-width: 661px) 100vw, 661px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Testouille ma coucou- mon bon ami !<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Et nous y voil\u00e0!<br>Vous pouvez v\u00e9rifier que \u00e7a fonctionne en tapant simplement <em>&#8220;Peux-tu faire un ls dans le r\u00e9pertoire courant?&#8221; <\/em>et voir si \u00e7a fonctionne.<br>Vous aurez de la sorte une bonne id\u00e9e de la cadence de la chose.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vous pouvez \u00e9galement lui demander de cr\u00e9er une application test (en C, le langage des dieux) style Hello world afin de vous assurer que vous avez tout d&#8217;install\u00e9 pour le faire.<br>Qwen m&#8217;a pr\u00e9par\u00e9 hier l&#8217;ensemble des commandes pour installer tout le bazar &#8211; sous Linux, attention &#8211; pour le faire.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bon codage! Enfin&#8230; Non-codage?<br>Bonne supervision!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ayant d\u00e9couvert par le biais de mon boulot cette incroyable d\u00e9cadence de pouvoir pondre un programme sans toucher une tra\u00eetre ligne de code, j&#8217;ai cherch\u00e9 \u00e0 reproduire \u00e7a chez moi &#8211; au taff, on a un abonnement payant pour une somme inconnue que jamais je ne l\u00e2che \u00e0 titre personnel [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-546","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/blog.nibelheim.fr\/index.php?rest_route=\/wp\/v2\/posts\/546","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.nibelheim.fr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.nibelheim.fr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.nibelheim.fr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.nibelheim.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=546"}],"version-history":[{"count":1,"href":"https:\/\/blog.nibelheim.fr\/index.php?rest_route=\/wp\/v2\/posts\/546\/revisions"}],"predecessor-version":[{"id":567,"href":"https:\/\/blog.nibelheim.fr\/index.php?rest_route=\/wp\/v2\/posts\/546\/revisions\/567"}],"wp:attachment":[{"href":"https:\/\/blog.nibelheim.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=546"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.nibelheim.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=546"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.nibelheim.fr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=546"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}