simbiot-harness/artifacts/mirofish-analysis-2026-10-04.md

91 lines
8 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.

# MiroFish (github 666ghj/MiroFish): разбор и применимость — 2026-10-04
Задача: t-261004062405-fa9926. Метод: клон репо (depth 1), разбор кода backend
(58 py-файлов, ~17.2k строк) + README. Версия зависимостей: camel-oasis==0.2.5,
zep-cloud==3.25.0, flask>=3.0, openai>=1.0.
## Вердикт
**Как движок — НЕ берём. Как источник паттернов — да, 3-5 идей.**
Причины против движка: (1) стоимость — README сам пишет «High consumption,
попробуйте сначала <40 раундов»; (2) жёсткая привязка к Zep Cloud (внешний
SaaS-граф памяти, счёт отдельно от LLM) и OASIS/camel-ai; (3) китайский
дефолт-стек (qwen-plus через dashscope) — у нас 9router; (4) это продукт-платформа
(Flask 5001 + React 3000 + Docker), а не библиотека — интеграция = second brain.
## Архитектура (проверено по коду)
Пайплайн: **Graph Building → Environment Setup → Simulation → Report → Interaction**
1. **Graph Building** (`graph_builder.py` 879 строк, `ontology_generator.py` 732):
seed-материалы (новости/политики/финанс.сигналы, PDF/текст) → извлечение
сущностей и связей → GraphRAG-граф в Zep (онтология генерится LLM).
2. **Environment Setup** (`oasis_profile_generator.py` 1248): из сущностей Zep
LLM-ом генерятся персоны агентов — индивидуальные и групповые
(`generate_profile_from_entity` → `_generate_profile_with_llm`, JSON-схема,
username, bio, persona-текст) → конфиг агентов инжектится в OASIS.
3. **Simulation** (`simulation_runner.py` 2033, `run_parallel_simulation.py` 1699,
twitter/reddit скрипты): движок **OASIS (camel-ai)** — двухплатформенная
параллельная симуляция соцсети (Twitter+Reddit). Раунды = часы×60/минут_на_раунд,
есть max_rounds-обрезка (контроль стоимости). Каждый агент за раунд —
действие через `LLMAction` (≥1 LLM-вызов на активного агента за раунд).
Память: каждое действие → episode-текст → динамическое обновление Zep-графа
(`zep_graph_memory_updater.py` 791: описатели create_post/like/repost/
comment/follow/search).
4. **Report** (`report_agent.py` 2619 — самый большой модуль): ReportAgent с 4
инструментами — `insight_forge`, `panorama_search`, `quick_search`,
`interview_agents` (интервьюирует агентов мира post-factum); протокол
`<tool_call>{...}</tool_call>`, трекер «не все инструменты использованы»
дожимает агент до полного отчёта.
5. **Interaction**: чат с любым агентом мира + ReportAgent (фронт).
Память = **Zep Cloud** (knowledge-graph + temporal): не векторная база, а граф
сущностей с би-темпоралью; free-тариф «на простое использование».
## Оценка стоимости прогона
Формула расхода: ~ `N_агентов × N_раундов` LLM-вызовов (действия) + граф/онтология
+ персоны + отчёт (десятки вызовов) + инференс Zep (граф-обновления, отдельный счёт).
- Заявленный дефолт: qwen-plus. README: «<40 раундов на старте».
- Пример: 100 агентов × 40 раундов ≈ 4–5k вызовов ≈ 15–25M входящих токенов
(контекст платформы в каждом) → **~$10–25 на qwen-plus за прогон**;
на премиум-модели класса GPT-4o — **×10–30 (сотни $)**.
- Осмысленный прогнозный прогон (500+ агентов, 100+ раундов) — **сотни $ за
прогон** даже на дешёвых моделях + Zep Cloud сверх.
- Контекст: наш burn 9router = 2291.81 у.е./7д — один-два «взрослых» прогона
MiroFish съели бы заметный кусок недельного бюджета без прямой выручки.
## Что берём (идеи заимствования)
1. **Персона-из-сущности** (`_generate_profile_with_llm`): LLM-генерация
структурированной персоны агента из записи графа знаний (JSON-схема, инди/групп).
Куда: v2 aum-pilot — вместо placeholder-модели продуктивности, агентные симуляции
решений кооператива (роли: Alex/Vlad/Yura/клиент) с сгенерированными персонами.
2. **ReportAgent-паттерн**: отчётёр = агент с узким набором инструментов
(сводка/поиск/дип-поиск/интервью) + трекер обязательного использования всех
инструментов. Куда: наш «отчёт-адвокат» в aum-pilot и часовые дайджесты —
интервью опрошенных агентов симуляции вместо голой статистики.
3. **Episode→граф памяти**: действие → компактный episode-текст → обновление
графа по ходу симуляции (не в конце). Куда: память ритмичных агентов харнеса
— но на нашем RAG (без Zep: episode → embedding → граф связей) — паттерн
повторяем, сервис не покупаем.
4. **Предпродажная симуляция спроса**: OASIS даёт готовую соц-динамику
(лайк/репост/коммент/фоллов). Идея под AUM: перед запуском лендинга/прайса —
дешёвый прогон (20–40 раундов, flash-модель, 50–100 агентов-«клиентов» из
персон сегмента) → прогноз реакции и возражений. Это прямой кандидат в
наши симуляции поведения пользователей.
5. **Автогенерация конфига из NL-запроса** (`simulation_config_generator.py`):
«что хочешь узнать» естественным языком → параметры прогона + max_rounds
(жёсткий потолок стоимости). Куда: постановка задачи → конфиг прогона
aum-pilot; потолок раундов — в наши длинные симуляции.
6. **IPC/прогресс долгих прогонов** (`simulation_ipc.py` + progress %):
отдельный процесс, структурированный прогресс, чистая обрезка. У нас уже
есть _llm_worker — позаимствовать схему прогресса/тримминга.
## Чего не берём
- Zep Cloud (внешний SaaS, счёт отдельно, данные наружу) — свой RAG/graph.
- OASIS целиком (тяжёлый camel-ai стек) — только если сделаем п.4; тогда
изолированный Docker-стенд, flash-модель через 9router, budget-cap на прогон.
- Их фронт/платформу — у нас свои каналы (портал, MCP, TG).