OpenClaw不支持任务级动态模型切换,模型在Agent初始化时硬编码绑定且所有任务共用同一实例;需手动修改agent.py中get_llm_config()和step()逻辑,通过任务关键词映射、重建LLM客户端及重构LLM工厂函数实现运行时路由。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

OpenClaw本身不支持按任务动态切换模型,它的模型选择是硬编码在执行逻辑里的——这意味着你无法在运行时根据“写Python脚本”或“读取日志文件”这类任务类型自动调用不同模型。要实现任务级模型路由,必须手动修改源码并重建harness。
确认OpenClaw当前模型绑定方式
打开openhands/agent/agent.py,找到get_llm_config()方法或类似初始化LLM的地方。你会发现它直接返回一个固定配置对象,比如model='gpt-4o'或model='claude-3-haiku',没有条件分支也没有任务参数传入。
这说明模型选择发生在Agent初始化阶段,而非Action触发阶段——【所有任务共用同一个模型实例】。
手动注入任务感知的模型路由逻辑
方法一:在Agent.step()入口处添加任务关键词映射
定位到step()函数开头,在调用LLM前插入判断逻辑:
if 'bash' in state.latest_user_message or 'command' in state.latest_user_message:
self.llm = get_llm_config(model='claude-3-sonnet')
elif 'browser' in state.latest_user_message or 'url' in state.latest_user_message:
self.llm = get_llm_config(model='gpt-4-turbo')
else:
self.llm = get_llm_config(model='gpt-4o')
注意:每次切换都要重建LLM客户端实例,不能只改model字段——LiteLLM客户端内部缓存了model-specific的tokenizer和endpoint,直接赋值会导致token计数错乱或请求失败。
此技能为 OpenClaw 安装并配置 Tablestore Mem0 插件。Tablestore Mem0使用阿里云表格存储作为向量存储后端。
重构LLM调用层以支持运行时模型选择
第一步:将原始单例LLM对象拆分为工厂函数
把原来全局初始化的self.llm替换为self._llm_factory,该函数接收task_type字符串并返回对应LLM实例。
第二步:在Action生成前解析意图
利用state.history中最近3条Observation + 当前Action描述文本,用轻量正则匹配任务类型:匹配run→bash、browse→web、write→code、read→debug。
第三步:调用工厂函数获取对应模型客户端
self.llm = self._llm_factory(task_type='bash')
这一步必须在AgentController分发Action之前完成,否则Runtime执行时会沿用旧模型生成的错误指令。

















