CHAPTER 12 · PROMPT CONTEXT

PromptContext:可檢查的渲染輸入

PromptContext 儲存 Agent 專屬的模板輸入。它透過 Serde derive 獲得序列化能力,再交給 ToolBridge::render_prompt() 完成渲染。

課程目標
準確識別 PromptContext 欄位、TemplateOverride 三種變體與渲染職責,刪除不存在的上下文欄位和方法。
核心視覺 · 教學化渲染管線
PromptContext結構化輸入Serialize + Deserialize TemplateOverrideNone / Codex / Custom ToolBridge工具狀態與描述 TemplateRendererxai-grok-tools合成各個 section SystemPrompt
真實欄位分組

版本與模板

versionprompt_modeaudienceprompt_bodysystem_promptbuild_timestamp_utcsystem_prompt_label

配置與身份

agents_md_filespersona_summariesrole_instructionspersona_instructionsmemory_enabledmemory_global_pathmemory_workspace_path

使用者執行環境

os_nameshell_pathworking_directorycurrent_dateis_non_interactive
TemplateOverride
None

標準模板

Primary 使用標準 base template,Subagent 使用對應的緊湊模板。

Codex

Apply-patch profile

原始碼註釋定義為 apply-patch profile prompt template,按需解密。

Custom(String)

呼叫方模板

由呼叫方提供完整自訂模板字串。

真實原始碼證據
crates/codegen/xai-grok-agent/src/prompt/context.rs
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PromptContext {
  pub version: u32,
  pub prompt_mode: PromptMode,
  pub audience: PromptAudience,
  pub prompt_body: Option<String>,
  pub system_prompt: TemplateOverride,
  pub agents_md_files: Vec<AgentConfigFile>,
  pub persona_summaries: Vec<String>,
  pub build_timestamp_utc: String,
  pub memory_enabled: bool,
  // ...其餘路徑、身份與執行環境欄位
}
crates/codegen/xai-grok-agent/src/prompt/context.rs
#[derive(Debug, Clone, PartialEq, Eq,
  Serialize, Default)]
pub enum TemplateOverride {
  #[default]
  None,
  Codex,
  Custom(String),
}
事實校正:欄位清單以結構體定義為準。可序列化能力來自 SerializeDeserialize derive,原始碼未額外定義專用 JSON 轉換方法。工具描述由渲染路徑結合 ToolBridge 處理。
原始碼快照說明:本頁依據本地同步副本核對。該副本沒有 .git 中繼資料,因此不聲稱對應某個 commit 版本。
課堂練習

從欄位推斷 section

agents_md_filesmemory_enabledos_namerole_instructions 分別對映到可能的 prompt section。隨後檢查哪些欄位使用 skip_serializing_if,說明空值如何減少持久化輸出。

Takeaway:PromptContext 是可序列化的渲染輸入,TemplateOverride 決定基礎模板,ToolBridge 與 TemplateRenderer 完成最終渲染。欄位與能力都應按 derive 和真實定義描述。