Documentation Index
Fetch the complete documentation index at: https://simplellmfunc.cn/llms.txt
Use this file to discover all available pages before exploring further.
运行时补丁
ContextMutation 是 SimpleLLMFunc 的内部类型化补丁协议,用来描述 runtime 副作用对对话记录产生的增量编辑。
Mutation 并不定义完整上下文。最终 LLM 请求来自:
- invocation 配置——docstring 提示词、模板参数、工具指导、输出契约、SelfRef 快照;
- 基础对话记录/message list——history、当前用户输入、之前的助手/工具消息;
- 运行时补丁——本页描述的
ContextMutation对象。
history 和 SelfRef 原语等更高层接口交互。
Mutation 联合类型
标准流程补丁
这些 mutation 在正常的 ReAct 循环运行中产生。AssistantMessageMutation
当 LLM 产生响应(文本、工具调用或两者兼有)时触发。execute_single_llm_phase()。
ToolResultMutation
当工具执行完毕并返回文本结果时触发。tool_call_id 与对应的调用关联。
生产者: schedule_tool_batch() → 工具执行。
MultimodalToolResultMutation
当工具返回图片或混合内容(无法用简单字符串表示)时触发。ImgPath、ImgUrl 或包含多模态内容的元组时。
效果: 将工具调用替换为一条助手摘要消息 + 包含多模态内容的用户消息。这种重组是必要的,因为大多数提供商仅支持在用户消息中包含图片。
生产者: schedule_tool_batch() 处理多模态工具返回。
UserMessageMutation
当需要在循环中途注入新的用户消息时触发。AgentInputRouter。
对话记录重置补丁
这些 mutation 替换或重组工作对话记录。ContextReplaceMutation
硬重置——替换整个消息列表。messages。
生产者: SelfRef 分叉创建(设置子上下文)、自定义 hook。
ContextSummaryMutation
上下文压缩——将对话记录替换为摘要,并可选地存储新经验。runtime.selfref.context.compact(...)。
效果:
- 保留系统提示词消息
- 将工作对话记录替换为
summary_message - 将
remember中的条目存储为持久经验
compact 原语。
经验补丁
这些 mutation 更新存储在系统上下文中的持久经验(通过 SelfRef)。ExperienceRememberMutation
存储一条新的持久经验。runtime.selfref.context.remember(...)。
效果: 将文本作为新的经验条目添加到系统上下文的经验区域。
生产者: SelfRef 的 remember 原语。
ExperienceForgetMutation
通过 ID 移除已存储的经验。runtime.selfref.context.forget(...)。
效果: 从系统上下文中移除匹配 ID 的经验。
生产者: SelfRef 的 forget 原语。
中止补丁
这些 mutation 处理中断和取消的情况。AssistantTruncatedMutation
记录被中断的、仅部分接收的助手响应。AbortSignal 触发。
效果: 将部分内容作为带截断元数据的助手消息追加。
生产者: execute_single_llm_phase() 在中止时产生。
ToolCancelledMutation
记录在完成前被中止的工具调用。AbortSignal 触发。
效果: 追加一条已取消的工具结果消息,确保对话记录在结构上保持有效(每个工具调用都有对应的结果)。
生产者: schedule_tool_batch() 在中止时产生。
Mutation 应用顺序
Mutation 按照产生的顺序依次应用。在单次 ReAct 迭代中:- Hook mutation(来自 SelfRef session 的
collect_context_mutations)——最先应用 - LLM mutation(AssistantMessage)——来自 LLM 调用
- 工具 mutation(ToolResult、MultimodalToolResult、Experience*)——来自工具执行
- 中止 mutation(AssistantTruncated、ToolCancelled)——如果发生了中断
核心保证
Runtime 产生的对话记录编辑会通过这个补丁协议流转。这意味着 LLM 调用、工具执行、SelfRef 原语和中断处理不会直接修改 live transcript。 这并不意味着所有 LLM 可见输入都来自 mutation。初始对话记录、docstring / 系统提示词、模板参数、工具指导和 SelfRef 快照都是独立的编译输入。下一节:编译管道
invocation 配置、对话记录和运行时补丁如何被变换为最终的 LLM 请求。