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 和真实定义描述。