news 2026/9/10 2:59:05

OpenClaw Baseten Provider 插件实战:接入 Inkling 与 Baseten 托管模型 API

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
OpenClaw Baseten Provider 插件实战:接入 Inkling 与 Baseten 托管模型 API

OpenClaw Baseten Provider 插件实战:接入 Inkling 与 Baseten 托管模型 API

【免费下载链接】openclawThe AI that really does things. Any OS. Any Platform. The lobster way. 🦞项目地址: https://gitcode.com/GitHub_Trending/cl/openclaw

本篇围绕 OpenClaw 官方的 Baseten Provider 插件展开:先讲清它"是什么、装什么、配什么",再结合插件源码剖析模型目录的实时发现与离线回退机制、按模型定制的 thinking(推理力度)控制实现,以及流式请求载荷的补丁逻辑。读完后你可以独立完成@openclaw/baseten-provider的安装与配置,并理解它如何在"认证发现成功/失败"两种状态下保持模型选择可用。

插件定位与基本属性

插件的 README(extensions/baseten/README.md)一句话定义了它的身份:Official OpenClaw provider plugin for Baseten Model APIs, including Thinking Machines Lab's Inkling—— 即把 Baseten 托管的 OpenAI 兼容 Model APIs(含 Thinking Machines Lab 的 Inkling 模型)作为一个标准 provider 接入 OpenClaw。

结合插件清单 openclaw.plugin.json 与 package.json,关键属性如下:

属性
Provider idbaseten
npm 包名@openclaw/baseten-provider
安装来源npm 或 ClawHub(clawhub:@openclaw/baseten-provider),默认走 npm
认证环境变量BASETEN_API_KEY
Onboarding 选项--auth-choice baseten-api-key
直接 CLI 参数--baseten-api-key <key>
API 协议OpenAI 兼容(openai-completions),支持流式 usage 上报
Base URLhttps://inference.baseten.co/v1
默认模型thinkingmachines/inkling(完整 ref:baseten/thinkingmachines/inkling
插件激活activation.onStartup: falseenabledByDefault: true,即默认启用但不随网关启动即加载
版本约束当前包版本2026.9.3,要求宿主minHostVersion: >=2026.7.2pluginApi: >=2026.9.3

从源码结构看,插件入口 index.ts 通过defineSingleProviderPluginEntry组装了四个核心部件:catalog(模型目录)、resolveDynamicModel(未知模型的动态解析)、wrapStreamFn(请求载荷补丁)、resolveThinkingProfile(thinking 等级),以及由buildProviderReplayFamilyHooks生成的历史回放钩子(family: "openai-compatible"dropReasoningFromHistory: false),分别对应后文的几个小节。

安装插件

README 给出的安装方式就是全部核心操作:

openclaw plugins install @openclaw/baseten-provider openclaw gateway restart

安装后必须重启 gateway 才会加载新插件。插件的自动加载配置在清单的activation字段中:onStartup: false意味着它不会在网关启动瞬间强制加载,而是按 provider 需求惰性激活;enabledByDefault: true保证安装后无需额外开关。

认证与 Onboarding

Baseten 的 Basic 计划无月费,Model API 调用按用量计费;在 Baseten 控制台的 API key 设置页(app.baseten.co/settings/api_keys)创建密钥后即可接入。OpenClaw 提供了三种等价的认证配置路径(详见 docs/providers/baseten.md):

# 方式一:交互式 onboarding openclaw onboard --auth-choice baseten-api-key # 方式二:非交互式,直接传入密钥 openclaw onboard --non-interactive --accept-risk --skip-health \ --auth-choice baseten-api-key \ --baseten-api-key "$BASETEN_API_KEY" # 方式三:仅设置环境变量 export BASETEN_API_KEY=...

Onboarding 的行为由 onboard.ts 实现。它基于createModelCatalogPresetAppliers构造了两个应用函数:

  • applyBasetenConfig:写入 Baseten provider 完整预设 ——providerId: "baseten"api: "openai-completions"baseUrl: https://inference.baseten.co/v1、完整静态模型目录,并注册别名Inkling指向默认模型 ref;
  • applyBasetenSetupConfig:认证应用路径,只有当用户显式配置了models.mode: "replace"时才附带内置目录,否则不复制目录到配置(因为 replace 模式禁用了隐式发现,需要目录兜底)。

换言之,onboarding 只保存连接设置,不会把生成的模型目录灌进你的配置,已有的 model 行保持不变——后续模型列表以实时发现结果为准。

模型目录:实时发现与离线回退

这是插件设计中最有含金量的一环,核心逻辑在 index.ts 的catalog.run

  1. 先通过ctx.resolveProviderAuth("baseten")解析apiKeydiscoveryApiKey
  2. 无可用密钥:返回buildStaticBasetenProvider()静态目录(离线模式);
  3. 有可用密钥:调用buildOpenAICompatibleLiveProviderCatalog,以discoveryMode: "strict"请求 Baseten 的GET /v1/models,发现超时10_000ms、结果 TTL5 * 60 * 1000ms(5 分钟缓存),并用projectBasetenLiveModels把返回行投影成 OpenClaw 模型行。

投影规则定义在 models.ts 的projectLiveModel中,值得逐条理解:

  • 丢弃object !== "model"或缺少id的行;按id去重;
  • context_length/max_completion_tokensreadPositiveInteger校验(必须是安全整数且 > 0),无效时回退到静态目录值,再回退到默认值DEFAULT_CONTEXT_WINDOW = 128_000DEFAULT_MAX_TOKENS = 8_192
  • pricing.prompt/pricing.completion/pricing.input_cache_readreadPerTokenPrice换算成每百万 token 价格* 1_000_000并保留 9 位小数),取不到时回退静态目录价;
  • 若响应带supported_features数组,则据vision决定输入模态(["text","image"]["text"])、据reasoning/reasoning_effort决定推理能力标记;否则沿用静态目录的 fallback 值。

