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

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

Canonical: https://optionos.app/guide/tr/agent-harness-loop
Published: 2026-07-25
Source: optionos-product:r19

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

```text
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ı](https://optionos.app/guide/agent-harness-goal-12h.png)
*On iki saat sonra bile aynı goal, görünür plan ve yeniden açılan kurallar.*
İnteraktif sahne: https://optionos.app/guide/tr/agent-harness-loop#agent-harness-goal-12h

## 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ışı](https://optionos.app/guide/agent-harness-sentetik-user.png)
*Seçili ajan → anchor çağrısı → plan → stepper → aktif adım → yeniden rule çağrısı.*
İnteraktif sahne: https://optionos.app/guide/tr/agent-harness-loop#agent-harness-sentetik-user

## 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:

```text
[#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ı](https://optionos.app/guide/agent-harness-kural-blogu.png)
*Rule heading ve gövde içindeki iki ilişkili anchor.*
İnteraktif sahne: https://optionos.app/guide/tr/agent-harness-loop#agent-harness-kural-blogu

## 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’ı](https://optionos.app/guide/agent-harness-agents-basliklar.png)
*`AGENTS.md` sekmesi ve yalnızca “ne zaman açılır” bilgisini taşıyan routing satırları.*
İnteraktif sahne: https://optionos.app/guide/tr/agent-harness-loop#agent-harness-agents-basliklar

## 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:

```text
✓ 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ı](https://optionos.app/guide/agent-harness-context-compact.png)
*Context compacted → PostCompact stopped → bilinçli interruption.*
İnteraktif sahne: https://optionos.app/guide/tr/agent-harness-loop#agent-harness-context-compact

## `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:

```text
<<<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ı](https://optionos.app/guide/agent-harness-devam-cap.png)
*`devam` → SessionStart → continuation-safe selection → ham konuşma satırları.*
İnteraktif sahne: https://optionos.app/guide/tr/agent-harness-loop#agent-harness-devam-cap

## 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ı:

```text
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.
