Grok Build · 跨工具歸一化
Canonical input 是穩定投影
不同 harness 可以使用不同原始參數名。Grok Build 把少量穩定語義投影到 x.ai/tool 元數據中,讓展示、遙測和跨工具分析擁有共同詞彙。
課程目標記住八個 canonical fields、七個
CanonicalToolMeta 字段與 version = 1,並能解釋 input 為何允許缺字段或整體省略。
核心視覺 · 教學化投影圖
教學化結構圖:投影可能丟棄字段,完整原始輸入仍由 raw_input 承載。
八個 canonical fields
path文件或搜索路徑
offset歸一化起始位置
limit讀取或結果上限
command待執行命令
description命令描述
cwd工作目錄詞彙
directory目錄列表目標
pattern搜索模式
元數據合約與省略規則
CanonicalToolMeta 的真實字段
version 是數字 1。input 為可選 JSON value,沒有穩定投影時會整體省略。
input 保持輕量
它是 canonical projection,不能當作 raw input 鏡像。grep flags、replace_all 等非共享字段可能被丟棄;編輯前後文本與完整寫入內容等大字段不會進入投影,可從 raw_input 獲取。
公開行為對照:Claude Code 公開文檔中的 Read 工具使用
file_path、offset、limit。Grok Build 的歸一化層將自身各工具輸入映射到共同字段,例如 path。此處只比較公開可見的工具輸入命名,不推斷 Claude Code 內部實現。真實源碼證據
crates/codegen/xai-grok-tools/src/tool_taxonomy.rs · 第 12 至 30、190 至 200 行
pub mod field {
pub const PATH: &str = "path";
pub const OFFSET: &str = "offset";
pub const LIMIT: &str = "limit";
pub const COMMAND: &str = "command";
pub const DESCRIPTION: &str = "description";
pub const CWD: &str = "cwd";
pub const DIRECTORY: &str = "directory";
pub const PATTERN: &str = "pattern";
}
pub const TOOL_META_VERSION: u32 = 1;
pub struct CanonicalToolMeta {
pub version: u32,
pub name: String,
pub kind: ToolKind,
pub namespace: ToolNamespace,
pub label: Cow<'static, str>,
pub read_only: bool,
pub input: Option<serde_json::Value>,
}
源碼快照説明:依據本地倉庫
grok-build-main 的 xai-grok-tools/src/tool_taxonomy.rs 與 normalization.rs,核對日期 2026-07-17。源碼中不存在 content canonical field,舊頁面中的虛構元數據字段與版本示例均已移除。課堂練習
04
為一次編輯調用製作投影
原始輸入含 file_path、old_string、new_string、replace_all。寫出 canonical input,再指出哪些字段應留在 raw_input。
Takeaway:canonical 層追求跨 harness 的穩定公共語義。當前字段只有
path/offset/limit/command/description/cwd/directory/pattern,元數據版本為數字 1。input 可以省略敏感或體量大的字段。