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_files, memory_enabled, os_name, role_instructions를 가능한 prompt section에 각각 매핑하세요. 그런 다음 skip_serializing_if를 사용하는 필드를 확인하고, 빈 값이 영속화 출력을 어떻게 줄이는지 설명하세요.

Takeaway: PromptContext는 직렬화 가능한 렌더링 입력이고, TemplateOverride는 기본 템플릿을 결정하며, ToolBridge와 TemplateRenderer가 최종 렌더링을 완성합니다. 필드와 기능은 derive와 실제 정의에 따라 설명해야 합니다.