gemini-advisor
Model bir plan kurar, iki yaklaşımdan birini seçer ya da işin bittiğini söyler; buna ikinci kez bakan olmaz. Bu mod modele, kendi kendine çağırdığı bir Gemini danışmanı verir. Model ne yaptığını ya da ne yapacağını ve sorusunu yazar. Gemini o ana kadarki bütün konuşmayı, tool çağrıları ve çıktılarıyla birlikte okur; ikinci görüşü tool sonucu olarak geri gelir.
Fikir Claude API'nin advisor tool'undan geliyor. Orada işi yapan model, kendi transcript'ini okuyan daha güçlü bir modeli çağırır. Burada cevabı Gemini verir, model de kendi mesajını ekler.
Ne yapar
- Danışman açıksa mod, session başında tek input'lu (
message)mcp__gemini-advisor__advisetool'unu tanımlar. - Engine bir plugin'in tool'unu ToolSearch arkasında listeler; model orada yalnız adını görür (2.1.277 üzerinde ölçüldü). Bu yüzden mod, system prompt'un
env_info_simplesection'ının sonuna bir# Gemini advisornotu ekler: tool ne yapar, nasıl yüklenir, ne zaman çağrılır. Not session boyunca değişmez, prompt cache de korunur. - Not, çağrıyı sen istemeden dört anda zorunlu kılar: önemli bir değişiklikten ya da çok adımlı bir plandan önce, model tıkandığında (aynı hata iki kez), iki yaklaşım arasında seçim yaparken ve işin bittiğini söylemeden önce. Modele tavsiyeyi kodla karşılaştırmasını ve katılmadığı yeri sana söylemesini de söyler.
- Çağrı gelince mod konuşmayı
$.session.messages()ile okur; buna çalışan turn da dahildir (ölçüldü). Her mesajı ve her tool çağrısını input'u ve output'uyla yazar, modelin mesajıyla birlikte tek birgenerateContentisteğinde gönderir. MetinmaxInputChars'ı (varsayılan 2.000.000 karakter) aşarsa en uzun tool çıktıları ortak bir uzunluğa kısaltılır; her biri baş ve son kısmını korur. Çıktıların hepsi çıkarıldığında bile sınırı aşan bir konuşma hatadır. İsteği gemini-core kurar:gemini-advisoriçin tuttuğu key, model ve thinking seviyesiyle. Cevabı da o okur. - Tavsiye tool sonucu olarak döner. Her başarısızlık nedenini söyleyen bir hata sonucu olarak döner, model onu görür; hiçbir şey yutulmaz. Boş bir tavsiye ve Gemini'nin
maxOutputTokens'ta kestiği bir tavsiye de hatadır. - Gemini arada bir HTTP 503 ("high demand") döner ve bir sonraki istek çoğu zaman çalışır (ölçüldü: iki flash modelde 5 istekten 2'si). Bu durumda mod, gemini-core'un bildirdiği gibi 1 sn, 2 sn ve 3 sn sonra yeniden sorar; toplam en fazla dört deneme olur. Beklemesi 40 sn'yi aşacak bir deneme başlamaz, böylece sonuncusu 60 saniyelik tool timeout'una sığar. 429'dan ya da bir key hatasından sonra gemini-core, elinde başka bir key varsa isteği onunla yeniden gönderir.
2.1.277 üzerinde gemini-3.8-flash ile yapılan canlı denemede model iki yaklaşım arasında seçim yaparken danışmanı kendiliğinden çağırdı. 27 mesaj (15k token) gönderdi, tavsiyeyi 7,1 saniyede aldı ve cevabında kullandı. Daha yumuşak bir notla ("call it on your own") model böyle iki turn'de danışmanı çağırmadı; sonra da turn'ün notun saydığı türden olduğunu kendisi söyledi.
Ne gösterir
Her tavsiyeden sonra 10 saniye duran bir toast çıkar; sonuncusunu /gemini-advisor gösterir:
gemini-advisor: asked gemini-3.8-flash · 27 messages · 15k in, 2k out · sent to Gemini free tier
sent to Gemini free tier kısmı yalnız free tier'da çıkar. Subagent'tan gelen bir çağrıda mesaj sayısının yerinde message only yazar. Transcript'teki tool satırında modelin mesajı ve tavsiye durur (ctrl+o).
Komut
/gemini-advisor on ya da off, gemini-core'un tuttuğu model, thinking seviyesi ve tier, key var mı, son tavsiye
/gemini-advisor on | off gemini-core'da key yokken on reddedilir; off: bir çağrı danışmanın kapalı olduğunu söyler
/gemini-advisor reset yeniden off, varsayılan
Danışman kurulumdan sonra kapalıdır: model ne tool ne not alır, Gemini'ye de hiçbir şey gitmez. on tool'u hemen tanımlar. System prompt notu ise ayarı hemen değil, /clear'da ya da sonraki session'da izler; çünkü session ortasında değişen bir system prompt, sonraki isteğin bütün prompt cache'i yeniden yazmasına yol açar. off'tan sonra not /clear'da ya da sonraki session'da, tool ise sonraki session'da kalkar; o zamana kadar bir çağrı danışmanın kapalı olduğunu söyler. Ayar bütün pencereler için tektir. Başka bir pencerede verilen on, tool'u bu pencerede sonraki turn'de, notu sonraki /clear'da ya da session'da tanımlar. Oradaki bir off ise buradaki bir çağrının hemen danışmanın kapalı olduğunu söylemesine yol açar.
Key, tier, model (varsayılan gemini-3.8-flash) ve thinking seviyesi gemini-core'a aittir; değişiklik bir sonraki çağrıdan itibaren geçerli olur:
/gemini-core model advisor gemini-3.7-flash
/gemini-core thinking advisor high
/gemini-core paid
Free tier mı paid tier mı
Her çağrı konuşmayı gönderir: prompt'larını, modelin çalıştırdığı komutları ve okuduğu dosyaların içeriğini. Free tier'da Google bunları kullanabilir, insan denetçiler de okuyabilir; gemini-core README'si Gemini API Additional Terms'ten ilgili kısmı aktarır. Google'a göstermek istemediğin bir projede billing'i açık bir key kullan ve /gemini-core paid ayarla.
Canlı denemedeki free key ile gemini-3.1-pro-preview HTTP 429 (quota exceeded) döndü; yani pro bir model paid key ister.
Kurulum
claude plugin marketplace add KilimcininKorOglu/claude-code-mods
claude plugin install gemini-advisor@kilimcininkoroglu-mods
gemini-core'a bağlıdır; claude plugin install onu da kurar. Function hook'lar henüz early access aşamasında. Claude Code 2.1.288 ve üzerinde varsayılan olarak yüklenir, açılacak bir ayar yok.
Kurulumdan sonra
- Gemini key'ini ve tier'ı gemini-core'da, onun After installing bölümünde anlatıldığı gibi ayarla, sonra Claude Code'u yeniden başlat.
/gemini-advisor onçalıştır, ardından/clearyap ya da yeni bir session aç; system prompt notu modele ancak böyle ulaşır. Key yoksaonstill off: gemini-core has no Gemini keycevabını verir ve danışman kapalı kalır./gemini-advisorçalıştır. İlk satıron · <model> · thinking ... · <tier> tier · key setolmalı.- Bir tavsiye çağrısı
Gemini HTTP 429ile başarısız olursa key'inde o model için kota yok demektir./gemini-core model advisorile başka bir model seç.
0.1.x'ten güncelliyorsan: claude plugin update gemini-core'u eklemez (2.1.278 üzerinde ölçüldü), bu yüzden bir kez claude plugin install gemini-core@kilimcininkoroglu-mods çalıştır. 0.2.0 key'i, tier'ı ve modeli gemini-core'a taşıdı; apiKey, tier ve model option'ları ile daha önce /gemini-advisor free|paid|model ile saklanan ayarlar artık okunmuyor, onları gemini-core'da yeniden ayarla. 0.3.0 danışmanı varsayılan olarak kapattı: daha eski bir sürümden güncellediysen ve önceden /gemini-advisor on çalıştırmadıysan danışman kapalıdır; bir kez /gemini-advisor on çalıştır.
Option'lar
| Option | Varsayılan | Ne ayarlar |
|---|---|---|
maxInputChars |
2000000 |
Gönderilen konuşmanın en fazla karakter sayısı; 10.000 ile 4.000.000 arası |
maxOutputTokens |
8192 |
Thinking dahil en uzun tavsiye; 256 ile 65.536 arası; kesilen tavsiye hatadır |
Aralık dışındaki ya da tam sayı olmayan bir değer yerine varsayılan kullanılır.
Nereye uzanır
Claude Code 2.1.283 üzerinde claude plugin validate ile doğrulandı:
❯ ./register.ts hooks: session.start, turn.start, classic.SessionStart, command.run{command=gemini-advisor}, prompt.section{name=env_info_simple}, tool.call{tool=mcp__gemini-advisor__advise}
❯ ./register.ts calls: $.clock.now (via askGemini), $.clock.sleep (via askGemini), $.command.register, $.gemini.enroll, $.gemini.read (via askGemini), $.gemini.request (via askGemini), $.gemini.settings (via runCommand, storeEnabled), $.http.fetch (via askGemini), $.session.messages (via conversation), $.store.delete (via runCommand), $.store.get (via isEnabled), $.store.set (via storeEnabled), $.tool.register (via declareTool), $.ui.toast (via advise)
Reach L3: network'e çıkar.
1. Okur: her danışman çağrısında konuşmayı (mesajlar, tool input'ları ve output'ları); kendi $.store dosyasını; gemini-core'dan key'i taşıyan isteği
2. Çalıştırır: hiçbir process; açıkken system prompt'a bir not ekler ve bir tool tanımlar
3. Gönderir: konuşmayı ve modelin mesajını, çağrı başına bir istek (503 sonrası en fazla dört, 429 ya da key hatası sonrası ek key başına bir tane daha), gemini-core'un kurduğu URL'ye (generativelanguage.googleapis.com), key x-goog-api-key header'ında, hiçbir zaman URL'de değil
4. Saklar: $.store içinde on/off ayarını; son kullanım satırı bellekte yaşar
5. Düşman girdi: tavsiye, modelin tool sonucu olarak okuduğu güvenilmez metindir; yani düşman ya da yanlış bir tavsiye, modeli okuduğu bir dosyadaki metin gibi yönlendirebilir; not modele onu doğrulamasını söyler
Sınırlar
- Danışmanı çağırıp çağırmamak modelin kendi kararıdır. Canlı deneme tek bir turn türünü kapsadı.
- Tool açıklaması hiçbir modelin adını anmaz. Engine ilk gönderdiği açıklamayı session boyunca korur: model değiştikten sonra yeniden kaydedilen bir tool modele yine eski metinle ulaştı (2.1.278 üzerinde ölçüldü). Bir çağrının hangi modele gittiğini toast ve
/gemini-advisorsöyler. - Engine tool'u 60 saniyelik bir MCP timeout'uyla sunar (debug log, 2.1.277). Daha uzun süren bir çağrı başarısız olur ve model hatayı okur.
- Not
env_info_simplesection'ına eklenir. System prompt'unda bu section olmayan bir kurulum not almaz; model yalnız tool'un adını görür. Yalnız bir kurulum denendi. - Bir subagent'ın çağrısı yalnız kendi mesajını gönderir, çünkü
$.session.messages()'ın subagent içinde hangi transcript'i verdiği doğrulanmadı. $.session.messages()uzun bir transcript'in en yeni 4096 mesajını verir.- Her çağrı bütün konuşmayı gönderir; session uzadıkça her çağrı büyür ve yavaşlar.
Geliştirme
make install # eslint, typescript-eslint, typescript
make lint # complexity sınırı 10; aşılırsa build kırılır
make typecheck # /plugin-types çıktısı olan .claude/types/ gerekir
make validate
make test # claude plugin test