optionOS optionOS

Ajanlar context değişse de böyle yoldan çıkmıyor: anchor, stepper ve conversation-cap

Nasıl çalışıyorum?
Etiketler
  • WORKFLOWTekrarlanabilir çalışma akışı.
  • AI-DEVELOPMENTAI ile geliştirme pratiği.
  • AGENTSAI ajanlarıyla çalışma yüzeyi.
  • EVIDENCE-UIGörsel kanıtla anlaşılır.
  • ANNOTATIONKonuşma anına bağlı işaret, numara, kutu veya ok.
  • CONTEXT-FORESTÇok dokümanlı AI bağlam ormanı.
  • ACTIVE-USEŞu an kullanılıyor.

On iki saattir çalışan bir ajanı hedefte tutan şey goal tek başına değil. Benim optionOS harness’ım üç ilişkiyi birlikte koruyor:

doğru kuralları seçmek
+ yapılan işi görünür bir planda taşımak
+ compact sonrasında değerli konuşmayı özetlemeden geri vermek

Aşağıdaki ajan, yaklaşık on iki saattir tek başına bir refactor üzerinde çalışıyor. Hâlâ preview veriyor, aktif adımını gösteriyor, konuşmada gördüğü rule anchor’larını yeniden açıyor ve kendi goal’unu sürdürmeye devam ediyor.

