simbiot-harness/skills/systemone-bench/SKILL.md

6.7 KiB
Raw Blame History

name description metadata
systemone-bench Use when choosing between 3+ non-numeric action options via local Ollama decision endpoint (/v1/systemone, model nimble), or when optimizing action sequences with GA against a simulator. Turns "which of many options" into a measured, hierarchical choice instead of free-form LLM guessing.
origin code scope
t-261005074437-39a9b0 (внедрение systemone-bench в архитектуру харнеса) /root/systemone-bench (clone symbiot/systemone-bench @ git.cil.by; README.md там же) любые тики харнеса, где нужен выбор действия из каталога >9 кандидатов; симуляция политик стартапа

systemone-bench: decision-эндпоинт + GA-оптимизация выбора

Trigger rule

  • Нужно выбрать ОДНО действие из >9 однородных опций (команды, конфиги, политики)
  • Опции разбиты (или разбиваются) на группы по 2–8 в группе
  • Есть критерий качества выбора (fitness / AUM / метрика), хотя бы приблизительный
  • Нужен выбор на симуляторе перед применением в бою (бесплатные прогоны)

Не использовать: для бинарных решений (это noul), для абсолютных оценок тяжести (score плох на абсолютных шкалах — подтверждено сюитом), если опций ≤ 9 (делай обычный choice без иерархии).

Steps

1. Проверка окружения

curl -s http://127.0.0.1:11434/api/tags | grep -o '"nimble"'   # модель на месте
cd /root/systemone-bench && python3 ga/ga.py --smoke            # ~13с, должен быть зелёный
cd /root/systemone-bench && python3 harness/hier.py --model nimble --quick  # ~мин, e2e ~81% на quick-16

Контракт эндпоинта: choice — criteria объект, 2–26 опций; score — criteria массив 2–26 уровней, score = Σ i·pᵢ; noul — вероятность «да». 1–64 вопроса на запрос, тело ≤ 64 KiB, промпт ≤ 8194 токенов. confidence = концентрация распределения, НЕ вероятность правильности — не опирайся на него как на calibration.

2. Схема выбора: top-2 группы → choice по шортлисту ≤ 9

Главная рекомендация (README, рекомендация №1): flat-choice по всем 64 командам падает до 0% (эндпоинт режет >26 и точность падает), иерархия:

  1. stage1 (score): по группам (8 групп) — взять top-2 группы, не top-1 (top-2 hit 93.8–84.4% vs top-1 87.5–64.1% — у ~40% команд легитимный «второй дом» в таксономии).
  2. stage2 (choice): объединённый шортлист кандидатов из двух групп — строго ≤ 9 (точность 100% на шортлисте 6 → 50% на 10).
  3. stage3 (score): если выбранная команда имеет параметры — ранжирование значений score-массивом (gold #1 в 96.9–100%).

Расчётный эффект: e2e 57.8% → ~78% (top-2 выборка × stage2 92%). Латентность полного конвейера ~520–580 мс — годится для тика, не для realtime.

3. GA: поиск последовательностей действий

cd /root/systemone-bench && python3 ga/ga.py            # полный прогон (pop 200 × 100 gen, ~17с)
python3 ga/ga2.py --neardeath   # при каком runway GA берёт опасные команды (layoff/delay_payroll)
python3 ga/ga2.py --robust      # максимин по crunch/base/growth/dying

Фитнес = терминальный AUM основателя. GA бьёт greedy на +27–43% (8 нед) и random search до +59%. Что уже известно (не переоткрывать):

  • GA эмерджентно строит цепочки пререкрешитов (pricing_power → raise_prices_10).
  • Опасные команды не выбирает при runway ≥ 2.5 мес — сигналят о реальном риске.
  • Дыра (найдена smoke-прогоном): sell_secondary даёт +100 personal cash и спасает dying без опасных команд — симулятор вознаграждает личный кэш без штрафа за health компании. Обход: гейт по здоровью компании (напр., фитнес умножается на флаг health > порога, или штраф за dilution в personal cash).

4. Интеграция в тик харнеса

На тиках, где нужен выбор действия: собрать кандидатов → разбить на группы → stage1 score (top-2) → choice ≤9 → применить → записать выбор и исход событием в стор (для последующей GA-сшивки policy trace с fitness).

Quality gates

  • Шортлист stage2 всегда ≤ 9; если объединение top-2 групп даёт >9 — режь по stage1-score внутри групп.
  • stage1 всегда top-2, никогда top-1.
  • Для тяжести/абсолютов не использовать score — только ранжирование однородного.
  • Прогон ga/ga.py --smoke обязателен перед использованием GA-результатов.
  • Результат каждого GA-эксперимента фиксировать событием на доску (cli.py task/complete или event), не оставлять только в ga2-results.json.
  • Не доверять confidence как вероятности правильности.

References

  • README.md репо /root/systemone-bench — контракт эндпоинта, все метрики сессии 2026-10-04
  • harness/eval.py — 5 сюитов (шортлист, permutation, noul, score-тяжесть, батчинг)
  • ga/ga.py, ga/ga2.py — GA и сценарные эксперименты; ga-results.json, ga2-results.json
  • docs/systemone-bench-integration.md (репо харнеса) — интеграция и связь с AUM-петлёй