Cline SDK 模型提供商指南:@cline/llms 的 Gateway、Provider Registry 与成本追踪实战

发布时间:2026/11/2 20:35:12

Cline SDK 模型提供商指南:@cline/llms 的 Gateway、Provider Registry 与成本追踪实战 Cline SDK 模型提供商指南cline/llms 的 Gateway、Provider Registry 与成本追踪实战【免费下载链接】clineAutonomous coding agent as an SDK, IDE extension, or CLI assistant.项目地址: https://gitcode.com/GitHub_Trending/cl/cline本文基于 Cline SDK 官方技能文档 providers/REFERENCE.md系统讲解如何通过cline/llms在 Cline SDK 中接入 Anthropic、OpenAI、Gemini、Vertex AI、AWS Bedrock、Mistral 及任意 OpenAI 兼容服务包括 Agent 与 ClineCore 两种配置入口、各提供商的专属参数、自定义 Base URL 与请求头以及面向多提供商场景的 Gateway API、Provider Registry 编程接口和按请求粒度的成本追踪。读完本篇你可以独立完成从单一 API Key 接入到多提供商网关 自定义 Provider 注册的完整落地并理解 Gateway 内部的模型解析与 token 上限计算逻辑。支持的提供商Cline SDK 通过cline/llms包开箱支持所有主流 LLM 提供商。官方参考文档中列出的支持清单如下Provider ID模型anthropicClaude Opus 4.7, Sonnet 4.6, Haiku 4.5openaiGPT-5.5, GPT-5.3 CodexgeminiGemini 3.1 Pro Preview, Gemini 3 Flash PreviewvertexGoogle models via Vertex AIbedrockClaude, Llama via AWS BedrockmistralMistral Large, Codestralopenai-compatiblevLLM, Together, Fireworks, Groq, etc.从源码结构看这些内置提供商并非硬编码在 Gateway 中而是由 builtins.ts 汇总的BUILTIN_PROVIDER_REGISTRATIONS注册到 Gateway 的 Registry 中DefaultGateway构造时默认加载全部内置提供商也可以通过配置裁剪详见后文 Gateway 小节。此外源码中还维护了提供商 ID 的规范化逻辑如大小写与别名归一和 OpenAI Codex 模型过滤等细节说明实际可用模型集合会随生成目录catalog动态更新。基本配置方式一配合 Agent 使用最简单的接入方式是直接给Agent传入提供商三元组providerId/modelId/apiKeyimport { Agent } from cline/sdk const agent new Agent({ providerId: anthropic, modelId: claude-sonnet-4-6, apiKey: process.env.ANTHROPIC_API_KEY, systemPrompt: You are a helpful assistant., tools: [], })方式二配合 ClineCore 使用ClineCore 是面向完整智能体循环的运行时入口提供商配置通过start()的config字段传入import { ClineCore } from cline/sdk const cline await ClineCore.create({ clientName: my-app }) await cline.start({ prompt: Hello, config: { providerId: anthropic, modelId: claude-sonnet-4-6, apiKey: process.env.ANTHROPIC_API_KEY, }, })两种入口最终都会走cline/llms的 Handler 工厂createHandler(config)会先对providerId做规范化然后查询工厂注册表中是否存在已注册的自定义 Handler未命中时回落到createGatewayApiHandler走统一的 Gateway 通道见 providers.ts。这意味着你注册的自定义 Handler 优先级高于内置 Gateway 实现是扩展提供商时的两条路径之一。各提供商专属配置以下配置块来自官方参考文档可直接作为Agent构造参数或ClineCore.start()的config使用。Anthropic{ providerId: anthropic, modelId: claude-opus-4-7, // or claude-sonnet-4-6, claude-haiku-4-5 apiKey: process.env.ANTHROPIC_API_KEY, }OpenAI{ providerId: openai, modelId: gpt-5.5, apiKey: process.env.OPENAI_API_KEY, }Google (Gemini){ providerId: gemini, modelId: gemini-3.1-pro-preview, apiKey: process.env.GOOGLE_API_KEY, }Google (Vertex AI){ providerId: vertex, modelId: gemini-3.1-pro-preview, // Uses application default credentials or service account }Vertex 不要求传apiKey走 Google 应用默认凭据或服务账号机制。AWS Bedrock{ providerId: bedrock, modelId: anthropic.claude-sonnet-4-6, // Uses AWS credential chain (env vars, config file, IAM role) // Set AWS_REGION, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY }Bedrock 走 AWS 标准凭据链环境变量、配置文件或 IAM Role。注意 Bedrock 的模型 ID 使用厂商前缀格式anthropic.claude-sonnet-4-6与直接调用 Anthropic API 时的裸模型 ID 不同。Mistral{ providerId: mistral, modelId: mistral-large-latest, apiKey: process.env.MISTRAL_API_KEY, }OpenAI-Compatible兼容端点任何提供 OpenAI 兼容 API 的服务都可以通过openai-compatible接入关键是多传一个baseUrl{ providerId: openai-compatible, modelId: my-model, apiKey: process.env.API_KEY, baseUrl: https://api.together.xyz/v1, }官方文档明确列出该模式适用于 vLLM、Together AI、Fireworks、Groq、Ollama、LiteLLM 等。从源码看本地部署场景还有一个实用细节针对 OllamaSDK 内置了OLLAMA_DEFAULT_CONTEXT_WINDOW 32768的默认上下文窗口常量见 builtins.ts因为 Ollama 服务端 4096 的默认值装不下智能体类长提示该常量是 vendor、VS Code 会话工厂与设置 UI 共享的单一事实来源。自定义 Base URL任意提供商都可以通过baseUrl覆盖 API 端点适合走企业代理、私有网关或内网推理服务{ providerId: anthropic, modelId: claude-sonnet-4-6, apiKey: process.env.API_KEY, baseUrl: https://my-proxy.example.com/v1, }自定义请求头headers字段可以向所有 API 请求附加额外 HTTP 头常用于网关鉴权、租户标识或追踪字段透传{ providerId: openai, modelId: gpt-5.5, apiKey: process.env.API_KEY, headers: { X-Custom-Header: value, }, }Gateway API多提供商网关对于同时对接多个提供商的进阶场景可以绕过单提供商三元组模式直接使用cline/llms导出的 Gatewayimport { createGateway, DefaultGateway } from cline/llms const gateway createGateway({ providerConfigs: [ { providerId: anthropic, apiKey: process.env.ANTHROPIC_API_KEY }, { providerId: openai, apiKey: process.env.OPENAI_API_KEY }, ], }) // Create a model for a specific provider const model gateway.createAgentModel({ providerId: anthropic, modelId: claude-opus-4-7, }) // Use with Agent const agent new Agent({ model, systemPrompt: ..., tools: [] })createGateway(config?)返回DefaultGateway实例gateway.ts。从源码实现看其构造过程分三步加载内置提供商默认注册全部BUILTIN_PROVIDER_REGISTRATIONS可用config.builtins: false关闭或用 id 白名单裁剪注册自定义 providerconfig.providers中的每一项依次调用registerProvider应用提供商配置config.providerConfigs中的apiKey、baseUrl、headers等通过configureProvider写入 Registrygateway.ts。Gateway 方法一览方法作用gateway.registerProvider(registration)注册自定义提供商gateway.configureProvider(config)更新某个提供商的配置gateway.listProviders()列出可用提供商gateway.listModels(providerId?)列出可用模型gateway.createAgentModel(selection)为 Agent 创建模型句柄gateway.stream(request)原始流式请求返回PromiseAsyncIterableAgentModelEventcreateAgentModel返回的是内部GatewayModelAdapter它实现了AgentModel接口把systemPrompt、messages、tools、temperature、maxTokens、reasoning等请求参数合并后转交给gateway.stream()。在发起流式请求时Gateway 会做两件事值得注意能力校验先检查提供商/模型声明的模态是否支持当前操作providerManifestSupportsModelOperation再过滤模型不支持的modelTools如web_search、image_generation不支持时直接抛错而不是发出无效请求gateway.tsmaxTokens 自动协商resolveGatewayRequestMaxTokens会把用户显式请求值、模型maxOutputTokens上限、上下文窗口剩余空间预留 1024 token 输出余量取最小值未显式指定时默认 32000 token若估算输入 token 已超过上下文窗口则回退为undefined并记录告警日志gateway.ts。这套逻辑解释了为什么你通常不需要手动为每个模型计算maxTokens。Provider Registry编程式查询与注册不依赖 Gateway 实例时cline/llms还暴露了一组基于模块级注册表的函数import { getAllProviders, getProviderIds, getProvider, getModelsForProvider, registerProvider, registerModel, createHandler, } from cline/llms // List all registered providers const providers getAllProviders() // Get models for a provider const models getModelsForProvider(anthropic) // Register a custom provider registerProvider({ id: my-provider, name: My Custom Provider, handler: createHandler({ ... }), })这些函数对应 model-registry.ts 中的实现有两个源码级事实值得补充getAllProviders()、getProvider()、getModelsForProvider()在源码中是async 函数返回Promise实际项目代码中调用时需要awaitregisterProvider(collection)将整个提供商集合含其模型字典写入自定义表registerModel(providerId, modelId, info)则以单模型粒度覆盖/新增元数据自定义注册在查询时优先于内置条目CUSTOM_PROVIDERS与CUSTOM_MODELS覆盖PROVIDER_CACHE见 model-registry.ts。此外还配有unregisterModel、unregisterProvider与resetRegistry用于测试清理。getModelsForProvider还支持filter: chat选项只返回聊天兼容模型。模型元数据通过注册表可查询模型的上下文窗口、价格与能力适合在 UI 中渲染模型选择器或做预算估算import { getModelsForProvider } from cline/llms const models getModelsForProvider(anthropic) for (const model of models) { console.log(${model.id}: context${model.contextWindow}, input$${model.inputPrice}/MTok) }返回的ModelInfo字段还包括maxOutputTokens等能力信息——正是上文 Gateway 自动协商maxTokens时读取的元数据来源二者构成注册元数据 → 运行时请求裁剪的闭环。成本追踪SDK 在三层暴露成本数据覆盖事件流、运行结果、会话累计三种消费场景// Via events agent.subscribe((event) { if (event.type usage-updated) { console.log(Cost: $${event.usage.totalCost?.toFixed(4)}) } }) // Via result const result await agent.run(...) console.log(Total cost: $${result.usage.totalCost?.toFixed(4)}) // Via ClineCore accumulated usage const usage await cline.getAccumulatedUsage(sessionId)其中usage-updated事件由 Agent 运行时在每次模型往返后发出见 agent-runtime.ts 附近的事件发射逻辑而 ClineCore 侧对连续usage-updated事件做了首条事件 delta 等于累计值、后续事件 delta 为增量、总量持续累加的语义处理相关行为有专门的测试覆盖runtime-event-adapter.test.ts。totalCost为可选值价格元数据缺失的模型会返回undefined代码中建议保持文档示例中的?.toFixed(4)防御写法。延伸阅读Agent 参考在 Agent 中使用提供商ClineCore 参考在 ClineCore 中使用提供商Production 参考生产环境的成本控制Gateway 源码 与 Provider 模型注册表源码本文源码级结论的出处【免费下载链接】clineAutonomous coding agent as an SDK, IDE extension, or CLI assistant.项目地址: https://gitcode.com/GitHub_Trending/cl/cline创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/11/2 3:06:19