On iki saattir aynı goal üzerinde çalışan Codex ajanı Pursuing goal (12h 15m) — 12 saattir otonom çalışıyorBaşka bir sohbetin sekmesi — ajan arka tarafta çalışıyorSenden aksiyon yok [5/6] — insan beklemeyen ilerleyişD58 önizleme bloğu — iş yaparken hâlâ önizleme veriyor[#kural:onizleme] — konuşma içinde kural etiketi
Goal: sonsuz ilerleyiş
Goal'daki mantık şu: stop'tan sonra ajan tekrar kendi kendine devam edebilsin. Yoksa her seferinde bizim "devam" yazmamız lazım. Bütün hedef içeriği zaten konuşmanın içine gömülü; süresi dolsa bile compaction geliyor, sonrasında goal "devam" diyor. Bu ajan böyle 12 saattir çalışıyor — soy ağacına göre dosyaları taşıyan basit bir refactor yapıyor.
Sağ altta: Pursuing goal (12h 15m)
On iki saat sonra bile aynı goal, görünür plan ve yeniden açılan kurallar.

On iki saattir çalışan ajanın aktif goal, görünür plan, preview ve yeniden açılan rule anchor’ları aynı terminal görünümünde.

## Goal motor; yönü koruyan şey harness

Aynı anda yaklaşık 15 ajanla çalışıyorum. Görseldeki sentetik user, bunlardan yalnızca biri. Her ajan kendi işine başlamadan önce o işe uygulanacak kuralları seçiyor.

Bunun için kullandığım yapı anchor mimarisi. Bütün kuralları her seferinde ajanın context’ine dökmüyorum. Ajan bulunduğu aşamaya ve yapacağı işe göre gerekli anchor’ları çağırıyor; araç yalnızca ilgili rule block’larını ve onların ilişkilerini getiriyor.

Sentetik user ajanının anchor, plan ve stepper akışı "sentetik user" sekmesi — on beş ajandan birianchor komutu — ajan yapılacak işe göre kural köklerini çağırıyorUpdated Plan — ajanın kendi davranışını takip ettiğimiz planstepper [2/8] — geçmiş adımlar ✓, imleç ▶, gelecek adımlar ○imleç: ▶ 3 Deterministic product control — şu anki aşamaaynı sohbette anchor'ın yeniden çağrılışı — her aşamada kurallar tekrar okunuyor
On beş ajandan biri
Şu anda sentetik user üzerine çalışan bir ajanım var — on beş ajanımdan bir tanesi. Bir sürü ajan sekmelerde açık ve hepsi aynı anda çalışıyor. Ben konuşurken onlar arka planda iş üretmeye devam ediyor.
Sekmelerin her biri ayrı bir ajan; bu sentetik user ajanı
Seçili ajan → anchor çağrısı → plan → stepper → aktif adım → yeniden rule çağrısı.

Seçili ajan, anchor çağrısı, plan, stepper, aktif adım ve aşama değişince yinelenen rule routing aynı çalışma akışında.

## Rule başlığı aynı zamanda index

Her rule bir Markdown heading ile başlıyor. Başlıkta dört bilgi birlikte görünüyor:

[#rule-key] · evidence state · importance · ne zaman açılacağı

Anchor çağrıldığında yalnız başlık değil, altındaki rule content’i de geliyor. Rule başka anchor’lara referans veriyorsa closure takip ediliyor ve ilişkili rule block’ları da aynı context içine alınıyor.

Bu nedenle rule, tek başına duran bir prose parçası değil; diğer kurallarla ilişkileri olan adreslenebilir bir düğüm.

Markdown heading anchor’ları ve rule body relation’ları Kural başlığı = anchor: [#kural:yasam-dongusu] [denendi] [gerekli] [@kural]Relation: [#kural:anchor-routing] — kural içinden başka kurala bağRelation: [#kural:tek-ata] — soy ilişkisi de anchor'la kurulur
Çapalar, indexler
Kural için kendi anchor mimarimi kullanıyorum; markdown headline'larını kullanıyorum. Başlıkta anchor'ın yanında etiketler var: [denendi] kuralın gerçek vakada denendiğini, [gerekli] önemini, [@kural] hangi çalışma anında açılacağını söylüyor. Başlıktan sonra gelen kısım da kuralın ne zaman kullanılacağı bilgisi.
Her kuralın başında anchor var: markdown headline + etiketler
Rule heading ve gövde içindeki iki ilişkili anchor.

Bir rule heading’i ile gövdesindeki iki anchor ilişkisi aynı kaynak görünümünde sırayla inceleniyor.

## AGENTS.md bütün rule body’sini taşımıyor

AGENTS.md, full rule corpusunun ikinci bir kopyası değil. Ajan burada compact routing projection’ını görüyor: rule key ve hangi koşulda açılması gerektiği.

Gerçek rule content’i kendi authority’sinde kalıyor. Ajanın komutu ya da bulunduğu context hangi rule’u gerektiriyorsa anchor onu çağırıyor.

Böylece iki problem azaltılıyor:

1. Her görevde ilgisiz kurallarla context’i doldurmak. 2. Rule authority’sini birden fazla dosyaya kopyalayıp drift üretmek.

AGENTS.md içindeki compact rule routing projection’ı AGENTS.md sekmesi — başlıkların yaşadığı dosyaBaşlık satırı: anchor + etiketler + kuralın ne zaman açılacağı bilgisi
Başlıkların evi
Kuralların ne zaman açılacağı bilgisi AGENTS.md dosyamda yaşıyor. Kural gövdeleri burada değil; onlar tek authority'de duruyor. Şu anda AGENTS.md dosyamın içindeyim.
AGENTS.md: ajana giden routing yüzeyi
`AGENTS.md` sekmesi ve yalnızca “ne zaman açılır” bilgisini taşıyan routing satırları.

AGENTS.md içinde rule body yerine rule key ve açılma koşullarını taşıyan compact routing projection.

## Plan kritik; stepper konuşmadaki görünür state

Ajan çalışırken bir plan oluşturuyor. Plan yalnız yapılacakların listesi değil; ajanın davranışını hangi kapsam içinde sürdürdüğünü görünür kılan state.

Konuşmada ayrıca bir stepper gösteriyorum:

✓ kapananlar
▶ şu anki aktif darboğaz
○ gelecekte kalanlar

Örnekte ajan [2/8] konumunda ve üçüncü aşamaya ilerliyor. Önceki adımlar, bulunduğu nokta ve kalan bütün scope aynı yüzeyde görünüyor.

Bu kayıt compact sonrasında da önemini koruyor. Yeni context yalnız goal metnini değil, ajanın nerede kaldığını da okuyabiliyor. Her aşama değiştiğinde ajan gerekli rule anchor’larını yeniden çağırıyor.

## Compact planlı bir durdurma

Context dolduğu zaman Codex Context compacted durumuna geliyor. Benim PostCompact hook’um burada ajanı bilinçli olarak durduruyor.

Bunu yapmamın nedeni injection zamanlaması: ajan çalışmaya devam ederken verdiğim ek context geç düşebiliyor. Ajan durduğunda yeni context bir sonraki başlangıca doğru yerde eklenebiliyor.

Bu yüzden terminalde görünen Conversation interrupted satırı burada beklenmeyen bir arıza değil; devam zincirinin bilinçli sınırı.

Context compact sonrasında PostCompact hook tarafından durdurulan Codex ajanı Sohbetin sekmesi — context'i dolan ajanContext compacted — context'in bittiği anPostCompact hook (stopped) — sohbeti bilinçli durduran hookConversation interrupted — injection için durma anı
Compact mekanizması
Mantık şu: ajanın context'i bittiği zaman benim compact mekanizmam devreye giriyor. Burada bir ajanım var, ondan gideceğim — context bitmiş durumda.
Ajanın context'i dolmak üzere
Context compacted → PostCompact stopped → bilinçli interruption.

Context compacted, PostCompact hook ve bilinçli conversation interruption aynı lifecycle sınırında.

## devam yeni context’i açıyor

Durdurmadan sonra iki yol aynı motoru kullanıyor:

- Ben devam yazabiliyorum. - Aktif goal, stop sonrasında ajanı otomatik olarak yeniden çalıştırabiliyor.

Bir sonraki başlangıçta SessionStart hook’u devreye giriyor ve conversation-cap context’ini enjekte ediyor:

<<<optionos:conversation-cap>>>
selection: continuation-safe
… +1148 lines

conversation-cap bir LLM summary’si değil. Tamamen algoritmik bir selection/dump mekanizması.

Korunanlar:

- insan mesajları, - insanın tepkisini veya sonraki kararını değiştiren agent cevapları, - açık kararlar ve devamı etkileyen context, - gerekli lineage ve dosya yolları.

Atılanlar:

- disposable file-read çıktıları, - tekrarlı tool gürültüsü, - sonraki kararı değiştirmeyen ara taşıyıcılar.

Amaç bütün transcript’i sınırsız büyütmek değil; davranışı oluşturan sinyali, yeniden anlatmadan sonraki context’e taşımak.

Devam komutundan sonra conversation-cap ile yeniden başlayan Codex ajanı Tek mesaj: devamSessionStart hook (completed) — kendi sistemim devreye giriyor<<<optionos:conversation-cap>>> — LLM'siz kırpma algoritması+1148 satır — geri verilen konuşma gövdesi
Tek kelimelik devam
Context durduktan sonra buna yazdığım mesaj sadece "devam". Ne özet istiyorum ne hatırlatma yazıyorum; gerisini sistem hallediyor.
Compact sonrası yazdığım tek şey: devam
`devam` → SessionStart → continuation-safe selection → ham konuşma satırları.

Devam mesajı, SessionStart hook, continuation-safe selection ve geri taşınan ham konuşma satırları aynı başlangıçta.

## Goal’un buradaki işi hafıza olmak değil

Goal’un temel rolü, stop sonrasında ajanın yeniden çalışmasını sağlamak. Tam hedef context’i zaten konuşmanın içinde yaşıyor.

Dolayısıyla zincirdeki roller farklı:

goal              → devam motoru
plan + stepper    → ajanın nerede kaldığı
rules + anchor    → şu anda hangi sınırların geçerli olduğu
conversation-cap  → kararı oluşturan geçmiş context

Bunlardan yalnız biri kaldığında ajan çalışabilir; fakat yönünü koruyacağı garanti edilemez. Harness, bu dört parçanın aynı devam anında yeniden buluşmasını sağlıyor.

## On iki saat sonra ne görüyorum?

Uzun çalışan ajan hâlâ:

- kendi preview’ını gösteriyor, - [5/6] konumunu taşıyor, - konuşmadaki [#kural:onizleme] gibi rule işaretlerini görüyor, - gerektiğinde rule aracını yeniden çağırıyor, - Pursuing goal (12h 15m) durumunda ilerliyor.

Bu, ajanın hiç sapmayacağını ispatlamıyor. Fakat context reset’lerinden sonra goal, plan, rules ve insan konuşmasını yeniden birleştirerek sapma riskini düşürüyor.

Token kullanımını azalttığına dair henüz ölçümüm yok. Tahminim, ajanın aynı araştırmayı baştan yapmasını engellediği için toplam yükü azaltabileceği yönünde; bunu ölçülmüş gerçek gibi yayınlamayacağım.

## Bu benim mevcut optionOS harness’ım

Bu sistemi sürekli geliştiriyor ve paylaşılabilir hâle getiriyorum. Paylaşımın önünde iki temel engel var:

1. Proof: Mekanizmanın farklı ajanlarda gerçekten çalıştığını gösterebilmek. 2. Invisible dependencies: Benim bilgisayarımda var olup başka bir kurulumda bulunmayan görünmez bağımlılıkları kaldırmak.

Bu parçalar çözüldükçe harness’ın bileşenlerini optionOS ekosistemi içinde yayınlayacağım. Şimdilik bu Guide, çalışan mevcut mekanizmayı ve sınırlarını gösteren bir draft/evidence yüzeyi.