Статус реализации Prompt Suggestion
Отслеживает статус реализации функции подсказок (NES) во всех пакетах.
Основной модуль (packages/core/src/followup/)
| Компонент | Статус | Строк | Описание |
|---|---|---|---|
followupState.ts | ✅ Готово | ~230 | Фреймворк-агностичный контроллер с таймером и debounce |
suggestionGenerator.ts | ✅ Готово | ~260 | Генерация через LLM + 12 правил фильтрации + поддержка forked-запросов |
forkedQuery.ts | ✅ Готово | ~240 | CacheSafeParams + createForkedChat + runForkedQuery |
overlayFs.ts | ✅ Готово | ~140 | Оверлейная файловая система с Copy-on-Write |
speculationToolGate.ts | ✅ Готово | ~150 | Контроль границ инструментов с использованием AST-парсера для shell |
speculation.ts | ✅ Готово | ~540 | Движок speculation с конвейерной генерацией подсказок + переопределением модели |
Интеграция с CLI (packages/cli/)
| Компонент | Статус | Описание |
|---|---|---|
AppContainer.tsx | ✅ Готово | Генерация подсказок, жизненный цикл speculation, рендеринг UI |
InputPrompt.tsx | ✅ Готово | Принятие по Tab/Enter/Right Arrow, отклонение + прерывание |
Composer.tsx | ✅ Готово | Проброс пропсов |
UIStateContext.tsx | ✅ Готово | promptSuggestion + dismissPromptSuggestion |
useFollowupSuggestions.tsx | ✅ Готово | React-хук с телеметрией + отслеживанием нажатий клавиш |
settingsSchema.ts | ✅ Готово | 3 feature-флага + настройка fastModel |
settings.schema.json | ✅ Готово | Схема настроек VSCode |
Интеграция с WebUI (packages/webui/)
| Компонент | Статус | Описание |
|---|---|---|
InputForm.tsx | ✅ Готово | Tab/Enter/Right Arrow + отправка explicitText |
useFollowupSuggestions.ts | ✅ Готово | React-хук с поддержкой onOutcome |
followup.ts | ✅ Готово | Точка входа для субпути |
components.css | ✅ Готово | Стилизация ghost-текста |
vite.config.followup.ts | ✅ Готово | Отдельная конфигурация сборки |
Телеметрия (packages/core/src/telemetry/)
| Компонент | Статус | Описание |
|---|---|---|
PromptSuggestionEvent | ✅ Готово | 10 полей |
SpeculationEvent | ✅ Готово | 7 полей |
logPromptSuggestion() | ✅ Готово | Логгер OpenTelemetry |
logSpeculation() | ✅ Готово | Логгер OpenTelemetry |
Покрытие тестами
| Файл теста | Тестов | Описание |
|---|---|---|
followupState.test.ts | 14 | Таймер контроллера, debounce, колбэк accept, onOutcome, очистка |
suggestionGenerator.test.ts | 16 | Все 12 правил фильтрации + граничные случаи + ложные срабатывания |
overlayFs.test.ts | 15 | Запись COW, разрешение чтения, применение, очистка, обход путей |
speculationToolGate.test.ts | 27 | Категории инструментов, режим подтверждения, shell AST, перезапись путей |
forkedQuery.test.ts | 6 | Сохранение/получение/очистка параметров кэша, глубокое клонирование, определение версии |
speculation.test.ts | 7 | Граничные случаи ensureToolResultPairing |
smoke.test.ts | 21 | Кросс-модульный E2E: фильтр + оверлей + toolGate + кэш + pairing |
InputPrompt.test.tsx | 4 | Tab, Enter+submit, Right Arrow, гард завершения |
История аудита
| Раунд | Найдено проблем | Исправлено проблем |
|---|---|---|
| R1-R4 | 10 | 10 (движок правил → LLM, упрощение состояния) |
| R5-R6 | 2 | 2 (конфликт привязки Enter, телеметрия Right Arrow) |
| R7-R8 | 3 | 3 (телеметрия WebUI, неиспользуемый тип, покрытие тестами) |
| R9 | 0 | — (стабилизация) |
| R10-R11 | 1 | 1 (зависимость historyManager) |
| R12-R13 | 1 | 1 (границы слов в evaluative regex) |
| Phase 1+2 R1-R4 | 20+ | 20+ (обход разрешений, безопасность оверлея, состояния гонки) |
| Итого | 37+ | 37+ |
Соответствие Claude Code
| Функция | Совпадение | Примечания |
|---|---|---|
| Текст подсказки | 100% | Идентично (только название бренда) |
| 12 правил фильтрации | 100%+ | Улучшение границ слов \b |
| Взаимодействие с UI (Tab/Enter/Right) | 100% | |
| Условия защиты (Guard conditions) | 100% | 13 проверок |
| Телеметрия | 100% | 10+7 полей |
| Совместное использование кэша | ✅ | DashScope cache_control |
| Speculation | ✅ | COW-оверлей + ограничение инструментов |
| Конвейерная подсказка | ✅ | Генерируется после завершения speculation |
| Управление состоянием | 100%+ | Паттерн контроллера, Object.freeze |
Last updated on