AI 코딩이 필수로 자리 잡으면서 AI를 더 잘 사용해야하는 시대가 왔어요. 그리고 너무 많은 AI 모델과 에이전트들이 출시되서 개발자로서 너무 혼란스러울 수도 있어요. 하지만 이런 상황에서도 선구자적인 개발자들은 여러 AI들을 더 효율적으로 잘 사용하기 위해서 고군분투 중이에요.
오늘은 오픈소스 AI Agent인 opencode에 대해 좀 소개해드리려고 해요. 우선 그전에 AI 개념 분류를 간단하게 해볼게요. 아래 예시들을 보면 뭔지 감이 딱 오실거 같아요.
AI Model = 텍스트 생성, 추론, 요약과 코드 생성 능력정도가 있어요. (파일 읽기, 실행, PR 생성 같은 행동은 못해요.)
Open Ai의 GPT, Anthropic의 Claude, Google의 Gemini, Z.ai의 GLM 같은 텍스트 기반의 모델들이 있어요.
Nano banana같은 AI 이미지 생성 모델도 있어요.
AI Agent = 모델 + 행동/관리 능력을 가져요. 계획을 세우고 도구를 쓰고 결과를 만들어 줘요. 또한 컨텍스트, 메모리를 관리하고. 모델을 바꿀 수 있게 설정도 제공해요.
Codex : GPT 모델을 주로 사용하는 코딩 특화 Agent
Claude Code: Claude 모델을 주로 사용하는 코딩 특화 Agent
Chat GPT: GPT 모델을 사용하는 범용 대화형 AI Agent
opencode: 오픈 소스 Agent로 매우 커스텀하게 컨텍스트, MCP 등을 설정할 수 있고 여러 AI Model을 섞어 쓸 수 있어요. 심지어는 Plugin화 된 오픈소스를 쉽게 적용할 수 있어요.
AI Assisted IDE = Cursor, Windsurf, Antigrabity와 같이 AI를 쉽게 활용할 수 있게 기능이 내장된 코드 편집기에요.
Cursor, Antigravity, Cursor, Windsurf, Cline, Github Copilot 같은 것들이 있어요.
저는 Claude Pro 요금제로 Claude Code Agent를 메인으로 코딩을 하고 있어요. 그런데 아주 정교한 컨텍스트로 코딩을 하면 30분만에 할당량을 다 써버리는 경우가 있어요.그래서 유목민처럼 Antigravity의 할당량을 쓰러 가던가, Cursor의 할당량을 쓰러갔어요. 하지만 이 방법들에는 문제점이 있었어요.
일반적으로 제공되는 AI Agents 들은 단일 에이전트 모델이에요. 그래서 1개의 Agent가 코드 작성, 리뷰, 등등 다 처리하는 것과 같아요. 그리고 각 Agent들은 본인들만의 설정 방법들이 있고요.
저는 Claude Code의 Skills, Command, Agents 기능들을 사용하기위해 ".claude/" 폴더에 컨텍스트를 정의두는데, 유목민 처럼 다른 Agent를 사용할 때면 저가 정의한 컨텍스트들을 수동으로 제공해야 원하는 결과물을 받을 수 있었어요. 각 AI Agent의 특성들이 다르기 때문에 이런 결과가 나오는 거에요.
이 외에도 알려진 문제점들은 같은 모델로 여러 작업을 다 하다보니 계산이 많이 필요 없는 영역에도 그대로 비싼 모델을 사용해야 하는 문제, Agent에서 제공해주는 모델의 제한으로 원하는 AI Model을 사용하기 힘든 문제, Agent가 내부적으로 어떤 컨텍스트나 MCP를 쓰는지 알 수 없는 문제 등이 있어요.
그래서 이를 해결하기 위해서는 오픈소스 형태인 AI Agent인 opencode라는 것이 있다는 것을 저의 스승같은 개발자님께 정보를 들었고 이를 사용해보기로 했어요.
장점
모델 자유도 - 원하는 모델을 자유롭게 선택할 수 있어요
비용 효율성 - API 키만 있으면 토큰당 과금으로 더 싸게 AI Model만 돈주고 사용할 수 있어요
오픈소스 확장성 - 플러그인 생태계가 구축되어 쉽게 기능을 추가할 수 있고 어떻게 작동하는지 볼 수 있어요
프라이버시 - 코드와 컨텍스트를 외부에 저장하지 않고 self-host가 가능해요.
단점
초기 설정이 필요해요
Agent 회사에서 사용을 막는경우도 있데요.
이제 OpenCode와 oh-my-opencode 설치 및 설정하는 방법을 알아봐요.
opencode 설치
여러가지 다운 방법이 있어요. 하지만 가장 간단한 방법으로 소개할게요.
curl -fsSL https://opencode.ai/install | bashoh-my-opencode 설치
oh-my-opencode 플러그인도 별도로 설치해줘야해요. 여기서 설치법을 AI Agents를 사용하기를 추천하고 있어요. 왜냐하면 실수없이 자동으로 설정들이 추가될 수 있게 하려고 그래요.
# AI Agents로 아래 내용을 입력해주세요.Install and configure oh-my-opencode by following the instructions here:https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/refs/heads/master/docs/guide/installation.md1.Provider 연결 또는 Auth 연결
만약 추가적인 LLM(Anthropic, Google 등) 연결이 필요하면 다음 명령어로 연결하세요
$ opencode # 오픈코드 실행$ /connect # opencode 명령어 실행하여 provider api key로 연결$ opencode auth login # Claude Pro 같은 요금제 연결2. opencode.json 설정
opencode는 설정할 수 있는게 되게 많아요. MCP 설정, Agents 설정, Model 설정, Instructions 설정 등 다양하게 있어요. 그래서 블로그 글보다 직접 문서를 보는게 좋다고 생각해요. 우선 저의 설정을 보여드릴게요. [opencode 설정 문서]
// ~/.config/opencode/opencode.json # 전역 설정// {{project.root}}/opencode.json # 프로젝트별 설정{ "$schema": "https://opencode.ai/config.json", "plugin": [ "oh-my-opencode", "opencode-antigravity-auth@1.3.0" ], "provider": { "google": { "name": "Google", "models": { "antigravity-gemini-3-pro-high": { "name": "Gemini 3 Pro High (Antigravity)", "thinking": true, "attachment": true, "limit": { "context": 1048576, "output": 65535 }, "modalities": { "input": [ "text", "image", "pdf" ], "output": [ "text" ] } }, "antigravity-gemini-3-pro-low": { "name": "Gemini 3 Pro Low (Antigravity)", "thinking": true, "attachment": true, "limit": { "context": 1048576, "output": 65535 }, "modalities": { "input": [ "text", "image", "pdf" ], "output": [ "text" ] } }, "antigravity-gemini-3-flash": { "name": "Gemini 3 Flash (Antigravity)", "attachment": true, "limit": { "context": 1048576, "output": 65536 }, "modalities": { "input": [ "text", "image", "pdf" ], "output": [ "text" ] } }, "antigravity-claude-sonnet-4-5": { "name": "Claude Sonnet 4.5 (no thinking) (Antigravity)", "limit": { "context": 200000, "output": 64000 }, "modalities": { "input": [ "text", "image", "pdf" ], "output": [ "text" ] } }, "antigravity-claude-sonnet-4-5-thinking": { "name": "Claude Sonnet 4.5 Thinking (Antigravity)", "limit": { "context": 200000, "output": 64000 }, "modalities": { "input": [ "text", "image", "pdf" ], "output": [ "text" ] }, "variants": { "low": { "thinkingConfig": { "thinkingBudget": 8192 } }, "high": { "thinkingConfig": { "thinkingBudget": 32768 } } } }, "antigravity-claude-opus-4-5-thinking": { "name": "Claude Opus 4.5 Thinking (Antigravity)", "limit": { "context": 200000, "output": 64000 }, "modalities": { "input": [ "text", "image", "pdf" ], "output": [ "text" ] }, "variants": { "low": { "thinkingConfig": { "thinkingBudget": 8192 } }, "high": { "thinkingConfig": { "thinkingBudget": 32768 } } } }, "gemini-3-pro-preview": { "name": "Gemini 3 프로 프리뷰", "attachment": true, "thinking": true, "limit": { "context": 200000, "output": 64000 }, "modalities": { "input": [ "text", "image", "pdf" ], "output": [ "text" ] }, "options": { "thinking": { "type": "enabled", } } }, "gemini-3-flash-preview": { "name": "Gemini 3 Flash Preview", "attachment": true, "thinking": true, "limit": { "context": 200000, "output": 64000 }, "modalities": { "input": [ "text", "image", "pdf" ], "output": [ "text" ] }, "options": { "thinking": { "type": "enabled", } } } } }, "anthropic": { "name": "Anthropic", "models": { "claude-sonnet-4-5": { "name": "Claude Sonnet 4.5", "thinking": true, "attachment": true, "limit": { "context": 200000, "output": 64000 }, "modalities": { "input": [ "text", "image", "pdf" ], "output": [ "text" ] }, "options": { "thinking": { "type": "enabled", "budgetTokens": 16000 } } }, "claude-opus-4-5": { "name": "Claude Opus 4.5", "thinking": true, "attachment": true, "limit": { "context": 200000, "output": 64000 }, "modalities": { "input": [ "text", "image", "pdf" ], "output": [ "text" ] }, "options": { "thinking": { "type": "enabled", "budgetTokens": 32000 } } }, "claude-haiku-4-5": { "name": "Claude Haiku 4.5", "attachment": true, "limit": { "context": 200000, "output": 16384 }, "modalities": { "input": [ "text", "image", "pdf" ], "output": [ "text" ] } } } } }}oh-my-opencode.json 설정
oh-my-opencode를 위한 설정이에요. 각 기능 에이전트들의 모델들을 지정할 수 있어요.
Sisyphus (시지프스)
역할: 복잡한 작업의 실행 및 오케스트레이션
특징: 작업 계획을 실행하고, 서브 에이전트들에게 작업을 분배하며, 각 작업 완료를 독립적으로 검증
모델: claude-opus-4-5 (최고 성능 모델 사용. 공식 문서에서도 가장 좋은 거 사용하길 추천)
사용 시점: 복잡한 멀티 스텝 작업 수행 시 (사실 자동으로 해줌!!!!)
librarian (사서)
역할: 코드베이스 문서화 및 지식 관리
특징: 코드 구조 분석, 문서 검색, 컨텍스트 수집
사용 시점: 코드베이스 이해 및 문서 관련 작업
explore (탐색자)
역할: 빠른 코드베이스 탐색 및 검색
특징: 파일 검색, 패턴 매칭, 코드 구조 파악
사용 시점: 파일 찾기, 코드 검색 등 빠른 탐색 작업
oracle (예언자)
역할: 의사결정 지원 및 기술적 조언
특징: 아키텍처 결정, 베스트 프랙티스 제안
사용 시점: 기술적 의사결정이 필요할 때
multimodal-looker (멀티모달 분석자)
역할: 이미지, PDF 등 멀티모달 콘텐츠 분석
특징: 스크린샷 분석, 디자인 파일 이해, PDF 문서 처리
사용 시점: UI 스크린샷 분석, 디자인 검토, PDF 문서 분석
Prometheus (플랜 컨설턴트)
역할: Sisyphus의 하위 에이전트로 계획 수립 지원
특징: Sisyphus가 복잡한 계획을 세울 때 자동으로 호출되는 플래너
사용 시점: Sisyphus 내부적으로 자동 호출
Metis (플랜 컨설턴트)
역할: Prometheus와 함께 계획 검증 및 조언
특징: 계획의 타당성 검토, 보완 제안
사용 시점: Sisyphus 내부적으로 자동 호출
Momus (계획 검토자)
역할: 계획 유효성 검증 (Plan Validation)
특징: 계획이 완전한지, 실행 가능한지 검증
사용 시점: Prometheus가 계획을 완성한 후 검증 단계
frontend-ui-ux-engineer (프론트엔드 UI/UX 엔지니어)
역할: 프론트엔드 코드 작성 및 UI/UX 개선
특징: React, Vue, CSS 등 프론트엔드 기술 특화
사용 시점: UI 컴포넌트 개발, 스타일링, 프론트엔드 구현
document-writer (문서 작성자)
역할: 문서 작성 및 README 생성
특징: 마크다운 문서, 기술 문서 작성
사용 시점: README, 가이드, 주석 작성
// ~/.config/opencode/oh-my-opencode.json # oh-my-opencode 설정{ "$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/master/assets/oh-my-opencode.schema.json", "google_auth": true, "agents": { "Sisyphus": { "model": "anthropic/claude-opus-4-5" }, "librarian": { "model": "google/antigravity-claude-sonnet-4-5-thinking" }, "explore": { "model": "google/antigravity-gemini-3-flash" }, "oracle": { "model": "anthropic/claude-sonnet-4-5" }, "frontend-ui-ux-engineer": { "model": "anthropic/claude-sonnet-4-5" }, "document-writer": { "model": "google/antigravity-gemini-3-flash", "description": "문서작성" }, "multimodal-looker": { "model": "google/antigravity-gemini-3-flash" }, "Prometheus (Planner)": { "model": "google/gemini-3-pro-preview" }, "" }, "git_master": { "commit_footer": true, "include_co_authored_by": false }}
기존 Claude Code 설정을 위한 파일을 그대로 써도 스킬들을 인식하는 것이 너무 좋았어요. 그리고 같은 컨텍스트에서 여러 무료 모델들을 활용할 수 있기 때문에 유료 플랜의 토큰을 중요한데에 쓸 수 있다는 것이 너무 좋았어요.

위와 같이 Claude-Code 에이전트를 위한 설정으로 만들어둔 commit-message-generator 스킬을 알아서 찾아서 커밋 메시지를 만들어요.
아직 설정해야할 것들이 많이 남았어요. 그리고 써보고 싶은 설정들도 많아요. 앞으로 AI를 활용해서 어떻게 더 타이트하게 좋은 결과물을 만들 수 있을지 많이 고민해봐야할 것 같아요. Git에서 Claude-Code로 자동 리뷰를 적용해놨는데 Claude-Code를 OpenCode로 바꿀 수 있을 지도 알아봐야겠어요.
모두 더 높은 퀄리티와 높은 생산성을 통해 빠르게 설계하고 적용할 수 있는 디자인하는 개발자가 되어봐요.