avante-corp/avante.nvim

Use your Neovim like using Cursor AI IDE!

avante.nvim – Neovim 내 AI 기반 코드 보조

무엇인가요

  • Cursor AI IDE의 경험을 직접 에디터에 가져오는 Neovim 플러그인입니다. LLM과 대화하고, 코드 개선을 요청한 후 단일 명령어로 제안된 변경사항을 적용할 수 있습니다.

작동 방식

  • Anthropic의 Claude, OpenAI, Gemini, Moonshot 등 하나 이상의 LLM 제공자와 통신합니다. 제공자, 모델, 엔드포인트 및 요청 파라미터는 setup() 호출에서 구성할 수 있습니다.
  • 채팅 창 을 열면 현재 버퍼(또는 선택된 영역)와 함께 리포지토리 루트에 위치한 avante.md 파일에 정의된 프로젝트 전용 지침이 함께 전송됩니다. 모델은 코드 블록을 반환하며, Avante는 이를 다음과 같이 처리할 수 있습니다:
    1. Neovim 내에서 마크다운으로 표시하고,
    2. 파일에 자동으로 적용(차이 기반, 변경되지 않은 줄을 최소화하는 옵션 있음).
  • 특수한 Zen 모드 는 Avante를 독립형 CLI(avante)로 실행할 수 있게 하며, 여전히 백그라운드에서 Neovim의 전체 기능을 사용합니다.

주요 기능

  • AI 기반 코드 보조 – 편집 중인 파일에 대해 질문하고 구체적인 제안을 받을 수 있습니다.
  • 한 번의 클릭 적용 – 제안을 수락하고 Avante가 버퍼를 자동으로 재작성합니다.
  • 프로젝트 전용 지침 파일 (avante.md) – AI의 성격, 미션, 스택, 코딩 표준 등을 정의하여 모델이 코드베이스에 맞는 조언을 제공할 수 있도록 합니다.
  • 다중 제공자 및 듀얼 부스트 모드 – 여러 백엔드를 구성할 수 있으며, 실험적 모드에서는 두 제공자에게 요청하고 출력을 결합할 수 있습니다.
  • 자동 제안(선택 사항) – 입력 중 백그라운드에서 제안을 자동 요청할 수 있습니다.
  • ACP(AI-Code-Planner) 지원 – 도구가 파일을 자동으로 편집하고, 위치를 따라가며, 권한을 승인할 수 있습니다.
  • 프롬프트 로깅 – 모든 요청/응답을 디스크에 저장하여 재생 또는 디버깅에 사용할 수 있습니다.
  • 확장 가능한 UIAvante 파일 유형을 인식하는 모든 마크다운 렌더러와 호환되며, 선택적 UI 헬퍼(snacks.nvim, nui.nvim, render-markdown.nvim 등)도 지원됩니다.

설치 방법

  • 추천은 lazy.nvim (또는 다른 플러그인 매니저). make 단계에서 작은 Rust 바이너리를 빌드(또는 사전 빌드된 버전 다운로드). README의 예시 lazy.nvim 스크립트:
    {
      "yetone/avante.nvim",
      build = vim.fn.has("win32") ~= 0 and "powershell -ExecutionPolicy Bypass -File Build.ps1 -BuildFromSource false" or "make",
      event = "VeryLazy",
      version = false,
      opts = {
        instructions_file = "avante.md",
        provider = "claude",
        providers = {
          claude = {
            endpoint = "https://api.anthropic.com",
            model = "claude-sonnet-4-20250514",
            timeout = 30000,
            extra_request_body = { temperature = 0.75, max_tokens = 20480 },
          },
        },
      },
      dependencies = { "nvim-lua/plenary.nvim", "MunifTanjim/nui.nvim", ... },
    }
    
  • 다른 매니저(Pack, rocks.nvim, vim-plug, mini.deps, Home Manager, Nixvim)도 문서화되어 있습니다.

기본 사용법

  1. require('avante').setup{ … } – 선택적으로 설정을 전달합니다.
  2. :Avante (또는 mappings.suggestion에서 정의된 키맵)로 채팅을 엽니다.
  3. 질문이나 요청을 입력합니다 (예: "이 함수를 async/await로 리팩터링해 주세요"). Avante는 모델의 응답을 스트리밍합니다.
  4. <M-l>(기본값)으로 제안을 수락하거나 <C-]>로 거부합니다.
  5. 변경사항은 차이로 적용되며, ]x / [x로 차이를 탐색할 수 있습니다.
  6. Zen 모드를 활성화하려면 ./contrib/avante에서 헬퍼 스크립트를 설치하고 터미널에서 avante를 실행합니다. Neovim을 렌더링에 사용하는 CLI를 얻게 됩니다.

사용자 정의 포인트

  • 제공자 구성 – 지원되는 모델 중 하나를 선택하고, 온도, 최대 토큰 수, 타임아웃 등을 설정할 수 있습니다.
  • 행동 플래그 – 자동 제안, 자동 차이 적용, 토큰 수 계산, 자동 파일 추가 등을 전환할 수 있습니다.
  • 키 매핑 – 주요 작업(수락, 다음/이전 제안, 차이 탐색, 제출, 취소)은 모두 재정의 가능합니다.
  • 프롬프트 로거 – 활성화/비활성화, 로그 디렉터리 변경, 이전/다음 로그 탐색 키 바인딩 설정.
  • 듀얼 부스트 – 두 제공자의 출력을 결합하는 실험적 모드.

에코시스템 및 종속성

  • 핵심 Lua 코드(plenary.nvim, nui.nvim).
  • 선택적 UI 헬퍼: render-markdown.nvim, nvim-cmp, img-clip.nvim, copilot.lua, snacks.nvim, mini.pick, telescope.nvim, fzf-lua.
  • 작은 Rust 바이너리(Cargo로 빌드)가 LLM API와의 통신을 담당합니다.

성숙도

  • 활발히 유지 관리 중 (Lua 및 Rust 테스트용 CI 배지, README에 빠른 반복 기록).
  • Neovim 0.11+ 필요 (전체 기능은 0.12+ 권장).
  • 일부 기능은 실험적 (자동 제안, 듀얼 부스트, ACP 자동 승인).

누구에게 도움이 되나요

  • 대부분의 시간을 Neovim에서 보내며, 에디터를 떠나지 않고도 인라인 AI 보조를 원하는 개발자.
  • avante.md를 통해 LLM이 프로젝트 전용 코딩 가이드라인을 강제하고 싶은 팀.
  • Cursor AI IDE 경험을 좋아하지만, 완전히 오픈소스이고 자체 호스팅 가능한 워크플로우를 선호하는 사용자.

위 정보는 리포지토리의 README에서 직접 가져왔습니다.

이 프로젝트를 다룬 글

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트