Cherry Studio对接OpenClaw实操资料(含配置+启动+成本控制)
Cherry Studio对接OpenClaw实操资料(含配置+启动+成本控制) 本文档聚焦Cherry Studio与OpenClaw的完整对接流程,整合环境准备、配置步骤、启动排查、模型适配及Token成本控制核心要点,全程贴合开发者实际操作场景,所有代码示例、配置片段可直接复制使用,兼顾新手入门与进阶避坑,助力快速实现两者联动,高效调用第三方模型。 适配环境:Windows/Mac/Linux、Cherry Studio v1.2.0+、OpenClaw最新稳定版,文档内容同步结合OpenClaw Token省流技巧,规避“会话累积导致成本暴涨”的常见问题。 Cherry Studio 作为统一AI接口入口,可通过自定义提供商功能对接OpenClaw,实现“一次集成,多模型复用”——无需单独适配OpenClaw的接口规范,即可通过Cherry Studio的标准化API,调用OpenClaw中配置的各类第三方模型(如Claude Opus 4.5、GLM-4.7等),同时借助Cherry Studio的会话管理、流式响应等功能,提升开发效率。 提前收集以下信息,避免配置时反复查找: 对接流程分为3步:OpenClaw配置优化 → Cherry Studio自定义提供商配置 → 联调测试,每一步均提供可复制的配置示例,规避常见错误。 修改OpenClaw的config.json配置文件,适配Cherry Studio对接,同时优化Token成本控制(结合上传的省流指南),核心配置如下(替换占位符为实际信息): Cherry Studio需通过自定义提供商集成OpenClaw,配置分为2部分:config.yaml配置 + 自定义提供商代码,均贴合Cherry Studio API手册扩展功能章节。 创建自定义提供商文件(如openclaw-provider.js),放在Cherry Studio安装目录的providers文件夹下,代码示例如下(可直接复制使用): 完成配置后,按以下顺序启动服务,逐步测试对接是否成功,避免因启动顺序错误导致失败。 通过Cherry Studio的API调用OpenClaw中的模型,测试对接是否成功,同时验证Token消耗是否正常: 结合之前遇到的启动失败、配置错误、Token暴涨等问题,整理高频故障及解决方案,快速定位问题。 结合上传的OpenClaw省流指南,补充适配Cherry Studio对接场景的成本控制技巧,进一步降低Token消耗。 整合以上所有配置,提供可直接复制的完整配置片段,替换占位符即可快速完成对接与优化。 Cherry Studio对接OpenClaw的核心是“自定义提供商+配置互通”,关键避坑点在于OpenClaw模型ID规范、MCP服务依赖、跨域配置,而成本控制的核心是“会话重置+缓存压缩+按需选模型”。 本文档整合了对接全流程、常见故障、成本优化等核心内容,所有代码和配置均可直接复制使用,兼顾新手入门与进阶需求。对接成功后,可充分发挥Cherry Studio的统一接口优势和OpenClaw的多模型适配能力,同时通过省流策略,实现“高效开发+低成本使用”的双重目标。 后续若遇到版本更新、模型适配等问题,可参考Cherry Studio官方项目仓库和OpenClaw官方文档,或通过Cherry Studio技术支持渠道反馈。 本文由mdnice多平台发布Cherry Studio对接OpenClaw实操资料(含配置+启动+成本控制)
一、对接核心概述
1.1 对接意义
1.2 核心前提(必做)
二、前期准备(3步到位)
2.1 环境检查与依赖安装
2.1.1 基础依赖
pip install uvx)。2.1.2 核心依赖安装(终端执行)
# 安装Cherry Studio对接OpenClaw所需依赖
npm install @ai-sdk/openai-compatible
# 安装OpenClaw常用插件(贴合常见配置)
npm install oh-my-opencode@3.1.10 opencode-pty opencode-supermemory@latest
2.2 关键信息收集
2.3 版本兼容性检查
三、完整对接配置步骤(核心环节)
3.1 第一步:OpenClaw配置优化(关键避坑)
{
"$schema": "https://opencode.ai/config.json",
"plugin": [
"oh-my-opencode@3.1.10",
"opencode-pty",
"opencode-supermemory@latest",
"opencode-browser"
],
"disabled_providers": [],
"provider": {
"cherry": { // Cherry Studio对接专属配置节点
"baseUrl": "http://127.0.0.1:8080/api/v1", // Cherry Studio服务地址(含端口)
"apiKey": "your-cherry-api-key", // Cherry Studio启动时设置的API密钥
"api": "openai-completions",
"models": [ // 模型配置(重点:ID不支持冒号,替换为下划线)
{
"id": "30182ea9-dad7-437c-aa6e-2f5c8c823174_xopglm5", // 冒号替换为下划线
"name": "xunfeixincheng/xopglm5",
"reasoning": false,
"input": ["text"],
"cost": {
"input": 0,
"output": 0,
"cacheRead": 0,
"cacheWrite": 0
},
"contextWindow": 200000,
"maxTokens": 8192
}
]
},
"modelscope": { // 其他第三方模型配置(可选)
"name": "ModelScope",
"npm": "@ai-sdk/openai-compatible",
"models": {
"ZhipuAI/GLM-4.7": {
"name": "GLM-4.7"
}
},
"options": {
"apiKey": "your-modelscope-api-key",
"baseURL": "https://api-inference.modelscope.cn/v1"
}
}
},
"mcp": { // 临时禁用不必要的MCP服务,避免启动失败(可后续按需启用)
"chrome-devtools": { "type": "local", "command": ["npx", "-y", "chrome-devtools-mcp@latest"], "enabled": false },
"context7": { "type": "local", "command": ["cmd", "/c", "npx", "-y", "@upstash/context7-mcp"], "enabled": false },
"fetch": { "type": "local", "command": ["uvx", "mcp-server-fetch"], "enabled": false },
"memory": { "type": "local", "command": ["cmd", "/c", "npx", "-y", "@modelcontextprotocol/server-memory"], "enabled": false }
},
"compaction": { "auto": true }, // 自动压缩会话,控制Token消耗
"session": { // 自动重置会话,从根源省成本(核心配置)
"reset": { "dailyTime": "04:00", "idleMinutes": 60 }
},
"cache": { "ttl": "1h", "pruneOnExpiry": true } // 缓存优化,减少重复Token消耗
}
关键配置说明(避坑重点)
3.2 第二步:Cherry Studio配置(自定义提供商)
3.2.1 Cherry Studio config.yaml配置(修改安装目录下的config.yaml)
# config.yaml 核心配置(新增OpenClaw自定义提供商)
api:
port: 8080 # 与OpenClaw配置中的baseUrl端口一致
cors_origins: ["http://127.0.0.1:23333"] # 允许OpenClaw地址跨域(替换为OpenClaw实际地址)
rate_limit: 1000
providers:
deepseek: # 原有提供商保留
api_key: ${DEEPSEEK_API_KEY}
base_url: "https://api.deepseek.com"
anthropic: # 原有提供商保留
api_key: ${ANTHROPIC_API_KEY}
openclaw: # 新增OpenClaw自定义提供商节点
api_key: ${OPENCLAW_API_KEY} # OpenClaw的API密钥(可选,按需配置)
base_url: "http://127.0.0.1:23333/api/v1" # OpenClaw基础地址(与OpenClaw config.json一致)
logging:
level: "info"
file: "cherry-studio.log"
3.2.2 自定义提供商代码(对接OpenClaw)
// OpenClaw自定义提供商,适配Cherry Studio标准化API
class OpenClawProvider {
constructor(config) {
this.config = config; // 读取Cherry Studio config.yaml中的openclaw节点配置
this.baseUrl = config.base_url; // OpenClaw基础地址
this.apiKey = config.api_key; // OpenClaw API密钥
// 模型ID映射(若OpenClaw模型ID有特殊字符,可在此做映射)
this.idMap = {
"30182ea9-dad7-437c-aa6e-2f5c8c823174_xopglm5": "30182ea9-dad7-437c-aa6e-2f5c8c823174_xopglm5"
};
}
// 核心方法:实现聊天补全接口,对接OpenClaw
async chatCompletions(params) {
// 替换模型ID(适配OpenClaw ID规范)
const modelId = this.idMap[params.model] || params.model;
// 构造OpenClaw请求参数(贴合OpenClaw接口规范)
const requestParams = {
model: modelId,
messages: params.messages,
temperature: params.temperature || 0.2, // 默认0.2,减少重试,控制Token
max_tokens: params.max_tokens || 8192,
stream: params.stream || false
};
// 发送请求到OpenClaw
const response = await fetch(`${this.baseUrl}/chat/completions`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${this.apiKey}` // 认证信息
},
body: JSON.stringify(requestParams)
});
// 返回响应(适配Cherry Studio标准化响应格式)
if (params.stream) {
return response.body; // 流式响应,直接返回
} else {
const result = await response.json();
return {
id: result.id || `chatcmpl-${Date.now()}`,
object: "chat.completion",
created: Date.now() / 1000 | 0,
model: modelId,
choices: result.choices || [],
usage: result.usage || { prompt_tokens: 0, completion_tokens: 0, total_tokens: 0 }
};
}
}
}
// 注册自定义提供商到Cherry Studio
module.exports = {
register: (cherryStudio) => {
cherryStudio.registerProvider('openclaw', OpenClawProvider);
}
};
3.3 第三步:启动服务与联调测试
3.3.1 启动顺序(必按此顺序)
cherry-studio start --port 8080 --api-key your-cherry-api-key
3.3.2 联调测试(JavaScript示例,可直接复制)
// 测试Cherry Studio对接OpenClaw
const API_BASE = 'http://localhost:8080/api/v1';
const CHERRY_API_KEY = 'your-cherry-api-key'; // Cherry Studio API密钥
async function testOpenClawChat() {
try {
const response = await fetch(`${API_BASE}/chat/completions`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${CHERRY_API_KEY}`
},
body: JSON.stringify({
provider: 'openclaw', // 指定调用OpenClaw自定义提供商
model: '30182ea9-dad7-437c-aa6e-2f5c8c823174_xopglm5', // OpenClaw模型ID(替换后)
messages: [{ role: 'user', content: '测试Cherry Studio对接OpenClaw,返回1句话即可' }],
temperature: 0.2,
stream: false
})
});
const result = await response.json();
console.log('对接成功,AI响应:', result.choices[0].message.content);
console.log('Token消耗:', result.usage);
} catch (error) {
console.error('对接失败,错误信息:', error.message);
}
}
// 执行测试
testOpenClawChat();
测试成功标准
四、常见问题排查(避坑重点)
4.1 故障1:OpenClaw无法启动
常见原因
解决方案
4.2 故障2:Cherry Studio无法调用OpenClaw模型(返回404/503)
常见原因
解决方案
4.3 故障3:Token消耗过快(类似两小时烧光100美元)
常见原因
解决方案
4.4 故障4:对接成功但响应缓慢
解决方案
五、Token成本控制进阶策略(补充上传文档核心要点)
5.1 会话管理(核心省流)
5.2 模型与参数优化
5.3 实时监控与预警
/status # 查看会话状态、当前Token使用量
/usage full # 查看详细用量记录
/usage cost # 查看成本统计
六、完整配置抄作业(直接复制使用)
6.1 OpenClaw config.json(核心片段)
{
"provider": {
"cherry": {
"baseUrl": "http://127.0.0.1:8080/api/v1",
"apiKey": "your-cherry-api-key",
"api": "openai-completions",
"models": [
{
"id": "30182ea9-dad7-437c-aa6e-2f5c8c823174_xopglm5",
"name": "xunfeixincheng/xopglm5",
"reasoning": false,
"input": ["text"],
"cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
"contextWindow": 200000,
"maxTokens": 8192
}
]
}
},
"mcp": {
"chrome-devtools": { "enabled": false },
"context7": { "enabled": false },
"fetch": { "enabled": false },
"memory": { "enabled": false }
},
"compaction": { "auto": true },
"session": { "reset": { "dailyTime": "04:00", "idleMinutes": 60 } },
"cache": { "ttl": "1h", "pruneOnExpiry": true }
}
6.2 Cherry Studio config.yaml(核心片段)
api:
port: 8080
cors_origins: ["http://127.0.0.1:23333"]
providers:
openclaw:
api_key: "your-openclaw-api-key"
base_url: "http://127.0.0.1:23333/api/v1"
七、总结