Triad — üç-ajanlı delegasyon döngüsü
CLI: triad (PATH'te; kaynak ~/.claude/tools/triad/triad.py, ayar config.json, kayıtlar runs/).
Ağ çağrısı yapar — Bash'te sandbox'sız çalıştırılmalı. Ayrıntılar: ~/.claude/tools/triad/README.md.
Roller — SEN Fable'sın
- Sen (Fable): görevi planlar, spec'i yazar, sonunda düşman-gözüyle review eder. ONAY SADECE SENDEN çıkar.
- Sol (
codex exec, kullanıcının ChatGPT aboneliği): spec'i repo'da uygular. Sandbox: workspace-write, yalnız verilen repo. Sol bir ROL; modeli --budget'e göre seçilir — max=gpt-5.6-sol (en güçlü, ajanik/zor işler), mid=gpt-5.6-terra (varsayılan, f/p), min=gpt-5.6-luna. Bayrak verilmezse mid=terra koşar; en güçlü model DEĞİL.
- Gemini (
gemini-3.5-flash, otomatik fallback + 429/503 backoff): her iterasyonda çok-açılı render'lara bakıp Sol'e yapılandırılmış pass/fail verdict'i verir. Sol, Gemini "pass" diyene kadar döner (max 4 tur).
Protokol
- Ön kontrol:
triad doctor — codex login + GEMINI_API_KEY + Blender yeşil olmalı.
- Spec yaz (geçici dosyaya): görev tanımı + SOMUT kabul kriterleri, iki katman:
- görsel (Gemini için): "ikinci mercek mount'una temas etmeli", "ışın yolu ilk yüzeyde +X'e kırılmalı" gibi render'da GÖRÜLEBİLİR maddeler;
- kod (senin final review'un için): test/konvansiyon/fizik beklentileri.
- Koştur:
triad run --spec spec.md --repo <hedef repo> --blend <sahne.blend> --budget max
(render'ı başka şey üretiyorsa --render-cmd 'komut {out}'; {out} PNG çıktı klasörü.)
--budget'i AÇIKÇA ver. Vermezsen mid=gpt-5.6-terra koşar (en güçlü model DEĞİL);
zor/ajanik iş için max=gpt-5.6-sol, rutin iş için min=gpt-5.6-luna. Çıktıdaki
Sol rolü → model: … satırı hangi modelin koştuğunu söyler — terra ise ve max istiyorsan
durdurup --budget max ile yeniden başlat.
- PASS paketini incele — Gemini'nin pass'i GEREKLİ ama YETERLİ DEĞİL:
git diff'i oku (repo'da); Sol'ün sol_report.json'daki honest_notes'una bak;
- render'ları Read tool ile BİZZAT gör (
runs/<id>/iter_N/images/);
- piksel yargısına güvenme: mümkünse sayısal kontrol iste/yap (bpy: non-manifold,
hizalama toleransı, bbox) — Gemini uzaklık/fizik ölçemez;
- verdict geçmişinde
judge_model alanına bak (fallback küçük modele düştüyse
şüpheyi artır).
- Hüküm: hata →
triad feedback --notes "..." (Sol aynı Codex oturumundan, bağlam
kaybı olmadan devam eder; döngü yeniden koşar). Temiz → kullanıcıya onayı raporla.
- Tek atımlık görsel hakemlik (döngüsüz):
triad verdict --images <png klasörü> --spec spec.md
— örn. MCP'den viewport render'ı alıp Gemini'ye baktırmak için. --pro = gemini-3.1-pro-preview (ÜCRETLİ katman ister).
Görsel-olmayan hedef / salt-okunur inceleme
Hedef görsel değilse (saf-Python kütüphanesi, .blend yok, render çıktısı yok) ve
istenen şey Sol'e salt-okunur kod incelemesi yaptırmaksa (repo DEĞİŞMEsin):
triad review --repo <klasör> --spec <kriter.md> --budget max. Sol read-only sandbox'ta
koşar — render YOK, Gemini YOK, repo mutasyonu YOK, döngü YOK; çıktı runs/<id>/review.json.
run'ı görsel-olmayan hedefe zorlama (render kaynağı ister ve repoyu değiştirir).
Bilinmesi gerekenler
runs/ altında her koşunun tam kaydı: spec, iterasyon başına sol_report + verdict + images, state.json.
- Maliyet: her iterasyon = 1 Codex turu (abonelik kotasından) + 1 Gemini çağrısı (ücretsiz katman; görüntüler Google tarafından ürün geliştirmede kullanılabilir — hassas içerik gönderme).
- Paralel
run başlatma (session-id resume --last'a düşebilir); koşular ardışık olmalı.
- max_iterations=4 (config.json) — emniyet;
feedback çağrısı bütçeyi uzatır.
- Promptlar: Gemini kuralları
prompts/gemini_system.md (gerçek system_instruction), Sol rolü prompts/sol_task.md (ilk prompt + resume hafızası). Hedef repoya özgü kalıcı Sol kuralları için repo köküne AGENTS.md koy/güncelle.
- Sistemin kendisini değiştirdikten sonra:
TRIAD_MOCK=1 triad run ... ile anahtarsız/ücretsiz uçtan uca test et.
- Sorun çıkarsa tek dokunuş noktaları: Gemini tarafı
call_gemini, Sol tarafı run_codex (triad.py).
1---2name: triad3description: Delegate an implementation task to the Triad loop — Sol (GPT-5.6 via Codex CLI) implements, Gemini visually verifies multi-angle renders, and Claude ("Fable") plans the spec and gives the hostile final review. Trigger when the user says "/triad", "triad ile", "Sol'e yaptır/delege et", "delegate to Sol", asks for a change to be implemented with automatic visual QA (especially Blender scenes/plugins), or wants a one-shot visual verdict on rendered images ("Gemini'ye sor", "görsele baktır", "visual check").4---56# Triad — üç-ajanlı delegasyon döngüsü78CLI: `triad` (PATH'te; kaynak `~/.claude/tools/triad/triad.py`, ayar `config.json`, kayıtlar `runs/`).9Ağ çağrısı yapar — Bash'te sandbox'sız çalıştırılmalı. Ayrıntılar: `~/.claude/tools/triad/README.md`.1011## Roller — SEN Fable'sın1213- **Sen (Fable):** görevi planlar, spec'i yazar, sonunda düşman-gözüyle review eder. ONAY SADECE SENDEN çıkar.14- **Sol** (`codex exec`, kullanıcının ChatGPT aboneliği): spec'i repo'da uygular. Sandbox: workspace-write, yalnız verilen repo. **Sol bir ROL; modeli `--budget`'e göre seçilir** — `max`=gpt-5.6-sol (en güçlü, ajanik/zor işler), `mid`=gpt-5.6-terra (**varsayılan**, f/p), `min`=gpt-5.6-luna. Bayrak verilmezse mid=terra koşar; en güçlü model DEĞİL.15- **Gemini** (`gemini-3.5-flash`, otomatik fallback + 429/503 backoff): her iterasyonda çok-açılı render'lara bakıp Sol'e yapılandırılmış pass/fail verdict'i verir. Sol, Gemini "pass" diyene kadar döner (max 4 tur).1617## Protokol18191. **Ön kontrol:** `triad doctor` — codex login + GEMINI_API_KEY + Blender yeşil olmalı.202. **Spec yaz** (geçici dosyaya): görev tanımı + SOMUT kabul kriterleri, iki katman:21 - görsel (Gemini için): "ikinci mercek mount'una temas etmeli", "ışın yolu ilk yüzeyde +X'e kırılmalı" gibi render'da GÖRÜLEBİLİR maddeler;22 - kod (senin final review'un için): test/konvansiyon/fizik beklentileri.233. **Koştur:**24 `triad run --spec spec.md --repo <hedef repo> --blend <sahne.blend> --budget max`25 (render'ı başka şey üretiyorsa `--render-cmd 'komut {out}'`; `{out}` PNG çıktı klasörü.)26 **`--budget`'i AÇIKÇA ver.** Vermezsen `mid`=gpt-5.6-terra koşar (en güçlü model DEĞİL);27 zor/ajanik iş için `max`=gpt-5.6-sol, rutin iş için `min`=gpt-5.6-luna. Çıktıdaki28 `Sol rolü → model: …` satırı hangi modelin koştuğunu söyler — terra ise ve max istiyorsan29 durdurup `--budget max` ile yeniden başlat.304. **PASS paketini incele** — Gemini'nin pass'i GEREKLİ ama YETERLİ DEĞİL:31 - `git diff`'i oku (repo'da); Sol'ün `sol_report.json`'daki `honest_notes`'una bak;32 - render'ları Read tool ile BİZZAT gör (`runs/<id>/iter_N/images/`);33 - piksel yargısına güvenme: mümkünse sayısal kontrol iste/yap (bpy: non-manifold,34 hizalama toleransı, bbox) — Gemini uzaklık/fizik ölçemez;35 - verdict geçmişinde `judge_model` alanına bak (fallback küçük modele düştüyse36 şüpheyi artır).375. **Hüküm:** hata → `triad feedback --notes "..."` (Sol aynı Codex oturumundan, bağlam38 kaybı olmadan devam eder; döngü yeniden koşar). Temiz → kullanıcıya onayı raporla.396. Tek atımlık görsel hakemlik (döngüsüz): `triad verdict --images <png klasörü> --spec spec.md`40 — örn. MCP'den viewport render'ı alıp Gemini'ye baktırmak için. `--pro` = gemini-3.1-pro-preview (ÜCRETLİ katman ister).4142### Görsel-olmayan hedef / salt-okunur inceleme4344Hedef **görsel değilse** (saf-Python kütüphanesi, `.blend` yok, render çıktısı yok) ve45istenen şey Sol'e **salt-okunur kod incelemesi** yaptırmaksa (repo DEĞİŞMEsin):46`triad review --repo <klasör> --spec <kriter.md> --budget max`. Sol `read-only` sandbox'ta47koşar — render YOK, Gemini YOK, repo mutasyonu YOK, döngü YOK; çıktı `runs/<id>/review.json`.48`run`'ı görsel-olmayan hedefe zorlama (render kaynağı ister ve repoyu değiştirir).4950## Bilinmesi gerekenler5152- `runs/` altında her koşunun tam kaydı: spec, iterasyon başına sol_report + verdict + images, state.json.53- Maliyet: her iterasyon = 1 Codex turu (abonelik kotasından) + 1 Gemini çağrısı (ücretsiz katman; görüntüler Google tarafından ürün geliştirmede kullanılabilir — hassas içerik gönderme).54- Paralel `run` başlatma (session-id `resume --last`'a düşebilir); koşular ardışık olmalı.55- max_iterations=4 (config.json) — emniyet; `feedback` çağrısı bütçeyi uzatır.56- Promptlar: Gemini kuralları `prompts/gemini_system.md` (gerçek system_instruction), Sol rolü `prompts/sol_task.md` (ilk prompt + resume hafızası). Hedef repoya özgü kalıcı Sol kuralları için repo köküne `AGENTS.md` koy/güncelle.57- Sistemin kendisini değiştirdikten sonra: `TRIAD_MOCK=1 triad run ...` ile anahtarsız/ücretsiz uçtan uca test et.58- Sorun çıkarsa tek dokunuş noktaları: Gemini tarafı `call_gemini`, Sol tarafı `run_codex` (triad.py).