前面几篇,我已经把 EmbedClaw 的整体架构、上手方式、Tool 扩展讲得差不多了。
这一篇我不再重复入门,直接讲最近这次更新里最实际的一件事:

这里先把时间线说清楚,避免误解。
EmbedClaw 最早并不是一开始就支持五家。
最早跑通的,只有 Qwen via DashScope。
直到最近,我才把 DeepSeek / 豆包 / Kimi / 混元 这几组预设一起补进来。
也就是说:
在最早先把 Qwen 跑通之后,我把多模型切换这件事正式补齐了。
现在,EmbedClaw 可以直接切下面这五家国产模型:

这一篇,我就把这件事一次讲清楚:

项目地址:
https://github.com/wireless-tag-com/EmbedClaw
01
为什么这五家我都放进同一条接入链路
主要核心是这些都兼容OpenAI的调用方式。
所以你在仓库里会看到两件事:
-
components/embed_claw/llm/ec_llm.c 默认初始化的是 openai provider
-
components/embed_claw/ec_config_internal.h 里内置了五组模型预设
这意味着,在 EmbedClaw 里切模型,本质上不是重写 Agent,也不是重写 Tool。
真正会变的,通常只有三项:
-
API Key
-
API URL
-
Model
这就是我想要的效果。
模型应该是可替换的,而不是把整个工程绑死在某一家平台上。
02
先说一个最关键的点
前面几篇如果你已经跟着做过,这里我只提醒一句:
真正该改的是 main/ec_config.h,不是组件里的默认配置。
仓库里的 components/embed_claw/ec_config_internal.h 负责提供默认值,你自己的模型切换和密钥覆盖,放到 main/ec_config.h 就够了。
一个最小模板可以直接写成这样:
#define EC_USE_QWEN 1#define EC_USE_DEEPSEEK 0#define EC_USE_DOUBAO 0#define EC_USE_KIMI 0#define EC_USE_HUNYUAN 0#define EC_LLM_API_KEY "YOUR_API_KEY"

