한국어
문서
도구

도구

LLM이 사용할 수 있는 도구를 관리합니다.

도구를 통해 LLM이 코드베이스 내에서 작업을 수행할 수 있습니다. OpenCode는 내장 도구 세트와 함께 제공되지만, 사용자 정의 도구 또는 MCP 서버로 확장할 수 있습니다.

기본적으로 모든 도구는 활성화되어 있으며 실행에 권한이 필요하지 않습니다. 권한을 통해 도구 동작을 제어할 수 있습니다.


설정

permission 필드를 사용하여 도구 동작을 제어합니다. 각 도구에 대해 허용, 거부 또는 승인 요청을 설정할 수 있습니다.

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "edit": "deny",
    "bash": "ask",
    "webfetch": "allow"
  }
}

와일드카드를 사용하여 여러 도구를 한 번에 제어할 수도 있습니다. 예를 들어, MCP 서버의 모든 도구에 대해 승인을 요청하려면:

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "mymcp_*": "ask"
  }
}

권한 설정에 대해 자세히 알아보기.


내장 도구

OpenCode에서 사용 가능한 모든 내장 도구입니다.


bash

프로젝트 환경에서 셸 명령을 실행합니다.

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "bash": "allow"
  }
}

이 도구를 통해 LLM은 npm install, git status 또는 기타 셸 명령과 같은 터미널 명령을 실행할 수 있습니다.


edit

정확한 문자열 교체를 사용하여 기존 파일을 수정합니다.

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "edit": "allow"
  }
}

이 도구는 정확한 텍스트 일치를 교체하여 파일을 정밀하게 편집합니다. LLM이 코드를 수정하는 주요 방법입니다.


write

새 파일을 생성하거나 기존 파일을 덮어씁니다.

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "edit": "allow"
  }
}

LLM이 새 파일을 생성할 수 있도록 하려면 이것을 사용하세요. 파일이 이미 존재하면 덮어씁니다.

참고: write 도구는 edit 권한으로 제어되며, 이는 모든 파일 수정(edit, write, patch, multiedit)을 포함합니다.


read

코드베이스에서 파일 내용을 읽습니다.

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "read": "allow"
  }
}

이 도구는 파일을 읽고 내용을 반환합니다. 큰 파일의 특정 줄 범위 읽기를 지원합니다.


grep

정규 표현식을 사용하여 파일 내용을 검색합니다.

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "grep": "allow"
  }
}

코드베이스 전체에서 빠른 콘텐츠 검색을 수행합니다. 전체 정규식 구문과 파일 패턴 필터링을 지원합니다.


glob

패턴 매칭으로 파일을 찾습니다.

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "glob": "allow"
  }
}

**/*.js 또는 src/**/*.ts와 같은 glob 패턴을 사용하여 파일을 검색합니다. 수정 시간순으로 정렬된 일치하는 파일 경로를 반환합니다.


list

지정된 경로의 파일과 디렉토리를 나열합니다.

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "list": "allow"
  }
}

이 도구는 디렉토리 내용을 나열합니다. 결과를 필터링하기 위한 glob 패턴을 허용합니다.


lsp (실험적)

설정된 LSP 서버와 상호 작용하여 정의, 참조, 호버 정보, 호출 계층과 같은 코드 인텔리전스 기능을 얻습니다.

참고: 이 도구는 OPENCODE_EXPERIMENTAL_LSP_TOOL=true (또는 OPENCODE_EXPERIMENTAL=true)일 때만 사용 가능합니다.

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "lsp": "allow"
  }
}

지원되는 작업에는 goToDefinition, findReferences, hover, documentSymbol, workspaceSymbol, goToImplementation, prepareCallHierarchy, incomingCalls, outgoingCalls가 포함됩니다.

프로젝트에서 사용 가능한 LSP 서버를 설정하려면 LSP 서버를 참조하세요.


patch

파일에 패치를 적용합니다.

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "edit": "allow"
  }
}

이 도구는 코드베이스에 패치 파일을 적용합니다. 다양한 소스의 diff와 패치를 적용하는 데 유용합니다.

참고: patch 도구는 edit 권한으로 제어되며, 이는 모든 파일 수정(edit, write, patch, multiedit)을 포함합니다.


skill

스킬 (SKILL.md 파일)을 로드하고 대화에서 내용을 반환합니다.

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "skill": "allow"
  }
}

todowrite

코딩 세션 중 할 일 목록을 관리합니다.

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "todowrite": "allow"
  }
}

복잡한 작업 중 진행 상황을 추적하기 위한 작업 목록을 생성하고 업데이트합니다. LLM은 이를 사용하여 다단계 작업을 구성합니다.

참고: 이 도구는 기본적으로 서브에이전트에 대해 비활성화되어 있지만 수동으로 활성화할 수 있습니다. 자세히 알아보기


todoread

기존 할 일 목록을 읽습니다.

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "todoread": "allow"
  }
}

현재 할 일 목록 상태를 읽습니다. LLM이 어떤 작업이 대기 중이거나 완료되었는지 추적하는 데 사용됩니다.

참고: 이 도구는 기본적으로 서브에이전트에 대해 비활성화되어 있지만 수동으로 활성화할 수 있습니다. 자세히 알아보기


webfetch

웹 콘텐츠를 가져옵니다.

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "webfetch": "allow"
  }
}

LLM이 웹 페이지를 가져오고 읽을 수 있게 합니다. 문서 조회나 온라인 리소스 조사에 유용합니다.


question

실행 중 사용자에게 질문합니다.

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "question": "allow"
  }
}

이 도구를 통해 LLM은 작업 중 사용자에게 질문할 수 있습니다. 다음에 유용합니다:

  • 사용자 선호도 또는 요구 사항 수집
  • 모호한 지시 명확화
  • 구현 선택에 대한 결정 얻기
  • 방향에 대한 선택 제공

각 질문에는 헤더, 질문 텍스트, 옵션 목록이 포함됩니다. 사용자는 제공된 옵션에서 선택하거나 사용자 정의 답변을 입력할 수 있습니다. 여러 질문이 있을 때 사용자는 모든 답변을 제출하기 전에 질문 사이를 탐색할 수 있습니다.


사용자 정의 도구

사용자 정의 도구를 사용하면 LLM이 호출할 수 있는 자체 함수를 정의할 수 있습니다. 이들은 설정 파일에서 정의되며 임의의 코드를 실행할 수 있습니다.

사용자 정의 도구 생성에 대해 자세히 알아보기.


MCP 서버

MCP (Model Context Protocol) 서버를 사용하면 외부 도구와 서비스를 통합할 수 있습니다. 여기에는 데이터베이스 액세스, API 통합, 타사 서비스가 포함됩니다.

MCP 서버 설정에 대해 자세히 알아보기.


내부 구현

내부적으로 grep, glob, list와 같은 도구는 ripgrep (opens in a new tab)을 사용합니다. 기본적으로 ripgrep은 .gitignore 패턴을 존중하므로 .gitignore에 나열된 파일과 디렉토리는 검색 및 목록에서 제외됩니다.


무시 패턴

일반적으로 무시되는 파일을 포함하려면 프로젝트 루트에 .ignore 파일을 생성하세요. 이 파일은 특정 경로를 명시적으로 허용할 수 있습니다.

.ignore
!node_modules/
!dist/
!build/

예를 들어, 이 .ignore 파일은 ripgrep이 .gitignore에 나열되어 있더라도 node_modules/, dist/, build/ 디렉토리 내에서 검색할 수 있게 합니다.