montana/Русский/Логистика/IRONCLAW_ANALYSIS.md

329 lines
20 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Анализ: IronClaw (NearAI) + Timeweb — применимость к SeaFare Montana
**Дата:** 22 февраля 2026
**Автор:** AI-аналитик SeaFare Montana
---
## 1. ЧТО ТАКОЕ IRONCLAW?
**Rust-based AI-агент** от NearAI (Илья Полосухин — со-автор "Attention Is All You Need", основатель NEAR Protocol). Позиционируется как безопасная замена OpenClaw, который стал катастрофой безопасности (42,000+ открытых инстансов, утечки API ключей, RCE уязвимости).
GitHub: https://github.com/nearai/ironclaw
| Параметр | Значение |
|----------|----------|
| Язык | Rust (96%) |
| Версия | 0.9.0 (21 фев 2026) |
| Возраст | **3 недели** (с 3 фев 2026) |
| Stars | 2,800 |
| Лицензия | Apache 2.0 + MIT |
| Релизы | 8 за 10 дней |
| Open issues | 116 |
### Ключевые фичи:
- **Multi-LLM**: Claude, GPT-4o, Ollama (локальные модели), OpenRouter (300+ моделей)
- **Sandbox изоляция**: Docker-контейнеры для инструментов
- **Шифрование секретов**: AES-256-GCM, ключи в OS keychain
- **Leak detection**: Сканирование ответов на утечку кредов
- **Self-expanding**: Агент сам создаёт инструменты (WASM)
- **Каналы**: CLI, HTTP, Telegram, Slack, Web UI
- **Память**: PostgreSQL + pgvector (векторный поиск)
- **Smart routing**: Failover между LLM провайдерами, circuit breaker
### Архитектура безопасности (6 уровней):
1. Защита от prompt injection (обёртка контента + экранирование)
2. Обнаружение утечек credentials (сканирование перед отдачей)
3. Ограничение длины (защита от buffer overflow)
4. Политики блокировки (настраиваемые правила)
5. Изоляция контейнеров (Docker + capabilities)
6. Прокси-валидация сети (allowlisting)
---
## 2. КРИТИЧЕСКИЙ АНАЛИЗ: ПОДХОДИТ ЛИ ДЛЯ SEAFARE MONTANA?
### ❌ НЕТ. Вот почему:
#### Проблема 1: ПРИНЦИПИАЛЬНО ДРУГОЙ ПРОДУКТ
IronClaw — это **персональный AI-ассистент общего назначения** (аналог Claude Code / Cursor). Он НЕ:
- Веб-сервис для конечных пользователей
- REST API с аутентификацией
- Мультитенантная платформа (много пользователей одновременно)
SeaFare Montana — это **веб-приложение** (index.html → Flask API → Claude agent → БД). IronClaw не заменяет эту архитектуру. Он заменяет **разработчика**, а не приложение.
#### Проблема 2: ВОЗРАСТ 3 НЕДЕЛИ
- Проекту 20 дней. Ещё не v1.0
- 116 открытых issues
- Schema БД меняется (9 миграций за 20 дней)
- Ни одного задокументированного production deployment
- Никаких security-аудитов
#### Проблема 3: ТРЕБУЕТ RUST + DOCKER
- Наш стек: Python (Flask, Claude API). Команда знает Python
- IronClaw: Rust 1.85+, PostgreSQL 15 + pgvector, Docker обязательно
- Кто будет поддерживать Rust-код при проблемах?
#### Проблема 4: NEAR PROTOCOL / BLOCKCHAIN
- IronClaw по умолчанию аутентифицируется через NEAR AI OAuth
- Блокчейн НЕ обязателен, но экосистема привязана к NEAR
- Крипто-проект = репутационные риски для морской логистики
#### Проблема 5: НЕ РЕШАЕТ НАШИХ РЕАЛЬНЫХ ПРОБЛЕМ
Наши реальные проблемы:
- MarineTraffic API (решается получением ключа, не сменой фреймворка)
- AIS данные (решается через AISStream/AISHub, уже работает)
- UI для выбора груза (уже сделали в v3.9.0)
- Render free tier ограничения (решается VPS, не IronClaw)
IronClaw НЕ даёт нам: доступ к AIS данным, MarineTraffic API, базу портов, маршруты, Equasis. Это всё у нас уже есть.
---
## 3. ЧТО АЛИК ИМЕЛ В ВИДУ И ПОЧЕМУ ЭТО УЖЕ ЕСТЬ
> "Нужно 1 раз агента обучить... По этой модели с безопасностью и изолированностью всего. С полным понимаем всего контекста меню."
### Разбор по пунктам:
**"Обучить 1 раз"** — LLM не "обучаются" однократно. Они получают system prompt каждый запрос. Наш агент уже делает это: SYSTEM_PROMPT в seafare_agent.py содержит 100+ строк с полным описанием 26 инструментов и правил поведения. Это и есть "обучение".
**"Безопасность и изолированность"** — IronClaw изолирует ИНСТРУМЕНТЫ (shell-команды, файловые операции) в Docker. Наши инструменты — это Python-функции (поиск судов, маршруты, AIS запросы). Они и так безопасны — нет shell access, нет доступа к файловой системе, нет произвольного выполнения кода.
**"Понимание контекста меню"** — Это system prompt + user_context. У нас SYSTEM_PROMPT описывает все 26 инструментов, а user_context инжектирует профиль пользователя и баланс в каждый запрос.
### Вывод: Алик описывает то, что у нас **уже реализовано** через Claude API + tool-calling. IronClaw — это другой способ делать то же самое, но с overhead Rust/Docker/NEAR.
---
## 4. ЧТО У НАС УЖЕ ЕСТЬ (SeaFare Montana v3.9.0)
| Функция | Статус |
|---------|--------|
| AI-агент с 26 инструментами | ✅ Работает |
| Tool-calling цикл (макс 7 итераций) | ✅ Работает |
| System prompt с полным контекстом | ✅ 100+ строк правил |
| Поиск судов по назначению (AIS destination) | ✅ v3.8.0 |
| Поиск по соседним портам (50 NM) | ✅ v3.8.0 |
| Фильтрация по типу груза (сухой/контейнер/наливной) | ✅ v3.7.1 |
| UI форма выбора груза (3 карточки) | ✅ v3.9.0 |
| Расширяющийся радиус поиска (50→200→500 NM) | ✅ v3.7.0 |
| Кнопки "Показать на карте" | ✅ v3.7.0 |
| AIS провайдер (AISStream + AISHub + Digitraffic) | ✅ Работает |
| Google OAuth + кошелёк USDT | ✅ Работает |
| Мультиязычный интерфейс (EN/RU/ES) | ✅ Работает |
| Sanctions screening + dark fleet detection | ✅ Работает |
| PostgreSQL в продакшене | ✅ Работает |
---
## 5. TIMEWEB CLOUD (ФРАНКФУРТ, 700 РУБ/МЕС)
### Что получаешь за 700 руб:
- ~2 GB RAM, 1 vCPU, 30-40 GB NVMe SSD
- Frankfurt дата-центр (хорошо для Европа/Каспий)
- Публичный IP, SSH доступ
- Let's Encrypt SSL бесплатно
### Идея VPS — ПРАВИЛЬНАЯ. Решает реальные проблемы Render:
| Проблема Render Free | VPS решает? |
|----------------------|-------------|
| Засыпает через 15 мин → WebSocket рвётся | ✅ VPS всегда включен |
| Daemon threads умирают на gunicorn | ✅ Полный контроль ОС |
| SQLite эфемерный (данные теряются) | ✅ PostgreSQL на VPS |
| Нет cron jobs | ✅ Полный systemd/cron |
### Минусы Timeweb:
- ⚠️ **Российские IP** — Google/PayPal могут блокировать (критично для платежей!)
- ⚠️ Ручное администрирование — нет auto-deploy
- ⚠️ CPU троттлинг на shared VPS (по отзывам)
### РЕКОМЕНДАЦИЯ: Hetzner вместо Timeweb
| Параметр | Timeweb | Hetzner |
|----------|---------|---------|
| Цена | 700 руб (~$8) | €3.79 (~400 руб) |
| RAM | 2 GB | 4 GB |
| vCPU | 1 | 2 |
| SSD | 30-40 GB | 40 GB |
| Локация | Frankfurt | Falkenstein/Frankfurt |
| IP репутация | ⚠️ Российские | ✅ Немецкие |
| SLA | 99.98% | 99.9% |
| Docker | Да | Да |
| Snapshots | Да | Да |
**Hetzner дешевле, мощнее, и без проблем с репутацией IP.**
---
## 6. ИТОГОВАЯ РЕКОМЕНДАЦИЯ
### IronClaw → ❌ НЕ ВНЕДРЯТЬ
| Причина | Детали |
|---------|--------|
| Не тот продукт | Персональный ассистент ≠ веб-платформа для клиентов |
| Слишком сырой | v0.9.0, 3 недели, 116 issues, ноль production deployments |
| Не решает наших задач | AIS, порты, маршруты — этого в IronClaw нет |
| Лишняя сложность | Rust + Docker + NEAR вместо рабочего Python + Claude API |
| У нас уже есть | Tool-calling, system prompt, 26 инструментов = "обученный агент" |
### VPS миграция → ✅ ДА, но на Hetzner
Переезд с Render free tier на VPS разумен для стабильности AIS WebSocket и daemon threads.
### Что реально нужно делать (по приоритету):
1. **Получить MarineTraffic API ключ** — trial на неделю уже договорились
2. **Интегрировать MT API** в ais_provider.py как premium источник данных
3. **Перенести на Hetzner VPS** когда MT API готов
4. **Настроить CI/CD**: GitHub Actions → SSH deploy на VPS
---
## 7. О КОНТЕЙНЕРОВОЗАХ (ВОПРОС ДАТО)
На MarineTraffic контейнеровозы отображаются **тем же зелёным цветом**, что и сухогрузы (AIS коды 70-79 = "cargo"). Различаются только по текстовому описанию типа судна. Наша система (`classify_vessel_type()` в marinetraffic_parser.py) уже умеет их разделять. В UI форме (v3.9.0) — 3 отдельные карточки: Сухой груз / Контейнеры / Наливной.
---
## 8. РАЗБОР ФИЧ IRONCLAW: ЧТО МОЖНО ВЗЯТЬ ДЛЯ НАШЕГО ПРОЕКТА?
Ниже — критический разбор каждой фичи IronClaw: нужна ли она нам, и если да — нужен ли для этого IronClaw.
---
### 8.1. Multi-LLM (Claude + GPT-4o + Ollama + failover)
**Наш статус**: Только Claude Sonnet. Если Anthropic API упал — всё мертво.
**Полезно?** **ДА, частично.** Failover на другую модель при падении Claude — реальная проблема. Anthropic иногда лежит. Но:
- Реализация: 2-3 часа — добавить `try/except` в `generate_response()`, при ошибке Claude → вызвать OpenAI GPT-4o. System prompt и tools совместимы (OpenAI тоже поддерживает tool-calling).
- Для этого **не нужен IronClaw**. Это 50 строк Python-кода.
- Ollama (локальные модели) — бессмысленно. Llama 3 не потянет 26 инструментов с tool-calling. Качество ответов будет мусор.
**Вердикт: Полезна идея failover. Реализация тривиальная, IronClaw не нужен.**
---
### 8.2. Sandbox изоляция (Docker)
**Наш статус**: Инструменты — Python-функции. `search_vessel()`, `calculate_route()`, `get_position()`. Никакого shell access, никакого exec(), никакого пользовательского кода.
**Полезно?** **НЕТ.** Sandbox нужен когда агент выполняет **произвольный код** от пользователя (как Claude Code выполняет bash-команды). Наш агент вызывает **фиксированные функции** из `_TOOL_DISPATCH` dict. Пользователь не может инжектировать код. Это как ставить бронедверь в комнату без окон и дверей.
**Вердикт: Не нужно. Наша архитектура безопасна by design.**
---
### 8.3. Шифрование секретов (AES-256-GCM)
**Наш статус**: Секреты в `.env` файле (plaintext) локально, через Render Dashboard env vars в проде. Стандартный подход.
**Полезно?** **НЕТ для нашего масштаба.** AES-256 шифрование секретов нужно когда:
- Несколько разработчиков с разными уровнями доступа
- Секреты хранятся в Git (encrypted)
- Compliance требования (SOC 2, HIPAA)
У нас: 1 репо, 1-2 разработчика, `.env` в `.gitignore`. Render Dashboard шифрует env vars автоматически. Overhead шифрования не оправдан.
**Вердикт: Overkill для нашего масштаба.**
---
### 8.4. Leak detection (сканирование на утечку кредов)
**Наш статус**: System prompt говорит агенту "никогда не раскрывай источники данных". Но прямой проверки ответов на наличие API ключей нет.
**Полезно?** **ДА, это стоит сделать.** Простая проверка: перед отдачей ответа пользователю — regex-сканирование на паттерны API ключей (`sk-ant-`, `AISSTREAM_`, пароли). Если Claude случайно "выплюнет" ключ из контекста — мы его поймаем.
Реализация: 15 строк в `generate_response()`.
**Вердикт: Полезная идея. Реализация — 15 минут, IronClaw не нужен.**
---
### 8.5. Self-expanding (агент сам создаёт инструменты)
**Наш статус**: 26 фиксированных инструментов. Новые добавляются разработчиком вручную.
**Полезно?** **НЕТ. ОПАСНО.** Наши инструменты работают с реальными данными: AIS позиции, контакты судовладельцев, финансовые операции (charge_user). Автоматическое создание инструментов:
- Кто проверит что новый инструмент не сломает БД?
- Кто проверит что он не спишет деньги с чужого кошелька?
- Кто проверит что он корректно парсит AIS данные?
Для морской логистики нужны **проверенные, протестированные** инструменты. Не автогенерация.
**Вердикт: Категорически нет. Опасно для финансовых операций.**
---
### 8.6. Каналы (Telegram, Slack, Web UI)
**Наш статус**: Только Web UI (index.html). Для доступа нужен браузер.
**Полезно?** **ДА, Telegram — реально полезен.** Морская индустрия живёт в мессенджерах. Капитан/агент не будет открывать сайт — он напишет в Telegram. Это реальная бизнес-потребность.
НО: Для Telegram-бота **не нужен IronClaw**. Python-библиотека `python-telegram-bot` + наш `generate_response()` = Telegram-бот за 2-3 часа. Вся логика (26 инструментов, AIS, маршруты) уже в `seafare_agent.py`.
**Вердикт: Telegram-бот — отличная идея на будущее. Но это 100 строк Python, не IronClaw.**
---
### 8.7. PostgreSQL + pgvector (векторный поиск)
**Наш статус**: PostgreSQL есть. pgvector — нет. Поиск судов по текстовому совпадению (LIKE '%BOSTON%').
**Полезно?** **МОЖЕТ БЫТЬ, но не сейчас.** pgvector полезен для:
- Семантический поиск: "нужен балкер для зерна рядом с Турцией" → находит суда даже если destination = "ISKENDERUN" (не "TURKEY")
- Поиск по истории чатов: "что мне искали в прошлый раз?"
- Кэш похожих запросов: если кто-то уже искал "grain from Santos" — отдать кэшированный результат
Но наш объём данных пока маленький. 16,553 порта, ~1000 позиций в кэше. Обычный LIKE + индексы справляются. pgvector добавит сложности (установка расширения, embedding model, стоимость embeddings).
**Вердикт: Интересно на перспективу. Сейчас — преждевременная оптимизация.**
---
### 8.8. Smart routing / Failover / Circuit breaker
**Наш статус**: Один провайдер (Claude). Упал — всё стоит. У AIS провайдера уже есть chain (AISStream → AISHub → Digitraffic → MT → stale DB), но у LLM — нет.
**Полезно?** **ДА, это самое полезное из списка.** Паттерн circuit breaker:
- Claude API вернул 5 ошибок подряд → переключиться на GPT-4o на 5 минут
- GPT-4o тоже лёг → вернуть пользователю "сервис временно недоступен" вместо hang
Реализация для нашего проекта — 80 строк Python. Не Rust, не IronClaw.
**Вердикт: Самая полезная идея. Стоит реализовать. IronClaw для этого не нужен.**
---
## 9. СВОДНАЯ ТАБЛИЦА: ЧТО БРАТЬ, ЧТО НЕТ
| Фича IronClaw | Полезна? | Сложность | IronClaw нужен? |
|---------------|----------|-----------|-----------------|
| LLM Failover | **ДА** | ~50 строк Python | Нет |
| Sandbox | Нет | — | — |
| Шифрование | Нет | — | — |
| Leak detection | **ДА** | ~15 строк Python | Нет |
| Self-expanding | **ОПАСНО** | — | — |
| Telegram-бот | **ДА** (будущее) | ~100 строк Python | Нет |
| pgvector | Может быть | Средне | Нет |
| Circuit breaker | **ДА** | ~80 строк Python | Нет |
### 3 вещи которые стоит реализовать (без IronClaw):
1. **LLM Failover** — Claude упал → GPT-4o (~50 строк)
2. **Leak detection** — сканирование ответов на API ключи (~15 строк)
3. **Telegram-бот** — на будущее, когда основной функционал стабилен (~100 строк)
**Общий объём: ~250 строк Python-кода.** Ставить ради этого Rust-проект возрастом 3 недели — как покупать тягач чтобы отвезти пакет молока.