12 KiB
v1.plan.md
1. Цель ближайшего этапа
На ближайшем этапе цель — не достраивать полного агента и не интегрировать решение в UI, а довести до зрелого состояния изолированный code-first test pipeline:
user query -> IntentRouterV2 -> retrieval plan -> layered retrieval -> evidence gate -> LLM answer -> diagnostics
Именно этот контур должен стать будущим ядром агента, которое позже заменит legacy RouterService.
2. Что считается результатом этапа
Этап можно считать успешным, когда:
IntentRouterV2стабильно определяетintent,sub_intent,keyword_hints,path_scope,layers,conversation_modeи retrieval constraints;- retrieval реально следует плану, заданному роутером;
- LLM получает контекст, собранный из retrieval, а не из побочных обходных механизмов;
- ответ не строится без достаточного evidence;
- диагностика тестов позволяет понять:
- что выбрал router;
- что извлек retrieval;
- чего не хватило;
- почему ответ хороший или плохой.
3. Что сейчас не делать
На текущем этапе не стоит:
- встраивать это сразу в UI;
- подключать docs retrieval как обязательную часть MVP;
- строить полный cross-domain runtime;
- пытаться довести сразу весь orchestration runtime;
- инвестировать много времени в
C6,D5,D6; - лечить legacy
RouterService, кроме минимально необходимого для совместимости.
4. Приоритетный план работ
4.1. Итерация 1 — зафиксировать канонический test-first контур
4.1.1. Принять IntentRouterV2 как единственную точку истины для тестового MVP
Именно IntentRouterV2 должен определять:
domainintentsub_intentkeyword_hintspath_scopelayersconversation_mode- retrieval constraints
4.1.2. Зафиксировать минимальный набор сценариев MVP-now
Для текущего этапа в качестве канонического набора сценариев следует оставить:
OPEN_FILEEXPLAINFIND_TESTSFIND_ENTRYPOINTSGENERAL_QAкак fallback
4.1.3. Зафиксировать контракт тестового пайплайна
Нужно явно определить структуру следующих объектов:
RouterResultRetrievalRequestRetrievalResultEvidenceBundleAnswerSynthesisInputDiagnosticsReport
Это нужно, чтобы тесты настраивали устойчивый контракт, а не размытый процесс.
4.2. Итерация 2 — связать router и retrieval
4.2.1. Сделать retrieval adapter под контракт роутера
Output IntentRouterV2 должен напрямую превращаться в retrieval plan.
Примеры:
-
OPEN_FILE- path-priority retrieval
C0_SOURCE_CHUNKS
-
EXPLAIN- symbol-first retrieval
C1 + C0 + C2, optionallyC3
-
FIND_TESTS- target symbol / path
- lightweight
C5-lite
-
FIND_ENTRYPOINTSC3_ENTRYPOINTS
-
GENERAL_QA- ограниченный broad retrieval без агрессивных допущений
4.2.2. Убрать разрыв между индексатором и retrieval runtime
Нужна надежная связка:
index data -> retrieval gateway -> normalized retrieval output
Retrieval должен стать нормальной runtime-функцией, а не только наличием индексов и отдельных explain-механизмов.
4.2.3. Ввести единый формат retrieval output
Нужен единый формат, в который складываются найденные артефакты:
- symbols
- chunks
- relations
- entrypoints
- tests
- diagnostics per layer
Это станет основой для EvidenceBundle.
4.3. Итерация 3 — перенести evidence-first логику в общий test pipeline
4.3.1. Сделать общий evidence gate
Для каждого sub-intent нужно определить minimum evidence.
OPEN_FILE
- найден path или очень сильный lexical hit;
- есть хотя бы 1–2 relevant chunks.
EXPLAIN
- найден целевой symbol или уверенный target fragment;
- есть минимальное число code chunks;
- есть хотя бы базовые relations или surrounding context.
FIND_TESTS
- найден target symbol/file;
- найден хотя бы один reliable candidate test.
FIND_ENTRYPOINTS
- найден хотя бы один candidate entrypoint.
GENERAL_QA
- найден хоть какой-то устойчивый контекст;
- иначе ответ должен честно говорить о слабом evidence.
4.3.2. Запретить уверенный ответ без опоры
Если minimum evidence не выполнен, система должна:
- либо честно деградировать;
- либо выдать частичный ответ;
- либо явно сообщить, каких данных не хватает.
4.4. Итерация 4 — унифицировать сборку контекста для LLM
4.4.1. Ввести единый EvidenceBundle
LLM должна получать структурированный пакет:
- target intent / sub-intent
- target symbol / path
- relevant code chunks
- retrieved relations
- entrypoints if any
- test evidence if any
- retrieval diagnostics summary
- evidence sufficiency flags
4.4.2. Разделить fast context и deep context
Fast context
Короткая выжимка:
- target symbol
- file
- short relations summary
- top evidence
Deep context
Полные chunks, расширенные relations и supporting fragments.
4.4.3. Стандартизировать prompt contract
Для каждого sub-intent нужен понятный режим ответа:
- открыть;
- объяснить;
- найти тесты;
- найти точки входа;
- общий fallback.
LLM должна понимать:
- какой тип ответа нужен;
- насколько evidence полон;
- можно ли делать выводы;
- где надо явно отметить неопределенность.
4.5. Итерация 5 — довести диагностику до рабочего инструмента настройки
4.5.1. Разделить диагностику на 2 уровня
Уровень 1 — Human-readable summary
Коротко:
- intent выбран правильно / нет;
- target найден / нет;
- retrieval успешен / нет;
- evidence достаточен / нет;
- ответ надежный / частичный / слабый.
Уровень 2 — Detailed diagnostics
Подробно:
- router fields;
- layer-by-layer retrieval;
- empty / failed layers;
- ranking decisions;
- evidence gate results;
- context assembly details.
4.5.2. Добавить явные failure reasons
Рекомендуемый минимальный набор:
router_low_confidencetarget_symbol_not_foundpath_scope_emptylayer_c1_emptylayer_c2_emptytest_mapping_not_foundinsufficient_code_evidence
5. Как трактовать RAG-план на текущем этапе
5.1. Что оставить как целевой план
Целевую карту слоев оставляем без изменений:
C0–C6D0–D6
Она остается правильной как target architecture.
5.2. Что считать MVP-now
Для текущего этапа обязательны:
C0_SOURCE_CHUNKSC1_SYMBOL_CATALOGC2_SYMBOL_RELATIONSC3_ENTRYPOINTS
И в облегченном виде:
C5_TEST_MAPPINGS_LITE
Пока не делать блокирующими:
C4_EXECUTION_PATHSC6_CODE_FACTS- весь docs runtime
5.3. Что считать следующим этапом
После стабилизации code-first MVP:
- подключение docs retrieval;
- использование D-layers в runtime;
- docs-from-code generation;
- cross-domain linking.
6. Как строить тестовый контур
6.1. Router tests
Проверяют только:
- intent
- sub_intent
- layers
- keyword_hints
- path_scope
- confidence / fallback behavior
6.2. Retrieval tests
Проверяют:
- что retrieval реально использует router output;
- какие слои сработали;
- что извлечено;
- нет ли шума от тестов;
- не пропал ли основной код.
6.3. Evidence gate tests
Проверяют:
- достаточен ли evidence;
- правильно ли система деградирует;
- не отвечает ли уверенно при слабой опоре.
6.4. Answer quality tests
Проверяют финальный ответ LLM:
- есть ли опора в коде;
- нет ли лишних догадок;
- хватает ли связности;
- соответствует ли ответ типу вопроса.
7. Что скорректировать в README / архитектурном плане
В README нужно явно разделить:
7.1. Target Architecture
Полная целевая система.
7.2. MVP-now
Изолированный test-first контур для CODE_QA, который:
- не зависит от UI;
- не зависит от full runtime orchestration;
- нацелен на доводку
IntentRouterV2+ retrieval + evidence + LLM answers.
8. Самые важные изменения в реализации прямо сейчас
Приоритет:
P1
Сделать IntentRouterV2 центром тестового MVP.
P2
Связать router output с реальным layered retrieval.
P3
Ввести единый EvidenceBundle.
P4
Сделать общий evidence gate для всего test pipeline.
P5
Привести диагностику к форме, удобной для настройки через тесты.
P6
Добавить C5-lite для FIND_TESTS.
9. Итоговая формулировка ближайшей цели
Довести до зрелости изолированный code-first test pipeline на базе
IntentRouterV2, в котором роутер управляет retrieval, retrieval формирует evidence bundle, evidence gate контролирует достаточность опоры, а LLM отвечает строго на основе извлеченного контекста и прозрачной диагностики.