Continue-Plugin für Jetbrains-IDEs und VS Code


IntelliJ IDEA bietet über den hauseigenen „AI Assistant“ die Möglichkeit, KI-Unterstützung beim Programmieren zu nutzen. Hierbei ist jedoch trotz aller möglichen Einstellungen ein „Restrisiko“ gegeben, dass Daten den lokalen Rechner verlassen, und in der Cloud verarbeitet werden.

Diese Einschränkung hat den AI-Assistant in manchen Umgebungen als nicht einsetzbar disqualifiziert.

Nun gibt es aber mit dem Plugin „Continue“ eine einfache und komfortable Möglichkeit, ein beliebiges (evtl. auf Coding spezialisiertes) LLM für die Unterstützung zu nutzen. Das kann ein lokales oder auch im LAN oder in der Cloud liegendes LLM sein (oder auch mehrere).

Du kannst es über die Standard-Mechanismen von IntelliJ IDEA installieren. Wenn Du Deine IDE neu startest, wird ein Verzeichnis ~/.continue erstellt. Mit dem folgenden Skript kannst Du die Konfigurationsdatei für Continue erstellen:

bash -c "cat > ~/.continue/config.yaml" <<EOF
name: Local Assistant
version: 1.0.0
schema: v1
models: 
  - name: nomic-embed-text:v1.5
    provider: ollama
    apiBase: 'http://localhost:11434'
    model: nomic-embed-text:v1.5
    roles:
      - embed
  - name: dengcao/Qwen3-Reranker-8B:Q4_K_M
    provider: ollama
    apiBase: 'http://localhost:11434'
    model: dengcao/Qwen3-Reranker-8B:Q4_K_M
    roles:
      - rerank
  - name: OpenAI
    provider: openai
    apiKey: 12345abcde
    model: gpt-5.4
    roles:
      - chat
      - edit
      - apply
    chatOptions:
      baseSystemMessage: 'Reasoning: medium'
      baseAgentSystemMessage: 'Reasoning: high'
      basePlanSystemMessage: 'Reasoning: high' 
  - name: MistralAI
    provider: mistral
    apiKey: abcde12345
    model: mistral-large-2512
    roles:
      - chat
      - edit
      - apply
    chatOptions:
      baseSystemMessage: 'Reasoning: medium'
      baseAgentSystemMessage: 'Reasoning: high'
      basePlanSystemMessage: 'Reasoning: high'  
  - name: onza
    provider: openai
    apiKey: 1a2b3c4d5e
    apiBase: 'http://onza:1234/v1'
    model: onza
    roles:
      - chat
      - edit      
    chatOptions:
      baseSystemMessage: 'Reasoning: medium'
      baseAgentSystemMessage: 'Reasoning: high'
      basePlanSystemMessage: 'Reasoning: high'  
allowAnonymousTelemetry: false
context:
  - provider: code
  - provider: docs
  - provider: diff
  - provider: file
  - provider: currentFile
  - provider: codebase
    params:
      nFinal: 5
      useReranking: true
      nRetrieve: 25
  - provider: repo-map
    params:
      includeSignatures: true
rules:
- |-
  <role>
      You are a code generation assistant that helps users with software engineering tasks. This will include solving bugs, adding new functionality, refactoring code, explaining code, and more. Adhere to the instructions below to assist the user.
  </role>
  <instructions>
      - You should be concise, direct, and to the point. When you generate non-trivial code, you should explain what the code does and why you propose it. Do not add comments to the code you write, unless the user asks you to, or the code is complex and requires additional context.
      - You should NOT answer with unnecessary preamble or postamble (such as repeating the user request or summarizing your answer), unless the user asks you to.
      - When proposing code modifications, consider the available context (if provided by the user). Mimic code style, use existing libraries and utilities, and follow existing patterns. Propose changes in a way that is most idiomatic. Emphasize only the necessary changes and uses placeholders or "lazy" comments for unmodified sections.
      - Your responses can use Github-flavored markdown for formatting.
      - Always follow security best practices. Never introduce code that exposes or logs secrets and keys.
  </instructions>
prompts:
- name: test
  description: Write unit tests for the selected code
  prompt: |-
    Write a comprehensive set of unit tests for the selected code:
    - It should include setup, correctness checks including important edge cases, and teardown.
    - Ensure that the tests are thorough and rigorous.
    - Output only the tests as chat output; do not edit any file.
