Иконка ресурса

NTS-MCP(Next Transactions Server) 1.7.4

Нет прав для скачивания
NTS MCP FileSystem Server v1.7.4 — Java Development Suite, Sub-Tasks, Semantic Refactoring




Что нового

Комплект инструментов Java-разработки

NTS теперь предоставляет расширенную поддержку Java поверх общих возможностей tree-sitter для 12 языков. Java получает выделенные высокоуровневые инструменты с минимальной когнитивной нагрузкой для агентов.

Профайлер: высокоуровневый API

nts_java_profiler полностью переработан на 6 высокоуровневых действий:

  • discover — Список подключаемых JVM с PID, именами, версиями Java
  • profile — Один вызов: attach → запись → stop → парсинг → Markdown-отчёт
  • trace — Трассировка методов с фильтром (JDK 25+)
  • analyze — Повторный анализ записи с другим фокусом (экономия токенов)
  • compare — Дельта-отчёт между двумя записями (до/после)
  • kill — Завершение JVM-процесса

Области фокуса: cpu, cpu-time (JDK 25+), memory, contention, gc, io, all.

Усиленный contention-анализ:
  • JavaMonitorEnter — блокировка на мониторах (synchronized)
  • JavaMonitorWait — Object.wait() (ожидание notify)
  • ThreadPark — LockSupport.park (j.u.c.)
  • Call sites блокировок — конкретные места в стеке
  • Самые блокируемые потоки — ранжирование по суммарному времени

Умные хинты: NIO-серверы с пустым IO получают NIO-подсказку. ZGC с минимальными паузами — подсказку о pauseless-коллекторе.

Новый инструмент: nts_java_memory

Анализ памяти — отдельный инструмент с 4 действиями:

  • discover — Список JVM (независим от профайлера)
  • snapshot — Мгновенная гистограмма классов через jcmd (миллисекунды, без записи)
  • compare — Дельта между снапшотами с автоматическим вердиктом утечки
  • alloc — JFR-запись аллокаций — top типов по скорости с call sites

Workflow обнаружения утечек: snapshot → нагрузить код → snapshot → compare. Рост = кандидаты на утечку.

Gradle Build Integration

  • Умное переключение бэкенда: gradlew → system gradle → автогенерация wrapper
  • Инициализация проекта: task='init', initType='java-application'
  • Парсинг вывода: ошибки с file:line, результаты тестов с pass/fail/skip
  • Асинхронные сборки с мониторингом через nts_process

Расширенный Java AST

  • Enum constants как символы CONSTANT в навигации
  • Constructor-aware rename — переименование класса переименовывает конструкторы
  • Disambiguация перегрузок через структурированные AST-параметры
  • Фильтрация символов: symbols(kind='method', brief=true)




Под-задачи для параллельных агентов

nts_init поддерживает под-задачи для нескольких агентов на одной кодовой базе:

  • Родитель: nts_init() → parentTaskId
  • Суб-агент: nts_init(parentTaskId=...) → изолированный undo/redo стек
  • Успех: nts_init(action='merge') → все правки = одна grouped undo запись
  • Неудача: nts_init(action='rollback') → все правки откатываются

CRC-токены предотвращают конфликты на одних участках файлов.




Семантический рефакторинг: 13 багфиксов

Все 10 операций на семантическом разрешении с SymbolHandle и ResolutionResult:

  • Rename: Авто-rename конструкторов, guard от unrelated параметров
  • Extract Variable: Изоляция выражений из statement-ов (var decl, return, if, throw)
  • Inline: Fallback поиск локальных переменных через AST
  • Delete: Scope по умолчанию project при handleReferences
  • Wrap: throw RuntimeException вместо printStackTrace при return
  • Generate: options.overwrite=true для перегенерации
  • Change Signature: AST-перезапись с disambiguацией перегрузок

Навигация

  • Авторазрешение class vs constructor — больше нет "Ambiguous" ошибок
  • Фильтрация символов: kind + brief=true для компактного вывода
  • Strict mode для безопасных автономных правок
  • Структурированный контракт разрешения

Контекстная память агента (nts_context)

  • HUD-заметки — всегда видимые напоминания в каждом ответе
  • Контекстные заметки — устойчивые находки для recovery после сжатия
  • Snapshot recovery — полная картина задачи одним вызовом
  • CRUD API и кросс-инструментальная интеграция через TIPs

Аудит схем

