lemma-mcp 0.7.2 → 0.7.3

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.
Files changed (3) hide show
  1. package/README.md +1 -1
  2. package/package.json +4 -3
  3. package/README.tr.md +0 -488
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  # Lemma - Persistent Memory for LLMs via MCP
6
6
 
7
- [English](README.md) | [Türkçe](README.tr.md)
7
+ [English](README.md) | [Türkçe](docs/README.tr.md)
8
8
 
9
9
  Lemma is a Model Context Protocol (MCP) server that provides a persistent memory layer for Large Language Models. It enables LLMs to remember facts, preferences, and context across sessions through a biological memory model with automatic decay, learning, and universal injection.
10
10
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lemma-mcp",
3
- "version": "0.7.2",
3
+ "version": "0.7.3",
4
4
  "description": "Persistent memory layer for LLMs via MCP",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -13,11 +13,12 @@
13
13
  "./guides": "./dist/guides/index.js",
14
14
  "./server": "./dist/server/index.js"
15
15
  },
16
- "files": [
16
+ "files": [
17
17
  "dist",
18
18
  "README.md",
19
+ "README.tr.md",
19
20
  "LICENSE"
20
- ],
21
+ ],
21
22
  "scripts": {
22
23
  "build": "tsc",
23
24
  "prepare": "npm run build",
package/README.tr.md DELETED
@@ -1,488 +0,0 @@
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