这意味着:Baseten 独立于 OpenClaw 发布节奏增删改模型时,插件会刷新模型 id、上下文/输出上限、输入模态与计价,同时保留模型级的传输策略applyLiveReasoningEffortCompat只调整supportsReasoningEffort相关字段)。

当前清单中内置的静态回退目录(openclaw.plugin.json 的modelCatalog.providers.baseten.models)包含 9 个模型:

模型 id名称输入上下文最大输出推理
deepseek-ai/DeepSeek-V4-ProDeepSeek V4 Protext262k262k
zai-org/GLM-4.7GLM 4.7text200k200k
zai-org/GLM-5.2GLM 5.2text524k262k
zai-org/GLM-5.2-FastGLM 5.2 Fasttext524k262k
thinkingmachines/inklingInklingtext, image1.048M32k
moonshotai/Kimi-K2.6Kimi K2.6text, image262k262k
moonshotai/Kimi-K2.7-CodeKimi K2.7 Codetext, image262k262k
nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55BNemotron Ultratext202k202k
openai/gpt-oss-120bGPT OSS 120Btext128k128k

官方文档 docs/providers/baseten.md 的"Bundled fallback catalog"表格还列出了zai-org/GLM-5zai-org/GLM-5.1moonshotai/Kimi-K2.5nvidia/Nemotron-120B-A12B等历史版本条目,说明静态目录随版本演进会有增减;以认证后实时目录为权威。

此外还有一个前向兼容设计:resolveBasetenDynamicModel(models.ts)允许使用尚不在内置目录中的模型 id—— 只要 id 不在静态目录里,就按openai-completions+ Baseten Base URL 构造一个默认 128k/8192 的兜底定义,配合isModernModelRef: () => true直接放行。

验证目录是否生效:

openclaw models list --provider baseten

有可用认证时,插件会请求GET /v1/models并列出账户启用的全部模型;无认证则停留在离线回退目录。

Thinking(推理力度)的模型级映射

Baseten 上的模型对"思考开关"的接口并不统一,插件在 models.ts 中按模型 id 分了三类:

  1. Chat-template 思考模型CHAT_TEMPLATE_THINKING_MODEL_IDS):GLM-4.7 / GLM-5.2 / GLM-5.2-Fast、Kimi K2.6 / K2.7-Code、Nemotron-3-Ultra —— 通过 Baseten 的chat_template_args.enable_thinking控制,默认关闭
  2. GLM 5.2 系:额外暴露none / high / max三档,其中adaptive映射到max
  3. 完整 reasoning_effort 模型(DeepSeek-V4-Pro、GPT OSS 120B):支持nonemax全档位;而默认模型Inkling支持none / minimal / low / medium / high / xhigh(无maxadaptive映射到xhigh)。

用户可见的 thinking 等级由 thinking.ts 的resolveBasetenThinkingProfile决定:GLM 5.2 系返回off / high / max三档 profile(默认off),其余 chat-template 思考模型返回二值 profile{ off, low(显示为 "on") }(默认off),其他模型返回undefined(即走 OpenClaw 默认 reasoning_effort 通道)。

请求侧的落地逻辑在 stream.ts 的createBasetenThinkingWrapper,它用createPayloadPatchStreamWrapper在发出请求前打补丁:

  • 仅对provider === "baseten"api === "openai-completions"的模型生效;
  • DeepSeek V4 特例:其推理默认开启,只有显式off才移除必要的回放元数据,因此统一走normalizeOpenAICompatibleReasoningReplaystripAssistantMessagesOnly: truereplaceNullReasoningContent: true);
  • 其他 chat-template 思考模型:在不覆盖调用方已有参数的前提下,把enable_thinking: thinkingLevel !== "off"合并进payload.chat_template_args

配置示例

