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> |
터미널 | 메시지 히스토리 탐색 |
무엇을 먼저 켤지 정하는 기준
단일 플러그인으로 시작한다면 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은 탭 기반 인라인 자동완성에 각각 맞는 도구다.