






















@@ -225,6 +225,39 @@ export type VoiceCallRealtimeProvidersConfig = z.infer<
225225export const VoiceCallRealtimeToolPolicySchema = z.enum(REALTIME_VOICE_AGENT_CONSULT_TOOL_POLICIES);
226226export type VoiceCallRealtimeToolPolicy = RealtimeVoiceAgentConsultToolPolicy;
227227228+export const VoiceCallRealtimeFastContextSourceSchema = z.enum(["memory", "sessions"]);
229+export type VoiceCallRealtimeFastContextSource = z.infer<
230+typeof VoiceCallRealtimeFastContextSourceSchema
231+>;
232+233+export const VoiceCallRealtimeFastContextConfigSchema = z
234+.object({
235+/** Enable bounded memory/session lookup before the full consult agent. */
236+enabled: z.boolean().default(false),
237+/** Hard deadline for the fast context lookup. */
238+timeoutMs: z.number().int().positive().default(800),
239+/** Maximum memory/session hits to inject into the realtime tool result. */
240+maxResults: z.number().int().positive().default(3),
241+/** Indexed sources used by the fast context lookup. */
242+sources: z
243+.array(VoiceCallRealtimeFastContextSourceSchema)
244+.min(1)
245+.default(["memory", "sessions"]),
246+/** Fall back to the full agent consult when fast context has no answer. */
247+fallbackToConsult: z.boolean().default(false),
248+})
249+.strict()
250+.default({
251+enabled: false,
252+timeoutMs: 800,
253+maxResults: 3,
254+sources: ["memory", "sessions"],
255+fallbackToConsult: false,
256+});
257+export type VoiceCallRealtimeFastContextConfig = z.infer<
258+typeof VoiceCallRealtimeFastContextConfigSchema
259+>;
260+228261export const VoiceCallStreamingProvidersConfigSchema = z
229262.record(z.string(), z.record(z.string(), z.unknown()))
230263.default({});
@@ -246,6 +279,8 @@ export const VoiceCallRealtimeConfigSchema = z
246279toolPolicy: VoiceCallRealtimeToolPolicySchema.default("safe-read-only"),
247280/** Tool definitions exposed to the realtime provider. */
248281tools: z.array(RealtimeToolSchema).default([]),
282+/** Low-latency memory/session context for the consult tool. */
283+fastContext: VoiceCallRealtimeFastContextConfigSchema,
249284/** Provider-owned raw config blobs keyed by provider id. */
250285providers: VoiceCallRealtimeProvidersConfigSchema,
251286})
@@ -255,6 +290,13 @@ export const VoiceCallRealtimeConfigSchema = z
255290instructions: DEFAULT_VOICE_CALL_REALTIME_INSTRUCTIONS,
256291toolPolicy: "safe-read-only",
257292tools: [],
293+fastContext: {
294+enabled: false,
295+timeoutMs: 800,
296+maxResults: 3,
297+sources: ["memory", "sessions"],
298+fallbackToConsult: false,
299+},
258300providers: {},
259301});
260302export type VoiceCallRealtimeConfig = z.infer<typeof VoiceCallRealtimeConfigSchema>;
@@ -490,6 +532,11 @@ export function normalizeVoiceCallConfig(config: VoiceCallConfigInput): VoiceCal
490532const realtimeProviders = sanitizeVoiceCallProviderConfigs(
491533config.realtime?.providers ?? defaults.realtime.providers,
492534);
535+const realtimeFastContext = {
536+ ...defaults.realtime.fastContext,
537+ ...config.realtime?.fastContext,
538+sources: config.realtime?.fastContext?.sources ?? defaults.realtime.fastContext.sources,
539+};
493540return {
494541 ...defaults,
495542 ...config,
@@ -520,6 +567,7 @@ export function normalizeVoiceCallConfig(config: VoiceCallConfigInput): VoiceCal
520567defaultRealtimeStreamPathForServePath(serve.path ?? defaults.serve.path),
521568tools:
522569(config.realtime?.tools as RealtimeToolConfig[] | undefined) ?? defaults.realtime.tools,
570+fastContext: realtimeFastContext,
523571providers: realtimeProviders,
524572},
525573tts: normalizeVoiceCallTtsConfig(defaults.tts, config.tts),
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。