AstroNvim AI 플러그인 실무 설정: avante·codecompanion·copilot 비교

AstroCommunity로 avante-nvim·codecompanion-nvim·chatgpt-nvim·copilot-nvim·codex-nvim·opencode-nvim을 설정하는 방법과 provider 연결, 선택 기준을 정리한다.

2026-08-12 · 최초 발행 2026-05-11

AstroCommunity로 AI 플러그인을 붙이는 기본 구조

AstroNvim은 Neovim 배포판 중에서도 AstroCommunity라는 커뮤니티 플러그인 마켓플레이스를 통해 다양한 AI 플러그인을 손쉽게 켤 수 있다는 점이 강점이다. GitHub Copilot부터 Claude 기반 avante.nvim, ChatGPT 연동, 최신 OpenCode AI까지 여러 방식을 하나의 배포판 안에서 골라 쓸 수 있다.

AstroCommunity는 lazy.nvim 스펙으로 패키징된 커뮤니티 플러그인 저장소이고, AI 관련 플러그인은 astrocommunity.ai 네임스페이스 아래 모여 있다. 현재 다음 여섯 개 플러그인이 포함되어 있다.

플러그인 저장소 주요 기능
avante-nvim yetone/avante.nvim Cursor AI IDE 방식, diff 기반 코드 편집
chatgpt-nvim jackMort/ChatGPT.nvim OpenAI ChatGPT 직접 연동
codecompanion-nvim olimorris/codecompanion.nvim 다중 LLM 어댑터, 채팅 버퍼
codex-nvim johnseth97/codex.nvim OpenAI Codex 팝업 인터페이스
copilot-nvim zbirenbaum/copilot.lua GitHub Copilot 자동완성 통합
opencode-nvim NickvanDyke/opencode.nvim OpenCode AI 에디터 통합

플러그인을 켜는 방법은 ~/.config/nvim/lua/community.lua에 import 구문을 추가하는 것 하나다.

-- community.lua
return {
  "AstroNvim/astrocommunity",
  { import = "astrocommunity.ai.avante-nvim" },
  { import = "astrocommunity.ai.codecompanion-nvim" },
  -- 필요한 플러그인만 선택
}

avante.nvim — Cursor 스타일 diff 편집

avante.nvim은 Cursor IDE의 인라인 AI 편집 방식을 Neovim에 옮긴 플러그인이다. 코드를 선택하고 키바인드를 누른 뒤 원하는 변경사항을 자연어로 설명하면 사이드바에 diff가 열리고, 수락할지 거절할지 명시적으로 고른다.

기본 활성화는 한 줄이면 된다.

-- community.lua
{ import = "astrocommunity.ai.avante-nvim" }

AstroCommunity가 설정하는 기본 키맵은 <Leader>A 프리픽스를 쓴다.

동작
<Leader>A<CR> AvanteAsk - AI에게 질문
<Leader>Ae AvanteEdit - 선택 영역 편집
<Leader>An 새 질문 시작
<Leader>Ar 응답 새로고침
<Leader>Af 사이드바 포커스

여러 AI 제공자를 붙이려면 ~/.config/nvim/lua/plugins/avante.lua를 만들어 오버라이드한다. 프로바이더별로 아래 환경변수가 필요하다.

  • Claude: export ANTHROPIC_API_KEY="sk-ant-..."
  • OpenAI: export OPENAI_API_KEY="sk-..."
  • GEMINI: export GEMINI_API_KEY="AIza..."
  • Moonshot: export MOONSHOT_API_KEY="sk-..."
-- ~/.config/nvim/lua/plugins/avante.lua
return {
  {
    "yetone/avante.nvim",
    event = "VeryLazy",
    version = false,
    opts = {
      -- 기본 프로바이더 전환: :AvanteSwitchProvider <name>
      -- copilot: gh auth login 필요
      -- claude:  ANTHROPIC_API_KEY 필요
      -- openai:  OPENAI_API_KEY 필요
      -- moonshot: MOONSHOT_API_KEY 필요
      provider = "copilot",
      mode = "agentic",

      providers = {
        -- GitHub Copilot (GitHub OAuth, gh auth login)
        copilot = {
          endpoint = "https://api.githubcopilot.com",
          model = "claude-sonnet-4.5",
          timeout = 30000,
          extra_request_body = {
            temperature = 0.5,
            max_tokens = 16384,
          },
        },

        -- Anthropic Claude (env: ANTHROPIC_API_KEY)
        claude = {
          endpoint = "https://api.anthropic.com",
          auth_type = "api", -- "api" = API key, "max" = Claude Pro/Max 구독
          model = "claude-sonnet-4-6",
          timeout = 30000,
          extra_request_body = {
            temperature = 0.5,
            max_tokens = 16384,
          },
        },

        -- OpenAI GPT (env: OPENAI_API_KEY)
        openai = {
          endpoint = "https://api.openai.com/v1",
          model = "gpt-4o",
          timeout = 30000,
          extra_request_body = {
            temperature = 0.5,
            max_tokens = 16384,
          },
        },

        -- Moonshot AI (env: MOONSHOT_API_KEY)
        moonshot = {
          __inherited_from = "openai",
          endpoint = "https://api.moonshot.ai/v1",
          api_key_name = "AVANTE_MOONSHOT_API_KEY",
          model = "kimi-k2.6",
          timeout = 30000,
          extra_request_body = {
            temperature = 1,
            max_tokens = 16384,
          },
        },
      },
    },
  },
}