Полный аудит схем всех 21 инструмента. Ключевые исправления:

  • nts_edit_file — расширены sub-schemas operations[]/edits[]
  • nts_code_refactor — +6 параметров, исправлен enum, catchType→exceptionType
  • nts_init — параметр description для merge
  • ContextTool — убран фантомный nts_worker_finish
  • BatchToolsTool — $LAST после create, убраны несуществующие ссылки

Инфраструктура

  • PathSanitizer: защита от symlink, динамические roots
  • McpIntegrator: поддержка Codex CLI (TOML) и OpenCode
  • GradleTool/VerifyTool: структурированная диагностика ошибок
  • JsonUtils: shared ObjectMapper + NtsErrorCode
  • README: реструктуризация, Quick Start наверх, языки разделены




Статистика

  • 20 коммитов, 125 файлов изменено, +22 296 / -2 520 строк
  • 33 новых файла (production + тесты)
  • 21 MCP-инструмент (было 19): добавлены nts_java_memory, nts_context
  • 13 багфиксов в рефакторинге
  • Аудит схем всех 21 инструмента
Примечания к релизу — NTS MCP FileSystem Server




Новые возможности

Session → Task: Переименование концепции (Ломающее изменение API)

Весь API мигрирован с терминологии «сессия» на «задача» в 84 файлах:

БылоСтало
SessionContextTaskContext
SessionTransactionManagerTaskTransactionManager
SessionLineAccessTrackerTaskLineAccessTracker
SessionSearchTrackerTaskSearchTracker
SessionTool (пакет session)TaskTool (пакет task)
TaskTool (пакет system)ProcessTool (пакет system)
nts_sessionnts_task
sessionIdtaskId

Зачем: «Задача» точнее отражает изолированную единицу работы с собственной историей undo, чекпоинтами и реестром токенов.

Персистентность на H2 Database

Хранилище журнала транзакций мигрировано с JSON-файлов на встроенную H2 базу данных:

  • JournalDatabase — пул соединений и управление схемой
  • JournalRepository — CRUD-операции для записей журнала
  • Переживает перезапуски сервера с полной историей транзакций
  • Устраняет накладные расходы JSON-сериализации и риски повреждения файлов

SmartUndoEngine: In-Memory снапшоты

Движок отката мигрирован с файловых бэкапов (Map<Path,Path>) на in-memory byte[] снапшоты (Map<Path,byte[]>):

  • Быстрые операции undo/redo (без дискового I/O для снапшотов)
  • Меньше временных файлов
  • Отслеживание родословной файлов для восстановления после move/rename сохранено

Новый инструмент: nts_verify — Многоуровневая валидация

Инструмент верификации с тремя уровнями проверки корректности кода:

ДействиеОписание
syntaxБыстрая проверка AST через tree-sitter (без сборки)
compileЗапуск gradlew build -x test для проверки компиляции
testЗапуск gradlew test для полной проверки тестами

Работает на основе SyntaxChecker — парсинг AST через tree-sitter для мгновенной валидации синтаксиса.

Новый инструмент: nts_workspace_status — Восстановление контекста

Компактная сводка рабочего пространства для переориентации агента после сжатия контекста:

  • ID текущей задачи и статистика
  • Прогресс TODO (если активен)
  • Недавно изменённые файлы
  • Последние записи журнала (5 операций)
  • Предложение следующего действия

Новый инструмент: nts_process — Управление фоновыми процессами

Мониторинг и управление долгими фоновыми процессами:

ДействиеОписание
logПолучить вывод асинхронного процесса
killОстановить работающий процесс

Работает с асинхронными операциями nts_gradle_task и nts_git.

EditFileTool: Автоматическая проверка синтаксиса

После каждой правки инструмент автоматически запускает проверку синтаксиса через tree-sitter. Если обнаружены ошибки синтаксиса, ответ включает предупреждение с деталями — агент ловит ошибки мгновенно без отдельного шага верификации.

LineAccessTracker: Инвалидация токенов по CRC файла

Токены теперь отслеживают CRC файла (fileCrc) в дополнение к CRC диапазона:

  • registerAccess() требует обязательный параметр fileCrc
  • Внешние изменения файла инвалидируют токены, даже если изменённый диапазон не затронут
  • Per-symbol токены в CodeNavigateTool для точной инвалидации

EncodingUtils: ICU4J многоуровневая детекция

Определение кодировки мигрировано на ICU4J с многоуровневой стратегией:

  1. Детекция BOM (UTF-8/16/32)
  2. ICU4J CharsetDetector с оценкой уверенности
  3. Fallback на системную кодировку по умолчанию

Обработка нормализации CRLF, удаления Unicode BOM, сравнения текста с учётом кодировки.

