资讯动态

Flue会话中途切换模型实战:无缝更换LLM不丢上下文

发布时间:2026/8/30 11:47:46 来源:尧图企业网站定制
Flue会话中途切换模型实战无缝更换LLM不丢上下文【免费下载链接】flueThe sandbox agent framework.项目地址: https://gitcode.com/GitHub_Trending/flue1/flueFlueFlue 框架是一个 TypeScript 编写的 AI Agent 测试框架它的 Agent 支持在会话中途无缝切换底层大语言模型LLM而对话上下文一条都不丢。本文面向新手用升级模型这个最常见的场景手把手讲清楚 Flue 会话中途切换模型的完整原理与实战写法核心就是useModel()usePersistentState()两个 Hooks 的组合。为什么你需要中途换模型在实际业务里固定一个 LLM 跑到底往往不划算成本控制80% 的简单问题用便宜快速的模型如 Haiku 级别处理只有复杂任务才升级到强模型如 Opus 级别延迟优化简单对话用低延迟模型用户感知更流畅能力升级当 Agent 发现任务超出当前模型能力时主动换脑接管。传统框架里模型是构建时写死的配置换模型意味着新建会话、重新喂上下文。而 Flue 2.0 的Hooks 式动态 Agent架构让这件事变成了几行代码——Agent 函数在每次模型调用前都会重新渲染useModel()的参数可以是一个计算值而不只是常量。三步实现会话中途切换模型以下是完整的实战模式官方称为escalation 升级模式只需三步第 1 步声明一个持久化状态用来记录是否已升级它存储在 Agent 实例的记录日志中跨会话永久保留第 2 步根据状态计算模型标识符每次渲染时动态决定用哪个模型第 3 步用一个工具触发切换Agent 自己调用该工具后下一次渲染就会换模型。use agent; import { useModel, usePersistentState, useTool } from flue/runtime; export function Reviewer() { // 第 1 步持久化状态跨会话保留 const [escalated, setEscalated] usePersistentState(escalated, false); // 第 2 步模型标识符由状态计算每次渲染重新求值 useModel(escalated ? anthropic/claude-opus-4-6 : anthropic/claude-haiku-4-5); // 第 3 步Agent 自主调用此工具触发模型升级 useTool({ name: escalate_review, description: 任务过于复杂时调用升级到更强模型, async run() { setEscalated(true); return 已升级更强的模型将接管后续对话。; }, }); return 审查本次变更并给出可执行的反馈。; }上图正是 Flue 官方的动态切换写法状态isEnhanced为true时挂载强模型和更多能力为false时只用轻量模型——能力随对话长出来。切换何时生效为什么上下文不会丢这是新手最容易困惑的一点官方文档把它称作submission-scoped提交作用域语义模型、思考级别和压缩配置在 Agent 被唤醒处理一条已接受的输入即一次submission时读取一次。切换发生后当前这条回复仍由旧模型完成下一条消息起由新模型接管。这个设计带来两个天然的好处✅上下文零丢失整个对话历史消息记录、工具结果、持久化状态都持久化在 Agent 实例上切换的只是负责生成的大脑新模型读到的仍然是完整对话✅切换原子安全不会在一条生成到一半时换模型避免输出格式错乱。换句话说无缝不是魔法——Flue 把会话历史当作独立于模型的持久化记录流配合自动上下文压缩 compaction模型随时可以换历史始终都在。进阶不同步骤用不同模型的工作流升级模式只是最简单的用法。把持久化状态当作状态机还能给工作流的每个步骤指定专属模型const [step, setStep] usePersistentState(step, reproduce); if (step reproduce) useModel(anthropic/claude-haiku-4-5); // 复现便宜模型 if (step diagnose) useModel(anthropic/claude-opus-4-6); // 诊断强模型 if (step report) useModel(anthropic/claude-haiku-4-5); // 报告便宜模型Agent 每完成一步就调用setStep(...)推进状态机模型、技能skills和工具都随步骤自动增减——复现和报告用轻量模型省钱诊断环节用旗舰模型保证质量。新手避坑清单常见疑问正确答案可以在一条消息生成到一半时换模型吗不能。切换在下一次提交生效这是框架的安全保证useModel()能调用两次吗不能。每次渲染恰好一次但参数可以变化切换后旧对话会丢失吗不会。历史持久化在 Agent 实例上与模型解耦子 Agentsubagent能这样换吗子 Agent 的模型在useSubagent()定义中声明父 Agent 未指定时继承模型写错了会怎样快速失败请求发出前就会报出无法解析的提供商与模型 ID小结Flue 会话中途切换模型的核心心法就一句话把模型当作随状态变化的计算值把对话历史当作独立于模型的持久化数据。借助useModel()与usePersistentState()的组合你可以用不到 10 行代码实现成本优化、延迟优化与能力升级且上下文全程不丢。 延伸阅读仓库内路径官方模型指南含中途切换模型章节apps/docs/src/content/docs/guide/models.mduseModel()Hook 实现源码packages/runtime/src/hooks/use-model.tsusePersistentState()持久状态实现源码packages/runtime/src/hooks/use-persistent-state.ts完整 Hook 参考文档apps/docs/src/content/docs/guide/agent-hooks.md【免费下载链接】flueThe sandbox agent framework.项目地址: https://gitcode.com/GitHub_Trending/flue1/flue创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价