OpenCode
터미널을 위한 AI 코딩 에이전트
Categories
Features
- AI 코딩 환경을 터미널에 통합한 오픈소스 프로젝트
- 반응형 네이티브 터미널 UI와 다양한 테마 지원
- 프로바이더 독립적 구조로 Anthropic, OpenAI, Google, 로컬 모델 등 다양한 LLM 선택 가능
- 자동으로 적합한 LSP(언어 서버 프로토콜)를 로딩해 LLM 오류를 최소화
- 한 프로젝트에 여러 에이전트를 병렬로 투입해 협업 및 병렬 작업 가능
- 모듈형 클라이언트/서버 아키텍처로 로컬/원격/모바일 등 다양한 클라이언트에서 사용 가능
- 모든 코드 세션을 공유 링크로 남길 수 있어 코드 리뷰, 디버깅, 협업 등에 활용
- Models.dev를 연동하여 75개 이상 LLM 프로바이더 지원, 로컬 모델도 사용 가능함
- Providers에서 지원 프로바이더 확인 가능
- config 파일로 커스텀 LLM/프로바이더 추가 가능
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 파일에 수정:
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에 걸리면 파이프라인 전체가 거부된다.
- opencode는 bash 명령 문자열을 파이프(
- 패턴
"sort *"는sort뒤에 공백과 인자가 있어야 매칭된다. - 인자 없는
sort단독 호출은 매칭되지 않는다. - 기존 설정의
"date*"가 공백 없이 작성된 것도 같은 이유다. - 인자가 필수인 명령 →
"cat *"형식 - 인자 없이도 쓰이는 명령 →
"sort*","uniq*"형식
적용한 설정은 #Bash 터미널 실행 권한 설정 항목 참조.
See also
- LLM
- AI Agent
- Gemini CLI
- OpenWork - OpenCode 기반의 Claude Cowork 대체제
- Cloud CLI - Claude Code, Cursor CLI, Codex용 오픈소스 웹 UI
- Frouter - 무료 AI API 를 찾아주는 CLI 도구
Favorite site
- OpenCode | The open source AI coding agent
- Github - sst/opencode
- OpenCode - 터미널을 위한 AI 코딩 에이전트 | GeekNews
이 문서를 가리키는 문서