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