sudo-tee/opencode.nvim

neovim frontend for opencode - a terminal-based AI coding agent

🤖 opencode.nvim – Opencode AI 코드 보조 도구용 Neovim 프론트엔드

무엇인가요

  • opencode CLI(터미널 기반 AI 코드 보조 도구)와 통신하는 Neovim 플러그인입니다. 에디터 내부에 채팅 스타일의 UI를 열어 현재 파일, 선택 영역, 진단 정보 등을 자동으로 AI에 전달하여, Neovim을 벗어나지 않고도 코드 제안, 편집, 또는 전체 파일 생성을 요청할 수 있습니다.

주요 기능

기능 얻을 수 있는 기능
채팅 패널 지속적인 대화 창으로 대화 기록을 표시하고, 에디터에 코드에 집중하면서 프롬프트를 제출할 수 있습니다.
빠른 버퍼 채팅 (<leader>o/) 시각 모드에서는 선택된 텍스트가 컨텍스트가 됩니다. 일반 모드에서는 현재 줄이 사용됩니다. AI의 응답은 버퍼에 직접 적용됩니다.
세션 관리 세션은 워크스페이스와 연결되며 디스크에 저장됩니다 ($XDG_DATA_HOME/opencode/snapshot/...). 키맵을 통해 세션을 전환, 이름 변경, 포크, 또는 되돌릴 수 있습니다.
컨텍스트 자동 수집 현재 파일, 선택된 텍스트, 진단 정보, 커서 주변, Git 차이점 등을 선택적으로 자동 포함할 수 있습니다.
모델/공급자 전환 한 번의 클릭으로 기반 LLM 모델이나 공급자(예: OpenAI, Anthropic)를 변경하고 모델 버전을 선택할 수 있습니다.
차이점 및 복원 도구 마지막 프롬프트 이후의 변경 사항을 차이점으로 확인하고, 개별 파일이나 전체 세션을 되돌리거나 스냅샷을 복원할 수 있습니다.
풍부한 UI 스플릿 위치(오른쪽/왼쪽/현재)를 구성 가능, Treesitter를 통한 마크다운 렌더링, 비용 및 토큰 카운터, 선택적 아이콘(NerdFonts 또는 일반 텍스트) 제공.
확장 가능한 후크 on_file_edited, on_session_loaded 등의 콜백을 통해 핵심 시점에 사용자 정의 Lua 코드를 실행할 수 있습니다.
외부 서버 지원 원격 Opencode 서버를 지정할 수 있으며, 선택적으로 서버 시작, 인증, 경로 매핑 로직을 설정할 수 있습니다.

설치 방법 (예: lazy.nvim)

{ "sudo-tee/opencode.nvim",
  config = function()
    require("opencode").setup({})
  end,
  dependencies = {
    { "MeanderingProgrammer/render-markdown.nvim", opts = { anti_conceal = {enabled = false}, file_types = {'markdown','opencode_output'} }, ft = {'markdown','Avante','copilot-chat','opencode_output'} },
    "saghen/blink.cmp",          -- 선택적 완성 소스
    "folke/snacks.nvim",        -- 선택적 피커 UI
  },
}

또한 Opencode CLI (opencode ≥ v0.6.3)가 $PATH에 설치되어 있어야 합니다.

일반적인 워크플로우

  1. 프로젝트 디렉터리에서 Neovim을 엽니다.
  2. <leader>og (또는 설정한 키)를 눌러 Opencode UI를 엽니다.
  3. 입력 패널에 프롬프트를 입력합니다. 플러그인은 자동으로 현재 파일, 선택 영역, 진단 정보를 컨텍스트로 추가합니다.
  4. AI의 응답은 출력 패널에 표시됩니다. 파일 링크(gf)를 클릭하여 참조된 코드로 이동할 수 있습니다.
  5. 차이점 단축키(<leader>od, <leader>orA 등)를 사용하여 변경 사항을 검토하거나 되돌립니다.
  6. 세션을 전환(<leader>os), 이름을 변경(<leader>oR), 또는 과거 메시지에서 새로운 브랜치를 포크(<leader>oT)합니다.

설정의 주요 기능

  • preferred_picker / preferred_completion을 통해 파일 언급 및 완성에 가장 적합한 UI를 선택할 수 있습니다.
  • ui.position (right/left/current)와 ui.input_position (bottom/top)로 패널의 위치를 제어할 수 있습니다.
  • context.enabled로 자동 컨텍스트 수집을 켜거나 끌 수 있으며, diagnostics.warning 또는 selection.enabled와 같은 하위 옵션도 세밀하게 조정할 수 있습니다.
  • server 테이블을 통해 원격 Opencode 서버를 실행할 수 있습니다(사용자 정의 URL, 인증, 자동 종료, 경로 매핑).
  • prompt_guard는 Lua 함수로 설정 가능하며, 기준을 충족하지 않는 프롬프트를 차단할 수 있습니다.

누구를 위한가요

  • 에디터를 벗어나지 않고 AI 지원 코드 작업 루프를 원하는 Neovim 고급 사용자.
  • Opencode CLI(또는 호환되는 자체 호스팅 서버)를 사용하고 있으며, 더 강화된 IDE 유사 경험을 원하는 팀.
  • Lua 플러그인 설정에 익숙하고 컨텍스트, 모델 선택, 세션 기록에 대해 세밀한 제어를 원하는 사용자.

주의사항

  • 플러그인은 초기 단계입니다. README에는 버그 및 호환성 깨짐의 가능성이 경고되어 있습니다.
  • 외부 opencode 바이너리에 의존하며, 이 자체도 활발히 개발 중입니다.
  • 일부 기능(예: 빠른 버퍼 채팅)은 실험적 으로 표시되어 있습니다.

위의 모든 세부 정보는 리포지토리의 README에서 직접 인용되었으며, 추가 기능은 추측되지 않았습니다.

관련

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