如果你想把地址和模型名也一起写死,可以这样写:
#define EC_LLM_PROVIDER_NAME "openai"#define EC_LLM_API_URL "https://your-endpoint/v1/chat/completions"#define EC_LLM_MODEL "your-model-name"#define EC_LLM_API_KEY "YOUR_API_KEY"
切模型,应该是改配置,不应该是拆架构。
03
五款大模型
通义千问
千问是 EmbedClaw 最早就有的那条链路。
它不只是当前默认模型,也是我最早跑通的默认模型。
当前仓库里的默认值是:
#define EC_QWEN_LLM_API_URL "https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions"#define EC_QWEN_LLM_MODEL "qwen-plus"
申请 API Key
-
打开阿里云 Model Studio API Key文档
(https://help.aliyun.com/zh/model-studio/get-api-key)

-
按文档里的入口进入 API-KEY Management
-
登录你的阿里云账号
-
创建一个新的 API Key

-
复制并保存好

配置示例
#define EC_USE_QWEN 1#define EC_USE_DEEPSEEK 0#define EC_USE_DOUBAO 0#define EC_USE_KIMI 0#define EC_USE_HUNYUAN 0#define EC_LLM_API_KEY "YOUR_DASHSCOPE_API_KEY"
DeepSeek
DeepSeek 也是我在仓库里直接做成预设的一组。
当前默认值是:
#define EC_DEEPSEEK_LLM_API_URL "https://api.deepseek.com/v1/chat/completions"#define EC_DEEPSEEK_LLM_MODEL "deepseek-chat"
申请 API Key
-
打开DeepSeek首页(https://deepseek.com/)
-
选择API开放平台

-
创建 API Key

配置示例
#define EC_USE_QWEN 0#define EC_USE_DEEPSEEK 1#define EC_USE_DOUBAO 0#define EC_USE_KIMI 0#define EC_USE_HUNYUAN 0#define EC_LLM_API_KEY "YOUR_DEEPSEEK_API_KEY"
curl https://api.deepseek.com/v1/chat/completions -H "Content-Type: application/json" -H "Authorization: Bearer YOUR_DEEPSEEK_API_KEY" -d '{ "model": "deepseek-chat", "messages": [ { "role": "user", "content":"hello" } ] }'
先把云端接口确认没问题,再回头看设备侧日志,排查会快很多。
豆包
豆包这条线我想多说一句。
我在仓库里也给它做了预设,但豆包的实际接入,最好不要只靠默认值去猜。
因为不同区域、不同控制台入口、不同开通模型,最后拿到的 URL 和 model 可能并不完全一样。
当前仓库默认值是:
#define EC_DOUBAO_LLM_API_URL "https://ark.cn-beijing.volces.com/api/v3/chat/completions"#define EC_DOUBAO_LLM_MODEL "doubao-seed-2-0-pro-260215"
申请 API Key
-
打开豆包API(https://www.volcengine.com/product/doubao)
-
点击开启AI新体验

-
点击 API 接入

-
点击创建

-
完成认证

-
开通模型后复制 URL、model 和 API Key

推荐配置
#define EC_USE_QWEN 0#define EC_USE_DEEPSEEK 0#define EC_USE_DOUBAO 1#define EC_USE_KIMI 0#define EC_USE_HUNYUAN 0#define EC_LLM_API_KEY "YOUR_DOUBAO_API_KEY"#define EC_LLM_API_URL "控制台给你的 URL"#define EC_LLM_MODEL "控制台给你的 model"
这样最稳。
Kimi
Kimi 这边的接入也已经内置好了。
当前默认值是:
#define EC_KIMI_LLM_API_URL "https://api.moonshot.cn/v1/chat/completions"#define EC_KIMI_LLM_MODEL "kimi-k2.5"
这条线的思路和前面一样,切换成本非常低。
申请 API Key
-
打开Kimi开放平台(https://platform.moonshot.cn/)
-
点击开始构造

-
选择API Key管理,并创建 API Key

-
输入 API 名称,选择 default 项目

-
复制 API Key

配置示例
#define EC_USE_QWEN 0#define EC_USE_DEEPSEEK 0#define EC_USE_DOUBAO 0#define EC_USE_KIMI 1#define EC_USE_HUNYUAN 0#define EC_LLM_API_KEY "YOUR_KIMI_API_KEY"
如果你后面想换成 Kimi 的其它具体模型,也一样,显式覆盖 EC_LLM_MODEL 就行。
腾讯混元
很多人更熟悉“腾讯元宝”这个名字。
但对开发者来说,真正对应的接入能力其实是“腾讯混元”API。
元宝是产品,混元是底层模型。
当前仓库默认值是:
#define EC_HUNYUAN_LLM_API_URL "https://api.hunyuan.cloud.tencent.com/v1/chat/completions"#define EC_HUNYUAN_LLM_MODEL "hunyuan-turbos-latest"
申请 API Key
-
打开腾讯混元大模型
-
创建API key(https://console.cloud.tencent.com/hunyuan/start)

-
点击查看,然后复制 API Key 即可

配置示例
#define EC_USE_QWEN 0#define EC_USE_DEEPSEEK 0#define EC_USE_DOUBAO 0#define EC_USE_KIMI 0#define EC_USE_HUNYUAN 1#define EC_LLM_API_KEY "YOUR_HUNYUAN_API_KEY"
如果腾讯云控制台给了你明确模型名,那就把 EC_LLM_MODEL 一起写上,不用依赖默认值。
04
最后给一份通用模板
如果你只是想先把其中一家跑起来,那下面这份 main/ec_config.h 模板可以直接改:
#define EC_USE_QWEN 0#define EC_USE_DEEPSEEK 0#define EC_USE_DOUBAO 0#define EC_USE_KIMI 0#define EC_USE_HUNYUAN 1#define EC_LLM_PROVIDER_NAME "openai"#define EC_LLM_API_KEY "YOUR_API_KEY"/* 平台如果给了明确 URL 和 model,建议直接写 *//* #define EC_LLM_API_URL "https://your-endpoint/v1/chat/completions" *//* #define EC_LLM_MODEL "your-model-name" *//* 可选 *//* #define EC_SECRET_SEARCH_KEY "YOUR_TAVILY_API_KEY" *//* #define EC_SECRET_FEISHU_APP_ID "YOUR_FEISHU_APP_ID" *//* #define EC_SECRET_FEISHU_APP_SECRET "YOUR_FEISHU_APP_SECRET" */
你把其中一家打开,把 Key 填进去,基本就能开始测。
05
写在最后
这次之所以能比较快地把这五家补进来,一个很现实的原因就是:
它们本身都能走 OpenAI-Compatible 这条调用链路。
如果你手上还有自己常用、也支持 OpenAI-Compatible 调用的大模型,欢迎继续往里加。
希望大家可以多多的参与进来,改造EmbedClaw。

