Grok Build · 도구 실행 아키텍처

구현 패밀리, 레지스트리, 동적 MCP

xai-grok-tools는 여러 세트의 내장 도구 구현과 런타임 MCP 도구를 동시에 수용합니다. ToolBridge는 registry를 세션 레이어에 연결하고, SearchToolUseTool이 발견 및 호출 진입점을 제공합니다.

학습 목표: namespace에서 해당 구현 패밀리를 찾고, 도구 정의가 registry에 진입하여 ToolBridge에 의해 실행되는 방식을 설명하며, 두 MCP 메타 도구의 실제 입력 필드를 정확히 작성할 수 있습니다.
핵심 다이어그램 · 정의에서 실행까지의 데이터 흐름
구현 패밀리grok_build · codex · opencode 동적 MCP런타임 등록 ToolRegistryBuilder선택 · 파라미터 재명명finalize(config, context) FinalizedToolsetdefinitions · resourcesdispatch ToolBridge세션 어댑터호출과 결과 모델에 제공되는 tool definitions ToolOutput / prompt_text
교육용 구조도: 유형과 메서드는 소스 코드에서 가져왔으며, 레이아웃은 강의 설명을 위한 것입니다.
소스 코드의 구현 패밀리
grok_build

주요 제품 도구 패밀리로 ReadFile, SearchReplace, Bash, Task 등의 구현을 포함합니다.

grok_build_concise

간소화된 도구 패밀리; 디렉터리에 read_file, search_replace, bash가 포함됩니다.

grok_build_hashline

hashline 시맨틱을 가진 read_file, edit, grep 구현입니다.

codex

apply_patch, read_file, list_dir, grep_files 등 호환 구현을 포함합니다.

opencode

read, write, edit, bash, glob, grep, skill, todowrite를 포함합니다.

memory / lsp / skills

기능별로 분리된 구현 모듈입니다. namespace 열거형에는 런타임 외부 도구를 위한 MCP도 포함됩니다.

동적 MCP의 두 가지 안정적인 진입점

SearchTool

ToolIndex에서 BM25를 사용하여 MCP 도구를 검색합니다. 결과는 서버별로 그룹화되어 도구 설명과 input_schema를 반환합니다.

query: String키워드
limit: Option<u8>기본값 5

UseTool

발견된 도구 이름을 받아 InnerDispatch 또는 managed gateway를 통해 MCP를 호출합니다. 이 고정 진입점은 모델의 도구 목록이 턴 간에 안정적으로 유지되게 합니다.

tool_name: String일반적으로 server__tool
tool_input: Value발견된 schema에 따라 구성
실제 소스 코드 증거
crates/codegen/xai-grok-tools/src/bridge.rs와 implementations/use_tool/mod.rs
pub struct ToolBridge {
    registry: Arc<FinalizedToolset>,
    terminal: Option<Arc<dyn TerminalBackend>>,
}

pub async fn register_mcp_tools<T>(
    &self,
    mcp_name: String,
    tool: T,
    input_schema: Option<serde_json::Value>,
) -> Result<(), xai_tool_runtime::ToolError> {
    self.registry.register_tool(mcp_name, tool, input_schema)?;
    Ok(())
}

pub struct UseToolInput {
    pub tool_name: String,
    pub tool_input: serde_json::Value,
}
소스 스냅샷 설명: 로컬 저장소 grok-build-main를 기반으로 합니다. 핵심 파일 상호 검증: xai-grok-tools/src/implementations/mod.rs, types/tool.rs, bridge.rs, registry/types.rs, implementations/search_tool, implementations/use_tool. 검증일 2026-07-17.
강의 실습
03

외부 도구 호출 추적하기

모델이 처음 search_tool을 호출하는 것에서 시작하여, 쿼리 필드, 응답에서 읽어야 할 schema, 이후 use_tool에 전달되는 두 필드, 그리고 최종적으로 어떤 브리지 유형이 결과를 세션에 반환하는지 작성하세요.

Takeaway: 구현 패밀리는 여러 도구 프로토콜의 코드 구성을 처리하고, registry는 조합과 런타임 등록을 담당하며, ToolBridge가 세션에 연결됩니다. 동적 MCP는 SearchTool을 통해 schema를 발견하고, UseTool이 schema에 따라 실행을 분배합니다.