Может кому пригодится, на просторах интернета не нашел, как запустить модель deepseek в idea, потому сам вместе с deepseek допиливал конфиг и обучал модель работе через инструменты плагина. Ну и попутно решил проблему с зависаниями, плагин очень любил зависнуть, приходилось ide перезапускать.
Сразу оговорюсь, решение не элегантно, я не убирал лишний код, строки и текст, я просто добился рабочего состояния и более ничего не тестировал и не трогал. Годами работы приучен "работает - не трож". Потому решение as is выкладываю. Можете сами эксперименты проводить и допиливать, мне был просто нужен рабочий инструмент, на тюнинг не осталось желания, накрыла лень и я продолжил заниматься изначальным своим проектом =)
Шаги:
1) VPN включаем
2) в настройках плагинов в idea добавляем репозиторий https://plugins.jetbrains.com/plugins/eap/list
Обновляем Continue до версии EAP
3) VPN выключаем
4) Создаем конфиг в плагине Continue:
name: Optimized Continue Config
version: 1.0.0
schema: v1
models:
- name: DeepSeek Coder
provider: openai
model: deepseek-coder
apiKey: ВАШ API-KEY
apiBase: https://api.deepseek.com/beta
roles: [chat, edit, apply]
defaultCompletionOptions:
temperature: 0.1
maxTokens: 3072
stream: true
requestOptions:
timeout: 30000
verifySsl: true
# Критические настройки производительности
tabAutocompleteModel: null
disableIndexing: false
maxIndexingTokens: 250000
indexDebounceMs: 2000
# Правильный контекст (без дублирования)
context:
- provider: file
params:
maxTokens: 1500
numFiles: 8
useGitIgnore: true
autoDetectPaths: true
suggestPaths: true
- provider: code
params:
maxTokens: 800
useGitIgnore: true
- provider: diff
params:
maxTokens: 800
- provider: terminal # Добавляем терминал для доступа
params:
maxTokens: 500
- provider: http
name: Web Search
params:
maxTokens: 600
timeout: 5000
# Системные настройки
systemMessage: |
You are an expert programming assistant with access to files and project context.
Provide accurate, concise solutions with working code.
When editing files, show minimal diffs and explain changes.
For large files, break changes into smaller parts if needed.
С настройками производительности можно поиграться, я на минимум все гнал, потому что у меня MacBook Air Early 2015 8 Гб и i5 1,6 Ghz, не пробовал на компе запускать, мне удобно на маке
Далее, в чат модели скормите дословно эту инструкцию (или обрежьте, оставив важную информацию) и ваш агент в idea готов работать с вашим проектом из плагина. Вот инструкция для модели:
Вот тебе инструкция, как работать через плагин с проектом, а не через консоль. Изучи. Это из самого плагина описание и команды:
Настройки плагина - tools - Built-in tools
read_file
Description: Use this tool if you need to view the contents of an existing file.
Arguments: filepath(string):The path of the file to read. Can be a relative path (from workspace root), absolute path, tilde path (~/...), or file:// URI
create_new_file
Description: Create a new file. Only use this when a file doesn't exist and should be created
Arguments: filepath(string):The path where the new file should be created. Can be a relative path (from workspace root), absolute path, tilde path (~/...), or file:// URI.
contents(string):The contents to write to the new file
run_terminal_command
Description: Run a terminal command in the current directory. The shell is not stateful and will not remember any previous commands. When a command is run in the background ALWAYS suggest using shell commands to stop it; NEVER suggest using Ctrl+C. When suggesting subsequent shell commands ALWAYS format them in shell command blocks. Do NOT perform actions requiring special/admin privileges. IMPORTANT: To edit files, use Edit/MultiEdit tools instead of bash commands (sed, awk, etc). Choose terminal commands and scripts optimized for darwin and x64 and shell /bin/zsh.
Arguments: command(string):The command to run. This will be passed directly into the IDE shell.
waitForCompletion(boolean):Whether to wait for the command to complete before returning. Default is true. Set to false to run the command in the background. Set to true to run the command in the foreground and wait to collect the output.
file_glob_searchDescription: Search for files recursively in the project using glob patterns. Supports ** for recursive directory search. Will not show many build, cache, secrets dirs/files (can use ls tool instead). Output may be truncated; use targeted patterns
Arguments: pattern(string):Glob pattern for file path matching
view_diffDescription: View the current diff of working changes
read_currently_open_fileDescription: Read the currently open file in the IDE. If the user seems to be referring to a file that you can't see, or is requesting an action on content that seems missing, try using this tool.
ls
Description: List files and folders in a given directory
Arguments: dirPath(string):The directory path. Can be relative to project root, absolute path, tilde path (~/...), or file:// URI. Use forward slash paths
recursive(boolean):If true, lists files and folders recursively. To prevent unexpected large results, use this sparingly
create_rule_block
Description: Creates a "rule" that can be referenced in future conversations. This should be used whenever you want to establish code standards / preferences that should be applied consistently, or when you want to avoid making a mistake again. To modify existing rules, use the edit tool instead. Rule Types: - Always: Include only "rule" (always included in model context) - Auto Attached: Include "rule", "globs", and/or "regex" (included when files match patterns) - Agent Requested: Include "rule" and "description" (AI decides when to apply based on description) - Manual: Include only "rule" (only included when explicitly mentioned using @ruleName)Arguments:
name(string):Short, descriptive name summarizing the rule's purpose (e.g. 'React Standards', 'Type Hints')
rule(string):Clear, imperative instruction for future code generation (e.g. 'Use named exports', 'Add Python type hints'). Each rule should focus on one specific standard.
description(string):Description of when this rule should be applied. Required for Agent Requested rules (AI decides when to apply). Optional for other types.
globs(string):Optional file patterns to which this rule applies (e.g. ['**/*.{ts,tsx}'] or ['src/**/*.ts', 'tests/**/*.ts'])
regex(string):Optional regex patterns to match against file content. Rule applies only to files whose content matches the pattern (e.g. 'useEffect' for React hooks or '\bclass\b' for class definitions)
alwaysApply(boolean):Whether this rule should always be applied. Set to false for Agent Requested and Manual rules. Omit or set to true for Always and Auto Attached rules.
fetch_url_content
Description: Can be used to view the contents of a website using a URL. Do NOT use this for files.
Arguments: url(string):The URL to read
request_ruleDescription:Use this tool to retrieve additional 'rules' that contain more context/instructions based on their descriptions. Available rules: No rules available.
Arguments: name(string):Name of the rule
edit_existing_file
Description: Use this tool to edit an existing file. If you don't know the contents of the file, read it first. When addressing code modification requests, present a concise code snippet that emphasizes only the necessary changes and uses abbreviated placeholders for unmodified sections. For example: ``
language /path/to/file // ... existing code ... {{ modified code here }} // ... existing code ... {{ another modification }} // ... rest of code ...`In existing files, you should always restate the function or class that the snippet belongs to:`language /path/to/file // ... existing code ... function exampleFunction() { // ... existing code ... {{ modified code here }} // ... rest of function ... } // ... rest of code ...`` Since users have access to their complete file, they prefer reading only the relevant modifications. It's perfectly acceptable to omit unmodified portions at the beginning, middle, or end of files using these "lazy" comments. Only provide the complete file when explicitly requested. Include a concise explanation of changes unless the user specifically asks for code only. This tool CANNOT be called in parallel with other tools.Arguments:filepath(string):The path of the file to edit, relative to the root of the workspace.
changes(string):Any modifications to the file, showing only needed changes. Do NOT wrap this in a codeblock or write anything besides the code changes. In larger files, use brief language-appropriate placeholders for large unmodified sections, e.g. '// ... existing code ...'
single_find_and_replaceDescription: Performs exact string replacements in a file. IMPORTANT: - ALWAYS use the
read_filetool just before making edits, to understand the file's up-to-date contents and context. The user can also edit the file while you are working with it. - This tool CANNOT be called in parallel with other tools. - When editing text fromread_filetool output, ensure you preserve exact whitespace/indentation. - Only use emojis if the user explicitly requests it. Avoid adding emojis to files unless asked. - Usereplace_allfor replacing and renaming strings across the file. This parameter is useful if you want to rename a variable, for instance. WARNINGS: - When not usingreplace_all, the edit will FAIL ifold_stringis not unique in the file. Either provide a larger string with more surrounding context to make it unique or usereplace_allto change every instance ofold_string. - The edit will likely fail if you have not recently used theread_filetool to view up-to-date file contents.Arguments:
filepath(string):The path to the file to modify, relative to the root of the workspace
old_string(string):The text to replace - must be exact including whitespace/indentation
new_string(string):The text to replace it with (MUST be different from old_string)
replace_all(boolean):Replace all occurrences of old_string (default false)
grep_search
Description: Performs a regular expression (regex) search over the repository using ripgrep. Will not include results for many build, cache, secrets dirs/files. Output may be truncated, so use targeted queriesArguments:
query(string):The regex pattern to search for within file contents. Use regex with alternation (e.g., 'word1|word2|word3') or character classes to find multiple potential words in a single search.
А это - мы с тобой лично проверили в диалоге в текущем плагине continue, после ты написал инструкция себе, как работать через плагин:
ИНСТРУКЦИЯ ДЛЯ РАБОТЫ С ФАЙЛАМИ ЧЕРЕЗ PLUGIN CONTINUE
? ОСНОВНЫЕ ПРИНЦИПЫ
1. Как работает плагин в этой версии:
У AI есть доступ к инструментам для работы с файловой системой
Инструменты работают с относительными путями от корня проекта
Кнопка "Apply" в интерфейсе часто не работает для создания новых файлов
Команды через / (слэш) могут не работать
2. Доступные инструменты:
create_new_file - создание новых файлов
edit_existing_file - редактирование существующих файлов
read_file - чтение содержимого файлов
single_find_and_replace - замена текста в файлах
ls - просмотр структуры директорий
run_terminal_command - выполнение команд в терминале
? ПРАВИЛЬНЫЙ СПОСОБ РАБОТЫ
ДЛЯ СОЗДАНИЯ НОВЫХ ФАЙЛОВ:
НЕПРАВИЛЬНО:
Предлагать код с комментариями пути
Ожидать, что кнопка "Apply" создаст файл
ПРАВИЛЬНО: Использовать инструмент create_new_file:
create_new_file
filepath: "относительный/путь/к/файлу.java"
contents: "package com.example;\n\npublic class MyClass {\n // содержимое\n}"
Пример создания Java-файла:
create_new_file
filepath: "src/main/java/com/example/MyService.java"
contents: "package com.example;\n\nimport org.springframework.stereotype.Service;\n\n@Service\npublic class MyService {\n public String hello() {\n return \"Hello\";\n }\n}"
ДЛЯ РЕДАКТИРОВАНИЯ ФАЙЛОВ:
НЕПРАВИЛЬНО:
Предлагать полный файл заново
Использовать "Apply" для больших изменений
ПРАВИЛЬНО: Использовать инструмент edit_existing_file:
edit_existing_file
filepath: "путь/к/файлу.java"
changes: "// ... существующий код ...\nновый код\n// ... остальной код ..."
Пример редактирования:
edit_existing_file
filepath: "src/main/java/com/example/ExistingClass.java"
changes: "// ... существующий код ...\npublic void newMethod() {\n System.out.println(\"Новый метод\");\n}\n// ... остальной код ..."
ДЛЯ ЧТЕНИЯ ФАЙЛОВ:
ПРАВИЛЬНО: Использовать инструмент read_file:
read_file
filepath: "путь/к/файлу.java"
? РАБОТА С ПРОЕКТОМ
1. Анализ структуры проекта:
ls
dirPath: "src/main/java"
recursive: false
2. Поиск файлов:
file_glob_search
pattern: "**/*.java"
3. Проверка изменений:
view_diff
? ПРАКТИЧЕСКИЕ СОВЕТЫ
1. Всегда проверяй существование файла перед редактированием:
Сначала read_file чтобы увидеть текущее содержимое
Потом edit_existing_file для внесения изменений
2. Используй относительные пути:
От корня проекта: src/main/java/com/example/File.java
Не используй абсолютные пути
3. Для сложных операций:
Разбивай на несколько шагов
Сначала создай файл, потом отредактируй
Проверяй результат после каждого шага
4. Если нужно выполнить системную команду:
run_terminal_command
command: "команда для выполнения"
waitForCompletion: true
? ЧАСТЫЕ ОШИБКИ И РЕШЕНИЯ
Ошибка: "Could not resolve filepath to apply changes"
Причина: Плагин не может определить путь из предложенного кода Решение: Используй инструменты вместо кнопки "Apply"
Ошибка: Файл не создается
Причина: Неправильный формат пути Решение: Используй относительные пути от корня проекта
Ошибка: Изменения не применяются
Причина: Файл был изменен параллельно Решение: Перечитай файл перед редактированием
? ПРИМЕР РАБОЧЕГО ПРОЦЕССА
Анализ проекта:
ls для просмотра структуры
read_file для изучения ключевых файлов
Создание нового компонента:
create_new_file для создания класса
edit_existing_file для добавления зависимостей
Рефакторинг:
read_file для анализа текущего кода
single_find_and_replace для переименования
edit_existing_file для улучшения кода
Тестирование:
run_terminal_command для запуска тестов
view_diff для проверки изменений
? КЛЮЧЕВЫЕ ПРАВИЛА
Всегда используй инструменты вместо кнопки "Apply" для файловых операций
Проверяй пути - они должны быть относительными от корня проекта
Читай перед редактированием - чтобы понимать текущее состояние
Разбивай сложные задачи на простые шаги
Используй терминал для системных операций, а не для работы с файлами проекта
Если появится ошибка от плагина о нехватке токенов для обработки файла - отредактируй конфиг, увеличь лимиты на операции с файлами вдвое, конфиги лежат тут: /путь_до проекта/.continue/agents/*.yaml
Эта инструкция поможет правильно работать с файлами через плагин Continue, создавать новые файлы, редактировать существующие и анализировать структуру проекта.
Теперь используй правильные инструменты и давай продолжать нашу задачу по проекту
Пользуйтесь на здоровье.
oldzoomer
У меня RTX 5060, и я не понимаю тех, кто заводит себе DeepSeek... gpt-oss-20b и Qwen3-Coder 30B-A3B намного лучше работает.
И да - насчёт постоянного заскока на корень ОС - это баг в Continue, и 2 дня назад прилетел на их гитхаб PR с фиксом для этого.
Если использовать нормальные модели (не DeepSeek), то достаточно будет просто короткого промпта о том, чтобы юзал тулзы, а не терминал в первую очередь.