ba0b300917
- New TUI screens: Main Menu, Compile, Run, REPL, AI Generator, AI Settings, Help - AI configuration persisted in ~/.config/cljnim/config.json - Added illwill dependency for terminal UI - Updated experiments, examples, docs, and core modules
115 lines
4.8 KiB
Markdown
115 lines
4.8 KiB
Markdown
# План за Clojure/Nim — Ден на Победата Edition 🎖️
|
||
|
||
## Направено (8-9 май 2026)
|
||
|
||
### Ядро (Compiler Core)
|
||
- ✅ `loop`/`recur` вече работи в компилиран код (критичен бъг оправен)
|
||
- ✅ `compile-lib` режим — експортирани функции за library generation
|
||
- ✅ 20+ компилаторни предупреждения изчистени
|
||
- ✅ `make check` — build + test + всички примери
|
||
|
||
### AI Интеграция (Phase AI-1 до AI-4) — 9 май 2026
|
||
- ✅ **AI-Assisted Errors** — error cache, Reader/Emitter/Nim error coverage
|
||
- ✅ **AI Code Generation** — `(ai/generate "...")` в REPL, `:ai` команда, JSON REPL `ai-generate`
|
||
- ✅ **AI Optimization Hints** — `(ai/optimize "...")`, `buildOptimizationPrompt`
|
||
- ✅ **AI Debugging** — `(ai/debug expr)`, `buildDebugPrompt`, JSON REPL `ai-debug`
|
||
|
||
### Тестове
|
||
- ✅ `tests/test_macros.nim` — 30 теста за макроси
|
||
- ✅ `tests/test_eval.nim` — +30 нови теста (math, collections, agents, channels)
|
||
- ✅ `tests/test_emitter.nim` — +3 теста за loop/recur
|
||
|
||
### Документация
|
||
- ✅ README.md, ROADMAP.bg.md, ARCHITECTURE.md синхронизирани
|
||
- ✅ LICENSE файл добавен
|
||
|
||
### Нови Target-и
|
||
- ✅ `experiments/web-target/` — Clojure → Nim → JS
|
||
- ✅ `experiments/native-lib/` — Clojure → Nim → C shared library
|
||
- ✅ `experiments/wasm-target/` — WASM skeleton
|
||
|
||
---
|
||
|
||
## План за 9 май — AI Интеграция (DeepSeek / Xiaomi MiMo)
|
||
|
||
### Phase AI-1: AI-Assisted Error Messages ✅
|
||
**Цел:** Когато `cljnim compile` fail-не, AI анализира грешката и дава обяснение на български/английски.
|
||
|
||
**Имплементация:**
|
||
- ✅ `src/ai_assist.nim` — Error cache за чести грешки (in-memory, 50 записа, TTL 1 час)
|
||
- ✅ ReaderError/EmitterError coverage — AI обяснения за грешки на всички нива (reader, emitter, Nim compiler)
|
||
- ✅ Интеграция с DeepSeek API (вече беше)
|
||
- ✅ Cache за чести грешки
|
||
|
||
### Phase AI-2: AI Code Generation в REPL ✅
|
||
**Цел:** Генериране на Clojure функции от описание.
|
||
|
||
```clojure
|
||
user> (ai/generate "функция за бързо сортиране на вектор")
|
||
" (defn quicksort [v] ...)"
|
||
```
|
||
|
||
**Имплементация:**
|
||
- ✅ `ai/generate` builtin в eval.nim (interpreter)
|
||
- ✅ `:ai <desc>` в human REPL (вече беше)
|
||
- ✅ `ai-generate` op в JSON REPL
|
||
|
||
### Phase AI-3: AI Optimization Hints ✅
|
||
**Цел:** Компилаторът използва AI за избор на алгоритми.
|
||
|
||
```clojure
|
||
user> (ai/optimize "(defn sum [nums] (reduce + nums))")
|
||
"Consider using transients for large collections..."
|
||
```
|
||
|
||
**Имплементация:**
|
||
- ✅ `ai/optimize` builtin в eval.nim
|
||
- ✅ `:optimize <code>` в human REPL
|
||
- ✅ `ai-optimize` op в JSON REPL
|
||
- ✅ `buildOptimizationPrompt` в ai_assist.nim
|
||
|
||
### Phase AI-4: AI Debugging ✅
|
||
**Цел:** REPL команди за анализ на runtime поведение.
|
||
|
||
```clojure
|
||
user> (ai/debug (factorial 5))
|
||
🤖 AI Analysis:
|
||
- factorial(5) = 120 (коректно)
|
||
- Време: O(n) рекурсия
|
||
```
|
||
|
||
**Имплементация:**
|
||
- ✅ `ai/debug` special form в eval.nim (raw expression pre-evaluation)
|
||
- ✅ `:debug <expr>` в human REPL
|
||
- ✅ `ai-debug` op в JSON REPL
|
||
- ✅ `buildDebugPrompt` в ai_assist.nim
|
||
|
||
---
|
||
|
||
## Технически детайли за AI интеграция
|
||
|
||
### DeepSeek API
|
||
- Endpoint: `https://api.deepseek.com/v1/chat/completions`
|
||
- Model: `deepseek-chat` или `deepseek-coder`
|
||
- Български език: ✅ поддържа
|
||
|
||
### Xiaomi MiMo
|
||
- Endpoint: зависи от deployment
|
||
- Може да се self-hostва
|
||
|
||
### Архитектура
|
||
```
|
||
User Input → Clojure/Nim → Error/Request → AI Module → DeepSeek/MiMo API
|
||
↓
|
||
Cached Response → User
|
||
```
|
||
|
||
---
|
||
|
||
## Следващи стъпки (ядро)
|
||
|
||
1. ✅ **Обединяване на CljVal типовете** — `src/types.nim` + `lib/cljnim_runtime.nim` + `src/runtime.nim` + `lib/cljnim_runtime_js.nim` — всички 4 файла вече имат идентичен CljKind enum (15 стойности)
|
||
2. ✅ **`try`/`catch`/`finally`** — пълна имплементация в emitter — exception type вече се използва, binding e cljMap с `:type` и `:message`
|
||
3. ✅ **`swap!`/`reset!`** в interpreter-а — вече беше имплементирано
|
||
4. ✅ **Reader edge cases** — `-.5` negative floats, scientific notation `1e5`/`1.5e-3`, unterminated string tests, negative float tests — 13 нови теста
|