- name: comment
  description: Write comments for the selected code
  prompt: |-
    Write comments for the selected code:
    - Do not modify the code itself.
    - Use the conventional commenting style appropriate to the language (e.g., Javadoc for Java).
- name: explain
  description: Describe the following code in detail with respect to all methods and properties.
  prompt: |-
    Explain the marked part of the code in more detail.
    Specifically:
    - What is the purpose of this section?
    - How does it work step by step?
    - Are there any potential problems or limitations with this approach?
- name: translate
  description: Translate the selected text to English
  prompt: |-
    Translate the selected text to English
- name: review
  description: Review code
  prompt: |-
    You are an expert code reviewer. Please conduct a thorough review of this branch/diff focusing on the following areas:

    ## Performance Analysis

    - Identify potential performance bottlenecks or inefficiencies
    - Look for unnecessary loops, redundant operations, or expensive function calls
    - Check for proper use of data structures and algorithms
    - Analyze memory usage patterns and potential leaks
    - Review database queries for optimization opportunities

    ## Design Patterns & Architecture

    - Check for proper separation of concerns and modularity
    - Review naming conventions and code readability
    - Identify opportunities for refactoring or pattern improvements

    ## Error Handling & Edge Cases

    - Verify comprehensive error handling and graceful failure modes
    - Check for proper input validation and sanitization
    - Look for unhandled exceptions or error conditions
    - Assess logging and debugging capabilities
    - Review boundary conditions and edge case handling

    ## Bug Detection

    - Identify potential runtime errors, null pointer exceptions, or type mismatches
    - Look for race conditions, deadlocks, or concurrency issues
    - Check for off-by-one errors, infinite loops, or logic flaws
    - Verify proper resource management (file handles, connections, etc.)
    - Review state management and data consistency

    ## UI/UX & Accessibility (if applicable)

    - Verify semantic HTML structure and proper use of ARIA attributes
    - Ensure keyboard navigation works properly (tab order, focus indicators)
    - Validate screen reader compatibility and alt text for images
    - Review responsive design and mobile accessibility
    - Check for proper form labels and error messaging
    - Assess loading states, animations, and motion sensitivity considerations
    - Verify text scaling works up to 200% without loss of functionality
    - Review heading hierarchy and document structure

    ## Security & Best Practices

    - Check for security vulnerabilities (injection attacks, XSS, etc.)
    - Verify proper authentication and authorization
    - Review sensitive data handling and encryption
    - Assess compliance with coding standards and best practices

    ## Copywriting

    - If the change involves text that is user facing, the text should follow the copywriting guidelines in `.context/copywriting.md`

    ## Questions & Clarifications

    When you encounter changes that are unclear or potentially problematic:

    - Ask specific questions about the intent behind the change
    - Request clarification on business logic or requirements
    - Suggest alternative approaches when appropriate
    - Ask about testing strategies for complex changes

    ## Review Format

    For each issue found, please provide:

    1. **Location**: File name and line numbers
    2. **Severity**: Critical/High/Medium/Low
    3. **Category**: Performance/Design/Bug/Security/Style
    4. **Description**: Clear explanation of the issue
    5. **Recommendation**: Specific suggestions for improvement
    6. **Questions**: Any clarifying questions about the change

    Please be thorough but constructive in your feedback, focusing on actionable improvements that enhance code quality, maintainability, and performance.

Wie Du sehen kannst, verwende ich hier für chat, edit und apply ein Modell via OpenAI-API (über vllm gehostet), und für rerank und embed die kleinen Modelle lokal via Ollama.

Denke daran, die Continue-Zeilenvervollständigung unter Settings -> Tools -> Continue -> Enable Tab Autocomplete zu deaktivieren (die von Jetbrains ist besser!)

Mit diesem Skript kannst Du die entsprechenden Ollama-Modelle herunterladen:

ollama pull embeddinggemma:latest
ollama pull dengcao/Qwen3-Reranker-4B:Q4_K_M

Wenn das Plugin einmal nicht mehr antworten sollte, hilft es meistens, die config.yaml zu sichern, und das Verzeichnis ~/.continue zu löschen. Beim nächsten Start der IDE wird das Verzeichnis neu angelegt. IDE beenden, config.yaml zurückkopieren und IDE wieder starten.