Strategy/projects/files/neuler/neuler_mvp_spec.md
+

neuler_mvp_spec

Neuler MVP Spec — AstaBench E2E

Дата: 2026-02-26
Версия: 0.1 (pre-meeting draft)
Следующая встреча: ~2026-03-09 (bi-weekly)


1. Что такое AstaBench E2E

AstaBench (Automated Science Task Benchmark) — семейство бенчмарков для оценки AI-учёных.
E2E (End-to-End) версия = полный цикл от входного задания до валидируемого результата.

Что оценивается:

Измерение Описание
Hypothesis quality Новизна, правдоподобность, тестируемость гипотезы
Experimental design Корректность плана эксперимента
Code implementation Runnable ML-код, воспроизводимый результат
Analysis Правильная интерпретация результатов
Writing Scientific paper draft качество

E2E задание (пример):

Input: "Исследуйте, работает ли operator splitting как регуляризатор для SGD"
Output: hypothesis + experiment code + results + mini-paper draft

Метрика успеха: LLM-as-judge (GPT-4 / Claude) + human expert review (Даниил).


2. MVP: 3 AI-scientist решения

Три типа задач, покрывающих разные слои исследовательского цикла:

Solution A: Literature Scout

Задача: дано исследовательское направление → найти и структурировать литературу

Input:  { "topic": "operator splitting for neural network training", "depth": "L" }
Output: {
  "papers": [...],          # список с title/doi/abstract/relevance
  "knowledge_gaps": [...],  # где нет исследований
  "positioning": "..."      # как наша работа соотносится с SOTA
}

Агенты: Библиотекарь (SDR-based) → Рецензент
Инструменты: OpenAlex, Semantic Scholar, DOI2PDF, SDR
Benchmark: сравнить с ручным обзором литературы (coverage % + gap precision)

Solution B: Hypothesis Generator

Задача: дан research gap → сгенерировать и ранжировать гипотезы

Input:  { "gap": "нет теорем о Strang splitting для non-convex NN loss", "context": [...papers] }
Output: {
  "hypotheses": [
    { "statement": "...", "novelty": 0.8, "feasibility": 0.7, "tests": ["..."] },
    ...
  ],
  "top_hypothesis": "...",
  "rationale": "..."
}

Агенты: Генератор гипотез → Рецензент (hallucination check)
Метрика: expert score (0-10) по критериям НТИСС (новизна/тестируемость/ценность)
Human-in-the-loop: confidence < 0.7 → эскалация Даниилу

Solution C: MLE Runner

Задача: дана гипотеза + датасет → написать и запустить ML-эксперимент

Input:  { "hypothesis": "...", "dataset": "MNIST/synthetic", "compute": "cpu_local" }
Output: {
  "code": "...",            # runnable Python
  "results": { "metric": 0.94, "plots": [...] },
  "verdict": "confirmed" | "rejected" | "inconclusive",
  "next_experiments": [...]
}

Агенты: MLE (code generation + execution sandbox) → Рецензент
Инструменты: Python sandbox (subprocess), matplotlib, local GPU (если есть)
Метрика: reproducibility (same seed → same result), verdict accuracy vs human


3. Контракты агентов (JSON Schema)

Research Manager (оркестратор)

{
  "input": {
    "task": "string",           // исходное задание
    "solution_type": "A|B|C",   // какое решение выбрать
    "budget": { "time_min": 30, "cost_usd": 0.5 }
  },
  "output": {
    "result": {},               // Solution-specific output
    "session_id": "uuid",       // для продолжения/форка
    "confidence": 0.0..1.0,
    "artifacts": ["path/to/file", ...]
  }
}

Библиотекарь

{
  "input": { "query": "string", "max_papers": 20 },
  "output": { "papers": [{ "title": "", "doi": "", "abstract": "", "score": 0.0 }] }
}

Генератор гипотез

{
  "input": { "gap": "string", "context_papers": [...] },
  "output": { "hypotheses": [...], "reasoning": "string" }
}

MLE агент

{
  "input": { "hypothesis": "string", "experiment_spec": "string" },
  "output": { "code": "string", "results": {}, "verdict": "string" }
}

Рецензент (cross-cutting)

{
  "input": { "artifact_type": "hypothesis|code|paper", "content": {} },
  "output": { "score": 0..10, "issues": [...], "confidence": 0.0..1.0, "approved": bool }
}

4. CLI Interface

# Solution A: Literature Scout
neuler scout --topic "operator splitting SGD" --depth L --output report.md

# Solution B: Hypothesis Generator
neuler hypothesize --gap "Strang splitting convergence" --papers papers.json --top 3

# Solution C: MLE Runner
neuler run --hypothesis "splitting reduces gradient variance" --dataset synthetic --compute local

# Session management
neuler session list
neuler session fork <session_id>
neuler session continue <session_id>

Persistence: один файл сессии

{
  "session_id": "uuid",
  "created_at": "ISO",
  "task": "...",
  "solution_type": "A|B|C",
  "steps": [{ "agent": "...", "input": {}, "output": {}, "timestamp": "" }],
  "artifacts": ["..."],
  "status": "in_progress|completed|forked",
  "parent_session_id": null
}

5. Метрики успеха MVP

Метрика Порог MVP
Solution A coverage ≥80% known papers для конкретного топика
Solution B expert score ≥6/10 за новизну + тестируемость
Solution C reproducibility 100% (same seed → same result)
E2E latency (A+B+C) ≤15 мин для medium depth
Escalation precision confidence threshold корректен в ≥80% случаев

6. Технологический стек

neuler/
├── cli.py                  # CLI entrypoint (Click/Typer)
├── agents/
   ├── research_manager.py
   ├── librarian.py        # SDR-based search
   ├── hypothesis_gen.py
   ├── mle_runner.py       # code gen + subprocess
   └── reviewer.py
├── tools/
   ├── openalex.py         # из SDR
   ├── semantic_scholar.py
   ├── doi2pdf.py          # из SDR DOIProcessor
   └── sandbox.py          # safe Python execution
├── session.py              # SessionManager (JSONL persistence)
├── config.yaml             # agent + tool settings
└── bench/
    └── astabench_e2e.py    # evaluation harness

LLM: Claude claude-sonnet-4-6 (основной), claude-haiku-4-5-20251001 (Рецензент/быстрые задачи)
Orchestration: LangGraph (уже используется в SDR) или simple async
Tracing: Langfuse (из SDR infra)


7. Минимальный первый шаг (к следующей встрече)

Задача на 1 неделю: реализовать Solution A (Literature Scout) как standalone CLI

  1. neuler scout --topic "X" --depth S → 10 релевантных статей с аннотациями
  2. Использовать OpenAlex + Semantic Scholar (уже реализованы в SDR)
  3. Выходной формат: Markdown-отчёт (как sdr_state_of_the_art_2025_2026.md)
  4. Eval: запустить на “operator splitting SGD” → сравнить с ручным обзором

Почему A первый: самый независимый, инструменты уже есть, демо будет наглядным.


8. Вопросы к встрече

  1. AstaBench E2E: есть ли официальная версия или это наш внутренний стандарт?
  2. Три решения: это три независимых системы или модули одной?
  3. Вычисления: есть ли доступ к GPU для MLE Runner или только CPU?
  4. Timeline: когда первая demo — до или после SDR v1 release?
  5. Команда: кто пишет помимо Даниила? Альберт? Данил Шерки?

Создано Feanor автономно 2026-02-26 04:00 MSK. Требует ревью Даниила перед встречей.

Choose icon