Gajae-Code
Gajae-Codev0.9.1

검색·탐색 도구

find, search, search_tool_bm25, ast-grep, lsp, resolve — 파일 찾기, 내용 매칭, AST 쿼리, 코드 탐색.

이 계열은 "어디 있지?"와 "이게 뭐지?"에 답합니다 — 파일명 globbing부터 정규식 내용 매칭, AST 패턴, 언어 서버 탐색까지.

find

glob으로 파일시스템 경로를 찾습니다. 선택 기준이 파일명·경로면 find, 파일 내용이면 search를 쓰세요.

입력타입필수설명
pathsstring[]glob, 파일, 디렉터리. 여러 항목은 하나의 brace-union 검색으로 합쳐질 수 있음.
hiddenboolean아니오숨김 파일 포함. 기본 true.
limitnumber아니오반환 경로 최대 수. 기본 1000.
  • glob 문자가 없는 경로는 암묵적 **/*로 검색합니다. 최상위 단독 glob *.ts**/*.ts가 되며, src/*.tssrc 아래 비재귀 세그먼트로 유지됩니다.
  • 결과는 최근 수정순으로 정렬됩니다.
  • .gitignore는 항상 적용됩니다. 끄는 플래그는 없습니다.
  • 루트 /에서의 검색은 거부됩니다. 매치 없으면 No files found matching pattern.

파일, 디렉터리, glob, 내부 URL에 걸쳐 정규식으로 파일 내용을 검색합니다.

입력타입필수설명
patternstring정규식. 패턴에 개행이나 \n이 있을 때만 멀티라인 활성화. 리터럴 중괄호는 이스케이프(예: interface\{\}).
pathsstring[]파일, 디렉터리, glob, 내부 URL(내부 URL엔 glob 불가).
iboolean아니오대소문자 무시. 기본 false.
gitignoreboolean아니오디렉터리 스캔 시 .gitignore 준수. 기본 true.
skipnumber아니오페이지네이션용 전역 매치 오프셋. 기본 0.

매치 줄은 *anchor|line, 컨텍스트 줄은 anchor|line입니다(해시라인: *5th|content, 일반: *5|content). 디렉터리 결과는 # <path> 제목 아래 파일별로 묶입니다. 기본 컨텍스트는 앞 1줄, 뒤 3줄.

보이는 페이지는 처음 100개 매치를 보여주고, 긴 줄은 1024자에서 절단됩니다. 더 보려면 skip을 쓰세요. 앵커는 edit가 소비합니다.

search_tool_bm25

숨은 도구 발견 인덱스를 검색하고 상위 매치를 현재 세션에 활성화합니다. 파일 내용이 아니라 다른 도구를 찾습니다.

입력타입필수설명
querystring자연어 또는 키워드 쿼리. 트림 후 비면 거부.
limitinteger아니오반환·활성화 최대 매치 수. 기본 8.

BM25로 발견 가능한 도구를 랭킹합니다. activateDiscoveredTools()로 매치를 활성화한 뒤 간결한 JSON 요약을 반환합니다:

{"query":"...","activated_tools":["..."],"match_count":2,"total_tools":17}

활성화된 도구는 같은 턴의 다음 모델 호출 전에 사용 가능해집니다. 이 도구는 tools.discoveryMode !== "off"일 때만 나타나며, "all" 모드에서 숨은 발견 가능 빌트인을 표면화할 수 있습니다(기본 read, bash, edit은 계속 활성).

ast-grep

네이티브 ast-grep로 지원 소스 파일에 구조적 코드 검색을 합니다.

입력타입필수설명
patstring단일 AST 패턴. 추론 언어에서 하나의 유효한 AST 노드로 파싱돼야 함.
pathsstring[]파일, 디렉터리, glob, 백킹 파일이 있는 내부 URL(내부 URL엔 glob 불가).
skipnumber아니오매치 오프셋. 기본 0.

패턴 문법:

토큰의미
$NAMEAST 노드 하나 캡처.
$_바인딩 없이 노드 하나 매치.
$$$NAME0개 이상 노드 캡처.
$$$바인딩 없이 0개 이상 노드 매치.

메타변수 이름은 대문자여야 하고 전체 노드를 가리켜야 합니다. 같은 이름을 두 번 쓰면 매 등장마다 동일 코드를 요구합니다. 언어는 넓은 카탈로그에서 파일별로 추론됩니다(javascript, typescript, tsx, python, go, rust, java, c, cpp, ruby, php, json, yaml, html, css 등). 매치는 *LINE+HASH|text(해시라인) 또는 *LINE|text로 렌더되며 선택적 meta: NAME=value 줄이 붙습니다. 보이는 결과는 기본 50개입니다.

lsp

언어 서버에 진단, 탐색, 심볼, 이름 변경, 코드 액션, 능력, 원시 요청을 질의합니다.

입력타입필수설명
actionenumdiagnostics, definition, references, hover, symbols, rename, rename_file, code_actions, type_definition, implementation, status, reload, capabilities, request.
filestring아니오파일 경로; diagnostics에선 glob도; 워크스페이스 형식엔 "*".
linenumber아니오위치 기반 액션의 1-기준 줄. 기본 1.
symbolstring아니오열을 해석할 부분 문자열; name#N 등장 셀렉터 지원.
querystring아니오워크스페이스 심볼 쿼리, 코드 액션 셀렉터, action=request의 LSP 메서드.
new_namestring아니오rename, rename_file에 필수.
applyboolean아니오rename/rename_file은 기본 적용; code_actionstrue가 아니면 목록만.
timeoutnumber아니오초, 5..60로 클램프, 기본 20.

주요 액션:

  • diagnostics — 파일별·glob 진단; file: "*"는 워크스페이스 검사(cargo check, npx tsc --noEmit, go build ./..., pyright).
  • definition / type_definition / implementation / references — 정의 이동·사용처 찾기, 주변 컨텍스트 포함.
  • hover — 위치의 타입/시그니처 텍스트.
  • symbols — 문서 심볼 또는 query에 맞는 워크스페이스 심볼.
  • rename / rename_file — 심볼·파일 이름 변경(apply: false로 미리보기).
  • code_actions — 퀵픽스 목록·적용; query는 목록 모드에선 필터, 적용 모드에선 선택(인덱스 또는 제목 부분 문자열).
  • status / reload / capabilities / request — 서버 점검과 원시 JSON-RPC.

lsplsp.enabled와 세션에 게이트됩니다. 서버는 루트 마커와 defaults.json에서 자동 탐지되거나 프로젝트별로 설정됩니다. GJC_DISABLE_LSPMUX=1lspmux 래핑을 끕니다.

resolve

예약된 미리보기 동작을 적용하거나 버려 마무리합니다. 숨은 도구입니다. 다른 도구(예: ast-edit)가 미리보기를 예약하고 일회성 resolve 선택을 강제한 후에만 동작합니다.

입력타입필수설명
action"apply" | "discard"예약된 미리보기를 커밋 또는 거부.
reasonstring예약 콜백에 전달되는 설명.

apply는 생산자의 apply 콜백을, discard는 reject 콜백을 돌리거나 Discarded: <label>. Reason: <reason>을 냅니다. 대기 중 미리보기가 없으면 No pending action to resolve.로 오류.

무엇을 언제 쓸까

목표도구
이름·경로로 파일 찾기find
파일 내용에서 텍스트·정규식 매칭search
더 많은 도구 발견·활성화search_tool_bm25
구문 코드 패턴 매칭ast-grep
진단, 정의 이동, 이름 변경lsp
예약된 미리보기 적용·폐기resolve

목차