feat(plugin): команда /kompas:doctor
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
---
|
||||
description: Диагностика установки плагина КОМПАС-3D: версия сервера, кеш, соединение с КОМПАС
|
||||
---
|
||||
|
||||
Проверь установку плагина `kompas` по шагам и дай отчёт на русском. На каждый неуспешный пункт
|
||||
назови конкретное действие, которое пользователь может сделать сам (без доступа к исходникам
|
||||
проекта). Не переходи к следующему пункту, если текущий выявил фатальную проблему — сразу
|
||||
переходи к отчёту с найденной причиной.
|
||||
|
||||
1. **Ожидаемая версия.** Прочитай `${CLAUDE_PLUGIN_ROOT}/server.lock.json` — поле `version`.
|
||||
Если `version` равна `0.0.0`, релиз сервера ещё не публиковался: единственный рабочий вариант —
|
||||
собрать сервер локально (`dotnet build -c Release` в проекте `kompas3d-mcp`) и указать путь к
|
||||
`kompas-mcp.exe` в переменной окружения `KOMPAS_MCP_EXE`. Дальше по этому пункту нечего
|
||||
проверять — переходи к пункту 2.
|
||||
|
||||
2. **Локальная сборка вместо релиза.** Проверь переменную окружения `KOMPAS_MCP_EXE`
|
||||
(в PowerShell: `$env:KOMPAS_MCP_EXE`). Если она задана — это режим разработки: используется
|
||||
указанный в ней бинарь, а не установка из `server.lock.json`. Проверь, что файл по этому пути
|
||||
существует. Не существует — попроси пользователя пересобрать проект или поправить переменную.
|
||||
Если `KOMPAS_MCP_EXE` задана и файл на месте, пункты 3–4 (кеш релиза) пропусти — они к этому
|
||||
режиму не относятся, сразу переходи к пункту 5.
|
||||
|
||||
3. **Кеш установленного сервера.** Если `KOMPAS_MCP_EXE` не задана, сервер разворачивается в
|
||||
`%LOCALAPPDATA%\kompas-mcp\<version>` (`<version>` — значение из `server.lock.json`). Проверь
|
||||
там файл `install.json` и сверь его поля `version`/`sha256` со значениями `version`/`sha256`
|
||||
из `server.lock.json`.
|
||||
- Файла `install.json` нет или его не удаётся прочитать — установка ещё не выполнялась или
|
||||
повреждена: следующий запуск сервера (например, через любой инструмент `kompas_*`) должен
|
||||
скачать и распаковать её заново. Если и это не помогает — удали каталог
|
||||
`%LOCALAPPDATA%\kompas-mcp\<version>` целиком и повтори запуск.
|
||||
- Поля не совпадают с локом — установка устарела или повреждена: удали каталог
|
||||
`%LOCALAPPDATA%\kompas-mcp\<version>` и дай серверу переустановиться при следующем запуске.
|
||||
|
||||
4. **Бинарь на месте и версия совпадает.** Проверь, что `kompas-mcp.exe` лежит рядом с
|
||||
`install.json` в том же каталоге, и его версия (флаг `--version`) совпадает с версией из
|
||||
`server.lock.json`. Расхождение или ошибка запуска — тот же диагноз, что и в пункте 3: удали
|
||||
каталог версии и дай серверу переустановиться.
|
||||
|
||||
5. **КОМПАС-3D запущен или доступен для запуска.** Сервер подключается к КОМПАС лениво — не при
|
||||
старте MCP-сервера, а при первом вызове инструмента. Убедись, что КОМПАС-3D установлен на этой
|
||||
машине. Если он уже запущен, сервер присоединится к нему; если нет — попробует запустить новый
|
||||
экземпляр сам. Если КОМПАС не установлен вовсе — это и есть причина сбоя: попроси пользователя
|
||||
установить КОМПАС-3D.
|
||||
|
||||
6. **Проверка соединения инструментами MCP.** Вызови инструмент `kompas_connect` — он либо
|
||||
присоединится к уже запущенному КОМПАС, либо запустит новый и покажет окно, и вернёт версию и
|
||||
редакцию. Если вызов упал с ошибкой — приложи её текст к отчёту дословно (обычно это означает,
|
||||
что КОМПАС не установлен, лицензия не активирована, или предыдущий процесс КОМПАС завис —
|
||||
попроси пользователя проверить лицензию и вручную закрыть зависшие процессы КОМПАС через
|
||||
Диспетчер задач). Затем вызови `kompas_status`, чтобы явно зафиксировать итоговое состояние
|
||||
подключения в отчёте — учти, что сам по себе `kompas_status` не пытается подключиться, а
|
||||
только читает текущее состояние сессии, поэтому он осмыслен только после `kompas_connect`.
|
||||
|
||||
7. **Итог.** Собери отчёт: ожидаемая версия сервера, источник бинаря (релизный кеш или
|
||||
`KOMPAS_MCP_EXE`), путь до него, результат `kompas_connect`/`kompas_status`, и — если что-то не
|
||||
сошлось — какое из действий выше нужно предпринять пользователю.
|
||||
@@ -80,4 +80,17 @@ public sealed class PluginManifestTests
|
||||
var serverLock = Read("server.lock.json");
|
||||
Assert.True(IsReleasedLockValid(serverLock));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Doctor_command_exists_and_checks_connection()
|
||||
{
|
||||
var path = Path.Combine(PluginRoot, "commands", "doctor.md");
|
||||
Assert.True(File.Exists(path), $"нет файла {path}");
|
||||
|
||||
var text = File.ReadAllText(path);
|
||||
Assert.StartsWith("---", text, StringComparison.Ordinal);
|
||||
Assert.Contains("description:", text, StringComparison.Ordinal);
|
||||
Assert.Contains("server.lock.json", text, StringComparison.Ordinal);
|
||||
Assert.Contains("kompas_status", text, StringComparison.Ordinal);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user