lemma-mcp 0.7.0 → 0.7.2

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/README.tr.md CHANGED
@@ -1,384 +1,488 @@
1
- <p align="center">
2
- <img src="assets/logo.png" width="200" alt="Lemma Logo">
3
- </p>
4
-
5
- # Lemma - LLM'ler için Kalıcı Bellek (MCP)
6
-
7
- [English](README.md) | [Türkçe](README.tr.md)
8
-
9
- Lemma, Büyük Dil Modelleri (LLM) için kalıcı bir bellek katmanı sağlayan bir Model Bağlam Protokolü (MCP) sunucusudur. LLM'lerin oturumlar arasında gerçekleri, tercihleri ve bağlamı hatırlamasını sağlar; otomatik bellek çürümesi ve öğrenme ile şık bir arayüz sunar.
10
-
11
- ## Lemma Nedir?
12
-
13
- Lemma, AI asistanları için harici bir hipokampüs görevi görür. İnsan beyni her şeyi kaydetmez — sentezler, damıtır ve fragmanlar bırakır. Sık erişilen bilgiler güçlenir; kullanılmayan bilgiler solar ve unutulur.
14
-
15
- Lemma aynı prensiple çalışır:
16
-
17
- - **Ham konuşmalar asla saklanmaz** — sadece sentezlenmiş fragmanlar
18
- - **Fragmanlar zamanla çürür** — sık erişilenler güçlenir
19
- - **Kullanılan bilgi bağlam kazanır** — etiketler ve ilişkiler otomatik oluşturulur
20
- - **LLM her oturumda fragmanları okur** ve kim olduğunu hatırlar
21
-
22
- ## Nasıl Çalışır?
23
-
24
- ### Dinamik Sistem İstemi
25
-
26
- Lemma, ilgili bağlamı LLM'nin sistem istemine çalışma zamanında otomatik enjekte eder:
27
-
28
- - **Küresel Bağlam**: Projeler arası öğrenimler ve tercihler (maksimum 10 fragman)
29
- - **Proje Bağlamı**: Projeye özel fragmanlar, güven görselleştirmesi ile (maksimum 20 fragman)
30
- - **Görsel Formatlama**: Güven çubukları (`███░░`) ve kaynak ikonları (🤖/👤)
31
- - **İstem Değiştiricileri**: Özel istem dönüşümleri için genişletilebilir sistem
32
-
33
- ### Bellek Yapısı
34
-
35
- Her bellek fragmanı şu alanlara sahiptir:
36
-
37
- | Alan | Tip | Açıklama |
38
- |-------|------|-------------|
39
- | `id` | string | Benzersiz kimlik (format: `m` + 6 hex karakter) |
40
- | `title` | string | Hızlı tarama için kısa başlık |
41
- | `fragment` | string | Sentezlenmiş bellek metni |
42
- | `project` | string | Proje kapsamı (küresel için `null`) |
43
- | `confidence` | float | Güvenilirlik 0.0-1.0 (zamanla çürür ve güçlenir) |
44
- | `source` | string | `"user"` veya `"ai"` |
45
- | `created` | string | Oluşturulma tarihi (YYYY-MM-DD) |
46
- | `lastAccessed` | string | Son okuma zamanı (ISO timestamp) |
47
- | `accessed` | int | Mevcut çürüme döngüsündeki erişim sayısı |
48
- | `tags` | string[] | Kullanımdan elde edilen bağlam etiketleri (örn. "debugging", "refactoring") |
49
- | `associatedWith` | string[] | Aynı oturumda erişilen fragman ID'leri |
50
- | `negativeHits` | int | Bu belleğin yardımcı olmadığı işaretlenme sayısı (oturum başına sıfırlanır) |
51
-
52
- ### Öğrenme Sistemi
53
-
54
- Statik belleğin aksine, Lemma bilginin kullanım yoluyla evrildiği biyolojik bir model kullanır:
55
-
56
- **Güçlendirme (erişimde):**
57
- ```
58
- confidence = min(1.0, confidence + 0.1)
59
- tags += context_tag (örn. "debugging")
60
- associatedWith += co_accessed_fragment_ids
61
- ```
62
-
63
- **Çürüme (oturum başına):**
64
- ```
65
- decay = max(0.005, 0.05 - (accessed * 0.005))
66
- confidence = confidence - decay
67
- ```
68
-
69
- - **Sıklık**: Sık erişilen öğeler daha yavaş çürür (minimum oturum başına 0.005)
70
- - **Kullanılmayan öğeler** temel oran olan oturum başına 0.05 çürür
71
- - **İlişkiler**: Birlikte kullanılan fragmanlar gelecekteki hatırlama için çapraz referanslar oluşturur
72
-
73
- ### Bellek Dosyası Konumu
74
-
75
- Bellekler JSONL formatında şu konumda saklanır:
76
-
77
- | İşletim Sistemi | Yol |
78
- |---|---|
79
- | **Windows** | `C:\Users\{kullanıcı}\.lemma\memory.jsonl` |
80
- | **macOS** | `/Users/{kullanıcı}/.lemma/memory.jsonl` |
81
- | **Linux** | `/home/{kullanıcı}/.lemma/memory.jsonl` |
82
-
83
- ## Hızlı Başlangıç
84
-
85
- Lemma'yı kullanmanın önerilen yolu **JSR** üzerindendir. MCP istemci konfigürasyonunuza ekleyin:
86
-
87
- **Claude Desktop (Windows):** `%APPDATA%\Claude\claude_desktop_config.json`
88
- **Claude Desktop (macOS):** `~/Library/Application Support/Claude/claude_desktop_config.json`
89
-
90
- ```json
91
- {
92
- "mcpServers": {
93
- "lemma": {
94
- "command": "npx",
95
- "args": ["-y", "jsr", "@lemma/lemma"]
96
- }
97
- }
98
- }
99
- ```
100
-
101
- ### Alternatif: Doğrudan GitHub'dan çalıştır
102
-
103
- ```json
104
- {
105
- "mcpServers": {
106
- "lemma": {
107
- "command": "npx",
108
- "args": ["-y", "github:xenitV1/lemma"]
109
- }
110
- }
111
- }
112
- ```
113
-
114
- ---
115
-
116
- ## Hook Sistemi
117
-
118
- Lemma, sunucu davranışını genişletmek için eklenti tabanlı bir hook sistemi sağlar:
119
-
120
- ### Yaşam Döngüsü Hook'ları
121
-
122
- ```javascript
123
- import { registerHook, HookTypes } from "@lemma/lemma/server";
124
-
125
- // Sunucu başlangıcında callback kaydet
126
- registerHook(HookTypes.ON_START, async (context) => {
127
- console.log("Sunucu başladı!", context);
128
- });
129
-
130
- // Proje bağlamı değişikliğinde callback kaydet
131
- registerHook(HookTypes.ON_PROJECT_CHANGE, async (context) => {
132
- console.log(`Proje değişti: ${context.project}`);
133
- });
134
- ```
135
-
136
- ### İstem Değiştiricileri
137
-
138
- Sistem istemi oluşturmayı özel dönüşümlerle genişletin:
139
-
140
- ```javascript
141
- import { registerPromptModifier } from "@lemma/lemma/server";
142
-
143
- registerPromptModifier(async (prompt, context) => {
144
- // İsteme özel bağlam ekle
145
- if (context.project === "uygulamam") {
146
- return prompt + "\n\n<custom>Not: Deneysel özellikler kullanılıyor.</custom>";
147
- }
148
- return prompt;
149
- });
150
- ```
151
-
152
- ---
153
-
154
- ## Manuel Kurulum (Geliştiriciler İçin)
155
-
156
- ```bash
157
- git clone https://github.com/xenitV1/lemma
158
- cd Lemma
159
- npm install
160
- ```
161
-
162
- **Gereksinimler:** Node.js 18.0.0 veya üzeri
163
-
164
- ### Yerel Konfigürasyon
165
-
166
- ```json
167
- {
168
- "mcpServers": {
169
- "lemma": {
170
- "command": "node",
171
- "args": ["C:\\yol\\to\\Lemma\\src\\index.js"]
172
- }
173
- }
174
- }
175
- ```
176
-
177
- ---
178
-
179
- ## Mevcut Araçlar
180
-
181
- ### Bellek Araçları
182
-
183
- #### `memory_read`
184
-
185
- Bellek fragmanlarını okur. ÖZET MODU sadece başlık + açıklama gösterir; tam detay için `id` kullanın.
186
-
187
- **Parametreler:**
188
- - `project` (string, opsiyonel): Filtrelenecek proje adı
189
- - `query` (string, opsiyonel): Semantik arama anahtar kelimesi
190
- - `id` (string, opsiyonel): Belirli bir fragmanın tam detayını al
191
- - `context` (string, opsiyonel): Bu erişimi bir bağlamla etiketle (örn. "debugging") — güveni artırır
192
- - `all` (boolean, opsiyonel): Tüm projelerden fragmanları göster (varsayılan: false)
193
-
194
- **Dönüş:** Güven çubuklarıyla formatlanmış string:
195
-
196
- ```
197
- === LEMMA BELLEK FRAGMANLARI (project: myapp) ===
198
- [m1a2b3] ████░ (🤖) [myapp] React Hooks
199
- useState ve useEffect pattern'leri
200
- ==============================
201
- ```
202
-
203
- #### `memory_add`
204
-
205
- **ZORUNLU:** Analizi tamamladıktan SONRA bulguları kaydetmek için çağır.
206
-
207
- **Parametreler:**
208
- - `fragment` (string, zorunlu): Saklanacak bellek metni
209
- - `title` (string, opsiyonel): Kısa başlık
210
- - `description` (string, opsiyonel): Kısa özet
211
- - `project` (string, opsiyonel): Proje kapsamı (null = küresel)
212
- - `source` (string, opsiyonel): "user" veya "ai", varsayılan "ai"
213
-
214
- #### `memory_update`
215
-
216
- Mevcut bir fragmanı ID ile güncelle.
217
-
218
- **Parametreler:**
219
- - `id` (string, zorunlu): Fragman ID'si
220
- - `title` (string, opsiyonel): Yeni başlık
221
- - `fragment` (string, opsiyonel): Yeni metin
222
- - `confidence` (number, opsiyonel): Yeni güven değeri 0-1
223
-
224
- #### `memory_feedback`
225
-
226
- Kullanımdan sonra bir bellek fragmanı hakkında geri bildirim ver. Pozitif geri bildirim güveni artırır; negatif geri bildirim doğrudan düşürür (-0.1).
227
-
228
- **Parametreler:**
229
- - `id` (string, zorunlu): Fragman ID'si
230
- - `useful` (boolean, zorunlu): Yardımcı olduysa `true`, olmadıysa `false`
231
-
232
- #### `memory_forget`
233
-
234
- Bir bellek fragmanını ID ile sil.
235
-
236
- **Parametreler:**
237
- - `id` (string, zorunlu): Fragman ID'si
238
-
239
- #### `memory_merge`
240
-
241
- Birden fazla fragmanı birleştir. Yeni ID oluşturur, orijinalleri siler.
242
-
243
- **Parametreler:**
244
- - `ids` (string[], zorunlu): Birleştirilecek fragman ID'leri
245
- - `title` (string, zorunlu): Birleştirilmiş fragmanın başlığı
246
- - `fragment` (string, zorunlu): Birleştirilmiş içerik
247
- - `project` (string, opsiyonel): Proje kapsamı
248
-
249
- ### Rehber Araçları
250
-
251
- #### `guide_get`
252
-
253
- Kullanım istatistikleriyle takip edilen rehberleri getir. Kullanım sayısına göre sıralı (en çok kullanılan önce).
254
-
255
- **Parametreler:**
256
- - `category` (string, opsiyonel): Kategoriye göre filtrele
257
- - `guide` (string, opsiyonel): Belirli rehber detayı al
258
- - `task` (string, opsiyonel): İlgili rehber önerileri almak için görev açıklaması
259
-
260
- #### `guide_practice`
261
-
262
- **ZORUNLU:** Çalışma sırasında bir rehber kullandığınızda kullanımını kaydedin.
263
-
264
- **Parametreler:**
265
- - `guide` (string, zorunlu): Rehber adı
266
- - `category` (string, zorunlu): Kategori
267
- - `description` (string, opsiyonel): Detaylı kılavuz/protokoller
268
- - `contexts` (string[], zorunlu): Kullanıldığı bağlamlar
269
- - `learnings` (string[], zorunlu): Keşfedilen yeni öğrenimler
270
-
271
- #### `guide_create`
272
-
273
- Detaylı bir kılavuzla rehber oluştur.
274
-
275
- **Parametreler:**
276
- - `guide` (string, zorunlu): Rehber adı
277
- - `category` (string, zorunlu): Kategori
278
- - `description` (string, zorunlu): Tam kılavuz/protokoller
279
- - `contexts` (string[], opsiyonel): İlk bağlamlar
280
- - `learnings` (string[], opsiyonel): İlk öğrenimler
281
-
282
- #### `guide_distill`
283
-
284
- Bir bellek fragmanını rehber öğrenimine dönüştür.
285
-
286
- **Parametreler:**
287
- - `memory_id` (string, zorunlu): Bellek fragmanı ID'si
288
- - `guide` (string, zorunlu): Hedef rehber adı
289
- - `category` (string, opsiyonel): Kategori (yeni rehber oluşturuluyorsa gerekli)
290
-
291
- #### `guide_update`
292
-
293
- Mevcut bir rehberin özelliklerini güncelle.
294
-
295
- **Parametreler:**
296
- - `guide` (string, zorunlu): Mevcut rehber adı
297
- - `new_name` (string, opsiyonel): Yeni ad
298
- - `category` (string, opsiyonel): Yeni kategori
299
- - `description` (string, opsiyonel): Yeni açıklama/kılavuz
300
-
301
- #### `guide_forget`
302
-
303
- Bir rehberi sil.
304
-
305
- **Parametreler:**
306
- - `guide` (string, zorunlu): Rehber adı
307
-
308
- #### `guide_merge`
309
-
310
- Birden fazla rehberi birleştir. Kullanım sayıları toplanır.
311
-
312
- **Parametreler:**
313
- - `guides` (string[], zorunlu): Birleştirilecek rehber adları
314
- - `guide` (string, zorunlu): Birleştirilmiş rehberin adı
315
- - `category` (string, zorunlu): Kategori
316
- - `description` (string, opsiyonel): Birleştirilmiş açıklama
317
- - `contexts` (string[], opsiyonel): Birleştirilmiş bağlamlar
318
- - `learnings` (string[], opsiyonel): Birleştirilmiş öğrenimler
319
-
320
- ## Felsefe
321
-
322
- ### Saklanması Gerekenler
323
-
324
- **Kullanıcı Katmanı:**
325
- - Kullanıcı tercihleri (iletişim tarzı, format, dil)
326
- - Proje bağlamı (teknoloji yığını, klasör yapısı, konvansiyonlar)
327
- - Açıkça istenen anılar
328
-
329
- **Yetenek Katmanı:**
330
- - Kullanılan başarılı çözümler ve yaklaşımlar
331
- - Tekrar eden görevler için keşfedilen kısayollar
332
- - Denenen ve başarısız olan yaklaşımlar
333
-
334
- ### Saklanmaması Gerekenler
335
-
336
- - Ham konuşma içeriği
337
- - Tekrar etmeyecek tek seferlik sorular
338
- - Geçici veya yüksek bağlama özgü bilgiler
339
- - Kişisel veya hassas veriler
340
-
341
- ## Geliştirme
342
-
343
- ### Testleri Çalıştırma
344
-
345
- ```bash
346
- npm test
347
- ```
348
-
349
- Kapsamlı test paketi: bellek çekirdeği, rehber çekirdeği, işleyiciler, öğrenme yaşam döngüsü, hook sistemi ve dinamik istem oluşturma. Tüm I/O geçici dizinlere izole edilir — gerçek verilere dokunulmaz.
350
-
351
- ### Proje Yapısı
352
-
353
- ```
354
- Lemma/
355
- ├── src/
356
- │ ├── index.js # MCP sunucu giriş noktası
357
- │ ├── memory/
358
- │ │ ├── index.js # Bellek modülü yeniden dışa aktarmalar
359
- │ │ └── core.js # Temel bellek mantığı
360
- │ ├── guides/
361
- │ │ ├── index.js # Rehber modülü yeniden dışa aktarmalar
362
- │ │ ├── core.js # Temel rehber mantığı
363
- │ │ └── task-map.js # Görev-rehber eşlemesi
364
- │ └── server/
365
- │ ├── index.js # Sunucu kurulumu
366
- │ ├── handlers.js # Araç işleyicileri
367
- │ ├── tools.js # Araç tanımları
368
- │ ├── hooks.js # Hook sistemi ve istem değiştiriciler
369
- │ └── system-prompt.js
370
- ├── tests/
371
- │ └── test.js # Test paketi
372
- ├── package.json
373
- ├── jsr.json
374
- ├── CHANGELOG.md
375
- └── README.md
376
- ```
377
-
378
- ## Güvenlik
379
-
380
- `memory.jsonl` ve `guides.jsonl` yerel dosyalardır ve asla hiçbir yere gönderilmez. Kullanıcılar içeriklerini inceleyebilir veya MCP araçları üzerinden istedikleri zaman temizleyebilirler.
381
-
382
- ## Lisans
383
-
384
- MIT License
1
+ <p align="center">
2
+ <img src="assets/logo.png" width="200" alt="Lemma Logo">
3
+ </p>
4
+
5
+ # Lemma - LLM'ler için Kalıcı Bellek (MCP)
6
+
7
+ [English](README.md) | [Türkçe](README.tr.md)
8
+
9
+ Lemma, Büyük Dil Modelleri (LLM) için kalıcı bir bellek katmanı sağlayan bir Model Bağlam Protokolü (MCP) sunucusudur. LLM'lerin oturumlar arasında gerçekleri, tercihleri ve bağlamı hatırlamasını sağlar; otomatik çürüme, öğrenme ve evrensel enjeksiyon ile biyolojik bir bellek modeli sunar.
10
+
11
+ ## Lemma Nedir?
12
+
13
+ Lemma, AI asistanları için harici bir hipokampüs görevi görür. İnsan beyni her şeyi kaydetmez — sentezler, damıtır ve fragmanlar bırakır. Sık erişilen bilgiler güçlenir; kullanılmayan bilgiler solar ve unutulur.
14
+
15
+ Lemma aynı prensiple çalışır:
16
+
17
+ - **Ham konuşmalar asla saklanmaz** — sadece sentezlenmiş fragmanlar
18
+ - **Fragmanlar zamanla çürür** — sık erişilenler güçlenir
19
+ - **Kullanılan bilgi bağlam kazanır** — etiketler ve ilişkiler otomatik oluşturulur
20
+ - **Bellekler otomatik enjekte edilir** LLM araç çağırmadan onları görür
21
+
22
+ ## Nasıl Çalışır?
23
+
24
+ ### Evrensel Bellek Enjeksiyonu (Universal Memory Injection)
25
+
26
+ Lemma, bellekleri `tools/list` üzerinden doğrudan araç açıklamalarına enjekte eder. Bu **her MCP istemcisinde** çalışır — Claude Desktop, Cursor, VS Code, opencode, Gemini CLI ve diğerleri.
27
+
28
+ ```
29
+ tools/list memory_read description includes:
30
+ "YOUR MEMORIES (you already know these):
31
+ [m8f728] React Architecture (95%)
32
+ Full content here...
33
+ [m1bbea] Clean Code Research (77%)
34
+ Full content here..."
35
+ ```
36
+
37
+ LLM her oturuma en önemli belleklerini zaten bilerek başlar. Açık bir araç çağrısına gerek yoktur.
38
+
39
+ **Çift katmanlı enjeksiyon:**
40
+ 1. **Açıklamalar (Tool descriptions)** evrensel, her yerde çalışır
41
+ 2. **`instructions` alanı** MCP başlatma talimatlarını destekleyen istemciler için
42
+
43
+ **3 katmanlı mimari:**
44
+ - Katman 1: En önemli bellekler için tam içerik (~3000 token, yapılandırılabilir)
45
+ - Katman 2: Kalan bellekler için özet indeksi
46
+ - Katman 3: Açıklamaları ve öğrenimleriyle aktif rehberler
47
+
48
+ ### Bellek Yapısı
49
+
50
+ Her bellek fragmanı şu alanlara sahiptir:
51
+
52
+ | Alan | Tip | Açıklama |
53
+ |-------|------|-------------|
54
+ | `id` | string | Benzersiz kimlik (`m` + crypto.randomUUID'den 12 hex karakter) |
55
+ | `title` | string | Hızlı tarama için kısa başlık |
56
+ | `fragment` | string | Sentezlenmiş bellek metni |
57
+ | `project` | string | Proje kapsamı (küresel için `null`) |
58
+ | `confidence` | float | Güvenilirlik 0.0-1.0 (zamanla çürür ve güçlenir) |
59
+ | `source` | string | `"user"` veya `"ai"` |
60
+ | `created` | string | Oluşturulma tarihi (YYYY-MM-DD) |
61
+ | `lastAccessed` | string | Son okuma zamanı (ISO timestamp) |
62
+ | `accessed` | int | Mevcut çürüme döngüsündeki erişim sayısı |
63
+ | `tags` | string[] | Kullanımdan elde edilen bağlam etiketleri (örn. "debugging", "refactoring") |
64
+ | `associatedWith` | string[] | Aynı oturumda erişilen fragman ID'leri |
65
+ | `negativeHits` | int | Bu belleğin yardımcı olmadığı işaretlenme sayısı (oturum başına sıfırlanır) |
66
+
67
+ ### Öğrenme Sistemi
68
+
69
+ Statik belleğin aksine, Lemma bilginin kullanım yoluyla evrildiği biyolojik bir model kullanır:
70
+
71
+ **Güçlendirme (erişimde):**
72
+ ```
73
+ confidence = min(1.0, confidence + 0.015)
74
+ tags += context_tag (örn. "debugging")
75
+ associatedWith += co_accessed_fragment_ids
76
+ ```
77
+
78
+ **Çürüme (oturum başına, sadece kullanılmayan fragmanlar):**
79
+ ```
80
+ if accessed == 0:
81
+ confidence = confidence - 0.002
82
+ if accessed > 0:
83
+ çürüme yok (kalkan — kullanılan bilgi korunur)
84
+ ```
85
+
86
+ - **Kalkan**: Sık erişilen öğeler çürümeden tamamen korunur
87
+ - **Kullanılmayan öğeler** oturum başına sadece 0.002 çürür (çok yavaş)
88
+ - **Olumsuz geri bildirim** güveni -0.02 azaltır (eskiden -0.1 idi)
89
+ - **İlişkiler**: Birlikte kullanılan fragmanlar gelecekteki hatırlama için çapraz referanslar oluşturur
90
+ - **Zaman bazlı çürüme yok**: Güven sadece sistem aktif olarak kullanıldığında değişir
91
+
92
+ ### Tekilleştirme (Deduplication)
93
+
94
+ Lemma, tekilleştirme için **Fuse.js bulanık eşleştirme** (Jaccard değil) kullanır:
95
+ - "Use React hooks" vs "Don't use React hooks" — doğru şekilde farklı algılanır
96
+ - "react", "reactjs", "React.js" — doğru şekilde aynı algılanır (rehberler için)
97
+ - Hem kullanıcı hem de AI kaynaklı belleklere uygulanır
98
+
99
+ ### Sanal Oturumlar (Virtual Sessions)
100
+
101
+ Araç çağrıları otomatik olarak sanal oturumlara dönüştürülür:
102
+ - İlk araç çağrısında otomatik başlar
103
+ - 30 dakikalık işlem yapılmadığında otomatik sonlanır
104
+ - Karşılaşılan teknolojileri, kullanılan rehberleri, oluşturulan bellekleri izler
105
+ - Açık `session_start`/`session_end` gerekmez
106
+ - Oturumlar `~/.lemma/sessions/` dizininde saklanır
107
+
108
+ ### Veri Güvenliği
109
+
110
+ - **Kümülatif yedekleme**: `.bak` dosyaları ID tabanlı birleştirmedir — mevcut girdilerin üzerine asla yazmaz
111
+ - **Dosya kilitleme**: Modül düzeyinde yazma kilidi eşzamanlı veri bozulmasını önler
112
+ - **Güvenli I/O**: Boş/null diziler yazılmadan önce reddedilir
113
+ - **Örtük silme yok**: Çürüme sadece güveni azaltır, fragmanları asla kaldırmaz
114
+
115
+ ### Yapılandırma
116
+
117
+ `~/.lemma/config.json` konumunda isteğe bağlı yapılandırma dosyası:
118
+
119
+ ```json
120
+ {
121
+ "token_budget": {
122
+ "full_content": 3000,
123
+ "summary_index": 1000,
124
+ "guides_detail": 1000
125
+ },
126
+ "injection": {
127
+ "max_full_content_fragments": 15,
128
+ "max_summary_fragments": 30,
129
+ "max_guides": 20,
130
+ "max_guide_detail": 3
131
+ },
132
+ "virtual_session": {
133
+ "timeout_minutes": 30
134
+ }
135
+ }
136
+ ```
137
+
138
+ ### Dosya Konumları
139
+
140
+ | İşletim Sistemi | Yol |
141
+ |---|---|
142
+ | **Windows** | `C:\Users\{username}\.lemma\` |
143
+ | **macOS** | `/Users/{username}/.lemma/` |
144
+ | **Linux** | `/home/{username}/.lemma/` |
145
+
146
+ Dosyalar:
147
+ - `memory.jsonl` — bellek fragmanları
148
+ - `guides.jsonl` — deneyim rehberleri
149
+ - `config.json` — kullanıcı yapılandırması (isteğe bağlı)
150
+ - `sessions/` — sanal oturum kayıtları
151
+ - `.bak` dosyaları — kümülatif yedekler
152
+
153
+ ## Hızlı Başlangıç
154
+
155
+ Lemma'yı MCP istemci yapılandırmanıza ekleyin:
156
+
157
+ **Claude Desktop (Windows):** `%APPDATA%\Claude\claude_desktop_config.json`
158
+ **Claude Desktop (macOS):** `~/Library/Application Support/Claude/claude_desktop_config.json`
159
+
160
+ ```json
161
+ {
162
+ "mcpServers": {
163
+ "lemma": {
164
+ "command": "npx",
165
+ "args": ["-y", "lemma-mcp"]
166
+ }
167
+ }
168
+ }
169
+ ```
170
+
171
+ ---
172
+
173
+ ## Hook Sistemi
174
+
175
+ Lemma, sunucu davranışını genişletmek için eklenti tabanlı bir hook sistemi sağlar:
176
+
177
+ ### Yaşam Döngüsü Hook'ları
178
+
179
+ ```javascript
180
+ import { registerHook, HookTypes } from "@lemma/lemma/server";
181
+
182
+ registerHook(HookTypes.ON_START, async (context) => {
183
+ console.log("Server started!", context);
184
+ });
185
+
186
+ registerHook(HookTypes.ON_PROJECT_CHANGE, async (context) => {
187
+ console.log(`Project changed to: ${context.project}`);
188
+ });
189
+ ```
190
+
191
+ ### İstem Değiştiricileri
192
+
193
+ Sistem istemi oluşturmayı özel dönüşümlerle genişletin:
194
+
195
+ ```javascript
196
+ import { registerPromptModifier } from "lemma-mcp/server";
197
+
198
+ registerPromptModifier(async (prompt, context) => {
199
+ if (context.project === "my-app") {
200
+ return prompt + "\n\n<custom>Note: Using experimental features.</custom>";
201
+ }
202
+ return prompt;
203
+ });
204
+ ```
205
+
206
+ ---
207
+
208
+ ## Manuel Kurulum
209
+
210
+ ```bash
211
+ git clone https://github.com/xenitV1/lemma
212
+ cd Lemma
213
+ npm install
214
+ ```
215
+
216
+ **Gereksinimler:** Node.js 18.0.0 veya üzeri
217
+
218
+ ### Yerel Yapılandırma
219
+
220
+ ```json
221
+ {
222
+ "mcpServers": {
223
+ "lemma": {
224
+ "command": "node",
225
+ "args": ["C:\\path\\to\\Lemma\\src\\index.js"]
226
+ }
227
+ }
228
+ }
229
+ ```
230
+
231
+ ---
232
+
233
+ ## Mevcut Araçlar (20)
234
+
235
+ ### Bellek Araçları (10)
236
+
237
+ #### `memory_read`
238
+
239
+ Bellek fragmanlarını okur. ÖZET MODU sadece başlık + açıklama gösterir; tam detay için `id` kullanın.
240
+
241
+ **Parametreler:**
242
+ - `project` (string, opsiyonel): Filtrelenecek proje adı
243
+ - `query` (string, opsiyonel): Semantik arama anahtar kelimesi
244
+ - `id` (string, opsiyonel): Belirli bir fragmanın tam detayını al
245
+ - `ids` (string[], opsiyonel): Birden fazla fragmanın tam detaylarını al
246
+ - `context` (string, opsiyonel): Bu erişimi bir bağlamla etiketle (örn. "debugging")
247
+ - `all` (boolean, opsiyonel): Tüm projelerden fragmanları göster (varsayılan: false)
248
+
249
+ #### `memory_add`
250
+
251
+ **ZORUNLU:** Analizi tamamladıktan SONRA bulguları kaydetmek için çağır.
252
+
253
+ **Parametreler:**
254
+ - `fragment` (string, zorunlu): Saklanacak bellek metni
255
+ - `title` (string, opsiyonel): Kısa başlık
256
+ - `description` (string, opsiyonel): Kısa özet
257
+ - `project` (string, opsiyonel): Proje kapsamı (null = küresel)
258
+ - `source` (string, opsiyonel): "user" veya "ai", varsayılan "ai"
259
+
260
+ #### `memory_update`
261
+
262
+ Mevcut bir fragmanı ID ile güncelle.
263
+
264
+ **Parametreler:**
265
+ - `id` (string, zorunlu): Fragman ID'si
266
+ - `title` (string, opsiyonel): Yeni başlık
267
+ - `fragment` (string, opsiyonel): Yeni metin
268
+ - `confidence` (number, opsiyonel): Yeni güven değeri 0-1
269
+
270
+ #### `memory_feedback`
271
+
272
+ Kullanımdan sonra bir bellek fragmanı hakkında geri bildirim ver. Pozitif geri bildirim güveni artırır; negatif -0.02 düşürür.
273
+
274
+ **Parametreler:**
275
+ - `id` (string, zorunlu): Fragman ID'si
276
+ - `useful` (boolean, zorunlu): Yardımcı olduysa `true`, olmadıysa `false`
277
+
278
+ #### `memory_forget`
279
+
280
+ Bir bellek fragmanını ID ile sil.
281
+
282
+ **Parametreler:**
283
+ - `id` (string, zorunlu): Fragman ID'si
284
+
285
+ #### `memory_merge`
286
+
287
+ Birden fazla fragmanı birleştir. Yeni ID oluşturur, orijinalleri siler.
288
+
289
+ **Parametreler:**
290
+ - `ids` (string[], zorunlu): Birleştirilecek fragman ID'leri
291
+ - `title` (string, zorunlu): Birleştirilmiş fragmanın başlığı
292
+ - `fragment` (string, zorunlu): Birleştirilmiş içerik
293
+ - `project` (string, opsiyonel): Proje kapsamı
294
+
295
+ #### `memory_stats`
296
+
297
+ Bellek deposu istatistiklerini getir: fragman sayıları, ortalama güven, proje dağılımı.
298
+
299
+ **Parametreler:**
300
+ - `project` (string, opsiyonel): Projeye göre filtrele
301
+
302
+ #### `memory_audit`
303
+
304
+ Bellek deposunda bütünlük sorunlarını denetle: yetim referanslar, yinelenen ID'ler, güven anomalileri.
305
+
306
+ ### Rehber Araçları (8)
307
+
308
+ #### `guide_get`
309
+
310
+ Kullanım istatistikleriyle takip edilen rehberleri getir. Kullanım sayısına göre sıralı (en çok kullanılan önce).
311
+
312
+ **Parametreler:**
313
+ - `category` (string, opsiyonel): Kategoriye göre filtrele
314
+ - `guide` (string, opsiyonel): Belirli rehber detayı al
315
+ - `task` (string, opsiyonel): İlgili rehber önerileri almak için görev açıklaması
316
+
317
+ #### `guide_practice`
318
+
319
+ **ZORUNLU:** Çalışma sırasında bir rehber kullandığınızda kullanımını kaydedin.
320
+
321
+ **Parametreler:**
322
+ - `guide` (string, zorunlu): Rehber adı
323
+ - `category` (string, zorunlu): Kategori
324
+ - `description` (string, opsiyonel): Detaylı kılavuz/protokoller
325
+ - `contexts` (string[], zorunlu): Kullanıldığı bağlamlar
326
+ - `learnings` (string[], zorunlu): Keşfedilen yeni öğrenimler
327
+ - `outcome` (string, opsiyonel): "success" veya "failure" — başarı oranını izler
328
+
329
+ #### `guide_create`
330
+
331
+ Detaylı bir kılavuzla rehber oluştur.
332
+
333
+ **Parametreler:**
334
+ - `guide` (string, zorunlu): Rehber adı
335
+ - `category` (string, zorunlu): Kategori
336
+ - `description` (string, zorunlu): Tam kılavuz/protokoller
337
+ - `contexts` (string[], opsiyonel): İlk bağlamlar
338
+ - `learnings` (string[], opsiyonel): İlk öğrenimler
339
+
340
+ #### `guide_distill`
341
+
342
+ Bir bellek fragmanını rehber öğrenimine dönüştür.
343
+
344
+ **Parametreler:**
345
+ - `memory_id` (string, zorunlu): Bellek fragmanı ID'si
346
+ - `guide` (string, zorunlu): Hedef rehber adı
347
+ - `category` (string, opsiyonel): Kategori (yeni rehber oluşturuluyorsa gerekli)
348
+
349
+ #### `guide_update`
350
+
351
+ Mevcut bir rehberin özelliklerini güncelle.
352
+
353
+ **Parametreler:**
354
+ - `guide` (string, zorunlu): Mevcut rehber adı
355
+ - `new_name` (string, opsiyonel): Yeni ad
356
+ - `category` (string, opsiyonel): Yeni kategori
357
+ - `description` (string, opsiyonel): Yeni açıklama/kılavuz
358
+ - `add_anti_patterns` (string[], opsiyonel): Anti-pattern'ler ekle
359
+ - `add_pitfalls` (string[], opsiyonel): Bilinen tuzaklar ekle
360
+ - `superseded_by` (string, opsiyonel): Başka bir rehberle değiştirildi olarak işaretle
361
+ - `deprecated` (boolean, opsiyonel): Kullanımdan kaldırıldı olarak işaretle
362
+
363
+ #### `guide_forget`
364
+
365
+ Bir rehberi sil.
366
+
367
+ **Parametreler:**
368
+ - `guide` (string, zorunlu): Rehber adı
369
+
370
+ #### `guide_merge`
371
+
372
+ Birden fazla rehberi birleştir. Kullanım sayıları toplanır.
373
+
374
+ **Parametreler:**
375
+ - `guides` (string[], zorunlu): Birleştirilecek rehber adları
376
+ - `guide` (string, zorunlu): Birleştirilmiş rehberin adı
377
+ - `category` (string, zorunlu): Kategori
378
+ - `description` (string, opsiyonel): Birleştirilmiş açıklama
379
+ - `contexts` (string[], opsiyonel): Birleştirilmiş bağlamlar
380
+ - `learnings` (string[], opsiyonel): Birleştirilmiş öğrenimler
381
+
382
+ ### Oturum Araçları (2)
383
+
384
+ #### `session_start`
385
+
386
+ İzlenen bir çalışma oturumu başlat. Görev metaverisini kaydeder ve ilgili rehberleri getirir.
387
+
388
+ **Parametreler:**
389
+ - `task_type` (string, zorunlu): "debugging", "implementation", "refactoring", "testing", "research", "documentation", "optimization" veya "other"
390
+ - `technologies` (string[], opsiyonel): İlgili teknolojiler
391
+ - `initial_approach` (string, opsiyonel): İlk plan
392
+
393
+ #### `session_end`
394
+
395
+ Mevcut oturumu sonlandır. Sonucu kaydeder ve rehber başarı takibini günceller.
396
+
397
+ **Parametreler:**
398
+ - `outcome` (string, zorunlu): "success", "partial", "failure" veya "abandoned"
399
+ - `final_approach` (string, opsiyonel): Hangi yaklaşım işe yaradı
400
+ - `lessons` (string[], opsiyonel): Öğrenilenler
401
+
402
+ #### `session_stats`
403
+
404
+ Sanal oturum istatistiklerini getir: son araç kullanım örüntüleri ve teknolojiler.
405
+
406
+ **Parametreler:**
407
+ - `count` (number, opsiyonel): Son oturum sayısı (varsayılan 10)
408
+
409
+ ## Felsefe
410
+
411
+ ### Saklanması Gerekenler
412
+
413
+ **Kullanıcı Katmanı:**
414
+ - Kullanıcı tercihleri (iletişim tarzı, format, dil)
415
+ - Proje bağlamı (teknoloji yığını, klasör yapısı, konvansiyonlar)
416
+ - Açıkça istenen anılar
417
+
418
+ **Yetenek Katmanı:**
419
+ - Kullanılan başarılı çözümler ve yaklaşımlar
420
+ - Tekrar eden görevler için keşfedilen kısayollar
421
+ - Denenen ve başarısız olan yaklaşımlar
422
+
423
+ ### Saklanmaması Gerekenler
424
+
425
+ - Ham konuşma içeriği
426
+ - Tekrar etmeyecek tek seferlik sorular
427
+ - Geçici veya yüksek bağlama özgü bilgiler
428
+ - Kişisel veya hassas veriler
429
+
430
+ ## Geliştirme
431
+
432
+ ### Testleri Çalıştırma
433
+
434
+ ```bash
435
+ npm test
436
+ ```
437
+
438
+ 360 test: bellek çekirdeği, rehber çekirdeği, işleyiciler, öğrenme yaşam döngüsü, hook sistemi, dinamik istem oluşturma ve sanal oturumları kapsar. Tüm I/O geçici dizinlere izole edilir.
439
+
440
+ ```bash
441
+ npm run typecheck # TypeScript tip kontrolü
442
+ npm run build # TypeScript'i dist/ dizinine derle
443
+ ```
444
+
445
+ ### Proje Yapısı
446
+
447
+ ```
448
+ Lemma/
449
+ ├── src/
450
+ │ ├── index.ts # MCP sunucu giriş noktası
451
+ │ ├── types.ts # Paylaşılan TypeScript arayüzleri
452
+ │ ├── memory/
453
+ │ │ ├── index.ts # Bellek modülü yeniden dışa aktarmalar
454
+ │ │ ├── core.ts # Temel bellek mantığı, çürüme, arama, tekilleştirme
455
+ │ │ └── config.ts # Kullanıcı yapılandırma yükleyici
456
+ │ ├── guides/
457
+ │ │ ├── index.ts # Rehber modülü yeniden dışa aktarmalar
458
+ │ │ ├── core.ts # Temel rehber mantığı, bulanık tekilleştirme
459
+ │ │ └── task-map.ts # Görev-rehber eşlemesi
460
+ │ ├── server/
461
+ │ │ ├── index.ts # Sunucu kurulumu, enjeksiyon, bildirimler
462
+ │ │ ├── handlers.ts # Araç işleyicileri (20 araç)
463
+ │ │ ├── tools.ts # Araç tanımları
464
+ │ │ ├── hooks.ts # Hook sistemi ve istem değiştiriciler
465
+ │ │ └── system-prompt.ts # Dinamik sistem istemi
466
+ │ └── sessions/
467
+ │ ├── index.ts # Oturum modülü yeniden dışa aktarmalar
468
+ │ ├── core.ts # Oturum yaşam döngüsü
469
+ │ └── virtual.ts # Sanal oturum izleme
470
+ ├── tests/
471
+ │ ├── memory/ # 7 test dosyası
472
+ │ ├── guides/ # 6 test dosyası
473
+ │ ├── sessions/ # 2 test dosyası
474
+ │ └── server/ # 10 test dosyası
475
+ ├── docs/ # Araştırma makaleleri ve referanslar
476
+ ├── package.json
477
+ ├── tsconfig.json
478
+ ├── CHANGELOG.md
479
+ └── README.md
480
+ ```
481
+
482
+ ## Güvenlik
483
+
484
+ Tüm veriler yerel olarak `~/.lemma/` dizininde saklanır. Hiçbir şey harici sunuculara gönderilmez. Kullanıcılar istedikleri zaman MCP araçları üzerinden veya doğrudan verileri inceleyebilir, düzenleyebilir veya temizleyebilir.
485
+
486
+ ## Lisans
487
+
488
+ MIT License