ARTICLE DETAIL

资讯详情

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

从零开源:把自定义 AI Skill 发布到 GitHub 的完整流程与 TaoToken 配置

从零开源:把自定义 AI Skill 发布到 GitHub 的完整流程与 TaoToken 配置 1. 为什么你的 AI Skill 值得单独开一个 GitHub 仓库很多人写 AI Skill 的习惯是在对话框里调好一段提示词用着顺手就存进备忘录换台电脑就找不到了。更麻烦的是当你想把这段能力分享给同事或者在新项目里复用只能靠复制粘贴一大段文本版本一多就彻底乱套。我理解的 AI Skill本质上是一个「可执行的能力包」它不只是提示词还包含触发条件、参考知识、校验脚本甚至界面展示配置。把它放进 GitHub 仓库你就同时获得了三样东西——版本历史、分发渠道、协作入口。别人可以git clone直接用你也可以在任意设备上拉取最新版出问题还能回滚到上一个稳定提交。这篇要解决的问题很具体你本地已经有一个能跑的 Skill 目录现在要把它整理成规范的开源仓库推送到 GitHub并且用一套统一的 API 通道完成调用自测确认发布出去的东西真的能用。适合个人开发者、独立工具作者以及想把内部提示词资产沉淀下来的小团队。整个流程我会拆成六段先看本地目录怎么整理再准备 TaoToken 的调用通道然后给出可直接复制的配置片段接着跑一次验证请求再把我踩过的报错逐个排查最后是仓库维护和后续迭代。你跟着做基本能一次性跑通「整理 → 推送 → 自测」这个闭环。需要提前说明一点GitHub 负责托管和分发TaoToken 负责给你一个统一的 Key 和 API 入口去调用模型做验证。两者分工明确不要混在一起理解。仓库里放的是 Skill 本体调用通道是运行时的东西不要把 Key 写进仓库。2. 把本地 Skill 目录整理成可开源仓库的规范结构在推送之前先花十分钟把目录理顺。一个成熟的 Skill 不该只有一个 Markdown 文件它应该是「指令 元数据 知识库 脚本」的组合。下面是我实测下来比较通用的一套结构你可以直接照着建tech-blog-generator/ ├── SKILL.md # 核心触发规则 执行指令 ├── README.md # 给人看的介绍文档 ├── LICENSE # 开源协议推荐 MIT ├── .gitignore # 排除缓存和敏感文件 ├── agents/ │ └── openai.yaml # UI 展示层名称、简介、图标 ├── references/ │ ├── style_guide.md # 写作风格反模式清单 │ └── common_pitfalls.md # 常见坑点汇总 └── scripts/ ├── validate_yaml.py # 校验 frontmatter 格式 └── count_tokens.py # 检查输出长度每个部分的作用不一样理解清楚再动手后面维护会轻松很多。SKILL.md是大脑AI 只靠它就能工作所以 frontmatter 里的name和description必须写准description 要包含「什么时候用」的触发语义。agents/openai.yaml是名片定义技能在列表里显示成什么名字通常由脚本生成以保证格式严格。references/是外挂知识库按需加载能省上下文窗口。scripts/是机械臂干那些「不能出错」的活比如格式校验、Token 计数这类操作零 Token 成本确定性最高。.gitignore一定要在第一次提交前就位否则很容易把__pycache__、.env这类东西推上去。内容如下__pycache__/ *.pyc .env .DS_Store .venv/这里有个容易忽略的点如果你的 Skill 里引用了本地绝对路径或者写死了某个模型的 endpoint开源前要改成占位符或环境变量。仓库是公开的任何硬编码的私有信息都会暴露。整理完目录后建议先在本地跑一遍scripts/validate_yaml.py确认 frontmatter 合法再进入推送环节。3. TaoToken 前置准备与可复制的配置片段Skill 推上去之后你需要一个稳定的调用通道来做自测。我用的方式是 TaoToken它提供一个统一的 Key 和 API 入口省去在多个模型供应商之间来回切换的麻烦。官网在 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 入口是 https://taotoken.net/api 注意 API 地址不带 UTM 参数。先去控制台创建一个 API Key路径是 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite Key 的管理页面在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 。创建好之后复制出来先存到本地环境变量里别写进任何要提交的文件。如果你用的是 Claude Code 这类工具配置方式是在项目根目录建一个.claude/settings.json把 Base URL 和 Key 填进去。下面这段可以直接复制路径和字段名保持一致{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_AUTH_TOKEN: sk-你的TaoToken密钥, ANTHROPIC_MODEL: claude-sonnet-4-20250514 } }如果你用的是 Cline 或者带 MCP 的编辑器插件配置通常写在cline_mcp_settings.json里结构类似核心还是三件套Base URL、Key、Model ID。以 Cline 为例{ mcpServers: { taotoken: { command: npx, args: [-y, taotoken/mcp-server], env: { TAOTOKEN_BASE_URL: https://taotoken.net/api, TAOTOKEN_API_KEY: sk-你的TaoToken密钥, TAOTOKEN_MODEL: claude-sonnet-4-20250514 } } } }Codex 用户则是在~/.codex/auth.json里配置字段名是base_url和api_key同样把 Model ID 一起写全避免运行时找不到默认模型。这三件套缺一不可只填 Key 不填 Base URL请求会打到默认地址上直接 401。配置完成后建议先用一个最小请求验证通道是否通。可以用 curl 直接打 APIcurl https://taotoken.net/api/v1/messages \ -H Authorization: Bearer $TAOTOKEN_API_KEY \ -H Content-Type: application/json \ -d { model: claude-sonnet-4-20250514, max_tokens: 128, messages: [{role: user, content: 回复 OK 两个字母}] }返回里能看到content字段就说明通道正常。这一步过了再去接你的 Skill 做验证能省掉很多排查时间。4. 推送仓库并验证 Skill 调用成功配置通道的同时仓库推送可以并行做。先进入本地目录初始化 git 并提交cd tech-blog-generator git init git add . git commit -m Initial commit: add full skill structure git branch -M main git remote add origin https://github.com/YOUR_USERNAME/tech-blog-generator.git git push -u origin main推送前记得在 GitHub 上新建仓库仓库名和本地目录保持一致不要勾选Initialize this repository with a README否则会产生冲突你还得先 pull 再 push。推送成功后仓库页面应该能完整看到SKILL.md、agents/、references/、scripts/这几层结构。接下来做调用验证。假设你的 Skill 是「把代码转成技术博客」验证思路是把SKILL.md的内容作为系统指令喂一段测试代码看模型输出是否符合预期。用 Python 写一个最小验证脚本import os import requests api_key os.environ[TAOTOKEN_API_KEY] base_url https://taotoken.net/api with open(SKILL.md, r, encodingutf-8) as f: skill_content f.read() resp requests.post( f{base_url}/v1/messages, headers{ Authorization: fBearer {api_key}, Content-Type: application/json, }, json{ model: claude-sonnet-4-20250514, max_tokens: 1024, system: skill_content, messages: [ {role: user, content: 把这段代码写成一篇技术博客\ndef add(a, b):\n return a b} ], }, timeout60, ) data resp.json() print(data[content][0][text])跑通后你会看到模型按SKILL.md里定义的风格输出内容。如果输出跑偏说明SKILL.md的指令不够明确回去改指令再推一次即可。这个「改 → 推 → 验」的循环就是开源 Skill 迭代的日常。验证通过后建议在 README 里写清楚安装方式。别人用的时候有两种路径一是git clone到本地 Agent 的 skills 目录重启后自动加载二是直接引用SKILL.md的 Raw 链接。Raw 地址格式是https://raw.githubusercontent.com/YOUR_USERNAME/tech-blog-generator/main/SKILL.md部分支持远程 Skill 的工具可以直接填这个地址。5. 常见报错排查401、local proxy failed 与 reading choices这一节是我踩过的坑按报错原文对照排查能省你不少时间。401 Unauthorized最常见的原因是 Key 没生效或 Base URL 写错。先确认环境变量里TAOTOKEN_API_KEY确实有值echo $TAOTOKEN_API_KEY能打印出来。如果用的是配置文件检查 JSON 有没有语法错误比如多了个逗号。还有一种情况是 Key 复制时带了空格肉眼看不出来重新复制一次。注意 Base URL 必须是https://taotoken.net/api不要自己加/v1后缀路径拼接由客户端处理。local proxy failed / connection refused这个报错通常出现在你本地起了代理但代理没启动或者端口不对。检查你的工具配置里有没有指向127.0.0.1:xxxx的代理设置如果有要么把代理关掉要么确认代理进程在跑。另一种可能是网络环境本身不通先用 curl 直接打 API 确认基础连通性再排查工具层配置。reading choices of undefined这个报错说明返回体结构和你预期的不一样通常是请求根本没成功返回的是错误对象而不是正常的 completion。打印完整的resp.text看原始返回大概率能看到 401 或 404 的提示。还有一种情况是 Model ID 写错了模型不存在时返回体里没有choices字段客户端解析就崩了。把 Model ID 换成确认可用的比如claude-sonnet-4-20250514再试一次。OAuth 相关报错如果你用的是 Claude Code 并且看到 OAuth 字样说明工具在尝试走账号登录流程而不是用你配的 Key。检查settings.json里是不是同时存在登录态和 Key 配置两者冲突时优先走 OAuth。解决办法是清掉登录缓存只保留ANTHROPIC_AUTH_TOKEN这一套配置。推送被拒 (non-fast-forward)如果你在 GitHub 网页上改了文件本地又提交了push 时会冲突。先git pull --rebase origin main把远程改动拉下来解决冲突后再 push。养成习惯新建仓库时不要初始化 README能避免大部分首次推送冲突。排查的核心思路是「先确认通道再确认配置最后看业务逻辑」。通道用 curl 验配置看 JSON 语法和字段名业务逻辑看SKILL.md指令是否清晰。三层分开查比一股脑改配置高效得多。6. 仓库维护、版本迭代与后续调用入口仓库推上去只是开始。Skill 的价值在于持续迭代当你发现模型在某类场景下表现不好或者想增加新的语言支持流程是本地改SKILL.md或补充references/跑一遍scripts/validate_yaml.py确认格式然后提交推送。python scripts/validate_yaml.py . git add . git commit -m Update: add async/await patterns to references git pushGitHub 的提交历史会记录每一次优化出问题随时回滚。建议给稳定版本打 tag比如git tag v1.0.0 git push --tags别人引用时可以锁定版本不会因为你的后续改动导致行为漂移。README 里除了安装说明最好写清楚这个 Skill 解决什么问题、适合谁用、有哪些已知限制。开源项目的可维护性很大程度取决于文档是否让人一眼看懂。LICENSE 别忘了加MIT 是最省事的选择别人用起来没有心理负担。如果你在验证阶段需要频繁调用模型可以走 Coding Plan 做长期编码和 Agent 场景的调用入口在 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 。只是想快速试一下模型对话效果用模型对话页面就行https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentchatutm_campaignrewrite 。接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 配置字段有疑问时对着文档核对一遍比猜要快。最后提醒一句仓库里永远不要提交 Key。用环境变量或者本地配置文件把敏感信息和代码彻底分开。你的 Skill 是给别人用的能力包Key 是你自己的调用凭证两者边界清晰开源才能开得安心。
返回列表