feat(codex-link): main model delegates every task to subagents by default
Server CI and Windows package / verify (push) Successful in 2m56s
Server CI and Windows package / windows-package (push) Successful in 7m27s

User decision (15 Oct 2026): repeating or scheduled work goes to AITURK; all other work, coding included, goes to one subagent (easy) or a subagent team or dynamic workflow (hard). The main model talks, dispatches and verifies.
This commit is contained in:
yilsem committed 2026-10-15 02:26:45 +03:00
1 parent 557e619499
commit 81ee2ca646
3 files changed
+18 -17

No files matched your search

+6 -7
View File
@@ -34,13 +34,12 @@ ESKI = (
VARSAYILAN = (
ISARET + " Bu Codex, AITURK'e bağlı. İş dağıtımı kuralı:\n"
"1. Tekrarlı, zamanlanmış ya da sürekli açık kalacak işleri (her gün şu saatte, saat başı, haftada bir, "
"'7 gün her gün baksın' gibi) AITURK IDE'deki bota zamanlanmış iş olarak ver. PowerShell'de tek satır:\n{zamanla}\n"
"Belirli süreli işte (ör. 7 gün her gün) --repeat ile tekrar sayısını ver. HERMES_HOME kısmını atlama. "
"Aynı satırla 'cron list' çalıştırıp işin kaydını doğrula; kullanıcıya işin adını, zamanlamasını ve ilk çalışma "
"zamanını söyle. İşler AITURK IDE açıkken çalışır.\n"
"2. Kodlama işlerini AITURK'e verme: kolaysa kendin ya da kendi alt ajanınla yap, zorsa kendi alt ajan ekibine dağıt.\n"
"3. Basit soru, bilgi isteği ve küçük düzeltmeleri kendin yap.\n"
"4. Kullanıcı 'Codex' ya da 'sen yap' derse hiçbir işi devretme. Komut hata verirse işi kendin yap."
"'7 gün her gün baksın' gibi) AITURK IDE'deki bota ver. İşin tam metnini UTF-8 bir dosyaya yaz ve şu komutla "
"gönder, sonucu kullanıcıya kısaca aktar:\n{komut}\n"
"2. Kodlama ve diğer işleri AITURK'e verme. Ana model işi kendisi yapmaz: kolay ya da tek parça işi tek bir alt "
"ajana, zor ya da çok parçalı işi alt ajan ekibine veya dinamik workflow'a ver. Ana model kullanıcıyla konuşur, "
"işi dağıtır, sonucu doğrulayıp aktarır.\n"
"3. Kullanıcı 'Codex' derse işi devretme. Komut hata verirse işi alt ajanla yap."
)
# Ayarlar ekranindaki hazir secenekler (bridge.json "aiturk_hat": {"secim": ...}).
SECIMLER = {"onerilen": VARSAYILAN, "buyuk": ESKI}
@@ -30,20 +30,22 @@ class Hat(unittest.TestCase):
# Ayardaki komut bulunanin onune gecer.
self.assertIn("elle", h.talimat({"secim": "buyuk", "komut": "elle"}, "C:/Program/aiturk.exe"))
def test_default_sends_scheduled_work_to_the_ide_bot_and_keeps_coding(self):
def test_default_sends_repeating_work_to_aiturk_and_delegates_the_rest(self):
z = h.zamanla_satiri({"HERMES_HOME": "C:/ide/agent"})
self.assertIn("cron create", z)
self.assertIn("$env:HERMES_HOME='C:/ide/agent'", z)
self.assertEqual(h.zamanla_satiri({}), "")
for ayar in (None, {}, {"secim": "onerilen"}, {"secim": "bilinmeyen"}):
text = h.talimat(ayar, None, zamanla=z)
self.assertIn("cron create", text)
self.assertIn("Kodlama işlerini AITURK'e verme", text)
self.assertIn("'Codex' ya da 'sen yap'", text)
text = h.talimat(ayar, "C:/a.exe", "s1", zamanla="")
self.assertIn('"C:/a.exe" is --sohbet s1', text)
self.assertIn("Kodlama ve diğer işleri AITURK'e verme", text)
self.assertIn("alt ajan", text)
self.assertNotIn("kendin yap", text)
self.assertNotIn("{", text)
self.assertIsNone(h.talimat(None, "C:/a.exe", zamanla=""))
self.assertIsNone(h.talimat(None, None, zamanla=z))
self.assertEqual(h.talimat({"secim": "ozel", "talimat": "kendi kuralim"}, zamanla=""), "kendi kuralim")
self.assertIn("cron create", h.talimat({"secim": "ozel", "talimat": " "}, zamanla=z))
self.assertIn("ozel z", h.talimat({"secim": "ozel", "talimat": "ozel {zamanla}"}, zamanla="z"))
self.assertIn("alt ajan", h.talimat({"secim": "ozel", "talimat": " "}, "C:/a.exe"))
def test_the_first_candidate_that_knows_the_command_is_used(self):
import os
@@ -9,7 +9,7 @@ import type { IsHattiSecim, IsHattiSettings } from '../../../electron/is-hatti-s
import { ListRow, SettingsSection } from './primitives'
const SECENEKLER: { value: IsHattiSecim; tr: string; en: string; aciklama: string; desc: string }[] = [
{ value: 'onerilen', tr: 'Önerilen', en: 'Recommended', aciklama: 'Her gün, saat başı gibi tekrarlı işler AITURK IDE botuna zamanlanmış iş olarak gider. Kodlama işlerini Codex kendisi ya da kendi alt ajanlarıyla yapar.', desc: 'Repeating or scheduled work goes to the AITURK IDE bot. Codex keeps coding work and does it itself or with its own subagents.' },
{ value: 'onerilen', tr: 'Önerilen', en: 'Recommended', aciklama: 'Her gün, saat başı gibi tekrarlı işler AITURK IDE botuna gider. Kodlama ve diğer işler Codex’te kalır: Codex işi kendisi yapmaz, kolay işi bir alt ajana, zor işi alt ajan ekibine verir; sonucu doğrulayıp size aktarır.', desc: 'Repeating or scheduled work goes to the AITURK IDE bot. Coding and other work stays in Codex, which hands easy work to one subagent and hard work to a subagent team, then checks and reports the result.' },
{ value: 'buyuk', tr: 'Büyük işleri AITURK’e gönder', en: 'Send large work to AITURK', aciklama: 'Eski davranış: birkaç adımlı ya da çok dosyalı işler AITURK’e gönderilir, küçük işleri Codex yapar.', desc: 'Previous behaviour: multi-step or multi-file work goes to AITURK; Codex does small tasks.' },
{ value: 'kapali', tr: 'Hiçbir işi AITURK’e gönderme', en: 'Never send work to AITURK', aciklama: 'Codex’e iş dağıtımı hakkında hiçbir not eklenmez; her işi Codex yapar.', desc: 'No routing note is added; Codex does every task.' },
{ value: 'ozel', tr: 'Kendi metnim', en: 'Custom text', aciklama: 'Codex’e eklenecek kuralı siz yazarsınız.', desc: 'You write the rule given to Codex.' }
@@ -65,7 +65,7 @@ export function IsHattiSettingsView() {
return (
<SettingsSection icon={Link} title={t('AITURK iş hattı', 'AITURK work routing')}>
<p className="text-sm text-(--ui-text-secondary)">
{t('Codex masaüstü uygulamasının hangi işleri AITURK’e devredeceğini seçin. Kullanıcı “Codex” ya da “sen yap” derse hiçbir iş devredilmez.', 'Choose which work the Codex desktop app hands to AITURK. Saying “Codex” or “do it yourself” keeps every task in Codex.')}
{t('Codex masaüstü uygulamasının hangi işleri AITURK’e devredeceğini seçin. Kullanıcı “Codex” derse iş AITURK’e devredilmez.', 'Choose which work the Codex desktop app hands to AITURK. Saying “Codex” keeps the task in Codex.')}
</p>
{draft && (
<>
@@ -95,7 +95,7 @@ export function IsHattiSettingsView() {
className="min-h-40 w-full rounded-md border bg-(--ui-bg) p-2 text-sm"
disabled={busy}
onChange={e => setDraft({ ...draft, talimat: e.target.value })}
placeholder={t('Örnek: Kodlama işlerini kendin yap. Her gün tekrarlanacak işleri {zamanla} satırıyla AITURK IDE botuna ver.', 'Example: Do coding yourself. Give daily work to the AITURK IDE bot with {zamanla}.')}
placeholder={t('Örnek: Kodlama işlerini alt ajanlara ver. Her gün tekrarlanacak işleri {komut} komutuyla AITURK’e gönder.', 'Example: Give coding to subagents. Send daily work to AITURK with {komut}.')}
value={draft.talimat}
/>
<p className="text-sm text-(--ui-text-secondary)">