Planlama dili
.sar dosyaları Faz, Blok, Katman, AltKatman ve Adım zinciriyle işin bütün hafızasını taşır.
Açık kaynak
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.
.sar dosyaları Faz, Blok, Katman, AltKatman ve Adım zinciriyle işin bütün hafızasını taşır.
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.
Tanılar editörde, plan panelde, durum kayıtları kendi yüzeyinde yaşar.
Claude, Codex ve Gemini gibi ajanlar planı aynı araçlarla okur ve denetler.
# 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.tsNode.js ≥ 23.6
Apache-2.0 lisanslıdır.
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.
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ı.
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 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'da Widget ağacı bir tariftir; çerçeve onu gerçeğe uydurur ve yalnız değişeni yeniden çizer. Sarmal'da.sar dosyası projenin tarifidir; motor onu diskteki gerçekle karşılaştırır ve yalnız sapmayı gösterir.
Widget'lar iç içe kurulur ve Key ile ayrılır. Sarmal'da Faz, Blok, Katman, AltKatman ve Adım iç içe kurulur ve her düğümün tek bir kodu vardır; kod, Sarmal'ın Key'idir.
Flutter'da durum setState ile değişir. Sarmal'da bir Adımın durumu yalnız tek bir yazım kapısından değişir ve denetim yeniden koşar.
Flutter'da hot reload ve flutter analyze vardır. Sarmal'da her kayıtta koşan denetim sorunu anında gösterir.
Flutter'da Widget Inspector vardır. Sarmal'ın VS Code eklentisinde plan ağacı ve bağlantı grafı panelde görünür.
Flutter'ın arayüze yaptığını Sarmal projenin kendisine yapıyor.
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.
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.
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
.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önderilemiyorAjan 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önderilemiyorSarmal'ı 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.