创建时间: 2026-09-02最后更新: 2026-09-02作者: yangbo(44d3b0fc8)
1. 问题来源
上一节为了让 Agent 的创建代码稍微简单一点,我们把读取配置、创建 ChatModel 和创建 Agent 都放在了当前模块顶层中执行:
fixed-agent.ts
1const config = await readRequiredActiveLlmConfig()2const model = createChatModel(config)34const agent = createAgent({5model,6tools: [],7systemPrompt: SYSTEM_PROMPT,8})
这样写有一个很清楚的优点:模块加载时只创建一次 Agent,React 重新渲染或用户再次发送消息都不会重复执行 createAgent()。
但模型也在同一时刻固定下来了。即使聊天工具栏允许用户选择另一个模型,已经创建好的 Agent 仍然持有原来的 ChatModel。界面显示的是新选择,真正收到请求的却可能还是旧模型。为了避免这种不一致,上一节关闭了模型切换。
如果把 createAgent() 移回发送函数内部,当然也能让每次发送使用新的模型,但这会把 Agent 的结构和每次请求的设置混在一起。我们真正想改变的是本次模型调用,而不是重新定义整个 Agent。
wrapModelCall 正好提供了这个边界:Agent 保持不变,每次调用模型之前再决定本次使用哪个 ChatModel。
正在验证登录状态
请稍候,验证完成后将继续显示文章内容