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 可以省略敏感或體量大的欄位。