기본 모드는 도구 호출로 자동 코드 생성을 수행하는 agentic이고, 구식 플래닝 방식인 legacy도 선택할 수 있다.

opts = {
  provider = "claude",
  mode = "agentic",  -- 도구 호출로 자동 코드 생성 (기본값)
  -- "legacy": 구식 플래닝 방식
}

codecompanion.nvim — Neovim 철학에 가장 충실한 채팅형 통합

codecompanion.nvim은 채팅 버퍼·인라인 어시스턴트·LSP 컨텍스트 통합을 제공하는 플러그인이다. 특히 @lsp 변수로 현재 진단 정보를 AI 컨텍스트에 자동으로 끌어올 수 있어 디버깅 워크플로우에 강점이 있다.

{ import = "astrocommunity.ai.codecompanion-nvim" }

기본 키맵(<Leader>A 프리픽스):

커맨드 설명
<Leader>Ac CodeCompanionChat toggle 채팅 창 토글
<Leader>Ap CodeCompanionActions 액션 팔레트
<Leader>Aq CodeCompanion (inline) 인라인 어시스턴트
<Leader>Aa 선택 영역 추가 (visual) 채팅에 코드 추가

어댑터(provider 연결) 설정 예시다.

-- plugins/codecompanion.lua
return {
  "olimorris/codecompanion.nvim",
  opts = {
    adapters = {
      -- Claude (Anthropic)
      anthropic = require("codecompanion.adapters").extend("anthropic", {
        schema = {
          model = { default = "claude-sonnet-4-5" },
        },
      }),
      -- OpenAI
      openai = require("codecompanion.adapters").extend("openai", {
        schema = {
          model = { default = "gpt-4.1" },
        },
      }),
      -- Ollama (로컬 LLM)
      ollama = require("codecompanion.adapters").extend("ollama", {
        schema = {
          model = { default = "llama3.2" },
          num_ctx = { default = 16384 },
        },
      }),
    },
    strategies = {
      chat = { adapter = "anthropic" },
      inline = { adapter = "anthropic" },
      cmd = { adapter = "anthropic" },
    },
  },
}

채팅 버퍼에서 @를 입력하면 다음 컨텍스트를 바로 주입할 수 있다.

@lsp       - 현재 LSP 진단 정보
@buffer    - 현재 버퍼 내용
@file      - 특정 파일 내용
@symbols   - 파일 심볼 목록

chatgpt.nvim — OpenAI API를 그대로 붙이는 방식

jackMort/ChatGPT.nvim은 OpenAI ChatGPT API를 Neovim에서 직접 쓰게 해주는 플러그인으로, 코드 편집·문서화·번역·테스트 생성 같은 프리셋 액션을 제공한다.

export OPENAI_API_KEY="sk-..."
# 커스텀 API 호스트 사용 시
export OPENAI_API_HOST="https://your-custom-host.com"
{ import = "astrocommunity.ai.chatgpt-nvim" }

기본 키맵(<Leader>G 프리픽스, normal + visual 모드):

기능
<Leader>Gc ChatGPT 열기
<Leader>GC 페르소나 모드 (Act As)
<Leader>Gm 코드 완성
<Leader>Ge 지시사항으로 편집
<Leader>Gg 문법 교정
<Leader>Gt 번역
<Leader>Gd Docstring 생성
<Leader>Ga 테스트 추가
<Leader>Go 코드 최적화
<Leader>Gx 코드 설명
-- plugins/chatgpt.lua
return {
  "jackMort/ChatGPT.nvim",
  opts = {
    api_key_cmd = "pass show openai/api-key",  -- 패스워드 매니저 연동
    openai_params = {
      model = "gpt-4.1",
      frequency_penalty = 0,
      presence_penalty = 0,
      max_tokens = 4096,
      temperature = 0.2,
    },
    openai_edit_params = {
      model = "gpt-4.1",
      temperature = 0,
    },
  },
}

copilot.lua — 자동완성 엔진에 Tab을 내주는 방식

zbirenbaum/copilot.lua는 공식 copilot.vim의 완전 대체 구현체로, AstroNvim의 blink.cmp 또는 nvim-cmp와 통합된다. Tab 키를 AI 자동완성과 표준 완성 엔진이 함께 쓰도록 자동 설정해준다. GitHub Copilot 구독(GitHub Pro 이상)이 있어야 한다.

{ import = "astrocommunity.ai.copilot-nvim" }

활성화 후 Neovim을 재시작하고 인증을 완료한다.

:Copilot auth

브라우저에서 인증 코드를 입력하면 끝난다.

AstroCommunity가 자동으로 설정하지만, 세부 조정이 필요하면 직접 오버라이드할 수 있다.

