CHAPTER 12 · PROMPT CONTEXT
PromptContext:可檢查的渲染輸入
PromptContext 儲存 Agent 專屬的模板輸入。它透過 Serde derive 獲得序列化能力,再交給 ToolBridge::render_prompt() 完成渲染。
課程目標
準確識別 PromptContext 欄位、TemplateOverride 三種變體與渲染職責,刪除不存在的上下文欄位和方法。
準確識別 PromptContext 欄位、TemplateOverride 三種變體與渲染職責,刪除不存在的上下文欄位和方法。
核心視覺 · 教學化渲染管線
真實欄位分組
版本與模板
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_interactiveTemplateOverride
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,
// ...其餘路徑、身份與執行環境欄位
}
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),
}
Serialize, Default)]
pub enum TemplateOverride {
#[default]
None,
Codex,
Custom(String),
}
事實校正:欄位清單以結構體定義為準。可序列化能力來自
Serialize 與 Deserialize derive,原始碼未額外定義專用 JSON 轉換方法。工具描述由渲染路徑結合 ToolBridge 處理。原始碼快照說明:本頁依據本地同步副本核對。該副本沒有
.git 中繼資料,因此不聲稱對應某個 commit 版本。課堂練習
從欄位推斷 section
把 agents_md_files、memory_enabled、os_name、role_instructions 分別對映到可能的 prompt section。隨後檢查哪些欄位使用 skip_serializing_if,說明空值如何減少持久化輸出。
Takeaway:PromptContext 是可序列化的渲染輸入,TemplateOverride 決定基礎模板,ToolBridge 與 TemplateRenderer 完成最終渲染。欄位與能力都應按 derive 和真實定義描述。