최근 AI 코딩 도구들이 우후죽순 등장하고 있지만, 대부분이 웹 기반이거나 특정 IDE에 종속되어 있다. 그런데 개발자들이 가장 많은 시간을 보내는 곳은 바로 터미널이다. 이런 상황에서 터미널 네이티브 AI 코딩 어시스턴트인 OpenCode가 등장했다. Claude Code, Gemini Cli와 대비해서 어떤 특징이 있는지 살펴보자.
OpenCode란 무엇인가?
OpenCode는 Go 언어로 개발된 터미널 기반 AI 코딩 어시스턴트다. 단순히 명령어를 실행하는 도구가 아니라, 터미널에서 직접 AI와 대화하며 코딩 작업을 수행할 수 있는 TUI(Terminal User Interface) 애플리케이션이다.
흥미로운 점은 이 프로젝트가 원래 개발자인 Kujtim Hoxha와 함께 Charm으로 이전되어 새로운 이름으로 재출시를 준비하고 있다는 것이다. 아직 초기 개발 단계라는 경고가 있지만, 이미 상당히 완성도 높은 기능들을 제공하고 있다.
다양한 AI 모델 지원의 강점
OpenCode의 가장 큰 장점 중 하나는 다양한 AI 제공업체를 지원한다는 것이다. OpenAI GPT 시리즈부터 Anthropic Claude, Google Gemini, AWS Bedrock, 심지어 GitHub Copilot까지 지원한다. 이는 개발자가 특정 벤더에 종속되지 않고 상황에 맞는 최적의 모델을 선택할 수 있게 해준다.
특히 최신 모델들을 빠르게 지원하는 점이 인상적이다. GPT-4.1, Claude 4 Sonnet, Gemini 2.5 Pro 등 최신 모델들이 모두 포함되어 있다. 이는 개발팀이 AI 생태계의 변화를 빠르게 따라가고 있음을 보여준다.
실용적인 도구 통합
OpenCode가 단순한 채팅 도구가 아닌 이유는 다양한 개발 도구들과의 통합 때문이다. 파일 검색, 내용 수정, 셸 명령 실행, 심지어 LSP(Language Server Protocol) 통합까지 지원한다. 이는 AI가 단순히 조언만 하는 것이 아니라 실제로 코드를 분석하고 수정할 수 있게 해준다.
특히 LSP 통합은 주목할 만하다. 현재는 진단(diagnostics) 기능만 AI에게 노출되어 있지만, 이를 통해 AI가 실제 코드의 오류를 파악하고 수정 방안을 제시할 수 있다. 향후 더 많은 LSP 기능이 통합된다면 IDE 수준의 코드 인텔리전스를 터미널에서 사용할 수 있을 것이다.
세션 관리와 자동 압축 기능
장시간 코딩 작업을 할 때 컨텍스트 윈도우 제한은 항상 문제가 된다. OpenCode는 이를 해결하기 위해 자동 압축(Auto Compact) 기능을 제공한다. 토큰 사용량이 모델의 컨텍스트 윈도우 한계의 95%에 도달하면 자동으로 대화를 요약하고 새로운 세션을 생성한다.
이는 매우 실용적인 기능이다. 개발자가 수동으로 컨텍스트를 관리할 필요 없이 자연스럽게 긴 작업을 이어갈 수 있게 해준다. 다만 요약 과정에서 중요한 정보가 손실될 수 있다는 점은 고려해야 한다.
커스텀 명령어 시스템
OpenCode의 커스텀 명령어 시스템은 개발자의 반복 작업을 크게 줄여준다. 마크다운 파일로 명령어를 정의하고, 네임드 인자를 사용해 동적인 명령어를 만들 수 있다. 예를 들어:
RUN gh issue view $ISSUE_NUMBER --json title,body,comments RUN git grep --author="$AUTHOR_NAME" -n . RUN grep -R "$SEARCH_PATTERN" $DIRECTORY
이런 식으로 정의하면 이슈 번호나 작성자 이름을 입력받아 관련 컨텍스트를 자동으로 수집할 수 있다. 이는 단순한 템플릿을 넘어서 실제 워크플로우를 자동화하는 도구가 된다.
MCP(Model Context Protocol) 지원
OpenCode는 MCP를 통해 외부 도구와의 연동을 지원한다. 이는 AI 에이전트가 표준화된 방식으로 외부 서비스와 통신할 수 있게 해주는 프로토콜이다. stdio와 SSE 방식을 모두 지원하며, 보안을 위한 권한 시스템도 갖추고 있다.
MCP 지원은 OpenCode의 확장성을 크게 높인다. 개발자는 필요에 따라 다양한 외부 도구를 연결할 수 있고, 이를 통해 AI의 능력을 무한히 확장할 수 있다.
설치와 설정의 편의성
OpenCode는 다양한 설치 방법을 제공한다. curl을 이용한 스크립트 설치, Homebrew, AUR(Arch User Repository), 그리고 Go install까지 지원한다. 이는 다양한 환경의 개발자들이 쉽게 접근할 수 있게 해준다.
설정 파일은 JSON 형태로 되어 있으며, 환경 변수와 설정 파일을 모두 지원한다. 특히 여러 위치에서 설정 파일을 찾는 기능은 사용자와 프로젝트별 설정을 분리할 수 있게 해준다.
비대화형 모드의 활용
OpenCode는 TUI뿐만 아니라 비대화형 모드도 지원한다. 이는 스크립트나 자동화 작업에서 매우 유용하다:
# Run a single prompt and print the AI's response to the terminal
opencode -p "Explain the use of context in Go"
# Get response in JSON format
opencode -p "Explain the use of context in Go" -f json
# Run without showing the spinner (useful for scripts)
opencode -p "Explain the use of context in Go" -q
이런 식으로 사용하면 스피너 없이 JSON 형태로 결과를 받을 수 있다. CI/CD 파이프라인이나 자동화 스크립트에서 AI의 도움을 받을 수 있게 해주는 기능이다.
아키텍처와 확장성
OpenCode의 아키텍처는 모듈화가 잘 되어 있다. cmd, internal/app, internal/llm 등으로 명확히 분리되어 있어 유지보수와 확장이 용이하다. 특히 internal/llm 모듈은 다양한 AI 제공업체를 추상화하여 새로운 모델 추가가 쉽게 이루어질 수 있도록 설계되었다.
데이터베이스로 SQLite를 사용하는 것도 현명한 선택이다. 별도의 데이터베이스 서버 없이도 세션과 대화 내용을 영구적으로 저장할 수 있다.
현재의 한계와 향후 전망
아직 초기 개발 단계라는 점에서 몇 가지 한계가 있다. GitHub Copilot 지원이 실험적이고, LSP 기능도 진단 정보만 AI에게 노출되어 있다. 또한 자동 압축 기능에서 정보 손실 가능성도 있다.
하지만 이런 한계들은 개발이 진행되면서 해결될 수 있는 문제들이다. 특히 Charm으로 이전되면서 더 체계적인 개발과 지원이 이루어질 것으로 예상된다.
개발자 커뮤니티와 기여
OpenCode는 MIT 라이선스 하에 오픈소스로 공개되어 있다. 이미 13명의 기여자가 참여하고 있으며, 49개의 릴리스가 나왔다. 활발한 개발 활동이 이루어지고 있음을 보여준다.
특히 @isaacphi의 mcp-language-server 프로젝트와 @adamdottv의 디자인 기여를 명시적으로 언급한 것은 오픈소스 커뮤니티의 협력 정신을 잘 보여준다.
실제 사용 시나리오
OpenCode는 다양한 상황에서 유용하게 사용될 수 있다. 코드 리뷰 시 AI의 도움을 받아 잠재적 문제를 찾거나, 새로운 기술을 학습할 때 실시간으로 질문하고 답변을 받을 수 있다. 또한 디버깅 과정에서 AI가 로그를 분석하고 해결책을 제시할 수도 있다.
특히 커스텀 명령어를 활용하면 팀의 워크플로우를 표준화할 수 있다. 예를 들어, 새로운 팀원이 프로젝트에 참여할 때 필요한 컨텍스트를 자동으로 수집하는 명령어를 만들 수 있다.
마무리하면, OpenCode는 터미널 기반 AI 코딩 어시스턴트로서 상당한 잠재력을 가지고 있다. 다양한 AI 모델 지원, 실용적인 도구 통합, 그리고 확장 가능한 아키텍처는 개발자들의 생산성을 크게 향상시킬 수 있다. 아직 초기 단계이지만, 오픈소스 커뮤니티의 지원과 Charm으로의 이전을 통해 더욱 발전할 것으로 기대된다. 터미널에서 대부분의 작업을 수행하는 개발자라면 한 번쯤 시도해볼 만한 도구다.