Улучшения TodoTool

  • Новые действия: items и all_items для структурированных JSON-ответов
  • FOCUS hint — напоминает агенту о текущей активной задаче
  • Verify reminder — предлагает проверить после завершения правок
  • Role-aware подсказки — разные советы для разных ролей агентов

GradleTool: Инициализация проектов

  • Действие init — генерация Gradle wrapper для новых проектов
  • Fallback на системный Gradle при отсутствии wrapper
  • Улучшенные сообщения об ошибках с предложениями действий

TipFilter: Role-aware фильтрация

Умные контекстные подсказки теперь фильтруются на основе роли агента через ntsAllowedTools:

  • Workers видят подсказки по выполнению
  • Architects видят подсказки по планированию
  • Scouts видят подсказки по исследованию

Консистентность API

  • Метод isInternal() в McpTool — скрывает инструменты из внешнего tools/list
  • Параметр includeInternal в listTools — позволяет оркестратору видеть все инструменты
  • Метаданные ntsAllowedTools — ограничивает видимость инструментов по роли агента
  • Ленивое обновление Roots в PathSanitizer — повторная попытка при отказе в доступе
  • ObjectMapperJsonMapper.builder() в McpIntegrator

NtsErrorCode: Интерполяция плейсхолдеров

Сообщения об ошибках теперь поддерживают интерполяцию %placeholder%:

Код:
TOKEN_EXPIRED: "Token expired for %path%. File was modified externally."

Плейсхолдеры подставляются при создании ошибки с реальными значениями.

Улучшения поиска

  • Поиск с учётом BOM — корректная обработка файлов с byte order mark
  • Нормализация CRLF — единообразное совпадение вне зависимости от окончаний строк
  • Unicode Boyer-Moore-Horspool — оптимизация для многобайтовых символов
  • containsText с учётом кодировки — корректное совпадение независимо от кодировки файла

PathSanitizer: Ленивое обновление Roots

При отказе в доступе к пути sanitizer теперь обновляет roots и повторяет попытку — обрабатывает случаи, когда roots обновлены после старта сервера.

FileReadTool: Валидация директорий

executeRead и executeInfo теперь проверяют, что путь указывает на файл, а не директорию — предотвращает непонятные сообщения об ошибках.

BatchToolsTool: Исправление пути копирования

Исправлено разрешение path для действия copy в nts_file_manage — путь назначения теперь корректно подставляется при интерполяции переменных батча.




Обновления документации

README.md

Обе версии (EN и RU) обновлены:
  • Бейдж инструментов: 15 → 17
  • Имя сервера: NTS-FileSystemNTS-FileSystem-MCP во всех конфигурациях
  • Документированы новые инструменты: nts_verify, nts_workspace_status, nts_process
  • Операции рефакторинга: 6 → 10 (добавлены Extract Variable, Wrap, Move, Delete, Batch)
  • Интеграция клиентов: 7 клиентов (Gemini CLI, Claude Code, Qwen CLI, Cursor, LM Studio, Antigravity, Copilot VS Code)
  • Миграция терминологии Session → Task
  • Документация персистентности H2 Database
  • In-memory снапшоты для движка отката
  • Переменная окружения MCP_LOG_FILE для Docker
  • Диаграммы цикла дисциплины обновлены с Verify и Workspace Status




Ломающие изменения

Миграция API: Session → Task

ИзменениеВлияние
sessionIdtaskIdВсе вызовы nts_init должны использовать параметр taskId
nts_sessionnts_taskИмя инструмента изменено
SessionToolTaskToolПакет перемещён из session в task
TaskTool (старый) → ProcessToolПереименован во избежание коллизии

Миграция: Замените sessionId на taskId во всех клиентских конфигурациях и API-вызовах.

H2 Database заменяет JSON-журнал

  • Старые файлы journal.json не мигрируются автоматически
  • Новые задачи используют H2 хранилище автоматически
  • Существующие директории задач с journal.json начнут с чистого состояния журнала




Примечания по обновлению

  1. Обновите клиентские интеграции — используйте taskId вместо sessionId
  2. Имя сервера в MCP-конфигурациях теперь NTS-FileSystem-MCP
  3. Старые JSON-файлы журнала можно безопасно удалить после обновления
  4. Изменения в Docker-конфигурации не требуются




Статистика

МетрикаЗначение
Коммитов в релизе19
Файлов изменено89
Строк добавлено+7 148
Строк удалено-3 007
Нетто-изменение+4 141
NTS MCP Tools — Обновление