用PyTorch从零构建GPT:核心组件与工程实践

今天文章的主题是“用 PyTorch 从零构建 GPT”。开头不绕弯子,先从我一次带新人跑代码的真实场景说起,因为那个场景几乎浓缩了所有初学者会遇到的问题。大概是一年前,有个刚入 NLP 方向的同学问我:他想自己写一个 GPT,…

2026/11/2 8:59:10

施君豪20秒50夺冠,200米成绩含金量与短跑技术解析

北京时间 2026 年全国田径锦标赛男子 200 米决赛,施君豪跑出 20.50 秒,刷新个人赛季最佳并夺得冠军,同时在直接对决中战胜了苏炳添。这个成绩放在当下中国男子 200 米整体格局里,属于非常能打的水平。20 秒 50 不只是“破 20 秒 6…

2026/11/2 1:13:30

ITX装机实战总结:5个月折腾避坑指南与散热走线经验

简介:38页PPT围绕城投集团数字化转型整体解决方案展开,面向城投企业管理者、信息化规划人员及数字化转型项目组。方案从背景概述、转型总体规划、数字化体系建设、转型成效到保障措施,系统说明如何运用大数据、物联网、云计算、人工智能等技术…

2026/11/2 20:34:21

DeBERTa-v3-large 解耦注意力与增强掩码解码器深度解析

