一、MTClaw 是什么?
MTClaw(OpenClaw Function Router) 是摩尔线程 2026-05-18 开源的本地工具路由代理,定位是一个 OpenAI-compatible 的 Provider Proxy。任何能配置 OpenAI base_url 的客户端(OpenClaw、Hermes、OpenCode、IDE、评测系统)都可以把 MTClaw 作为 LLM Provider 接入。仓库:MooreThreads/MTClaw。
它解决一个具体的工程问题:当智能体反复在做高频垂类动作(系统控制、文件操作、API 查询、企业内部流程)时,每一次都让大模型推理一遍是浪费的。MTClaw 在请求转发到上游 LLM 之前,先用一个本地小模型 + 工具路由判断"这个请求能不能直接走工具执行",命中工具就走快路径,没命中再透明转发到上游。
二、官方 benchmark:6.85x 加速
官方在 50 个 OpenClaw 桌面控制任务上做了 A/B(每任务 4 次重复,OpenClaw + Doubao 作为 baseline):
| 模式 | 上游模型 / 路由模型 | Pass@1 | 平均耗时 | 加速比 |
|---|---|---|---|---|
| OpenClaw + Doubao(baseline) | doubao-seed-2-0-pro-260215 | 99.0% | 37.97s | 1.00x |
| + Function Router permissive | 上:Doubao / 路由:qwen3-30b-a3b-instruct-2507 (w/o thinking) | 95.5% | 5.54s | 6.85x |
| + Function Router strict | 上:Doubao / 路由:同上 | 100.0% | 7.61s | 4.99x |
两种模式的差别在于路由置信度阈值:permissive 在路由模型给出最高加速时直接走工具路径;strict 在置信度不足时回退到上游 LLM,保证 100% Pass@1。
三、架构与组件
MTClaw 内部由四个 subagent 组成:
find / ls / cat / grep / sleep)与用户自定义 wrapper 脚本的执行器。四、安装与最小配置
MTClaw 通过 pip 安装,配套提供 install 脚本一次性配置好两个 endpoint:
git clone https://github.com/MooreThreads/MTClaw.git
cd MTClaw
pip install .
# 引导式安装:会问你 routing 与 upstream 两套 endpoint
./scripts/install.sh
install 脚本要你填的 8 个配置项:
| 配置项 | 含义 | 示例 |
|---|---|---|
| Routing model base URL | OpenAI 兼容路由 endpoint(必须支持 tool calling) | https://api.example.com/v1 |
| Routing model name | 路由模型名 | qwen3-30b-a3b-instruct-2507 |
| Routing model API key | 路由 endpoint 的 key | ${ROUTING_API_KEY} |
| Upstream base URL | 上游 LLM endpoint | https://api.openai.com/v1 |
| Upstream API key | 上游 key | sk-... |
| Upstream model name | 上游模型名 | gpt-4o |
| Tools base directory | wrapper 脚本根目录 | /home/mt/tools |
| OpenClaw config path | 注册 function_router 的 openclaw.json 路径 | ~/.openclaw/openclaw.json |
启动 / 重启 router:
./scripts/restart.sh # 单独重启 Function Router
./restart_all.sh # 重启完整服务栈(Router + OpenClaw Gateway,按依赖顺序)
五、新增一个自定义工具:天气查询
MTClaw 的核心使用方式是"把高频垂类做成本地工具"。一个 wrapper 脚本只需要做三件事:从 stdin 读 JSON,往 stdout 写 JSON,用 exit code 表示成功。
5.1 定义函数:functions.jsonl
{
"name": "get_weather",
"description": "查询某个城市的当前天气",
"parameters": {
"type": "object",
"properties": {
"city": { "type": "string", "description": "城市名,例如 北京、上海" }
},
"required": ["city"]
}
}
5.2 写 wrapper:scripts/get_weather.sh
函数名必须和脚本文件名一致:get_weather → ~/.function-router/scripts/get_weather.sh。
#!/usr/bin/env bash
set -euo pipefail
# 读 stdin JSON
INPUT=$(cat)
CITY=$(echo "$INPUT" | jq -r '.city')
# 调用一个公共天气 API(示例)
RESP=$(curl -s "https://wttr.in/${CITY}?format=j1")
# 输出 JSON 到 stdout
echo "$RESP" | jq '{city: "'"$CITY"'", temp_c: .current_condition[0].temp_C, desc: .current_condition[0].weatherDesc[0].value}'
5.3 重启生效
chmod +x ~/.function-router/scripts/get_weather.sh
./scripts/restart.sh
六、把现有 Skill 一键转成 Function Router 工具
2026-05-21 合入主线的 PR #2 引入了 skill-to-fc converter:如果你已经有一份 script-backed skill(例如本课时所属的「摩尔线程教程网站」就是个例子),可以直接调用内置的 skill-to-fc skill 把它转成 Function Router 兼容的工具配置。
# 在你已有的 skill 目录下运行:
skill-to-fc convert ./my_skill --output ~/.function-router/
# 它会自动产出:
# functions.jsonl 条目
# scripts/.sh wrapper
# 并安装到 ~/.function-router/
./scripts/restart.sh
详细参数说明见仓库的 docs/skill-to-fc.md。
七、和 MUSA 软件栈的关系
MTClaw 本身是 Python,跟 GPU 没有直接绑定。但它在摩尔线程的故事里非常重要,原因是:
- MTT AIBOOK 上的「龙虾」智能体(OpenClaw)就是用 MTClaw 做工具加速——本地路由模型 Qwen3-30B-A3B 跑在 MTT GPU 上,本质上把"端侧 GPU + 工具路由"做成了一个完整的 Agent 产品。
- 小麦智能体的 90+ 工具调用接口底层也用了 MTClaw 的 Function Router 模式。
- 路由模型本身可以是任何能跑 tool calling 的 OpenAI 兼容模型——你可以把它接到 vLLM-MUSA 或 SGLang-MUSA 部署的本地服务上,全栈跑在国产 GPU。
八、生产环境最佳实践
googs1025/feat/configurable-routing-timeout)。超时会先自动重试一次再回退上游,避免单次抖动导致整条请求走完整大模型。function_router(OpenClaw 2026.5.18 起按字面 id 解析),否则 session 隔离会失效(详见仓库 commit f942782)。