Коротко — да, можно, но «из коробки» PhpStorm/плагины обычно только встраивают окно чата. Чтобы добиться настоящего агентного поведения (агент наблюдает IDE, делает правки, запускает команды, реагирует на события), нужно либо написать мост/плагин, который предоставляет DeepSeek доступ к API IDE, либо заставить DeepSeek работать как сервер/CLI, с которым плагин общается и который принимает команды.
Ниже — варианты и практическая схема реализации.
Варианты интеграции
1) Полноценный плагин для PhpStorm (рекомендуемый)
- Плагин на базе IntelliJ Platform SDK (Kotlin/Java) подключается к DeepSeek через HTTP/WebSocket/API.
- Плагин регистрирует фоновые службы и слушатели событий (открытие/сохранение файла, курсор, тесты, run configurations).
- Когда DeepSeek «решает» выполнить действие, плагин применяет его через OpenAPI (WriteCommandAction для правок, ExecutionManager для запуска, ToolWindow/Notifications для вывода).
- Плюсы: полный контроль, агент может автоматически вносить изменения, запускать тесты, показывать превью правок.
- Минусы: требуется разработка плагина и работа с безопасностью/разрешениями.
2) Через LSP (если DeepSeek может выступать LSP-сервером)
- Если DeepSeek умеет говорить по LSP, можно использовать встроенную поддержку LSP (или плагин LSP) — тогда агент получит доступ к diagnostics, code actions, completions.
- Ограничение: LSP хорош для анализа/рефакторинга/предложений, но не для произвольных действий в IDE (запуск терминала, создание конфигураций и т.п.).
3) CLI/скрипт + лёгкий плагин-адаптер
- DeepSeek работает как CLI/daemon. Плагин передаёт контекст (файлы, выделение) и получает инструкции.
- Подходит, если DeepSeek уже умеет работать через командную строку или вебвебхук.
- Проще в реализации, чем полноценный агент-плагин, но может быть менее отзывчивым.
4) Быстрая прототипная интеграция через LivePlugin / IDE scripting
- Для быстрого прототипа можно использовать LivePlugin (Groovy/JavaScript) или встроенную IDE scripting console (Kotlin) — написать скрипт, который вызывает API DeepSeek и делает простые правки.
- Ограниченно, но быстро для проверки концепции.
Что именно нужно плагину, чтобы получить «агентное» поведение
- Долгоживущая сессия (WebSocket или долгий опрос) с DeepSeek.
- Слушатели IDE-событий (EditorFactoryListener, PsiTreeChangeListener, FileEditorManagerListener и т.д.).
- Механизм доверенных команд: все автоматические правки должны выполняться через WriteCommandAction.runWriteCommandAction(project) и быть отзывчивыми/отменяемыми.
- UI для подтверждения/отмены действий (preview, diff, soft-apply).
- Auth UI для ввода ключа DeepSeek, безопасность/шифрование.
- Логи/локальная история, откат (LocalHistory) — безопасность при автоправках.
Практические соображения
- Безопасность: плагин получает доступ к коду — владельцы репозитория должны знать про это. Публикуемый на Marketplace плагин должен явно запрашивать права и объяснять использование ключей.
- Скорость/контекст: передавать в DeepSeek минимально достаточный контекст (файлы, AST, выделение), не весь проект, чтобы снизить задержки и утечку данных.
- Пользовательский контроль: рекомендую режим «предложить + подтвердить» по умолчанию и «автоприменять» — по настройке.
- Тестирование: запускайте изменения в sandbox/ветке, автоматические тесты перед применением.
Минимальная архитектура плагина (шаги)
1. UI: окно/ToolWindow для авторизации и чата.
2. Сервис: фонова служба (ProjectService) с подключением к DeepSeek (WS/HTTP).
3. Слушатели: подхватывают события (файлы, выделение) и отправляют контекст.
4. Обработчик команд: переводит ответы агента в действия IDE (правка файлов, запуск тестов).
5. UX: показывать превью/лог, журнал действий, кнопку отката.
Пример-псевдокод (Kotlin, сильно упрощённый)
- Инициализация сервиса:
val service = project.getService(DeepSeekAgentService::class.java)
service.connect(apiKey)
- Применение правки, когда агент прислал инструкцию:
ApplicationManager.getApplication().invokeLater {
WriteCommandAction.runWriteCommandAction(project) {
val psiFile = PsiManager.getInstance(project).findFile(vFile)
psiFile?.let { modifyPsi(it, newContent) }
}
}
Готов помочь дальше
- Если у DeepSeek есть конкретный HTTP/WS API или CLI — пришлите спецификацию (или пример запроса/ответа), и я помогу набросать skeleton-плагин (Kotlin) для PhpStorm.
- Могу дать более конкретный пример кода для: а) фоновой службы и общения с WebSocket; б) применения изменений в файлах с превью; в) регистрации слушателей событий IDE.
Хотите, я подготовлю стартовый плагин-скелет (Kotlin) для PhpStorm, который: авторизуется в DeepSeek, слушает открытые файлы и умеет применять/показывать правки? Если да — укажите версию PhpStorm/IDEA и доступную форму API у DeepSeek (REST/WebSocket/CLI).