docs: add session preflight and expand lint scope batch5
This commit is contained in:
@@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
## ✅ 1. Моделі — ВСІ ЗБЕРЕЖЕНІ (Ollama)
|
## ✅ 1. Моделі — ВСІ ЗБЕРЕЖЕНІ (Ollama)
|
||||||
|
|
||||||
### 📦 8 моделей в Ollama (загалом ~118 GB):
|
### 📦 8 моделей в Ollama (загалом ~118 GB)
|
||||||
|
|
||||||
| Модель | Розмір | Параметри | Тип | Статус |
|
| Модель | Розмір | Параметри | Тип | Статус |
|
||||||
|--------|--------|-----------|------|--------|
|
|--------|--------|-----------|------|--------|
|
||||||
@@ -24,7 +24,7 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### ❌ Видалено з `models/` (не Ollama):
|
### ❌ Видалено з `models/` (не Ollama)
|
||||||
|
|
||||||
- **qwen3-vl-32b-instruct** (~130 GB) — vision-модель для мультимодальності
|
- **qwen3-vl-32b-instruct** (~130 GB) — vision-модель для мультимодальності
|
||||||
- 65.5 GB `.gguf` файл
|
- 65.5 GB `.gguf` файл
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
|
|
||||||
**Проблема:** Немає vision-моделей для мультимодальних запитів!
|
**Проблема:** Немає vision-моделей для мультимодальних запитів!
|
||||||
|
|
||||||
**Рішення:**
|
**Рішення:**
|
||||||
1. Завантажити `llava:13b` через Ollama (~13 GB)
|
1. Завантажити `llava:13b` через Ollama (~13 GB)
|
||||||
2. АБО відновити Qwen3-VL з HuggingFace (якщо потрібен кастомний inference)
|
2. АБО відновити Qwen3-VL з HuggingFace (якщо потрібен кастомний inference)
|
||||||
|
|
||||||
@@ -77,7 +77,7 @@ curl http://localhost:9102/health
|
|||||||
|
|
||||||
## ✅ 4. DAGI Stack — Частково ПРАЦЮЄ
|
## ✅ 4. DAGI Stack — Частково ПРАЦЮЄ
|
||||||
|
|
||||||
### Запущені сервіси:
|
### Запущені сервіси
|
||||||
|
|
||||||
| Сервіс | Статус | Порт | Призначення |
|
| Сервіс | Статус | Порт | Призначення |
|
||||||
|--------|--------|------|-------------|
|
|--------|--------|------|-------------|
|
||||||
@@ -91,7 +91,7 @@ curl http://localhost:9102/health
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### 🤖 12 CrewAI Агентів (4 Workflows):
|
### 🤖 12 CrewAI Агентів (4 Workflows)
|
||||||
|
|
||||||
#### 1. **Onboarding Workflow** (3 агенти)
|
#### 1. **Onboarding Workflow** (3 агенти)
|
||||||
- `welcomer` — вітання нових користувачів
|
- `welcomer` — вітання нових користувачів
|
||||||
@@ -123,7 +123,7 @@ curl http://localhost:9010/workflow/list
|
|||||||
|
|
||||||
## ⚠️ 5. Мультимодальні сервіси — ЧАСТКОВО
|
## ⚠️ 5. Мультимодальні сервіси — ЧАСТКОВО
|
||||||
|
|
||||||
### ✅ Працюють:
|
### ✅ Працюють
|
||||||
|
|
||||||
| Сервіс | Порт | Статус | Призначення |
|
| Сервіс | Порт | Статус | Призначення |
|
||||||
|--------|------|--------|-------------|
|
|--------|------|--------|-------------|
|
||||||
@@ -132,7 +132,7 @@ curl http://localhost:9010/workflow/list
|
|||||||
| **Agent Cabinet** | 8898 | ✅ Healthy | Управління агентами |
|
| **Agent Cabinet** | 8898 | ✅ Healthy | Управління агентами |
|
||||||
| **MeiliSearch** | 7700 | ✅ Running | Текстовий пошук |
|
| **MeiliSearch** | 7700 | ✅ Running | Текстовий пошук |
|
||||||
|
|
||||||
### ❌ НЕ працюють:
|
### ❌ НЕ працюють
|
||||||
|
|
||||||
| Сервіс | Порт | Статус | Причина |
|
| Сервіс | Порт | Статус | Причина |
|
||||||
|--------|------|--------|---------|
|
|--------|------|--------|---------|
|
||||||
@@ -145,19 +145,19 @@ curl http://localhost:9010/workflow/list
|
|||||||
|
|
||||||
## 📊 6. Інфраструктура NODE2
|
## 📊 6. Інфраструктура NODE2
|
||||||
|
|
||||||
### Ресурси:
|
### Ресурси
|
||||||
- **CPU:** Apple M4 Max (40-core GPU)
|
- **CPU:** Apple M4 Max (40-core GPU)
|
||||||
- **RAM:** 64 GB
|
- **RAM:** 64 GB
|
||||||
- **VRAM:** 48 GB (GPU)
|
- **VRAM:** 48 GB (GPU)
|
||||||
- **Диск:** ~500 GB вільно (після cleanup)
|
- **Диск:** ~500 GB вільно (після cleanup)
|
||||||
|
|
||||||
### Docker мережа:
|
### Docker мережа
|
||||||
- `dagi-network` — всі DAGI сервіси
|
- `dagi-network` — всі DAGI сервіси
|
||||||
- Bridge для комунікації між контейнерами
|
- Bridge для комунікації між контейнерами
|
||||||
|
|
||||||
### Ollama:
|
### Ollama
|
||||||
- **Версія:** Latest
|
- **Версія:** Latest
|
||||||
- **URL:** http://localhost:11434
|
- **URL:** [http://localhost:11434](http://localhost:11434)
|
||||||
- **Models dir:** `/Users/apple/.ollama/models`
|
- **Models dir:** `/Users/apple/.ollama/models`
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -258,14 +258,14 @@ POST http://localhost:9010/workflow/execute
|
|||||||
|
|
||||||
## ✅ 9. ПІДСУМОК
|
## ✅ 9. ПІДСУМОК
|
||||||
|
|
||||||
### Готово:
|
### Готово
|
||||||
- ✅ **8 LLM-моделей збережені** в Ollama (включно з DeepSeek 70B)
|
- ✅ **8 LLM-моделей збережені** в Ollama (включно з DeepSeek 70B)
|
||||||
- ✅ **Swapper Service запущено** на NODE2 (порт 8890)
|
- ✅ **Swapper Service запущено** на NODE2 (порт 8890)
|
||||||
- ✅ **DAGI Router працює** (порт 9102)
|
- ✅ **DAGI Router працює** (порт 9102)
|
||||||
- ✅ **12 CrewAI агентів готові** до інтеграції
|
- ✅ **12 CrewAI агентів готові** до інтеграції
|
||||||
- ✅ **Web Search + Vector DB працюють**
|
- ✅ **Web Search + Vector DB працюють**
|
||||||
|
|
||||||
### Потрібно:
|
### Потрібно
|
||||||
- ⚠️ **Відновити vision-модель** (LLaVA або Qwen3-VL)
|
- ⚠️ **Відновити vision-модель** (LLaVA або Qwen3-VL)
|
||||||
- ⚠️ **Запустити STT/OCR** (для voice/photo)
|
- ⚠️ **Запустити STT/OCR** (для voice/photo)
|
||||||
- ⚠️ **Підключити Swapper до Router** (NODE2 → NODE1)
|
- ⚠️ **Підключити Swapper до Router** (NODE2 → NODE1)
|
||||||
@@ -280,4 +280,3 @@ POST http://localhost:9010/workflow/execute
|
|||||||
---
|
---
|
||||||
|
|
||||||
*Документ створено автоматично під час діагностики NODE2 після git cleanup операції.*
|
*Документ створено автоматично під час діагностики NODE2 після git cleanup операції.*
|
||||||
|
|
||||||
|
|||||||
@@ -21,6 +21,11 @@ Important: keep docs and runtime aligned via explicit drift checks, not assumpti
|
|||||||
|
|
||||||
## Session Bootstrap (Services + Docs)
|
## Session Bootstrap (Services + Docs)
|
||||||
|
|
||||||
|
0. Preflight (must pass before any task):
|
||||||
|
```bash
|
||||||
|
bash scripts/session/preflight.sh --expected-root /Users/apple/github-projects/microdao-daarion
|
||||||
|
```
|
||||||
|
|
||||||
1. Run integrations bootstrap report:
|
1. Run integrations bootstrap report:
|
||||||
```bash
|
```bash
|
||||||
bash scripts/docs/session_bootstrap.sh
|
bash scripts/docs/session_bootstrap.sh
|
||||||
|
|||||||
@@ -4,13 +4,13 @@
|
|||||||
|
|
||||||
**Хардкод** = значення, які "зашиті" прямо в коді і не можуть змінюватись без редагування коду.
|
**Хардкод** = значення, які "зашиті" прямо в коді і не можуть змінюватись без редагування коду.
|
||||||
|
|
||||||
### Приклад хардкоду:
|
### Приклад хардкоду
|
||||||
```python
|
```python
|
||||||
# ❌ ХАРДКОД - значення прямо в коді
|
# ❌ ХАРДКОД - значення прямо в коді
|
||||||
local_model = "qwen3-8b" # Якщо треба змінити модель, треба редагувати код!
|
local_model = "qwen3-8b" # Якщо треба змінити модель, треба редагувати код!
|
||||||
```
|
```
|
||||||
|
|
||||||
### Проблеми хардкоду:
|
### Проблеми хардкоду
|
||||||
1. **Треба редагувати код** для зміни значення
|
1. **Треба редагувати код** для зміни значення
|
||||||
2. **Не можна змінити без перезапуску** сервісу
|
2. **Не можна змінити без перезапуску** сервісу
|
||||||
3. **Важко тестувати** різні конфігурації
|
3. **Важко тестувати** різні конфігурації
|
||||||
@@ -22,7 +22,7 @@ local_model = "qwen3-8b" # Якщо треба змінити модель, т
|
|||||||
|
|
||||||
**Конфігурація** = значення, які зберігаються окремо від коду (в файлах, змінних середовища, БД) і можуть змінюватись без редагування коду.
|
**Конфігурація** = значення, які зберігаються окремо від коду (в файлах, змінних середовища, БД) і можуть змінюватись без редагування коду.
|
||||||
|
|
||||||
### Приклад конфігурації:
|
### Приклад конфігурації
|
||||||
```yaml
|
```yaml
|
||||||
# ✅ КОНФІГ - значення в окремому файлі router-config.yml
|
# ✅ КОНФІГ - значення в окремому файлі router-config.yml
|
||||||
llm_profiles:
|
llm_profiles:
|
||||||
@@ -38,7 +38,7 @@ llm_profile = router_config.get("llm_profiles", {}).get("qwen3_science_8b")
|
|||||||
model = llm_profile.get("model") # Беремо з конфігу, не хардкодимо!
|
model = llm_profile.get("model") # Беремо з конфігу, не хардкодимо!
|
||||||
```
|
```
|
||||||
|
|
||||||
### Переваги конфігурації:
|
### Переваги конфігурації
|
||||||
1. **Зміна без редагування коду** - просто змінити YAML файл
|
1. **Зміна без редагування коду** - просто змінити YAML файл
|
||||||
2. **Різні конфіги для різних середовищ** (dev/prod/staging)
|
2. **Різні конфіги для різних середовищ** (dev/prod/staging)
|
||||||
3. **Легко тестувати** - можна створити test-config.yml
|
3. **Легко тестувати** - можна створити test-config.yml
|
||||||
@@ -60,13 +60,13 @@ model = llm_profile.get("model") # Беремо з конфігу, не хар
|
|||||||
|
|
||||||
## 🔧 ЩО МИ ВИПРАВИЛИ?
|
## 🔧 ЩО МИ ВИПРАВИЛИ?
|
||||||
|
|
||||||
### БУЛО (хардкод):
|
### БУЛО (хардкод)
|
||||||
```python
|
```python
|
||||||
# ❌ Хардкод - модель завжди "qwen3-8b"
|
# ❌ Хардкод - модель завжди "qwen3-8b"
|
||||||
local_model = "qwen3-8b"
|
local_model = "qwen3-8b"
|
||||||
```
|
```
|
||||||
|
|
||||||
### СТАЛО (з конфігу):
|
### СТАЛО (з конфігу)
|
||||||
```python
|
```python
|
||||||
# ✅ Читаємо з конфігу
|
# ✅ Читаємо з конфігу
|
||||||
if llm_profile.get("provider") == "ollama":
|
if llm_profile.get("provider") == "ollama":
|
||||||
@@ -74,7 +74,7 @@ if llm_profile.get("provider") == "ollama":
|
|||||||
local_model = ollama_model.replace(":", "-") # qwen3:8b → qwen3-8b
|
local_model = ollama_model.replace(":", "-") # qwen3:8b → qwen3-8b
|
||||||
```
|
```
|
||||||
|
|
||||||
### Результат:
|
### Результат
|
||||||
- ✅ Модель береться з `router-config.yml`
|
- ✅ Модель береться з `router-config.yml`
|
||||||
- ✅ Якщо змінити конфіг → зміниться поведінка
|
- ✅ Якщо змінити конфіг → зміниться поведінка
|
||||||
- ✅ Не треба редагувати код для зміни моделі
|
- ✅ Не треба редагувати код для зміни моделі
|
||||||
@@ -84,12 +84,12 @@ if llm_profile.get("provider") == "ollama":
|
|||||||
|
|
||||||
## 💡 КОЛИ ВИКОРИСТОВУВАТИ?
|
## 💡 КОЛИ ВИКОРИСТОВУВАТИ?
|
||||||
|
|
||||||
### Хардкод - тільки для:
|
### Хардкод - тільки для
|
||||||
- Константи (π = 3.14, версія API)
|
- Константи (π = 3.14, версія API)
|
||||||
- Значення, які ніколи не зміняться
|
- Значення, які ніколи не зміняться
|
||||||
- Технічні деталі (timeout = 5.0 сек)
|
- Технічні деталі (timeout = 5.0 сек)
|
||||||
|
|
||||||
### Конфігурація - для:
|
### Конфігурація - для
|
||||||
- Моделі LLM
|
- Моделі LLM
|
||||||
- API ключі
|
- API ключі
|
||||||
- URL сервісів
|
- URL сервісів
|
||||||
@@ -100,7 +100,7 @@ if llm_profile.get("provider") == "ollama":
|
|||||||
|
|
||||||
## 📝 ПРИКЛАД З НАШОГО ПРОЄКТУ
|
## 📝 ПРИКЛАД З НАШОГО ПРОЄКТУ
|
||||||
|
|
||||||
### router-config.yml (конфігурація):
|
### router-config.yml (конфігурація)
|
||||||
```yaml
|
```yaml
|
||||||
agents:
|
agents:
|
||||||
helion:
|
helion:
|
||||||
@@ -112,7 +112,7 @@ llm_profiles:
|
|||||||
model: qwen3:8b # ← Можна змінити модель тут
|
model: qwen3:8b # ← Можна змінити модель тут
|
||||||
```
|
```
|
||||||
|
|
||||||
### main.py (код):
|
### main.py (код)
|
||||||
```python
|
```python
|
||||||
# Читаємо з конфігу
|
# Читаємо з конфігу
|
||||||
default_llm = agent_config.get("default_llm", "qwen3-8b")
|
default_llm = agent_config.get("default_llm", "qwen3-8b")
|
||||||
|
|||||||
@@ -7,6 +7,13 @@ Scope: GitHub, Gitea, Jupyter, Pieces documentation integration workflow.
|
|||||||
|
|
||||||
Keep docs state synchronized with service reality and publish curated docs updates safely.
|
Keep docs state synchronized with service reality and publish curated docs updates safely.
|
||||||
|
|
||||||
|
## 0) Session preflight
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /Users/apple/github-projects/microdao-daarion
|
||||||
|
bash scripts/session/preflight.sh --expected-root /Users/apple/github-projects/microdao-daarion
|
||||||
|
```
|
||||||
|
|
||||||
## 1) Refresh service status
|
## 1) Refresh service status
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|||||||
@@ -33,6 +33,8 @@ docs/DEPLOYMENT_OVERVIEW.md
|
|||||||
docs/DEPLOY_MIGRATIONS.md
|
docs/DEPLOY_MIGRATIONS.md
|
||||||
docs/ACTION_PLAN.md
|
docs/ACTION_PLAN.md
|
||||||
docs/NODE2_GUARDIAN_SETUP.md
|
docs/NODE2_GUARDIAN_SETUP.md
|
||||||
|
docs/hardcode_vs_config.md
|
||||||
|
docs/NODE2_DIAGNOSTIC_REPORT.md
|
||||||
docs/consolidation/README.md
|
docs/consolidation/README.md
|
||||||
docs/consolidation/SOURCES.md
|
docs/consolidation/SOURCES.md
|
||||||
docs/runbooks/DOCS_SERVICES_AUTOMATION_RUNBOOK.md
|
docs/runbooks/DOCS_SERVICES_AUTOMATION_RUNBOOK.md
|
||||||
|
|||||||
@@ -118,6 +118,7 @@ doc_paths=(
|
|||||||
scripts/docs/docs_lint.sh
|
scripts/docs/docs_lint.sh
|
||||||
scripts/docs/run_docs_maintenance.sh
|
scripts/docs/run_docs_maintenance.sh
|
||||||
scripts/docs/install_local_cron.sh
|
scripts/docs/install_local_cron.sh
|
||||||
|
scripts/session/preflight.sh
|
||||||
scripts/docs/jupyter_sync.sh
|
scripts/docs/jupyter_sync.sh
|
||||||
scripts/docs/pieces_sync.sh
|
scripts/docs/pieces_sync.sh
|
||||||
scripts/docs/services_sync.sh
|
scripts/docs/services_sync.sh
|
||||||
|
|||||||
81
scripts/session/preflight.sh
Executable file
81
scripts/session/preflight.sh
Executable file
@@ -0,0 +1,81 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
EXPECTED_ROOT="${EXPECTED_ROOT:-/Users/apple/github-projects/microdao-daarion}"
|
||||||
|
REQUIRE_SESSION_STARTER=1
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
cat <<'USAGE'
|
||||||
|
Usage:
|
||||||
|
bash scripts/session/preflight.sh [--expected-root /path/to/repo] [--no-session-starter]
|
||||||
|
|
||||||
|
Checks:
|
||||||
|
- current working directory
|
||||||
|
- git repository root
|
||||||
|
- current branch
|
||||||
|
- latest commit
|
||||||
|
- docs/SESSION_STARTER.md presence (default required)
|
||||||
|
- docs directory presence
|
||||||
|
|
||||||
|
Exit codes:
|
||||||
|
0 all checks passed
|
||||||
|
10 wrong repo root
|
||||||
|
11 missing SESSION_STARTER.md
|
||||||
|
12 missing docs directory
|
||||||
|
13 git not initialized / not a repo
|
||||||
|
USAGE
|
||||||
|
}
|
||||||
|
|
||||||
|
while [[ $# -gt 0 ]]; do
|
||||||
|
case "$1" in
|
||||||
|
--expected-root)
|
||||||
|
EXPECTED_ROOT="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
--no-session-starter)
|
||||||
|
REQUIRE_SESSION_STARTER=0
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-h|--help)
|
||||||
|
usage
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unknown arg: $1" >&2
|
||||||
|
usage
|
||||||
|
exit 2
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if ! git_root="$(git rev-parse --show-toplevel 2>/dev/null)"; then
|
||||||
|
echo "[FAIL] not a git repository" >&2
|
||||||
|
exit 13
|
||||||
|
fi
|
||||||
|
|
||||||
|
pwd_now="$(pwd)"
|
||||||
|
branch="$(git branch --show-current || true)"
|
||||||
|
head_line="$(git log --oneline -n 1 2>/dev/null || echo 'NO_COMMITS')"
|
||||||
|
|
||||||
|
printf "[INFO] pwd: %s\n" "$pwd_now"
|
||||||
|
printf "[INFO] git_root: %s\n" "$git_root"
|
||||||
|
printf "[INFO] branch: %s\n" "${branch:-DETACHED_OR_NONE}"
|
||||||
|
printf "[INFO] head: %s\n" "$head_line"
|
||||||
|
printf "[INFO] expected_root: %s\n" "$EXPECTED_ROOT"
|
||||||
|
|
||||||
|
if [[ "$git_root" != "$EXPECTED_ROOT" ]]; then
|
||||||
|
echo "[FAIL] unexpected repository root" >&2
|
||||||
|
exit 10
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! -d "$git_root/docs" ]]; then
|
||||||
|
echo "[FAIL] missing docs directory: $git_root/docs" >&2
|
||||||
|
exit 12
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$REQUIRE_SESSION_STARTER" -eq 1 && ! -f "$git_root/docs/SESSION_STARTER.md" ]]; then
|
||||||
|
echo "[FAIL] missing SESSION_STARTER: $git_root/docs/SESSION_STARTER.md" >&2
|
||||||
|
exit 11
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "[PASS] preflight OK"
|
||||||
Reference in New Issue
Block a user