İçeriğe geç
Nexivion Labs

Açık kaynak

Sarmal

Sarmal kod üretmez, niyet üretir. Klasör düzenini, teknoloji bağını ve işin sırasını bildirimsel .sar dosyalarına yazar; sonra planla disk arasındaki ayrışmayı ölçer. İnsan niyeti ve onayı verir, ajan üretir, motor ikisi arasındaki farkı görünür kılar.

Yapay zekâ ajanları için açık kaynaklı planlama dili.

İnsan makinist. AI hızlı tren. Sarmal ray.

Sarmal

  • Planlama dili

    .sar dosyaları Faz, Blok, Katman, AltKatman ve Adım zinciriyle işin bütün hafızasını taşır.

  • Denetim motoru

    Her kayıtta plan ile disk karşılaştırılır; kırık atıf, ilansız klasör ve konisiz Adım anında görünür.

  • VS Code eklentisi

    Tanılar editörde, plan panelde, durum kayıtları kendi yüzeyinde yaşar.

  • MCP sunucusu

    Claude, Codex ve Gemini gibi ajanlar planı aynı araçlarla okur ve denetler.

Hızlı başlangıç

# 1 git clone https://github.com/nexivion-labs/sarmal.git
# 2 cd sarmal/urun/cekirdek && npm link
# 3 sarmal başla proje
# 4 sarmal doğuş ilk-proje --tur proje
# 5 sarmal denetle ilk-proje
# MCP claude mcp add sarmal -- node <depo>/urun/cekirdek/src/mcp.ts

Node.js ≥ 23.6

Apache-2.0 lisanslıdır.

Ne zaman kullanılmalı

Uzun ömürlü, karar yoğun ve ajan ağırlıklı işlerde. Tek kişilik, iki haftalık bir deneme için Sarmal’ın getirdiği disiplin gereğinden ağır olabilir; bunu açıkça söylüyoruz.

Her dil bir kararla başlar

Altı yıllık yazılım deneyiminin en büyük dersi şu oldu: her programlama dili, bir avuç karardan ve kuraldan, yani bir spesifikasyondan doğar. Dil dediğimiz şey, o kararların zamanla bir çerçeveye oturmuş hâlidir. Bugün yapay zekâ ile yazılım geliştirmede (spec-driven development, kimi yerde vibe coding) aynı ihtiyaç yeniden doğuyor: kararların ve kuralların yazılı, denetlenebilir bir yerde durması.

Flutter böyle doğdu

En çarpıcı örnek Flutter. Apple'ın kendi dili ve geliştirici dünyası vardı; Windows'ta C++, Java ve daha nicesi, web'de HTML vardı. Hepsi bugün de duruyor. Ama Google'ın derdi farklıydı: bir reklam şirketiydi ve uygulamalarının her cihazda çalışması gerekiyordu. Mühendisleri aynı işi aynı anda birçok platform için yapmak zorundaydı. Platformlar arasındaki bağımlılıkları iyi belirleyip kurallara bağladılar ve o kuralları otomatikleştirdiler. Tek koddan birçok platforma yazan spesifikasyon işte o an doğdu. Adı Flutter'dı.

Sarmal da aynı yoldan geldi, ama tek bir insan için. Flutter, bir kurumun, yüzlerce mühendisin katı kurallarla yürüttüğü bir işti. Sarmal ise tek bir geliştiricinin kendi kararlarını ve kurallarını kendi dilinde düzenleyebilmesi için doğdu. Bunun için de bir ağaca ihtiyacı vardı.

Her işin planında bir ağaç vardır

Her işin tohumu niyettir. Toprağa düşer, kök salar; gövde büyür, dallar açılır, yapraklar çıkar ve sonunda meyve verir. Sarmal'da Bloklar gövde, Katmanlar dal, AltKatmanlar ince dal, Adımlar yapraktır; Meyveler işin sonunda ortaya çıkan ürünlerdir. Bir ağaçta yaprak her zaman meyveden çoktur: her Adım bir meyve vermez, ama her meyve bir Adımdan çıkar. Bu yalnız yazılımda böyle değil; ister bir işletme olun ister bir içerik üreticisi, her işin planında bir ağaç vardır.

Flutter geliştiricisine tanıdık gelecek

Flutter'ın arayüze yaptığını Sarmal projenin kendisine yapıyor.

Kâğıt üstünde kalan kurallar

Fazları, Katmanları ve Adımları uzun süre basit Markdown dosyalarında yazdık. Kurallar çoğaldıkça yapay zekâ ajanlarının onlara uymadığını gördük, çünkü kuralları denetleyen kimse yoktu.