DeBERTa-v3-large 这个模型名字,很多做 NLP 的朋友都见过,但真正把它拆开看内部结构的人并不多。大多数人停留在“它比 BERT 强、比 RoBERTa 强”这个印象层面,调包跑个分类任务就结束了。可一旦遇到显存吃紧、推理变慢、微调不收敛、长文本效…

2026/11/2 20:34:21

设备巡检智能化转型:破解三大盲区的系统方案

1. 设备巡检的现状与挑战设备巡检作为企业资产管理的重要环节,在工业生产、基础设施维护等领域扮演着关键角色。但现实中,很多企业的巡检工作看似按部就班,实则存在诸多未被察觉的漏洞。我从事设备管理工作十余年,见过太多因巡检盲…

2026/11/2 20:34:21

动态工具编排系统设计:从API集成到智能决策

1. 项目概述:当工具空间开始"呼吸"去年在开发一个智能文档分析系统时,我遇到一个典型困境:明明接入了多个API工具(PDF解析、数据库查询、自然语言处理),但系统运行起来就像个机械拼装的木偶——每…

2026/11/2 20:34:21

国产AI代码工具中文理解实测:优势与避坑指南

先交代个背景:我平时主要在嵌入式和服务端代码里打转,每天大量时间花在看别人写的代码、写中文注释、把产品经理那句“这里要兼容老逻辑”变成实际实现上。半年前还没意识到“中文理解”这件事有多关键,直到某次接一个老项目,注释…

2026/11/2 20:34:21

MindSpore+鲲鹏语音识别系统实战调优指南

1. 为什么这个组合值得单独拆解:MindSpore 鲲鹏不是简单“换平台”,而是重构语音识别的算力信任链我第一次在客户现场看到这套系统跑起来时,心里其实是打鼓的。不是因为模型不熟——Conformer和CTC解码我调过不下二十遍;也不是因…

2026/11/2 20:29:21

Agent记忆不跟工具搬家:分层设计与跨框架迁移实战

1. 当Agent换了工具就"失忆",问题到底出在哪做过Agent开发的人大概率都经历过这种尴尬:花了两周调教好的一个智能体,在某个框架里跑得挺顺,对话上下文记得住、用户偏好拎得清、任务进度跟得上。结果一换框架、一换编排工…

2026/11/2 6:08:01

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/2 6:39:12

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/2 1:04:04

工业级SPI隔离设计:硬件抗扰与信号完整性实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/2 1:04:04

PLFM_RADAR:主动探测数据通道,构建低误报的数据感知系统

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/2 1:04:04

工业SPI隔离设计:MAX14431与STM32F746硬件抗干扰实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/2 6:08:01

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/2 6:39:12

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