pub struct AgentConfig {
pub system_prompt: String,
pub model: ModelSpec,
pub tool_names: Vec<String>,
pub retry: RetryConfig,
pub stream_options: StreamOptionsConfig,
pub steering_mode: SteeringModeConfig,
pub follow_up_mode: FollowUpModeConfig,
pub structured_output_max_retries: usize,
pub approval_mode: ApprovalModeConfig,
pub plan_mode_addendum: Option<String>,
pub cache_config: Option<CacheConfigData>,
pub extra: Value,
}Expand description
A fully serializable snapshot of agent configuration.
Captures the subset of AgentOptions fields that can
survive a serde round-trip. Trait objects (tools, stream functions,
transformers, policies, callbacks) cannot be serialized and must be
re-registered by the consumer after deserialization.
§What round-trips faithfully
system_prompt, model, retry, stream_options, steering_mode,
follow_up_mode, structured_output_max_retries, approval_mode,
plan_mode_addendum, and cache_config are all restored by
into_agent_options().
§What does NOT round-trip
tool_names— stored for informational use only (e.g., re-registering tools by name). The consumer must supply the actual tool implementations.extra— application-level metadata that has no correspondingAgentOptionsfield. Survives serde but is not fed back into the agent.- Trait objects —
stream_fn,convert_to_llm,transform_context,approve_tool, policies, event forwarders, etc. must be re-attached.
§Example
// Save
let config = agent.options().to_config();
let json = serde_json::to_string(&config)?;
// Restore
let config: AgentConfig = serde_json::from_str(&json)?;
let opts = AgentOptions::from_config(config, stream_fn, convert_to_llm)
.with_tools(re_register_tools(&config.tool_names));Fields§
§system_prompt: StringSystem prompt sent to the LLM.
model: ModelSpecModel specification (provider, model ID, thinking level, etc.).
tool_names: Vec<String>Names of registered tools (routing keys from AgentTool::name()).
retry: RetryConfigRetry strategy parameters.
stream_options: StreamOptionsConfigPer-call stream options (temperature, max tokens, transport).
steering_mode: SteeringModeConfigSteering queue drain mode.
follow_up_mode: FollowUpModeConfigFollow-up queue drain mode.
structured_output_max_retries: usizeMax retries for structured output validation.
approval_mode: ApprovalModeConfigApproval mode for the tool gate.
plan_mode_addendum: Option<String>Optional plan mode addendum appended to the system prompt.
cache_config: Option<CacheConfigData>Optional context caching configuration.
extra: ValueArbitrary extension data for application-specific config.
This field survives serialization but is not restored into
AgentOptions — it has no corresponding field
there. Use it to store application-level metadata alongside the config.
Implementations§
Source§impl AgentConfig
impl AgentConfig
Sourcepub fn into_agent_options(
self,
stream_fn: Arc<dyn StreamFn>,
convert_to_llm: impl Fn(&AgentMessage) -> Option<LlmMessage> + Send + Sync + 'static,
) -> AgentOptions
pub fn into_agent_options( self, stream_fn: Arc<dyn StreamFn>, convert_to_llm: impl Fn(&AgentMessage) -> Option<LlmMessage> + Send + Sync + 'static, ) -> AgentOptions
Restore an AgentOptions builder from this config.
The caller must supply the required non-serializable arguments
(stream_fn and convert_to_llm) and then re-attach any trait objects
(tools, transformers, policies) via the builder methods.
Trait Implementations§
Source§impl Clone for AgentConfig
impl Clone for AgentConfig
Source§fn clone(&self) -> AgentConfig
fn clone(&self) -> AgentConfig
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more