Hakem makine olmalı

Ajan denetimini en iyi yapacak olan makinedir, çünkü makine deterministiktir: aynı soruya her seferinde aynı cevabı verir; yorulmaz, unutmaz, göz yummaz. Bir projede JSON, YAML ve Markdown dosyaları ile farklı dillerde yazılmış kodlar yan yana durur ve bir ahenk içinde çalışması gerekir. Sarmal bunları bir kütüphane gibi düzenleyen, denetleyen ve belli bir hedefe yürüten bir planlama dilidir. Eklentisi VS Code'da, MCP sunucusuyla da Claude Code gibi ajanlarda çalışır.

Tek kaynak, dört yüz

Bir projede pek çok dosya çeşidi yan yana yaşar. Makine JSON okur, ayar dosyaları YAML ister, ajanlar XML gibi etiketli bir yapıyı daha iyi anlar, insan ise en rahat Markdown okur. Aynı bilgiyi dört ayrı dosyada elle tutmaya kalktığınızda bir süre sonra birbirlerini tutmazlar ve hangisinin doğru olduğunu kimse bilemez. Biz de bu yüzden Sarmal'ı geliştirdik. Bütün bu dosyaların arasındaki bağları tek bir dosya çeşidinde, .sar dosyasında birleştirdik ve üstüne bir çatı kurduk. Bilgi bir kez ve tek yerde yazılır. Sarmal onu bir prizma gibi kırar: makineye JSON, ayar dosyalarına YAML, ajana XML, insana Markdown olarak verir. Dördü de aynı kaynaktan doğduğu için birbirinden kopamaz. Prizmanın ikinci yüzü teknolojidir: plan aynı kalır, kodu ister Flutter'la ister Python'la ajan yazar, Sarmal niyeti ve kuralı tutar. Amacımız da gayretimiz de bu: dağınık dosyaları tek bir çatı altında buluşturmak.

.sar · tek kaynak

Tek kaynaktan dört çıktıSarmal logosundan çıkan tek bir açık ışın, pırlanta kesimli bir elmasın içinde kırılır ve dört renkli ışın olarak açılır: bilgisayara JSON, ayar dosyasına YAML, yapay zekâ ajanına XML, insana Markdown.Tek kaynaktan dört çıktıSarmal logosundan çıkan tek bir açık ışın, pırlanta kesimli bir elmasın içinde kırılır ve dört renkli ışın olarak açılır: bilgisayara JSON, ayar dosyasına YAML, yapay zekâ ajanına XML, insana Markdown.
Tek bir .sar kaynağı, prizmadan geçen ışık gibi dört biçime ayrılır. Her ışının rengi, aşağıdaki çıktının üst kenarında aynen yinelenir.

Kaynak .sar

Adım( kod: ADM-GIRIS-01, durum: beklemede, bağımlı: [],
  ne: "Giriş ekranını kurmak" ) {
  kabul: [ "boş form gönderilemiyor" ]
}

Makine JSON

{
  "tip": "Adım",
  "alanlar": {
    "durum": "beklemede",
    "bağımlı": [],
    "ne": "Giriş ekranını kurmak",
    "kabul": [
      "boş form gönderilemiyor"
    ]
  },
  "kod": "ADM-GIRIS-01"
}

Ayar dosyası YAML

Adım:
  kod: ADM-GIRIS-01
  durum: beklemede
  bağımlı: []
  ne: Giriş ekranını kurmak
  kabul:
  - boş form gönderilemiyor

Ajan XML

<?xml version="1.0" encoding="UTF-8"?>
<Adım kod="ADM-GIRIS-01">
  <durum>beklemede</durum>
  <bağımlı/>
  <ne>Giriş ekranını kurmak</ne>
  <kabul>
    <öğe>boş form gönderilemiyor</öğe>
  </kabul>
</Adım>

İnsan Markdown

<a id="ADM-GIRIS-01"></a>

# Adım · ADM-GIRIS-01 · Giriş ekranını kurmak

| Alan | Değer |
|---|---|
| durum | beklemede |
| bağımlı | — |

**Kabul**

- boş form gönderilemiyor

Tren, makinist ve ray

Sarmal'ı en iyi anlatan cümle şu: yapay zekâ hızlı tren, insan makinist, Sarmal ray. Tren ne kadar hızlı giderse gitsin raydan çıkmaması gerekir. Makinist yönü belirler, ray treni ve içindeki insanları güvende tutar. Bu ray Git ile birleştiğinde her karar ve her adım iz bırakır, ekip aynı yolda birlikte ilerler.