도구
LLM이 사용할 수 있는 도구를 관리합니다.
도구를 통해 LLM이 코드베이스 내에서 작업을 수행할 수 있습니다. OpenCode는 내장 도구 세트와 함께 제공되지만, 사용자 정의 도구 또는 MCP 서버로 확장할 수 있습니다.
기본적으로 모든 도구는 활성화되어 있으며 실행에 권한이 필요하지 않습니다. 권한을 통해 도구 동작을 제어할 수 있습니다.
설정
permission 필드를 사용하여 도구 동작을 제어합니다. 각 도구에 대해 허용, 거부 또는 승인 요청을 설정할 수 있습니다.
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "deny",
"bash": "ask",
"webfetch": "allow"
}
}와일드카드를 사용하여 여러 도구를 한 번에 제어할 수도 있습니다. 예를 들어, MCP 서버의 모든 도구에 대해 승인을 요청하려면:
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"mymcp_*": "ask"
}
}권한 설정에 대해 자세히 알아보기.
내장 도구
OpenCode에서 사용 가능한 모든 내장 도구입니다.
bash
프로젝트 환경에서 셸 명령을 실행합니다.
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"bash": "allow"
}
}이 도구를 통해 LLM은 npm install, git status 또는 기타 셸 명령과 같은 터미널 명령을 실행할 수 있습니다.
edit
정확한 문자열 교체를 사용하여 기존 파일을 수정합니다.
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "allow"
}
}이 도구는 정확한 텍스트 일치를 교체하여 파일을 정밀하게 편집합니다. LLM이 코드를 수정하는 주요 방법입니다.
write
새 파일을 생성하거나 기존 파일을 덮어씁니다.
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "allow"
}
}LLM이 새 파일을 생성할 수 있도록 하려면 이것을 사용하세요. 파일이 이미 존재하면 덮어씁니다.
참고:
write도구는edit권한으로 제어되며, 이는 모든 파일 수정(edit,write,patch,multiedit)을 포함합니다.
read
코드베이스에서 파일 내용을 읽습니다.
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"read": "allow"
}
}이 도구는 파일을 읽고 내용을 반환합니다. 큰 파일의 특정 줄 범위 읽기를 지원합니다.
grep
정규 표현식을 사용하여 파일 내용을 검색합니다.
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"grep": "allow"
}
}코드베이스 전체에서 빠른 콘텐츠 검색을 수행합니다. 전체 정규식 구문과 파일 패턴 필터링을 지원합니다.
glob
패턴 매칭으로 파일을 찾습니다.
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"glob": "allow"
}
}**/*.js 또는 src/**/*.ts와 같은 glob 패턴을 사용하여 파일을 검색합니다. 수정 시간순으로 정렬된 일치하는 파일 경로를 반환합니다.
list
지정된 경로의 파일과 디렉토리를 나열합니다.
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"list": "allow"
}
}이 도구는 디렉토리 내용을 나열합니다. 결과를 필터링하기 위한 glob 패턴을 허용합니다.
lsp (실험적)
설정된 LSP 서버와 상호 작용하여 정의, 참조, 호버 정보, 호출 계층과 같은 코드 인텔리전스 기능을 얻습니다.
참고: 이 도구는
OPENCODE_EXPERIMENTAL_LSP_TOOL=true(또는OPENCODE_EXPERIMENTAL=true)일 때만 사용 가능합니다.
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"lsp": "allow"
}
}지원되는 작업에는 goToDefinition, findReferences, hover, documentSymbol, workspaceSymbol, goToImplementation, prepareCallHierarchy, incomingCalls, outgoingCalls가 포함됩니다.
프로젝트에서 사용 가능한 LSP 서버를 설정하려면 LSP 서버를 참조하세요.
patch
파일에 패치를 적용합니다.
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "allow"
}
}이 도구는 코드베이스에 패치 파일을 적용합니다. 다양한 소스의 diff와 패치를 적용하는 데 유용합니다.
참고:
patch도구는edit권한으로 제어되며, 이는 모든 파일 수정(edit,write,patch,multiedit)을 포함합니다.
skill
스킬 (SKILL.md 파일)을 로드하고 대화에서 내용을 반환합니다.
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"skill": "allow"
}
}todowrite
코딩 세션 중 할 일 목록을 관리합니다.
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"todowrite": "allow"
}
}복잡한 작업 중 진행 상황을 추적하기 위한 작업 목록을 생성하고 업데이트합니다. LLM은 이를 사용하여 다단계 작업을 구성합니다.
참고: 이 도구는 기본적으로 서브에이전트에 대해 비활성화되어 있지만 수동으로 활성화할 수 있습니다. 자세히 알아보기
todoread
기존 할 일 목록을 읽습니다.
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"todoread": "allow"
}
}현재 할 일 목록 상태를 읽습니다. LLM이 어떤 작업이 대기 중이거나 완료되었는지 추적하는 데 사용됩니다.
참고: 이 도구는 기본적으로 서브에이전트에 대해 비활성화되어 있지만 수동으로 활성화할 수 있습니다. 자세히 알아보기
webfetch
웹 콘텐츠를 가져옵니다.
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"webfetch": "allow"
}
}LLM이 웹 페이지를 가져오고 읽을 수 있게 합니다. 문서 조회나 온라인 리소스 조사에 유용합니다.
question
실행 중 사용자에게 질문합니다.
{
"$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 파일을 생성하세요. 이 파일은 특정 경로를 명시적으로 허용할 수 있습니다.
!node_modules/
!dist/
!build/예를 들어, 이 .ignore 파일은 ripgrep이 .gitignore에 나열되어 있더라도 node_modules/, dist/, build/ 디렉토리 내에서 검색할 수 있게 합니다.