콘텐츠로 이동
Search

OpenCode

터미널을 위한 AI 코딩 에이전트

Categories

Features

  • AI 코딩 환경을 터미널에 통합한 오픈소스 프로젝트
  • 반응형 네이티브 터미널 UI와 다양한 테마 지원
  • 프로바이더 독립적 구조로 Anthropic, OpenAI, Google, 로컬 모델 등 다양한 LLM 선택 가능
  • 자동으로 적합한 LSP(언어 서버 프로토콜)를 로딩해 LLM 오류를 최소화
  • 한 프로젝트에 여러 에이전트를 병렬로 투입해 협업 및 병렬 작업 가능
  • 모듈형 클라이언트/서버 아키텍처로 로컬/원격/모바일 등 다양한 클라이언트에서 사용 가능
  • 모든 코드 세션을 공유 링크로 남길 수 있어 코드 리뷰, 디버깅, 협업 등에 활용
  • Models.dev를 연동하여 75개 이상 LLM 프로바이더 지원, 로컬 모델도 사용 가능함
    • Providers에서 지원 프로바이더 확인 가능
    • config 파일로 커스텀 LLM/프로바이더 추가 가능
  • 추천 사용 환경 : Anthropic(Claude) 계정 활용시 비용/성능 모두 유리

Bash 터미널 실행 권한 설정

opencode.json 의 permission.bash 허용 목록에 읽기 전용 명령을 추가했다.

{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "edit": "allow",
    "webfetch": "deny",
    "bash": {
      "*": "deny",
      "ls *": "allow",
      "find *": "allow",
      "grep *": "allow",
      "rg *": "allow",
      "wc *": "allow",
      "head *": "allow",
      "tail *": "allow",
      "cat *": "allow",
      "date*": "allow",
      "mkdir *": "allow",
      "sort*": "allow",
      "uniq*": "allow",
      "cut *": "allow",
      "sed -n *": "allow",
      "awk *": "allow",
      "echo *": "allow",
      "diff *": "allow",
      "stat *": "allow",
      "git status*": "allow",
      "git diff*": "allow",
      "cd *": "allow",
      "tr *": "allow",
      "basename *": "allow",
      "dirname *": "allow"
    }
  }
}

커스텀 vllm 에 접속하는 방법

~/.config/opencode/opencode.json

{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "vllm": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "vLLM (B200)",
      "options": {
        "baseURL": "https://nhn-ubuntu.unwiki.net/v1"
      },
      "models": {
        "geo-agent": {
          "name": "Qwen3.6-27B",
          "tool_call": true,
          "reasoning": true,
          "attachment": true,
          "modalities": {
            "input": ["text", "image"],
            "output": ["text"]
          },
          "limit": {
            "context": 262144,
            "output": 32768
          }
        }
      }
    }
  },
  "model": "vllm/geo-agent",
  "small_model": "vllm/geo-agent"
}

보안키 필요하다면 ~/.local/share/opencode/auth.json 파일에 수정:

{ "vllm": { "type": "api", "key": "sk-geo-local-2026" } }

Troubleshooting

opencode bash 권한 거부 오류 해결

opencode 에이전트가 bash 도구를 호출할 때 다음 오류가 발생한다.

Error: The user has specified a rule which prevents you from using this specific tool call.
Here are some of the relevant rules [{"permission":"*","action":"allow","pattern":"*"},
{"permission":"bash","pattern":"*","action":"deny"},
{"permission":"bash","pattern":"ls *","action":"allow"}, ... ]

오류 메시지는 전체 규칙 목록만 보여주기 때문에 어떤 명령이 왜 막혔는지 알 수 없다. 실제 원인은 logs/ 디렉터리의 실행 로그에서 확인해야 한다.

  • 파이프라인의 모든 서브 명령이 검사된다:
    • opencode는 bash 명령 문자열을 파이프(|)·&&·|| 단위로 분해하여 각 서브 명령마다 권한을 개별 검사한다.
    • 하나라도 deny 에 걸리면 파이프라인 전체가 거부된다.
  • 와일드카드 패턴의 공백 규칙:
    • 패턴 "sort *" 는 sort 뒤에 공백과 인자가 있어야 매칭된다.
    • 인자 없는 sort 단독 호출은 매칭되지 않는다.
    • 기존 설정의 "date*" 가 공백 없이 작성된 것도 같은 이유다.
    • 인자가 필수인 명령 → "cat *" 형식
    • 인자 없이도 쓰이는 명령 → "sort*", "uniq*" 형식

적용한 설정은 #Bash 터미널 실행 권한 설정 항목 참조.

See also

Favorite site

lastmod 2026-09-18created 2026-09-18author Zer0 sitemap