ARTICLE DETAIL

资讯详情

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

我开发了 3 个 OpenClaw Skill,分享我的设计思路与 TaoToken 配置骨架

我开发了 3 个 OpenClaw Skill,分享我的设计思路与 TaoToken 配置骨架 1. 从 ClawHub 上那些「装完就吃灰」的 Skill 说起OpenClaw 的 Skill 机制本质上是一份写给 AI Agent 看的说明书你告诉它什么时候该调用、调用时传什么参数、拿到结果后怎么组织输出。ClawHub 作为技能市场把这件事的门槛压到了「一条命令安装」。但我在翻了几十个 Skill 之后发现一个尴尬的现实——能装上的很多能真正跑顺的很少。有的 Skill 依赖一堆外部服务装完先让你配五个环境变量有的纯靠一段 prompt 硬撑Agent 稍微换个问法就答非所问还有的连边界情况都没写输入为空直接报错。我给自己定了个目标做三个零依赖、开箱即用的 Skill覆盖新闻聚合、翻译、日报三个高频场景并且全部通过 TaoToken 统一走 Key 和 API 通道避免每个 Skill 各自维护一套凭证。这篇文章不讲空泛的设计哲学而是把三个 Skill 的目录结构、config.toml / settings.json 配置骨架、以及一次完整的调用验证过程摊开给你看。如果你也想在 ClawHub 上发布自己的 Skill或者只是想让手头的 AI Agent 多几个能干活的技能照着下面的步骤走一遍就能跑通。三个 Skill 分别是AI News Digest多维度新闻聚合、AI Translator Pro多领域自动检测翻译、Smart Daily Report结构化日报生成。它们的共同点是零外部依赖、边界情况全覆盖、配置集中管理。2. TaoToken 前置为什么统一走一个 API 通道2.1 多 Skill 场景下的凭证管理痛点假设你有三个 Skill每个都要调模型。如果每个 Skill 各自读一份 API Key你会遇到几个问题Key 散落在不同目录轮换时要改三处不同 Skill 可能指向不同的 base_url排查问题时先要搞清楚谁在用哪个通道新装一个 Skill 又要重新配一遍。我的做法是把模型调用统一收敛到 TaoToken 的 API 通道。TaoToken 提供兼容 OpenAI 风格的接口base_url 是https://taotoken.net/api三个 Skill 共用同一个 Key 和同一个入口。这样配置文件里只需要维护一份凭证Skill 本身不关心背后是哪个模型。2.2 获取 Key 与确认通道先到控制台创建 API Key。地址是https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite登录后在 API Keys 页面新建一个复制出来形如sk-开头的字符串。这个 Key 就是三个 Skill 共用的凭证。如果你还没决定用哪个模型可以先去模型对话页面试一下手感https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chatutm_campaignrewrite。选一个响应速度和输出质量都合适的把模型名记下来后面写进配置。注意Key 只显示一次复制后先存到安全的地方。不要把它硬编码进 Skill 源码而是放进独立的配置文件方便轮换。2.3 接入文档的位置配置字段不确定的时候直接查接入文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite。里面列了 base_url、鉴权头、请求体格式这些细节比在代码里猜要快得多。3. 三个 Skill 的目录结构与可复制配置3.1 统一目录约定三个 Skill 我用了同一套目录骨架方便复用skills/ ai-news-digest/ skill.toml config.toml prompt.md handler.py ai-translator-pro/ skill.toml config.toml prompt.md handler.py smart-daily-report/ skill.toml config.toml prompt.md handler.pyskill.toml描述 Skill 的元信息名称、触发词、参数config.toml放模型和凭证配置prompt.md是给 Agent 的指令模板handler.py负责实际调用。这样拆的好处是改 prompt 不用动代码换 Key 不用动 prompt。3.2 config.toml 配置骨架每个 Skill 的config.toml结构一致只有模型名和温度可能不同[provider] base_url https://taotoken.net/api api_key_env TAOTOKEN_API_KEY model gpt-4o-mini timeout 60 [skill] name ai-news-digest max_retries 2 temperature 0.3api_key_env指向环境变量名而不是直接写 Key。运行时从环境变量读取这样配置文件可以进版本库Key 不会泄露。设置环境变量export TAOTOKEN_API_KEYsk-你的key3.3 settings.json 配置骨架如果你的 OpenClaw 版本用settings.json管理全局配置可以这样写{ skills: { ai-news-digest: { enabled: true, provider: { base_url: https://taotoken.net/api, api_key_env: TAOTOKEN_API_KEY, model: gpt-4o-mini } }, ai-translator-pro: { enabled: true, provider: { base_url: https://taotoken.net/api, api_key_env: TAOTOKEN_API_KEY, model: gpt-4o-mini } }, smart-daily-report: { enabled: true, provider: { base_url: https://taotoken.net/api, api_key_env: TAOTOKEN_API_KEY, model: gpt-4o } } } }三个 Skill 共用TAOTOKEN_API_KEY只有日报用了更强的模型因为它的输出结构更复杂。3.4 三个 Skill 的设计取舍AI News Digest 的核心是「多维度并行」。我没有让它串行地一个维度一个维度搜而是把维度拆成独立请求最后合并。这样单个维度失败不影响整体边界情况也更好处理——某个维度返回空就跳过不阻塞。AI Translator Pro 的重点是「自动检测领域」。用户丢一段文本进来Skill 先判断是技术文档、法律条款还是日常对话再选对应的翻译风格。这里我踩过的坑是领域判断本身也要调一次模型如果判断错了后面全错。所以我把判断结果和置信度一起返回置信度低时回退到通用风格。Smart Daily Report 最复杂200 多行。它的设计思路是「先结构化再生成」先把当天的输入整理成固定字段完成项、阻塞项、明日计划再让模型填充语言。这样输出稳定不会每天格式都不一样。4. 验证请求跑通一次完整调用4.1 先用 curl 确认通道可用在写 Skill 之前先用一条 curl 确认 TaoToken 通道是通的curl https://taotoken.net/api/chat/completions \ -H Authorization: Bearer $TAOTOKEN_API_KEY \ -H Content-Type: application/json \ -d { model: gpt-4o-mini, messages: [{role: user, content: 回复 OK 两个字母}] }如果返回里有choices字段且内容是 OK说明 Key 和通道都没问题。这一步能排掉大部分「配置看起来对但就是不通」的情况。4.2 handler.py 里的调用片段以 AI News Digest 为例handler 的核心逻辑import os import requests def call_model(prompt, config): api_key os.environ.get(config[provider][api_key_env]) resp requests.post( f{config[provider][base_url]}/chat/completions, headers{ Authorization: fBearer {api_key}, Content-Type: application/json, }, json{ model: config[provider][model], messages: [{role: user, content: prompt}], temperature: config[skill][temperature], }, timeoutconfig[provider][timeout], ) resp.raise_for_status() return resp.json()[choices][0][message][content]注意base_url后面拼的是/chat/completions这是 OpenAI 兼容接口的标准路径。4.3 安装并触发 Skill在 ClawHub 上安装以新闻聚合为例clawhub install yqg-ai-news-digest安装后确认配置已加载clawhub list应该能看到三个 Skill 都是 enabled 状态。然后在 Agent 对话里触发帮我聚合今天的 AI 领域新闻按模型发布、开源项目、行业融资三个维度Agent 会识别到触发词调用 AI News Digest返回结构化结果。第一次跑通后你可以把触发词和参数写进skill.toml让调用更稳定。4.4 成功结果的判断标准一次成功的调用应该满足返回内容包含你要求的维度、每个维度都有实际条目、没有出现「无法获取」之类的兜底话术。如果某个维度为空检查是不是该维度的请求超时了——把timeout从 60 调到 90 再试。5. 本篇常见错排查5.1 401 鉴权失败最常见的原因是环境变量没生效。export只在当前 shell 有效如果你在另一个终端跑 Skill需要重新 export或者写进~/.bashrc。另一个原因是 Key 复制时带了空格检查一下首尾。5.2 404 路径错误base_url写成https://taotoken.net/api/带尾斜杠再拼/chat/completions会变成双斜杠。统一去掉尾斜杠。另外确认拼的是/chat/completions而不是/v1/chat/completions具体以接入文档为准。5.3 超时但 curl 正常Skill 里超时通常是并发请求太多。AI News Digest 并行发多个维度请求如果timeout设得太短慢的那个会先挂。把超时调大或者限制并发数。5.4 模型返回格式不稳定日报类 Skill 容易出现这个问题。解决办法是在 prompt 里明确要求 JSON 输出并在 handler 里做一次解析兜底解析失败就重试一次还是失败就返回原始文本让 Agent 处理。5.5 Skill 装了但 Agent 不调用检查skill.toml里的触发词是否和你的问法匹配。触发词太窄Agent 识别不到太宽又会误触发。建议每个 Skill 配 3 到 5 个触发词覆盖不同说法。6. 把三个 Skill 接进你的工作流如果你打算长期用这几个 Skill或者想基于它们改出自己的版本建议把模型调用统一走 Coding Plan省去每次单独配 Key 的麻烦https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite。它适合需要持续调用、频繁迭代的场景比如你每天都要跑日报。想自己改 Skill 的话从 API Keys 页面重新生成一个专用 Key和日常用的分开https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite。这样即使某个 Skill 出问题也不会影响其他调用。三个 Skill 的完整配置骨架上面都给了你可以直接复制config.toml和settings.json把模型名换成自己常用的然后从最简单的 curl 验证开始一步步跑通。真正卡住你的往往不是设计思路而是某个字段拼错或者环境变量没生效——先让通道通再谈优化。
返回列表