@takimcizgisi/ajan 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,227 @@
1
+ License-Identifier: LicenseRef-TakimCizgisi-LSH-1.0
2
+
3
+ ▀█▀ ▄▀█ █▄▀ █ █▀▄▀█ █▀▀ █ ▀█ █▀▀ █ █▀ █
4
+ ░█░ █▀█ █░█ █ █░▀░█ █▄▄ █ █▄ █▄█ █ ▄█ █
5
+ Limited Source Human License (LSH-1)
6
+
7
+ Sürüm: 1.0
8
+ Yayın Tarihi: 2026
9
+ Lisans Türü: Kaynak Erişimli Topluluk Lisansı
10
+
11
+ Hazırlayan:
12
+ TakımÇizgisi Yazılım Geliştirme Grubu ve Topluluğu
13
+
14
+ Telif Sahibi:
15
+ TakımÇizgisi Yazılım Geliştirme Grubu ve Topluluğu
16
+
17
+
18
+ ======================================================================
19
+ TELİF VE LİSANS BİLDİRİMİ
20
+ ======================================================================
21
+
22
+ Copyright (c) 2026 TakımÇizgisi Yazılım Geliştirme Grubu ve Topluluğu
23
+
24
+ Bu yazılım, kaynak kodları, belgeleri, yapılandırma dosyaları,
25
+ görsel içerikleri, yardımcı araçları ve ilişkili tüm bileşenleri
26
+ TakımÇizgisi LSH-1 Lisansı kapsamında korunmaktadır.
27
+
28
+ Bu yazılımın kullanılması, kopyalanması, incelenmesi,
29
+ değiştirilmesi veya dağıtılması yalnızca bu lisans şartlarının
30
+ kabul edilmesi ve uygulanması koşuluyla mümkündür.
31
+
32
+ Bu lisans kapsamında açıkça izin verilmeyen tüm haklar
33
+ TakımÇizgisi Yazılım Geliştirme Grubu ve Topluluğu tarafından
34
+ saklı tutulmaktadır.
35
+
36
+
37
+ ======================================================================
38
+ TAKIMÇİZGİSİ HAKKINDA
39
+ ======================================================================
40
+
41
+ TakımÇizgisi Yazılım Geliştirme Grubu ve Topluluğu;
42
+
43
+ açık kaynak yazılım geliştirme, teknoloji üretimi,
44
+ topluluk tabanlı yazılım geliştirme ve geliştirici
45
+ iş birlikleri üzerine çalışan bağımsız bir teknoloji
46
+ topluluğudur.
47
+
48
+ TakımÇizgisi'nin amacı:
49
+
50
+ - Açık kaynak projeler geliştirmek,
51
+ - Yazılım bilgisini paylaşmak,
52
+ - Geliştiricilerin birlikte üretmesini sağlamak,
53
+ - Eğitim ve araştırmayı desteklemek,
54
+ - Topluluk odaklı yazılım kültürünü geliştirmektir.
55
+
56
+ Resmi Web:
57
+ https://takimcizgisi.rf.gd/
58
+
59
+ GitHub:
60
+ https://github.com/TakimCizgisi
61
+
62
+
63
+ ======================================================================
64
+ 1. LİSANSIN AMACI
65
+ ======================================================================
66
+
67
+ TakımÇizgisi Limited Source Human License (LSH-1), TakımÇizgisi
68
+ tarafından geliştirilen yazılımların kaynak kod erişimini sağlamak,
69
+ bireysel kullanım ve eğitim faaliyetlerini desteklemek,
70
+ topluluk katkılarını teşvik etmek ve yazılım projelerinin
71
+ izinsiz ticari kullanımını sınırlandırmak amacıyla hazırlanmıştır.
72
+
73
+ LSH-1 aşağıdaki ilkeleri temel alır:
74
+
75
+ - Kaynak kod şeffaflığı.
76
+ - Bireysel kullanım özgürlüğü.
77
+ - Eğitim ve araştırma desteği.
78
+ - Topluluk geliştirmesi.
79
+ - Geliştirici emeğinin korunması.
80
+ - Ticari kullanım kontrolü.
81
+
82
+
83
+ ======================================================================
84
+ 2. LİSANS KULLANIM ALANI
85
+ ======================================================================
86
+
87
+ LSH-1 yalnızca aşağıdaki projelerde kullanılabilir:
88
+
89
+ - TakımÇizgisi tarafından geliştirilen projeler,
90
+ - TakımÇizgisi üyeleri tarafından geliştirilen projeler,
91
+ - TakımÇizgisi topluluğu içerisinde geliştirilen projeler,
92
+ - TakımÇizgisi tarafından açıkça LSH-1 ile yayımlanan yazılımlar.
93
+
94
+ LSH-1 lisansı, TakımÇizgisi'nin yazılı izni olmadan başka
95
+ kişi veya kuruluşlar tarafından yeni projelerde kullanılamaz.
96
+
97
+ Bu lisans:
98
+
99
+ - başka bir lisans olarak yeniden yayımlanamaz,
100
+ - adı değiştirilemez,
101
+ - TakımÇizgisi dışında sahiplenilemez.
102
+
103
+
104
+ ======================================================================
105
+ 3. KULLANICI HAKLARI
106
+ ======================================================================
107
+
108
+ Bu lisans şartlarını kabul eden kullanıcı:
109
+
110
+ - Kaynak kodu inceleyebilir.
111
+ - Yazılımı öğrenme amacıyla analiz edebilir.
112
+ - Kişisel cihazlarında kullanabilir.
113
+ - Kişisel projelerinde çalıştırabilir.
114
+ - Hata düzeltmeleri ve geliştirmeler yapabilir.
115
+
116
+
117
+ ======================================================================
118
+ 4. TİCARİ KULLANIM SINIRLAMALARI
119
+ ======================================================================
120
+
121
+ TakımÇizgisi'nin yazılı izni olmadan:
122
+
123
+ - Yazılım satılamaz.
124
+ - Ücretli paket olarak sunulamaz.
125
+ - Ticari SaaS hizmetlerinde kullanılamaz.
126
+ - Ücretli API hizmetlerine dahil edilemez.
127
+ - Kapalı kaynak ticari ürünlere eklenemez.
128
+ - Gelir sağlayan hizmetlerde kullanılamaz.
129
+
130
+
131
+ ======================================================================
132
+ 5. ATIF ZORUNLULUĞU
133
+ ======================================================================
134
+
135
+ Dağıtılan yazılımlarda aşağıdaki ifade korunmalıdır:
136
+
137
+ "Bu yazılım TakımÇizgisi Yazılım Geliştirme Grubu ve Topluluğu
138
+ tarafından geliştirilmiş veya temel alınmıştır."
139
+
140
+ Bu bildirim:
141
+
142
+ - silinemez,
143
+ - değiştirilemez,
144
+ - gizlenemez.
145
+
146
+
147
+ ======================================================================
148
+ 6. MARKA VE TEMSİL
149
+ ======================================================================
150
+
151
+ LSH-1 aşağıdaki hakları vermez:
152
+
153
+ - TakımÇizgisi adını kullanma,
154
+ - TakımÇizgisi logosunu kullanma,
155
+ - Resmi temsilci olma,
156
+ - Ortaklık açıklaması yapma.
157
+
158
+ Kullanıcı kendisini TakımÇizgisi adına yetkili olarak
159
+ gösteremez.
160
+
161
+
162
+ ======================================================================
163
+ 7. LİSANS İHLALİ
164
+ ======================================================================
165
+
166
+ Aşağıdaki durumlar ihlal kabul edilir:
167
+
168
+ - İzinsiz ticari kullanım.
169
+ - Telif bilgilerinin kaldırılması.
170
+ - Lisans dosyasının değiştirilmesi.
171
+ - TakımÇizgisi kimliğinin gizlenmesi.
172
+ - LSH-1'in izinsiz kullanılması.
173
+
174
+ İhlal halinde verilen kullanım hakları sona erebilir.
175
+
176
+
177
+ ======================================================================
178
+ 8. GARANTİ REDDİ
179
+ ======================================================================
180
+
181
+ Yazılım "OLDUĞU GİBİ" sunulmaktadır.
182
+
183
+ TakımÇizgisi:
184
+
185
+ - hatasız çalışma,
186
+ - kesintisiz hizmet,
187
+ - donanım uyumluluğu,
188
+ - güvenlik garantisi
189
+
190
+ vermez.
191
+
192
+
193
+ ======================================================================
194
+ 9. SON HÜKÜM
195
+ ======================================================================
196
+
197
+ Yazılımı kullanan kişi:
198
+
199
+ - lisansı okuduğunu,
200
+ - şartlarını anladığını,
201
+ - kullanım koşullarını kabul ettiğini
202
+
203
+ beyan eder.
204
+
205
+
206
+ ======================================================================
207
+ TAKIMÇİZGİSİ LSH-1
208
+
209
+ Limited Source Human License
210
+
211
+ Version 1.0 - 2026
212
+
213
+ Hazırlayan:
214
+ TakımÇizgisi Yazılım Geliştirme Grubu ve Topluluğu
215
+
216
+ Copyright (c) 2026
217
+
218
+ License Identifier:
219
+ LicenseRef-TakimCizgisi-LSH-1.0
220
+
221
+ Resmi Kaynak:
222
+ https://takimcizgisi.rf.gd/
223
+
224
+ GitHub:
225
+ https://github.com/TakimCizgisi
226
+
227
+ ======================================================================
package/README.md ADDED
@@ -0,0 +1,324 @@
1
+ # AJAN AI
2
+
3
+ > **Otonom, yerel AI kodlama ajanı** — TakımÇizgisi LSH Yazılım Geliştirme Grubu ve Topluluğu
4
+ >
5
+ > Sürüm 0.5.0 — **Amber Apricot**
6
+
7
+ AJAN, görevleri bağımsız olarak **planlayan**, **kod yazan**, **test eden** ve **sonuçları doğrulayan** bir yapay zekâ ajanıdır. Tamamen yerel çalışır: model bilgisayarınızda koşar, dosyalar cihazınızdan çıkmaz.
8
+
9
+ AJAN bir **motordur** (daemon). Arayüz, panel veya eklenti yoktur. Motor bir IPC kanalı üzerinden dinler; onunla konuşan istemci ne olursa olsun sonucu kendi yüzeyinde gösterir. Yapay zekâ motoru **node-llama-cpp**'dir ve hedefi **CUDA**'dır.
10
+
11
+ > **Neden yerel?** Bulut ajanlarının aksine AJAN hiçbir koda, yapılandırmaya veya sohbete dışarıdan erişim vermez. Model indirilir ve tüm işlemler tamamen offline yürütülür.
12
+
13
+ ---
14
+
15
+ ## İçindekiler
16
+
17
+ - [Mimari](#mimari)
18
+ - [Kurulum](#kurulum)
19
+ - [Motoru çalıştırma](#motoru-çalıştırma)
20
+ - [İstemci kullanımı](#istemci-kullanımı)
21
+ - [IPC protokolü](#ipc-protokolü)
22
+ - [Özellikler](#özellikler)
23
+ - [Araçlar](#araçlar)
24
+ - [Modeller](#modeller)
25
+ - [GPU](#gpu)
26
+ - [Yapılandırma](#yapılandırma)
27
+ - [Veri dizini](#veri-dizini)
28
+ - [Geliştirme](#geliştirme)
29
+ - [Sorun giderme](#sorun-giderme)
30
+ - [Lisans](#lisans)
31
+
32
+ ---
33
+
34
+ ## Mimari
35
+
36
+ ```
37
+ ┌──────────────┐ ┌──────────────────────────────┐
38
+ │ istemci uyg │ ─IPC─▶ │ ajan-engine (daemon) │
39
+ │ (herhangi) │ ◀───── │ ├─ AjanService (tek örnek) │
40
+ └──────────────┘ olay │ ├─ AjanAgent (tek model) │
41
+ │ └─ LlamaEngine (CUDA) │
42
+ └──────────────────────────────┘
43
+ ```
44
+
45
+ - **Tek motor süreci.** Model belleği paylaşılan bir kaynaktır; her istemci aynı modeli kullanır, her sohbet motoru yeniden başlatmaz.
46
+ - **Tek çalışma kuyruğu.** Modele dokunan işlemler (sohbet, model kurma, config değişimi) sırayla yürütülür. Durum okuyan istekler kuyruğu atlar.
47
+ - **Olay akışı.** Sohbet çıktısı yalnızca soran istemciye gider; iki istemci birbirinin metnini görmez. Model yükleme ilerlemesi herkese açıktır.
48
+
49
+ ## Kurulum
50
+
51
+ ```bash
52
+ npm install -g @takimcizgisi/ajan
53
+ ```
54
+
55
+ Bu, `ajan-engine` motorunu kurar. Motor **yalnızca CUDA ve Vulkan** kullanır ve ikisini sırayla dener: önce CUDA, olmazsa Vulkan. İkisi de kullanılamıyorsa motor hata fırlatır — sessizce CPU'ya düşmez. Kurulumdan sonra hangisinin çalıştığını doğrulamak için:
56
+
57
+ ```bash
58
+ npm run check:gpu
59
+ ```
60
+
61
+ Motor tek dosya olarak paketlenir (`out/ajan-engine.js`). İstemci olarak `AjanEngine` sınıfını içe aktarırsınız:
62
+
63
+ ```ts
64
+ import { AjanEngine } from "@takimcizgisi/ajan/client";
65
+ ```
66
+
67
+ ## Motoru çalıştırma
68
+
69
+ ```bash
70
+ npx ajan-engine
71
+ ```
72
+
73
+ Seçenekler:
74
+
75
+ | Seçenek | Açıklama |
76
+ |---|---|
77
+ | `-C, --cwd <yol>` | Ajanın çalışma dizini (varsayılan: bulunulan dizin) |
78
+ | `--socket <yol>` | Dinlenecek socket (varsayılan: `\\.\pipe\ajan-engine`, POSIX'te `$XDG_RUNTIME_DIR/ajan-engine.sock`) |
79
+ | `--log-level <seviye>` | `debug` \| `info` \| `warn` \| `error` |
80
+ | `-h, --help` | Yardım |
81
+
82
+ Motor başladığında tek satır yazar ve dinlemeye başlar:
83
+
84
+ ```
85
+ AJAN motoru hazır ajan=0.5.0 socket=\\.\pipe\ajan-engine cwd=D:\proje
86
+ ```
87
+
88
+ `Ctrl+C` motoru düzgünce kapatır. Uzun süre arka planda çalışacaksa `detached` olarak başlatıp logları `getLogDir()` altına yazdırın.
89
+
90
+ ## İstemci kullanımı
91
+
92
+ ```ts
93
+ import { AjanEngine } from "@takimcizgisi/ajan/client";
94
+
95
+ const engine = await AjanEngine.connect(); // özel yol: connect("\\.\pipe\ajan-engine")
96
+
97
+ // Tek seferlik soru — yanıt akış halinde gelir
98
+ const cevap = await engine.ask("bu klasördeki tüm testleri çalıştır", {
99
+ onText: (t) => process.stdout.write(t),
100
+ onThinking: (t) => process.stderr.write(t),
101
+ onToolCall: (name, args) => console.log("→", name, args),
102
+ onToolResult: (name, ok) => console.log(ok ? "✔" : "✖", name)
103
+ });
104
+
105
+ // Durum
106
+ const s = await engine.status();
107
+ console.log(s.modelName, s.gpu.active, `${s.gpu.layers} katman`, `${s.gpu.vramMb} MB`);
108
+ ```
109
+
110
+ Öne çıkan metotlar:
111
+
112
+ | Metot | Açıklama |
113
+ |---|---|
114
+ | `ping()` | Motor sürümü ve protokol uyumu (`PROTOCOL_VERSION`) |
115
+ | `status()` | Model, GPU, bağlam, istemci sayısı, uptime |
116
+ | `getGpu()` | Yalnız GPU raporu |
117
+ | `ask(text, opts)` | Sohbet; akış + araç olayları, döner: tam yanıt |
118
+ | `abort()`` | Devam eden görevi iptal et |
119
+ | `newChat()` | Konuşma geçmişini temizle (model yüklü kalır) |
120
+ | `listModels()` / `installModel(id)` / `removeModel(id)` / `useModel(id)` | Model yönetimi |
121
+ | `refreshModels()` | Kataloğu uzak kaynaktan yenile |
122
+ | `getHistory()` / `listSessions()` / `loadSession(id)` / `saveSession(s)` / `deleteSession(id)` | Oturum yönetimi |
123
+ | `shutdown()` | Motoru kapat |
124
+
125
+ Olaylara abone olmak için `engine.on(...)` ve `engine.onClose(...)` kullanılabilir.
126
+
127
+ Motor çalışmıyorsa `AjanEngine.connect` anlaşılır bir hata verir (`socket yok` / `yanıt vermiyor`); `start` komutuyla başlatın.
128
+
129
+ ## IPC protokolü
130
+
131
+ - Taşıma: Windows'ta **named pipe** (`\\.\pipe\ajan-engine`), POSIX'te **Unix domain socket**.
132
+ - Çerçeveleme: **newline-delimited JSON** — her mesaj tek satır. Uzun yazılar (diff, patch) satır sınırlarından bağımsız birleştirilir.
133
+ - Sürüm: `PROTOCOL_VERSION` (şu an `1`). Uyumsuzlukta `AjanEngine.assertCompatible()` hata verir; motoru yeniden başlatın.
134
+
135
+ Bir istek `{ id, req }`, bir yanıt `{ id, ok, result }` veya `{ id, ok:false, error }` şeklindedir. Olaylar `{ event, ... }` taşır ve `id` içermez.
136
+
137
+ İstekler: `ping`, `status`, `set-config`, `list-models`, `install-model`, `remove-model`, `use-model`, `refresh-models`, `chat`, `abort`, `new-chat`, `get-history`, `list-sessions`, `load-session`, `save-session`, `delete-session`, `shutdown`.
138
+
139
+ Olaylar: `text-chunk`, `thinking-chunk`, `tool-call`, `tool-result`, `step-start`, `step-end`, `load-progress`, `load-complete`, `error`, `complete`.
140
+
141
+ ## Özellikler
142
+
143
+ - **Otonom görev döngüsü.** Model araç çağrısı yapar, sonuçları okur, adımları kendi ilerletir; `task_complete` ile turu kapatır.
144
+ - **Gerçek akıl yürütme akışı.** Gemma modellerinde `reasoning: true` ile düşünme segmentleri `thinking-chunk` olarak yayınlanır; Qwen'de `thoughts` modu `reasoning` ayarına göre `discourage`/`auto` seçilir.
145
+ - **Araçlar.** Dosya sistemi, kabuk, arama, veri okuma, diff/patch uygulama, `fetch_url`, oyun alanı (playground) ve oturum araçları.
146
+ - **Patch desteği.** Birleşik diff ayrıştırılır ve dosyaya güvenli biçimde uygulanır.
147
+ - **Güvenlik sınırları.** `cwd` dışına yazma engellenir; silme işlemleri izlenebilir loglanır.
148
+ - **Oturumlar.** Sohbet geçmişi diske yazılır, listelenir, geri yüklenir.
149
+ - **Model kataloğu.** Uzak kaynaktan (`config/models.json` gösterge dosyasından) yenilenebilir.
150
+
151
+ ## Araçlar
152
+
153
+ | Araç | İşlev |
154
+ |---|---|
155
+ | `read_file`, `write_file`, `edit_file`, `delete_file` | Dosya okuma/yazma/düzenleme/silme |
156
+ | `list_files`, `search_files`, `read_data` | Dizin tarama, içerik arama, JSON/YAML okuma |
157
+ | `run_command` | Kabuk komutu |
158
+ | `apply_patch` | Birleşik diff uygulama |
159
+ | `unzip_file` | Arşiv açma |
160
+ | `fetch_url` | URL içeriği çekme |
161
+ | `open_playground`, `task_complete` | Etkileşimli oyun alanı ve tur kapanışı |
162
+
163
+ ## Modeller
164
+
165
+ Katalog `config/models.json` içinde tanımlıdır; her model `contextSize: "auto"` ve `gpuLayers: "auto"` taşır, yani motor config'deki değerleri kullanır.
166
+
167
+ | id | Ad | Not |
168
+ |---|---|---|
169
+ | `gemma-4-e2b-q4-k-m` | Gemma 4 E2B (Q4_K_M) | Varsayılan, düşünme açık |
170
+ | `gemma-4-e2b-q8` | Gemma 4 E2B (Q8_0) | Daha yüksek kalite, daha çok RAM |
171
+ | `gemma-3-4b-it-q4-k-m` | Gemma 3 4B Instruct (Q4_K_M) | Alternatif |
172
+ | `qwen-3-4b-instruct-q4-k-m` | Qwen3 4B Instruct (Q4_K_M) | Güçlü tool calling |
173
+
174
+ Model kurma:
175
+
176
+ ```ts
177
+ await engine.installModel("gemma-4-e2b-q4-k-m");
178
+ ```
179
+
180
+ Kurulum `getModelsDir()` altına indirir ve ilerleme `load-progress` olayıyla bildirilir. Kurulu model `active` olarak işaretlenmeden sohbet başlatmak "Model tanımlı değil" hatası verir.
181
+
182
+ ## GPU
183
+
184
+ Motor **yalnızca CUDA ve Vulkan** kullanır. Bu ikisi dışında bir arka uç yoktur (Metal, WebGPU ve saf CPU seçeneği kaldırılmıştır).
185
+
186
+ ### Arka uç zinciri
187
+
188
+ Motor sırayla dener ve **ilk çalışanı** kullanır:
189
+
190
+ | `config.gpu` | Denenen sıra |
191
+ |---|---|
192
+ | `auto` (varsayılan) | `auto` → node-llama-cpp kendi çözümlemesi (önce CUDA, olmazsa Vulkan) |
193
+ | `cuda` | `cuda` → `vulkan` → `auto` |
194
+ | `vulkan` | `vulkan` → `auto` |
195
+
196
+ - Her başarısız deneme gerekçesiyle loglanır.
197
+ - Zincirin tamamı tutarsa **hata fırlatılır**; motor sessizce CPU'ya düşmez. Sessiz yavaşlama, ilk sürümdeki en büyük sorundu.
198
+ - `gpuLayers` varsayılanı `max` — tüm katmanlar GPU'ya gider.
199
+
200
+ ```bash
201
+ npm run check:gpu
202
+ ```
203
+
204
+ Bu komut `config.gpu`'yu gösterir, sürücü desteğini listeler ve CUDA ile Vulkan'ı **gerçekten yükleyerek** hangisinin çalıştığını raporlar. Model yüklenmeden katman aktarımı açılıp açılmadığı görülür.
205
+
206
+ ### Raporlanan alanlar
207
+
208
+ | Alan | Anlam |
209
+ |---|---|
210
+ | `gpu.active` | Gerçekte yüklenen arka uç (`cuda` \| `vulkan`) veya `"yüklenmedi"` |
211
+ | `gpu.offload` | Katman aktarımı açık mı |
212
+ | `gpu.layers` | GPU'ya yüklenen katman sayısı (0 = henüz yüklenmedi) |
213
+ | `gpu.vramMb` | Kullanılabilen GPU belleği |
214
+ | `gpu.supported` | Bu makinede sürücüsü bulunan arka uçlar |
215
+ | `gpu.preferred` | `config.gpu` değeri |
216
+ | `gpu.fallback` | İstenen arka uç kullanılamayıp diğerine düşüldü mü |
217
+
218
+ > **Önemli ayrım:** "makine CUDA'yı destekliyor" ile "motor CUDA'da çalışıyor" aynı şey değildir. `nvidia-smi` CUDA sürücüsünü gösterebilir ama node-llama-cpp'nin prebuilt CUDA ikilisi uyumsuz olabilir; bu durumda `getLlama({gpu:"cuda"})` hata fırlatır ve motor bir sonraki adaya geçer. `gpu.active` yalnızca `Llama.gpu`'dan okunur, `supported` listesinden değil.
219
+
220
+ ### Bu makinedeki durum (RTX 5070 Laptop)
221
+
222
+ ```
223
+ sürücü destekli : vulkan
224
+ uyumlu olabilir : cuda, vulkan
225
+
226
+ cuda -> KULLANILAMIYOR (No prebuilt binaries found)
227
+ vulkan -> vulkan katman aktarimi: acik
228
+ ```
229
+
230
+ CUDA sürücüsü kurulu (`nvidia-smi` CUDA 13.4 gösteriyor) ancak node-llama-cpp 3.21.1'in prebuilt CUDA ikilisi bu sistemde `testBindingBinary` aşamasında eleniyor. İki olası sebep: RTX 5070'in Blackwell mimarisi (sm_120) sürümdeki CUDA ikilisinde bulunmuyor ya da sistemde çakışan bir CUDA kurulumu var. Motor bu yüzden **Vulkan** ile çalışır — aynı GPU, aynı VRAM, aynı katman aktarımı; yalnızca CUDA'ya göre biraz daha yavaş.
231
+
232
+ CUDA'nın açılması için node-llama-cpp'nin bu kartı kapsayan bir sürümüne yükseltilmesi gerekir. Bunu doğrulamak için:
233
+
234
+ ```bash
235
+ npm run check:gpu
236
+ ```
237
+
238
+ ## Yapılandırma
239
+
240
+ `getConfigPath()` altındaki `config.json`:
241
+
242
+ ```jsonc
243
+ {
244
+ "modelId": "gemma-4-e2b-q4-k-m",
245
+ "contextSize": 8192, // 128K yerine; KV cache belleği tüketip ilk tokeni geciktiriyor
246
+ "gpuLayers": "max", // "max" = tüm katmanlar; sayı = o kadar katman
247
+ "gpu": "auto", // auto | cuda | vulkan
248
+ "session": { "temperature": 0.6, "topK": 64, "topP": 0.9, "maxTokens": 2048 }
249
+ }
250
+ ```
251
+
252
+ `gpu` yalnız `auto`, `cuda` veya `vulkan` olabilir. Ayrıntı için [GPU](#gpu) bölümü.
253
+
254
+ Çalışma zamanında değiştirmek için `set-config` isteği gönderilir (`patch` nesnesi mevcut config ile birleştirilir). `modelOverrides` ile model bazında `temperature`, `maxTokens` gibi değerler geçilebilir.
255
+
256
+ ## Veri dizini
257
+
258
+ `getDataDir()` (varsayılan `~/.ajan`):
259
+
260
+ | Yol | İçerik |
261
+ |---|---|
262
+ | `models/` | İndirilen GGUF dosyaları |
263
+ | `config.json` | Ayarlar |
264
+ | `sessions/` | Kayıtlı oturumlar |
265
+ | `logs/` | `engine.log`, `engine.err.log` |
266
+
267
+ ## Geliştirme
268
+
269
+ ```bash
270
+ npm install
271
+ npm run typecheck # tsc --noEmit
272
+ npm run build # out/ajan-engine.js
273
+ npm run watch # yeniden derleme
274
+ npm run clean
275
+ npm run test:tools # araç testleri
276
+ npm run test:new # yeni araç testleri
277
+ npm run test:ipc # IPC uçtan uca testi
278
+ npm run check:gpu # CUDA/Vulkan yükleme denemesi
279
+ npm run daemon # derlenmiş motoru çalıştır
280
+ ```
281
+
282
+ Kaynak düzeni:
283
+
284
+ | Yol | İşlev |
285
+ |---|---|
286
+ | `src/daemon/` | Motor: `main`, `server`, `runner`, `gpu` |
287
+ | `src/protocol/` | Sözleşme ve kanal (`messages.ts`, `channel.ts`) |
288
+ | `src/client/` | `AjanEngine` istemcisi |
289
+ | `src/service.ts` | UI'dan bağımsız servis katmanı |
290
+ | `src/core/agent.ts` | Ajan döngüsü, araç kullanımı, olaylar |
291
+ | `src/engine/` | `LlamaEngine` ve model yöneticisi |
292
+ | `src/tools/` | Araç kayıt defteri ve uygulamaları |
293
+ | `src/config/` | Config yöneticisi ve tipler |
294
+
295
+ ## Sorun giderme
296
+
297
+ **"AJAN motoru çalışmıyor (socket yok)"**
298
+ Motor ayakta değil. `npx ajan-engine` ile başlatın.
299
+
300
+ **EADDRINUSE / "motor zaten çalışıyor"**
301
+ Önceki motor süreci hâlâ dinliyor. `shutdown` isteği gönderin veya süreci sonlandırıp tekrar başlatın.
302
+
303
+ **`gpu.preferred = "cuda"` ama `gpu.active = "cpu"`**
304
+ Sürücü yok ya da CUDA native paketi kurulu değil. Sürücüyü kurup paketin doğru platform ikilisini içerdiğini doğrulayın.
305
+
306
+ **"Model tanımlı değil: <id>"**
307
+ Model kurulmamış. `installModel(id)` çağırın veya `listModels()` ile katalogdaki id'yi kontrol edin.
308
+
309
+ **Bağlantı açılıp kapanıyor (POSIX)**
310
+ Sahipsiz socket dosyası kalmış olabilir. Motor başlarken temizler; çalışan başka motor varsa dokunmaz.
311
+
312
+ **Protokol uyuşmazlığı**
313
+ `ajan` ve motor farklı sürümde. Motoru yeniden başlatın.
314
+
315
+ **Uzun süren ilk yanıt**
316
+ Model yükleme ve VRAM taşıma süresidir; `load-progress` olaylarıyla ilerleme raporlanır. `contextSize` çok büyükse bellek baskısı token üretimini yavaşlatır.
317
+
318
+ ## Lisans
319
+
320
+ **Limited Source Human License (LSH-1)** — Sürüm 1.0
321
+ SPDX tanımlayıcısı: `LicenseRef-TakimCizgisi-LSH-1.0`
322
+
323
+ Telif sahibi: TakımÇizgisi Yazılım Geliştirme Grubu ve Topluluğu (2026).
324
+ Ayrıntılar için [LICENSE](LICENSE).
@@ -0,0 +1,50 @@
1
+ {
2
+ "$schema": "https://takimcizgisi.dev/schemas/ajan-models.json",
3
+ "version": 1,
4
+ "source": "https://raw.githubusercontent.com/takimcizgisi/ajan/Project/config/models.json",
5
+ "models": [
6
+ {
7
+ "id": "gemma-4-e2b-q4-k-m",
8
+ "name": "Gemma 4 E2B (Q4_K_M)",
9
+ "description": "Ana model: 4-bit sıkıştırılmış, ~3-4GB RAM, uzun bağlam (panelden ayarlanır)",
10
+ "uri": "hf:unsloth/gemma-4-E2B-it-GGUF/gemma-4-E2B-it-Q4_K_M.gguf",
11
+ "fileName": "gemma-4-E2B-it-Q4_K_M.gguf",
12
+ "contextSize": "auto",
13
+ "gpuLayers": "auto",
14
+ "chatWrapper": "gemma4",
15
+ "reasoning": true
16
+ },
17
+ {
18
+ "id": "gemma-4-e2b-q8",
19
+ "name": "Gemma 4 E2B (Q8_0)",
20
+ "description": "Daha yüksek kalite, daha fazla RAM (~5-8GB)",
21
+ "uri": "hf:unsloth/gemma-4-E2B-it-GGUF/gemma-4-E2B-it-Q8_0.gguf",
22
+ "fileName": "gemma-4-E2B-it-Q8_0.gguf",
23
+ "contextSize": "auto",
24
+ "gpuLayers": "auto",
25
+ "chatWrapper": "gemma4",
26
+ "reasoning": true
27
+ },
28
+ {
29
+ "id": "gemma-3-4b-it-q4-k-m",
30
+ "name": "Gemma 3 4B Instruct (Q4_K_M)",
31
+ "description": "Alternatif: çoklu mod destekli, orta boy",
32
+ "uri": "hf:unsloth/gemma-3-4b-it-GGUF:Q4_K_M",
33
+ "fileName": "gemma-3-4b-it-Q4_K_M.gguf",
34
+ "contextSize": "auto",
35
+ "gpuLayers": "auto",
36
+ "chatWrapper": "gemma"
37
+ },
38
+ {
39
+ "id": "qwen-3-4b-instruct-q4-k-m",
40
+ "name": "Qwen3 4B Instruct (Q4_K_M)",
41
+ "description": "Alternatif: güçlü tool calling desteği",
42
+ "uri": "hf:unsloth/Qwen3-4B-GGUF/Qwen3-4B-Q4_K_M.gguf",
43
+ "fileName": "Qwen3-4B-Q4_K_M.gguf",
44
+ "contextSize": "auto",
45
+ "gpuLayers": "auto",
46
+ "chatWrapper": "qwen3",
47
+ "reasoning": false
48
+ }
49
+ ]
50
+ }