ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

QClaw 跑微信远程控制 Skill:Key 用 TaoToken

QClaw 跑微信远程控制 Skill:Key 用 TaoToken 1. 微信遥控 Skill 为什么还要自己管 Key腾讯 QClaw 公测后我用 TaoToken 统一模型 Key官网来跑微信远程控制 Skill。这样写自定义 Skill 时最烦的“每个模型一个 Key”问题终于没了。QClaw是腾讯给OpenClaw做的官方封装相当于把原本要在终端里配环境、改代码、搞微信协议那堆脏活都收走了。装完就能用微信里发指令本地电脑就执行。可一旦进入开发进阶那一步也就是大家常说的“自定义 Skills”你很快会遇到一个文档里没细说的问题QClaw内置模型只是默认值不是唯一值。你想给某个Skill换一个更便宜或者更擅长中文的模型时就得自己去申请对应模型的API Key。一个Skill配一个Key三个Skill就是三份材料光复制粘贴就够烦。1.1 官方外壳省了部署却没省掉模型 Key 管理OpenClaw生态里的Skill不是玩具它和一个完整Agent没有本质区别微信消息进来先由大模型理解意图、提取参数再触发本地命令最后把结果回给微信。这里面的每一步都可能消耗Token而Token从哪来QClaw不管——它只保证内置模型能跑不保证你自定义的每个Skill都能免费用你喜欢的模型。也就是说安装体验从“难用”变成“傻瓜”是官方封装的功劳但“一个Skill要接一个模型Key”的麻烦被原封不动地留给了开发者。你写“远程关机”Skill想用一个响应快的模型写“整理桌面文件”Skill想用一个理解中文更稳的模型最后所有Key都堆在一起连自己都分不清哪把钥匙开哪扇门。1.2 统一 Key 后环境变量只认一套去官网注册后创建一个API Key就能把这堆钥匙收敛成一把。TaoToken提供的是统一API兼容通道它把多家模型接到同一个入口上你只需要记住一套 Base URL 和 Key。Skill里不再写“模型A的地址模型A的Key”“模型B的地址模型B的Key”这种组合环境变量只维护一套换模型时改一个模型ID就行。这样做还有个额外好处容易排查问题。微信那边发一句“关机”如果模型调用失败先看Key有没有配错再看模型ID有没有在模型广场登记过最后才轮得到Skill代码本身。多Key混在一起时光定位是哪个Key失效就能耗掉一个下午。2. 装好 QClaw 并绑定微信遥控链路先跑通在写Skill之前先把最基础的链路打通QClaw能收到微信消息并且能在本地执行简单任务。这样后面排查自定义Skill时至少能确定问题不是出在微信绑定环节。2.1 下载与初始化QClaw已经全量公测不需要邀请码安装包从腾讯电脑管家渠道或官方公测入口都能找到。安装过程和装普通Windows软件差不多第一次启动会自动做环境初始化生成基于Node.js的本地运行环境配置好默认大模型连接再启动一个本地Web控制台地址类似 http://localhost:3000 。这里有两个坑需要提前知道。Windows用户可能遇到UAC弹窗macOS用户需要在系统设置里给“辅助功能”授权。不给权限QClaw没法操作你的文件系统这是正常的。但要注意别把整个磁盘的写权限都交给它更别让QClaw被公网直接访问。建议专门建一个工作目录所有需要触碰的数据都放进去。初始化完成后如果打算马上写自定义Skill我建议顺手去 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 创建一个API Key存到系统环境变量里。这一步对应原文里最容易让人卡住的“申请模型API Key”环节只是现在不用一家一家跑官网了。2.2 绑定微信装好之后在QClaw客户端里找到“绑定微信”扫二维码微信通讯录里就会多出一个“龙虾”好友。到此你人在外面也能通过微信向家里电脑发指令。它也支持QQ绑定对办公党比较友好。绑定完先别急着发文件操作指令发一句“你好”看看回复是否顺畅。这一步能确认微信通道和内置模型都是通的。后续Skill跑不跑得通和这一步没有关系但这一步不通后面都不用谈。3. 从聊天窗口到本地命令微信远程控制实战微信通道绑定好之后遥控的玩法就多了。下面两个例子分别对应“即时指令”和“定时任务”两条主线也正好能引出自定义Skill里那个最容易被忽略的模型调用环节。3.1 一句话整理桌面文件你可以直接在微信里发“把桌面上的PDF按月份放进子文件夹”。QClaw收到后先让模型解析这句话得到操作范围是“桌面”、对象是“PDF”、规则是“按月份归档”然后在本地执行文件移动最后回传一步操作摘要。你会发现文件调取之所以好用是因为“人话转命令”这一步被模型包办了。但意思来了这条自然语言理解请求本身是要消耗模型调用的。用内置模型时这部分配额由QClaw统一处理一旦在Skill里指定自己的模型就要用你自己的Key去支付这次调用。这也就是为什么我把Key统一交给TaoToken来处理因为文件整理、邮件总结、远程关机这些Skill可能是不同模型写的但Key不用分开维护。3.2 定时任务你睡觉它干活定时任务和即时指令用的是同一套Skill机制只是触发源从“微信消息”换成了“本地调度器”。比如你可以设置“每天凌晨1点把工作目录的增量文件同步到移动硬盘”或者“每周五晚上8点把本周新增文档清单发到微信”。设置完成后手机关不关机都不影响电脑到点执行。这类任务之所以能“到点干活”本质上还是同一个循环调度器把任务文本投递给模型模型解析出要做什么、操作哪些路径然后Skill在本地执行。远程关机其实也是这个模式的变体一条消息进来模型解析“30秒后关机”里的延迟时间然后系统命令在本地执行。这正好是下一章要手写的Skill。4. 自己写 remote-shutdown模型调用统一走 TaoToken把原文4.2的远程关机示例搬到真实环境时我建议做一个稍微完整一点的版本先把模型调用独立出来再让用户消息决定延迟秒数。这样既保留原来的“装逼”属性也更好落地。4.1 Skill 的本质是本地 JS 文件一个基础的OpenClaw Skill就是一个Node.js模块放在QClaw的skills目录下。文件导出name、description、run三个字段name是Skill名字description用来匹配用户指令run是实际执行逻辑。run接收params和context两个参数params里是用户消息里解析出的参数context提供sendMessage等和微信通信的方法。下面这个Skill不做任何复杂验证先验证链路收到“30秒后关机”模型抽取延迟秒数执行Windows的shutdown命令。代码里没有把模型Key写死全部从环境变量读取这样后续替换模型不用改代码。// skills/remote-shutdown/index.js const { exec } require(child_process); function parseDelay(text) { const match String(text).match(/(\d)\s*(秒|s)/i); return match ? Math.min(Number(match[1]), 600) : 30; } async function askModel(text, env) { const response await fetch(${env.ANTHROPIC_BASE_URL}/v1/messages, { method: POST, headers: { content-type: application/json, x-api-key: env.ANTHROPIC_AUTH_TOKEN, anthropic-version: 2023-06-01 }, body: JSON.stringify({ model: env.ANTHROPIC_MODEL, max_tokens: 128, messages: [ { role: user, content: 解析这句话里的延迟秒数只输出数字${text} } ] }) }); const data await response.json(); return data.content?.[0]?.text ?? 30; } module.exports { name: remote-shutdown, description: 通过微信发送指令远程关机, async run(params, context) { const rawText params.prompt || params.text || ; const env { ANTHROPIC_BASE_URL: process.env.ANTHROPIC_BASE_URL, ANTHROPIC_AUTH_TOKEN: process.env.ANTHROPIC_AUTH_TOKEN, ANTHROPIC_MODEL: process.env.ANTHROPIC_MODEL }; const delay parseDelay(await askModel(rawText, env)); await context.sendMessage(收到关机指令${delay}秒后执行回复“取消”可终止); setTimeout(() exec(shutdown /s /t 0), delay * 1000); return 关机指令已下发; } };代码里的fetch调用完整地址是Base URL加上路径后的 https://taotoken.net/api/v1/messages 。而你在环境变量里填的Base URL千万不要带/v1否则实际请求会变成/api/v1/v1/messages直接404。4.2 环境变量配置Base URL 填对Key 从官网拿这一步要设置三个环境变量。macOS/Linux可以直接在启动QClaw的终端里导出export ANTHROPIC_BASE_URLhttps://taotoken.net/api export ANTHROPIC_AUTH_TOKENYOUR_API_KEY export ANTHROPIC_MODEL你的模型IDWindows用户就在系统环境变量里添加同样的三项配置后重启QClaw。ANTHROPIC_MODEL具体填什么以 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 的模型广场为准不要凭记忆猜一个ID写进去。这个Key也在这个页面注册后创建对应代码里的YOUR_API_KEY。提示如果Skill运行时返回401检查ANTHROPIC_AUTH_TOKEN是否从官网控制台完整复制如果返回404检查Base URL是不是多写了/v1。这两个错基本覆盖了配置阶段绝大部分翻车原因。4.3 接入 MCP 协议时也指同一组地址OpenClaw支持MCP协议之后QClaw可以变成一个统一枢纽把数据库、私有API、智能家居之类的工具接进来。MCP Server在处理请求时也会涉及模型调用比如理解用户意图、给外部API返回结果做摘要这时模型通道还是可以指向同一组 Base URL 和 Key。换句话说不管你是在QClaw的Skill里写模型调用还是在MCP Server里配置模型客户端TaoToken都只是提供一个统一入口。它的价值是让多个工具、多个场景共用同一套认证信息不至于每接一个外部工具就重新申请一次API Key。尤其在企业内部一个MCP Server可能同时对接文件系统、数据库和消息队列如果每个连接器都单独配模型账号运维同学会先疯掉统一入口至少能把认证和计量收敛在一个地方。5. 安全提醒远程关机这类 SkillKey 和权限都要收好QClaw这类Agent一旦被滥用后果会很直接。远程关机这种Skill杀伤力不大但很吓人万一被室友或群里的人拿去恶作剧直接给电脑断电也不是没可能。所以安全措施不是加分项是必选项。5.1 远程关机必须做二次确认刚才的Skill里已经留了一个口子执行前会发消息告诉你“回复取消可终止”。但真正要终止它还需要另一个Skill用系统自带的shutdown /a来取消待执行的关机指令// skills/cancel-shutdown/index.js const { exec } require(child_process); module.exports { name: cancel-shutdown, description: 取消待执行的远程关机, async run(params, context) { exec(shutdown /a, (error) { if (error) { context.sendMessage(没有正在等待取消的关机指令); } else { context.sendMessage(已取消关机); } }); return cancel request sent; } };更稳妥的做法是把所有系统级操作都统一加一道“确认门”模型解析完用户指令后先不执行而是在微信里反问“确认要关机吗”等用户明确回复“确认”再执行。命令越危险这道门越要收得紧。如果你打算把这个Skill分享给朋友最好再把“可信联系人”白名单也一起写进去只允许你自己的微信号触发关机。5.2 Key 从哪来、用量去哪看每次模型调用都会消耗Token尤其是24小时无人值守的定时任务。你从 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 创建Key之后可以在同一个控制台里看到每次调用用了哪个模型、消耗了多少Token。远程关机这类低频Skill平时几乎不花钱但如果哪天微信指令响应异常回控制台看一眼就能判断是模型调用失败了还是本地命令执行失败了不用盲猜。还要注意YOUR_API_KEY这个占位符只是示意千万别真的把占位符配进去也别把真实Key提交到Git仓库。环境变量每次都能帮你兜底。6. 下一步跑通第一个 Skill再去想复杂自动化从零到一跑通的顺序其实很固定先去官网注册并创建API Key装好QClaw并绑定微信把remote-shutdown和cancel-shutdown两个Skill放进skills目录配置好ANTHROPIC_BASE_URL、ANTHROPIC_AUTH_TOKEN、ANTHROPIC_MODEL三个环境变量重启QClaw后在微信发一句“30秒后关机”然后回TaoToken控制台看这次调用有没有记上账。这条链路跑通之后你会发现OpenClaw生态里大部分自动化工作都是同一个套路消息或定时器触发模型理解意图Skill执行本地动作结果回传微信。区别只在于Skill里调用了哪个本地命令、连了哪个外部API。模型Key的申请路径已经被TaoToken集中到了一起后面剩给你折腾的就只有“想让电脑帮忙干哪些活”这一件事了。等你想清楚这个问题再回来看QClaw的Skill仓库会突然冒出一堆自己也想写的点子。
返回列表