对 Inkling 的日常使用,最简配置只需指定主模型:

{ agents: { defaults: { model: { primary: "baseten/thinkingmachines/inkling" }, }, }, }

会话内切换模型可用/model baseten/thinkingmachines/inkling -s。Inkling 支持文本+图像输入、工具调用、结构化工具 schema、可配置推理力度,上下文窗口 1.048M token、最大输出 32k token。

若要显式固定 provider(例如锁定 Base URL 或密钥来源),可参考 docs/providers/baseten.md 的 Manual config 写法:

{ env: { vars: { BASETEN_API_KEY: "..." } }, agents: { defaults: { model: { primary: "baseten/thinkingmachines/inkling" }, }, }, models: { mode: "merge", providers: { baseten: { baseUrl: "https://inference.baseten.co/v1", apiKey: "${BASETEN_API_KEY}", api: "openai-completions", models: [ { id: "thinkingmachines/inkling", name: "Inkling", reasoning: true, input: ["text", "image"], contextWindow: 1048000, maxTokens: 32000, }, ], }, }, }, }

注意两点适用前提:其一,models.mode: "replace"会禁用隐式发现,此时 onboarding 会自动附带内置静态目录兜底;其二,若 gateway 以守护进程方式运行(launchd、systemd、Docker),必须保证BASETEN_API_KEY对该进程可见—— 仅在交互 shell 中 export 的密钥对已运行的受管服务不可见。

相关源码与文档索引

内容路径
插件 README(安装入口)extensions/baseten/README.md
插件清单(provider 声明、静态目录、认证选项)extensions/baseten/openclaw.plugin.json
插件入口(catalog 组装、动态模型解析)extensions/baseten/index.ts
模型目录、投影与兼容元数据extensions/baseten/models.ts
thinking 等级 profileextensions/baseten/thinking.ts
请求载荷补丁(enable_thinking / 推理回放)extensions/baseten/stream.ts
Onboarding 配置应用extensions/baseten/onboard.ts
包元信息(版本、分发渠道、宿主约束)extensions/baseten/package.json
官方配置文档(步骤、模型表、手工配置)docs/providers/baseten.md
插件参考页(自动生成)docs/plugins/reference/baseten.md

【免费下载链接】openclawThe AI that really does things. Any OS. Any Platform. The lobster way. 🦞项目地址: https://gitcode.com/GitHub_Trending/cl/openclaw

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/10 2:58:08

Homebrew 安装 cask 报 SHA-256 校验和不匹配怎么处理?

Homebrew 安装 cask 报 SHA-256 校验和不匹配怎么处理&#xff1f; 【免费下载链接】brew &#x1f37a; The Package Manager for Everywhere 项目地址: https://gitcode.com/GitHub_Trending/br/brew 在 macOS 上运行 brew install --cask <cask> 时&#xff0c…

作者头像 李华
网站建设 2026/9/10 2:57:17

MATLAB实现ISAR逆合成孔径雷达成像全流程

简介&#xff1a;本资源是一套面向雷达信号处理初学者与高校相关专业学生的ISAR逆合成孔径雷达成像MATLAB仿真实现方案&#xff0c;聚焦于运动目标成像原理与算法验证。资源包含完整可运行代码、实测数据&#xff08;mig25.mat、B727R.mat&#xff09;及三组典型成像结果图&…

作者头像 李华
网站建设 2026/9/10 2:56:31

YOLOv7+CRNN车牌识别实战:从训练到部署的完整指南

简介&#xff1a;基于YOLOv7加CRNN的车牌检测与中文车牌识别完整项目&#xff0c;专门面向正在进行毕业设计、课程设计或需要项目实战的深度学习视觉图像识别学习者&#xff0c;可用于快速搭建车牌识别系统并完成实验验证。压缩包共192个文件&#xff0c;整体约55.64MB&#xf…

作者头像 李华
网站建设 2026/9/10 2:55:50

UG/NX PRT文件格式详解:高版本转低版本全攻略

做UG/NX这些年&#xff0c;几乎每天都要跟PRT文件打交道。但你要是问一句“PRT到底是个什么东西&#xff0c;为什么高版本转低版本这么折腾”&#xff0c;能说清楚的人其实不多。刚好这几天又被同事问“ug高版本prt如何转低版本prt”&#xff0c;我干脆把PRT文件格式的原理、格…

作者头像 李华
网站建设 2026/9/10 2:55:13

5D动感影院重塑品牌展示:沉浸式体验与情绪记忆的落地指南

前阵子参观一个科技品牌的展厅&#xff0c;展厅里最热闹的角落&#xff0c;不是最新款的旗舰产品&#xff0c;而是一台改造过的5D动感影院设备。戴着3D眼镜的观众坐在动感座椅上&#xff0c;随着画面里产品从生产线到极端环境测试再到用户手中&#xff0c;座椅猛烈震动、迎面喷…

作者头像 李华