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 和真實定義描述。