Новые возможности

Персистентность журнала транзакций

История undo/redo теперь сохраняется на диск в формате JSON. Данные не теряются при перезапусках сервера.

Код:
{
  "version": 1,
  "sessionId": "713a6834-c90a-4645-b441-f25f97a75457",
  "counters": { "totalEdits": 5, "totalUndos": 2 },
  "undoStack": [
    {
      "type": "TRANSACTION",
      "timestamp": "2026-01-15T19:09:25",
      "description": "Edit file: src/main/java/com/test/User.java",
      "instruction": "Добавление аннотации @Entity",
      "status": "COMMITTED",
      "snapshots": [{ "original": "src/main/java/com/test/User.java", "backup": "uuid.bak" }]
    }
  ],
  "redoStack": []
}

Ключевые улучшения:
  • Синхронное сохранение после каждого commit/undo/redo — исправляет гонку потоков при завершении JVM
  • Относительные пути для файлов — портируемость между машинами
  • Только имена снапшотов (uuid.bak) — директория сессии подразумевается



Автоматическая реактивация сессий

Сессии автоматически восстанавливаются с диска при перезапуске сервера. Больше не нужно заново настраивать рабочее окружение!

Реактивация через nts_init:
Код:
{ "sessionId": "ваш-предыдущий-uuid" }

Что восстанавливается:
  • Полная история undo/redo из journal.json
  • Ссылка на активный TODO-план
  • Метаданные сессии (время создания, последняя активность)

Примечание: Токены доступа к файлам начинаются с чистого листа — перечитайте файлы перед редактированием.



Расширенный TodoTool

Новые действия для полного цикла управления задачами:

ДействиеОписание
createСоздать план с заголовком и чек-листом
readПросмотр текущего плана (алиас: status)
updateОтметить задачу выполненной/проваленной или изменить текст
addДобавить новую задачу в текущий план
closeАрхивировать завершённый план (убирает из HUD)
listПоказать все планы (активные и архивные)
reopenРеактивировать архивный план

Новое редактирование текста задачи:
Код:
{ "action": "update", "id": 3, "text": "Обновлённое описание задачи" }



Предыдущий релиз

Улучшения LAT (Line Access Tracker)
  • Сложные случаи перекрытия диапазонов теперь обрабатываются корректно
  • Предотвращает ошибки сравнения CRC в краевых случаях

Smart Tips для инструментов
  • Контекстные подсказки для LLM-агентов
  • Рекомендации по оптимальному workflow
  • Предотвращение типичных ошибок



Исправления ошибок

Журнал не восстанавливается после реактивации (Критично)

Проблема: После перезапуска сервера nts_init(sessionId="...") возвращал пустые стеки undo/redo, хотя journal.json существовал на диске.

Причина: SessionContext.getOrCreate() не проверял диск на существование сессий. После перезапуска JVM in-memory карта sessions пуста, поэтому создавался новый пустой контекст.

Решение: getOrCreate() теперь вызывает existsOnDisk() и loadJournal() при наличии директории сессии.



Гонка асинхронного сохранения (Критично)

Проблема: journal.json иногда не создавался, несмотря на успешные правки.

Причина: saveJournalAsync() использовал Thread.startVirtualThread(), который не успевал завершиться до выхода JVM.

Решение: Все сохранения журнала и метаданных теперь синхронные.



Совместимость

Критических изменений нет. Все изменения обратно совместимы.

Действий по обновлению не требуется. Существующие сессии на диске будут автоматически реактивированы при обращении.
Основные изменения:

  • Доступен AST-инструментарий: открыт доступ к механизмам глубокого анализа кода с поддержкой 12 языков программирования: Java, Kotlin, JS/TS/TSX, Python, Go, Rust, C/C++, C#, PHP, HTML.
  • Интеграция рефакторинга с batch-операциями: инструмент nts_code_refactor теперь возвращает токены доступа для всех затронутых файлов, упрощая создание цепочек команд.
  • Новая операция change_signature: добавлена возможность изменять параметры методов (добавление, удаление, переименование, изменение типа) с обновлением мест вызова.
  • Алиасинг путей: токены доступа остаются валидными после перемещения или переименования файлов (автоматическое разрешение путей).
  • Исправления критических ошибок: устранены проблемы с CRC в batch-режиме, ошибки диапазонов при удалении строк и рассинхронизация кеша сессии.
  • Документация и тесты: обновлены инструкции для LLM, актуализирован README и добавлено покрытие тестами для новых функций.
Подробнее:
Назад
Сверху Снизу