temporality
Изменить страницу↗
Инженерные документы

План работ: Evaluable Agent — определение агента и компиляция системного промта

Source spec: docs/evaluable-agent.md. Статус: Фаза 1 (этапы 1–7) реализована; ревизия 2026-10-10 сверила план со спекой и кодом — расхождения устранены в тексте, пост-плановые изменения зафиксированы в §2.1. Фаза 2 реализована целиком: этап 8 (оценки агента), этап 9 (аналитика эволюции: pass rate на версию, подсветка регрессий при неизменном сьюте), этап 10 (evolution proposals: анатомия problem/change/effect + evidence, инструмент agent_propose, применение только человеком через штатный update-путь). CLI — опциональный хвост, не реализован. Legacy-конверсия — осознанно ручная: Rebuild/визард с человеком в цикле (автоматический проход при старте отвергнут: LLM-вызов на старте неработоспособен).

#0. Текущее состояние (baseline)

#1. Целевая модель

#1.1 Определение агента (AgentDefinition)

Хранится в workspace_agent.definition (JSONB), редактируется обычной формой, никогда — как YAML:

{
  "capabilities": {
    "read_files": true,
    "modify_files": true,
    "run_commands": true,
    "network": false,
    "skills": true,
    "knowledge": true
  },
  "constraints": ["Не изменять инфраструктуру и не удалять файлы."],
  "completion": ["Запустить соответствующие тесты.", "Убедиться, что сборка проходит."],
  "prompt_override": ""
}

#1.2 Компиляция промта

Детерминированная функция ядра, не LLM:

CompileAgentPrompt(def, env) =
    базовый контракт (доказательность §11, память §10, песочница)
  + роль/идентичность (имя + purpose; ответственность, не стиль §12)
  + ограничения (Never: ...)
  + критерии завершения (Before declaring done, verify: ...)
  + политика окружения (read-only / no network / ...)

Правила генератора (§7–§10, §17): без пошаговых инструкций; без дублирования tool-схем и skills; без «always use memories»; минимальная длина; проверяемые критерии завершения.

#2. Этапы работ

Порядок выбран так, чтобы ценность шла с первого этапа: компилятор и версионирование — ядро, UI и AI-формирование — поверх.

#Этап 1. Модель данных и миграция — S — ✅

#Этап 2. Компилятор промта и enforcement — M — ✅

#Этап 3. Workspace API и версионирование — S — ✅

#Этап 4. UI: смысл вместо промта, визард, регенерация — L — ✅

#Этап 5. Agent Builder (AI-формирование) — M — ✅

#Этап 6. Встроенные агенты — S — ✅ (пересобран после уточнения спеки)

#Этап 7. Вкладка «Эволюция» — M — ✅

#2.1. Пост-плановые изменения (ревизия 2026-10-10)

Спека и смежные волны ушли вперёд исходного плана; зафиксировано, чтобы документ соответствовал коду:

#2.2. Фаза 2 — Оценки и эволюция агента (план работ)

Спека §15: «Эволюция» должна сопоставлять изменения определения с результатами работы агента; в перспективе — связь с evaluation и накопленными свидетельствами. Evaluation-инфраструктура уже обкатана на скилах (living-skills Phase 2: suite/run таблицы, синхронный раннер, события, UI-таб, CLI) — фаза зеркалит её для агентов.

Ключевое отличие от скилов: оценка pinned не к «текущему состоянию», а к конкретной definition_version — сравниваются версии определения, а не дрейф текущего промта.

#Этап 8. Оценки агента (suites + runner) — M — ✅

#Этап 9. Аналитика эволюции — S/M — ✅

#Этап 10. Evolution proposals — M/L — ✅

#Этап 11 (P2, опционально). Trajectory-level оценки

Кейс = полная задача → реальный AgentRun; критерии: завершение в бюджете, отсутствие реворков/эскалаций. Дорого; включать только если prompt-level оценки перестанут различать версии.

#3. Тестирование и приёмка

#4. Принятые решения

  1. Enforcement — жёсткий. Capabilities реально режут инструменты и окружение, а не формулируют политику в промте: modify_files=false → read-only + без write-инструментов; run_commands=false → без run_command; network=false → без сети; skills=false → без инъекции скилов; knowledge=false → без prior knowledge hints. Иначе агент сам себе наделит полномочий через промт.
  2. Компиляция — при каждом запуске. Промт всегда свежий; воспроизводимость обеспечивает текст, зафиксированный в workspace_agent_version.compiled_prompt (снимок той же детерминированной функции).
  3. Legacy-миграция — ручная, через Rebuild/визард. Существующие агенты с system_prompt без definition конвертируются человеком через «Переформировать» (fallback — оставить старый промт как prompt_override). Автоматический проход при старте ядра отвергнут: LLM-вызов на старте неработоспособен. Legacy-агенты до конверсии работают как есть, с бейджем «ручной промт (legacy)».
  4. purpose = существующая колонка description. Отдельного поля в definition нет: «Назначение» в форме и резюме — это workspace_agent.description. Definition хранит только capabilities, constraints, completion, prompt_override.

#5. Не-цели