-- plugins/copilot.lua
return {
  "zbirenbaum/copilot.lua",
  opts = {
    suggestion = {
      enabled = true,
      auto_trigger = true,
      keymap = {
        accept = false,  -- blink.cmp가 Tab 처리
        next = "<M-]>",
        prev = "<M-[>",
      },
    },
    panel = { enabled = false },
    filetypes = {
      yaml = false,
      markdown = true,
      gitcommit = false,
      ["*"] = true,
    },
  },
}

AstroNvim 문서가 권장하는 vim.g.ai_accept 패턴으로 Tab 키를 통합할 수도 있다.

-- AI accept 함수를 통한 Tab 키 통합
opts = {
  options = {
    ["vim.g.ai_accept"] = function()
      if require("copilot.suggestion").is_visible() then
        require("copilot.suggestion").accept()
        return true
      end
    end,
  },
},

avante.nvim에서 GitHub Copilot을 provider로 쓰면 Copilot 구독 하나로 Claude·GPT-4.1·Gemini 모델에 모두 접근할 수 있다.

-- plugins/avante.lua
return {
  "yetone/avante.nvim",
  specs = {
    { import = "astrocommunity.ai.copilot-nvim" },  -- copilot 의존성
  },
  opts = {
    provider = "copilot",
  },
}

codex.nvim과 opencode.nvim — 가벼운 팝업형 대안

johnseth97/codex.nvim은 OpenAI Codex를 Neovim 팝업으로 띄우는 경량 플러그인으로, 빠른 코드 생성 쿼리에 적합하다.

{ import = "astrocommunity.ai.codex-nvim" }

기본 키맵은 <Leader>Oc(Codex 팝업 토글)이고, 내장 키맵을 끄고 AstroNvim이 직접 관리하도록 만들 수도 있다.

-- plugins/codex.lua
return {
  "johnseth97/codex.nvim",
  opts = {
    keymaps = {},  -- 내장 키맵 비활성화 (AstroNvim이 관리)
  },
  specs = {
    {
      "AstroNvim/astrocore",
      opts = {
        mappings = {
          n = {
            ["<Leader>Oc"] = {
              function() require("codex").toggle() end,
              desc = "Toggle Codex popup",
            },
          },
        },
      },
    },
  },
}

환경변수는 export OPENAI_API_KEY="sk-..." 하나만 있으면 된다.

NickvanDyke/opencode.nvim은 OpenCode AI 어시스턴트를 붙여 에디터 컨텍스트를 인식하는 연구·리뷰·요청 워크플로우를 지원한다. snacks.nvim을 UI 컴포넌트로 쓴다.

{ import = "astrocommunity.ai.opencode-nvim" }
모드 기능
<Leader>Ot Normal OpenCode 인터페이스 토글
<Leader>Oa Normal/Visual 현재 코드 컨텍스트로 질문
<Leader>O+ Normal/Visual 버퍼 내용을 프롬프트에 추가
<Leader>Oe Normal 코드 설명 요청
<Leader>On Normal 새 세션 시작
<Leader>Os Normal/Visual 프롬프트 템플릿 선택
<S-C-u> / <S-C-d> 터미널 메시지 히스토리 탐색

무엇을 먼저 켤지 정하는 기준

AI 플러그인 선택주요 사용 목적코드 리팩터링대규모 변경채팅형 디버깅LSP 연동인라인 자동완성제안 수락ChatGPT 직접 사용다양한 액션avante-nvim(Cursor 방식 diff)codecompanion-nvim(@lsp 컨텍스트)copilot-nvim(Tab 통합)chatgpt-nvim(OpenAI 특화)Claude / GPT-4.1 / Gemini선택 가능GitHub Copilot 구독필요OPENAI_API_KEY필요

단일 플러그인으로 시작한다면 codecompanion-nvim을 권한다. Neovim 철학에 가장 부합하고, 다중 LLM 어댑터로 Claude·GPT·Ollama 로컬 모델을 하나의 설정에서 관리할 수 있다. 대규모 리팩터링이 잦은 환경에서는 avante-nvim을 병행하는 편이 낫다. diff 기반 수락/거절 워크플로우가 코드 품질 관리에 유리하고, GitHub Copilot 구독자라면 provider = "copilot" 설정으로 추가 비용 없이 avante에서 Claude·GPT-4.1을 쓸 수 있다.

환경변수는 ~/.zshrc~/.bashrc에 모아두고, 보안이 중요한 환경에서는 api_key_cmd로 pass나 1Password CLI 같은 패스워드 매니저와 연동하는 것을 권한다.

AstroCommunity는 import 한 줄로 복잡한 설정을 감추면서도, 플러그인별 오버라이드 파일로 세밀한 제어를 열어둔다. avante-nvim은 Cursor 방식의 명시적 diff 편집에, codecompanion-nvim은 Neovim 네이티브 채팅 워크플로우에, copilot-nvim은 탭 기반 인라인 자동완성에 각각 맞는 도구다.

Sources

AstroNvimNeovimavante.nvimGitHubCopilotAI코딩도구