跳到主要内容

EdgeSession API 参考

EdgeSession 提供 SDK 拥有的对话编排 helper。它把 chat history、mode 切换、取消、超时、可选工具循环和 memory-policy compaction 从产品业务代码中拆出来。

开发者预览边界

EdgeSession 不负责模型加载、产品 prompt、工具实现或业务数据。App 需要提供 EdgeGenerationClient,桥接到自己已经加载好的 LLMEngineVLMEngine

ChatSessionController

@MainActor
public final class ChatSessionController: ObservableObject

用于多轮对话的有状态 controller。

属性或方法说明
history当前 compacted ChatMessage history。
isGenerating当前是否有活跃 turn。
lastMetricsgeneration client 报告的 inference metrics。
lastEvent最近的 session event,包括 reset reason 和可用时的 compaction audit。
init(client:maxHistoryMessages:historyCharacterBudget:)基于 App 提供 generation client 创建 session。
runTurn(userText:systemPrompt:mode:images:tools:onToolCall:parameters:memoryPolicy:timeoutSeconds:watchdogConfiguration:onChunk:)追加用户 turn、准备 history、生成输出并流式回调 chunk。
generatePrepared(messages:mode:images:tools:onToolCall:parameters:memoryPolicy:timeoutSeconds:watchdogConfiguration:onChunk:)对已准备好的 message list 运行生成。
replaceHistory(_:mode:)使用 compactor budget 替换 history。
reset(systemPrompt:reason:)清空 session state,并要求 client reset runtime state。
cancel(reason:)取消本地 session generation,并要求 client reset runtime state。

EdgeGenerationClient

@MainActor
public protocol EdgeGenerationClient: AnyObject

EdgeSession 与 App 拥有的推理运行时之间的协议边界。

Requirement说明
currentInferenceMetrics当前已加载 engine 的可选 metrics。
generate(messages:ciImages:tools:onToolCall:parameters:onChunk:)通过 App 拥有 engine 运行一次生成。
resetRuntime(reason:)在取消、mode 变化或显式 reset 后释放或重置 runtime state。

ChatSessionController.Mode

Case说明
.plain纯文本 turn。
.imageCIImage 输入的视觉 turn。
.tool可使用工具的 turn。
.isolated(String)用于 App 定义 boundary 的显式隔离模式。

ChatSessionMemoryPolicy

public struct ChatSessionMemoryPolicy: Sendable

EdgeInference memory-policy plan 中的 compaction 部分应用到 chat session。它刻意不激活 recall、mesh 或 quality-loop behavior。

API说明
init(plan:estimatedCharactersPerToken:minimumCharacterBudget:)MemoryPolicyPlanner.Plan 创建 compaction policy。
compactorConfig(base:)当 plan 要求 compact 时收紧 history compaction budget。
compactionAudit(...)产出无原文 audit record,描述 compaction decision。

ToolChatLoop

public enum ToolChatLoop

用于 session 内有界工具编排的 utility。App 仍然拥有工具 schema、权限策略和工具执行。

Type说明
RequestMessages、mode、allowed tool names、planned calls、limits 和 timeout settings。
HooksApp-provided execution 和 observation callbacks。
PlannedToolCall来自 App 拥有 planner 的 planned tool call。
ToolResultTool result text 和 source 元数据。

Storage types

Type说明
EdgeConversationRole用于 persisted messages 的 Codable role mirror。
EdgeConversationMessageSDK 拥有 persisted message shape,不包含 UI payload。
EdgeConversationSDK 拥有 conversation 元数据。
ConversationStore本地 conversation persistence helper。

安全边界

  • 不要把产品 prompt、业务规则或 app data schemas 放进 EdgeSession
  • 工具执行留在 App 层,session boundary 只传通用工具规格/结果。
  • Memory-policy audit 字段是 diagnostics,不是回答质量提升的证据。