ai

[OpenCode 실전기 4편] oh-my-opencode로 서브 에이전트 병렬 워크플로우 만들기

#opencode #oh-my-opencode #subagent #parallel

1. 왜 플러그인이 필요했나

1편의 맥락에서 보면 제 핵심 목표는 분명했습니다. 도구를 자주 바꾸는 상황에서도, 세션이 길어져도, 작업 루틴이 무너지지 않게 만드는 것.

OpenCode 기본 기능만으로도 충분히 강력하지만, 작업 규모가 커질수록 역할 분리가 중요해집니다.

특히 여러 구독 계정과 인증 방식을 함께 운영하려면, 플러그인이 사실상 필수인 경우가 많았습니다. 서비스마다 연결 방식이 달라 기본 설정만으로는 한계가 있었고, 플러그인을 통해 같은 작업 환경 안에서 유연하게 연계할 수 있었습니다.

즉 플러그인은 “기능 추가”보다, 여러 구독 채널을 하나의 실전 워크플로우로 묶는 운영 장치에 가까웠습니다.

기본 oh-my-opencode 설정은 Claude Opus 중심이라, 비용과 사용량을 고려해 저는 oh-my-opencode-slim을 주로 사용했습니다.

저는 oh-my-opencode 계열을 붙인 뒤부터 탐색, 구현, 검증을 병렬로 나누는 루틴이 안정화됐습니다.

2. 플러그인 설정

먼저 oh-my-opencode 계열 플러그인을 설치합니다.

권장 설치:

bunx oh-my-opencode install

대안:

npx oh-my-opencode install

설치가 끝나면 설정 파일에 플러그인 목록을 명시합니다.

  • 글로벌 설정: ~/.config/opencode/opencode.json
  • 프로젝트 설정: <project-root>/opencode.json 또는 <project-root>/opencode.jsonc

jsonjsonc는 둘 다 사용 가능합니다. 이미 json으로 운영 중이라면 그대로 유지해도 됩니다. 제 경우 실제 운영 파일은 글로벌 ~/.config/opencode/opencode.json입니다.

예시 (opencode.json):

{
  "plugin": [
    "opencode-antigravity-auth@latest",
    "opencode-anthropic-auth",
    "opencode-cursor-auth",
    "@tarquinen/opencode-dcp",
    "oh-my-opencode-slim"
  ]
}

저장 후 opencode를 재시작하면 플러그인이 로드됩니다.

추가로 같은 파일에서 Provider 블록도 함께 관리하고 있습니다. 예: google, anthropic, github-copilot, opencode, cursor.

opencode-cursor-auth는 이미 결제해둔 1년 Cursor 구독을 작업 흐름 안에서 활용하기 위해 포함했습니다.

2-1. 내 기본 프롬프트 넣는 방법 (실전)

저는 프로젝트 루트에 AGENTS.md를 두고, 매 세션 반복하고 싶은 지침을 고정해 사용했습니다.

처음 파일 생성은 OpenCode에서 /init으로 시작해도 되고, 직접 AGENTS.md를 만들어도 됩니다.

예시:

# Project Rules

## Output
- 한국어로 답변
- 정답만 주지 말고 핵심 근거 3줄 포함
- 코드에는 상세 주석 포함
- 최소 2개 example(입력/출력) 제공

## Coding
- 변경 전 영향 파일 먼저 요약
- 변경 후 테스트 명령 제시
- 위험한 명령은 실행 전 이유 설명

학습용으로 쓸 때는 특히 아래 두 줄이 효과가 좋았습니다.

  • “정답만 출력하지 말고, 왜 그렇게 되는지 설명”
  • “반드시 example 입력/출력을 함께 제시”

이렇게 해두면 매번 같은 요청을 다시 타이핑하지 않아도, 수업/학습에 맞는 출력 스타일을 일관되게 유지할 수 있습니다.

2-2. oh-my-opencode-slim에서 역할별 모델 지정 방법

역할별 모델은 ~/.config/opencode/oh-my-opencode-slim.json에서 설정합니다. 핵심은 preset으로 활성 프리셋을 고르고, presets.<이름>.<역할>.model에 모델 ID를 넣는 구조입니다.

제 실제 설정(요약)은 아래와 같습니다.

{
  "preset": "my-set",
  "presets": {
    "my-set": {
      "orchestrator": { "model": "opencode/kimi-k2.5-free" },
      "oracle": { "model": "kimi-for-coding/k2p5" },
      "librarian": { "model": "google/antigravity-gemini-3-flash", "variant": "low" },
      "explorer": { "model": "google/antigravity-gemini-3-flash" },
      "designer": { "model": "openai/gpt-5.2-codex" },
      "fixer": { "model": "kimi-for-coding/k2p5" }
    }
  }
}

즉 저는 고비용 모델을 전면 배치하지 않고, 역할 특성에 따라 모델을 분리해 비용/속도/품질 균형을 맞췄습니다.

변경 후에는 opencode를 재시작해 반영 여부를 확인합니다.

3. 워크플로우: 역할 분리 + 병렬 실행

  • 탐색 에이전트: 파일 구조/관련 코드 위치 찾기
  • 구현 에이전트: 기능 추가/수정
  • 검증 에이전트: 린트/테스트/리그레션 점검

핵심은 각 에이전트의 책임 범위를 좁혀 컨텍스트 충돌과 품질 흔들림을 줄이는 것입니다.

이 방식은 장기 세션에서 특히 효과적이었습니다. 컨텍스트가 뒤엉켜 느려지는 문제를 줄이고, 새 세션 인계 부담도 함께 낮출 수 있었습니다.

4. 워크플로우에서 얻은 이점

  1. 전체 리드타임 단축
  2. 반복 작업 자동화 비율 증가
  3. 한 번에 많은 변경을 해도 추적 가능성 향상

특히 “찾기-고치기-검증”이 순차가 아니라 동시로 돌아가면, 체감 속도가 크게 올라갑니다.

5. 안전한 사용 팁

  • 에이전트별 목표를 짧고 명확하게 적기
  • 변경 범위를 파일 단위로 제한하기
  • 최종 머지는 사람이 기준을 가지고 검토하기
  • CLI 진행 과정은 중간 가시성이 떨어지므로, 단계별 체크포인트를 짧게 남기기

도구가 빨라질수록, 검토 기준은 더 단단해야 합니다.

6. 학습용으로도 좋은 이유

OpenCode는 출력 방식까지 지시할 수 있어서, 학생이 무작정 정답만 받지 않도록 설계하기 좋습니다.

예를 들어 “정답만 출력” 대신 아래처럼 요청할 수 있습니다.

  • 코드마다 상세 주석을 붙여 설명하기
  • 최소 2개의 예시 입력/출력 제공하기
  • 풀이 과정을 단계별로 나눠 제시하기

즉 결과물 소비보다 이해 중심 학습으로 유도하기 쉬워, 수업 보조 도구나 자기주도 학습 도구로도 활용 가치가 큽니다.

7. 출처

참고로 opencode-anthropic-auth는 제가 사용한 시점 기준으로는 동작했지만, npm 페이지에 deprecate 표시가 있어 최신 상태는 확인 후 사용하는 것을 권장합니다.

💬 댓글

이 글에 대한 의견을 남겨주세요