1. install-all.ps1 跑通了Agent 却报 401问题不在 Skillinstall-all.ps1在 Windows 上一跑Cursor、Codex、Claude Code 三个 Skill 目录都装好了SKILL.md和templates.md也在位可第一次让 Agent 生成小程序提示词就翻车——终端回401或者干脆读不到任何 Key。问题通常不在 Skill 本身而在 Key 没进环境变量。安装完成后、首次调用模型之前先去 TaoToken 官网 取一枚 TaoToken KeyBase URL 统一填https://taotoken.net/api后面所有配置都围绕这两个值展开。这篇不重复讲「提示词模板长什么样」而是补上前一篇没覆盖的那一段Windows 用户把 Skill 包装进三端之后怎么让 Agent 真正把模型调用打通。包括四件事install-all.ps1的完整执行流程以及 PowerShell 执行策略、目录找不到、装了没生效这几类报错的对照处理TaoToken Key 怎么写进 Windows 用户环境变量让 Cursor、Codex、Claude Code 都能读到三端各自的配置文件写法——Claude Code 走settings.jsonANTHROPIC_*Codex 走config.tomlCC Switch 用「Base URL / API Key / 默认模型」三件套用/doctor做验证给出报错前后对照确认 Skill 真的被 Agent 识别。视角落在一个具体场景小程序开发者装了wechat-miniprogram-prompts这个 Skill对 Agent 说一句「我想做一个财务工具小程序」Agent 按六阶段路由自动挑模板、填占位符生成可直接复制的提示词。这整个过程消耗的是模型 TokenToken 走的是你自己配的 Key 和 Base URL。所以环境和配置不通Skill 再全也跑不起来。2. 三层结构先分清Skill 目录、Agent 配置、模型 Key很多人卡住是因为把三件不同的事混成了一件。第一层Skill 目录。它就是一个普通文件夹名字必须叫wechat-miniprogram-prompts里面至少两个文件wechat-miniprogram-prompts/ ├── SKILL.md # 触发条件、六阶段路由表、Agent 行为规则、常见坑 └── templates.md # 六类模板原文 填好占位符的示例按需读取SKILL.md负责「什么时候该干什么」templates.md是资料库Agent 需要哪条才读哪条不会每次都把全部模板塞进上下文。第二层Agent 侧的 Skill 搜索路径。Cursor、Codex、Claude Code 各自有约定的 skills 目录把上面那个文件夹复制进去Agent 才会在会话里加载它。装错目录、目录名被改成别的、或者放进了内置保留目录都会表现为「装了但没反应」。第三层模型访问凭证。Skill 只产出提示词提示词最终要发给模型才有结果。你的 Agent 需要知道两件事请求发到哪个地址Base URL用什么身份API Key。这两个值由环境变量或配置文件提供。三层的排查顺序建议固定下来先确认文件夹在不在、文件名对不对再确认 Agent 会话是否重启最后才去查 Key 和 Base URL。反过来的顺序会让你在配置文件里反复折腾而真正的问题是第一层。分享包本体和安装脚本可以对照 TaoToken 官网 的控制台一起看Key 在控制台里生成生成之后立刻写进环境变量别留在记事本里。3. Windows 一键安装install-all.ps1 可复现执行流程分享包解压后的目录长这样wechat-miniprogram-prompts-package/ ├── README.md # 安装说明 ├── install-all.ps1 # 一键安装三端 ├── install-cursor.ps1 # 只装 Cursor ├── install-codex.ps1 # 只装 Codex ├── install-claude.ps1 # 只装 Claude Code └── skill/ └── wechat-miniprogram-prompts/ ├── SKILL.md └── templates.mdinstall-all.ps1的核心逻辑是定位分享包根目录 → 校验源目录里的SKILL.md→ 依次把整个文件夹复制到三端目标路径 → 打印每个目标的落地结果。下面这份是等价的可运行版本可以直接改成自己的脚本# install-all.ps1 # 用法在分享包根目录打开 PowerShell执行 .\install-all.ps1 $ErrorActionPreference Stop $SkillName wechat-miniprogram-prompts $PackageRoot Split-Path -Parent $MyInvocation.MyCommand.Path $SourceDir Join-Path $PackageRoot skill\$SkillName $ProjectRoot (Get-Location).Path # Codex 家目录未设置 CODEX_HOME 时回退到 %USERPROFILE%\.codex if ($env:CODEX_HOME) { $CodexHome $env:CODEX_HOME } else { $CodexHome Join-Path $env:USERPROFILE .codex } Write-Host 分享包根目录: $PackageRoot -ForegroundColor Cyan Write-Host 当前项目目录: $ProjectRoot -ForegroundColor Cyan if (-not (Test-Path (Join-Path $SourceDir SKILL.md))) { throw 未找到 $SourceDir\SKILL.md请确认当前工作目录是分享包根目录 } if (-not (Test-Path (Join-Path $SourceDir templates.md))) { Write-Warning 未找到 templates.mdSkill 仍可安装但模板库不完整 } $targets ( { Name Cursor(个人); Path Join-Path $env:USERPROFILE .cursor\skills\$SkillName }, { Name Cursor(项目); Path Join-Path $ProjectRoot .cursor\skills\$SkillName }, { Name Codex; Path Join-Path $CodexHome skills\$SkillName }, { Name Claude Code; Path Join-Path $ProjectRoot .claude\skills\$SkillName } ) foreach ($t in $targets) { $parent Split-Path -Parent $t.Path if (-not (Test-Path $parent)) { New-Item -ItemType Directory -Path $parent -Force | Out-Null } Copy-Item -Path $SourceDir -Destination $t.Path -Recurse -Force $okSkill Test-Path (Join-Path $t.Path SKILL.md) $okTpl Test-Path (Join-Path $t.Path templates.md) Write-Host ([{0}] {1}n SKILL.md{2} templates.md{3} -f $t.Name, $t.Path, $okSkill, $okTpl) } Write-Host n安装完成。请重启对应 Agent 会话再让它加载 Skill。 -ForegroundColor Green第一次在 Windows 上跑.ps1最可能撞上的不是脚本逻辑而是执行策略无法加载文件 D:\wechat-miniprogram-prompts-package\install-all.ps1 因为在此系统上禁止运行脚本。三种处理方式按侵入性从小到大排# 方式一只对当前这一次进程放开关掉窗口即失效推荐 powershell -ExecutionPolicy Bypass -File .\install-all.ps1 # 方式二在当前 PowerShell 会话里临时放开 Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass .\install-all.ps1 # 方式三对当前用户永久放开改动会写进用户配置介意就别用 Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned如果不想跑脚本手动复制同样可行把skill\wechat-miniprogram-prompts整个文件夹分别投放到下面这些位置。文件夹名必须原样保留wechat-miniprogram-prompts改成中文名或加了后缀斜杠命令和自动加载都会失效。端目标路径Cursor个人所有项目可用%USERPROFILE%\.cursor\skills\wechat-miniprogram-prompts\Cursor项目可提交给团队项目根\.cursor\skills\wechat-miniprogram-prompts\Codex%CODEX_HOME%\skills\wechat-miniprogram-prompts\默认%USERPROFILE%\.codexClaude Code项目项目根\.claude\skills\wechat-miniprogram-prompts\两个容易踩的坑Cursor 有内置保留目录~/.cursor/skills-cursor/不要往那里放放了不会作为你的自定义 Skill 生效Codex 的CODEX_HOME如果被改过Skill 就要放到改后的目录下否则 Agent 扫不到。安装后确认两个文件都在目标目录里这一步别跳过Get-ChildItem $env:USERPROFILE\.cursor\skills\wechat-miniprogram-prompts Get-ChildItem $env:USERPROFILE\.codex\skills\wechat-miniprogram-prompts Get-ChildItem .\.claude\skills\wechat-miniprogram-prompts4. 把 TaoToken Key 写进 Windows 用户环境变量Skill 装好只是「Agent 知道该问你什么」真正把提示词变成结果需要模型调用。Windows 上推荐把凭证写进用户级环境变量好处是 Cursor、Codex、Claude Code 都能读到不用在三份配置文件里各抄一遍 Key。先取 Key安装完成后、首次调用模型之前到 TaoToken 官网 注册并生成 Key控制台里可以随时轮换。Key 只显示一次的话当场复制。写入变量两种写法任选# 写法一setx写入用户级环境变量新开的终端才生效 setx TAOTOKEN_API_KEY YOUR_API_KEY setx ANTHROPIC_BASE_URL https://taotoken.net/api setx ANTHROPIC_AUTH_TOKEN YOUR_API_KEY# 写法二.NET API明确指定 User 作用域适合脚本里批量设置 [Environment]::SetEnvironmentVariable(TAOTOKEN_API_KEY, YOUR_API_KEY, User) [Environment]::SetEnvironmentVariable(ANTHROPIC_BASE_URL, https://taotoken.net/api, User) [Environment]::SetEnvironmentVariable(ANTHROPIC_AUTH_TOKEN, YOUR_API_KEY, User)setx有两点需要知道一是值超过 1024 字符会被截断API Key 远小于这个数不用担心二是它只影响之后新启动的进程当前窗口里的$env:TAOTOKEN_API_KEY不会立刻变。写完必须验证别凭感觉[Environment]::GetEnvironmentVariable(TAOTOKEN_API_KEY, User) [Environment]::GetEnvironmentVariable(ANTHROPIC_BASE_URL, User)如果回显是空的说明没写进去重新执行上面的命令如果回显正确但 Agent 里还是 401问题多半在进程继承——从开始菜单或资源管理器图标启动的 Cursor、VS Code、终端继承的是启动那一刻的环境快照。设置完环境变量后最省事的做法是# 关掉所有相关进程再从新终端里启动 taskkill /IM Cursor.exe /F taskkill /IM Code.exe /F或者直接注销一次 Windows 账户再登录保证所有 GUI 进程拿到新的环境块。这一步经常被忽略然后被误判成「Key 是错的」。5. 三端分别怎么接settings.json、config.toml、CC Switch 三件套环境变量只是备用弹药各端还需要在配置里指到正确的地址。注意不同客户端读的字段名不一样Claude Code 的ANTHROPIC_*不要搬到 Codex 上Codex 也不吃ANTHROPIC_BASE_URL。5.1 Claude Codesettings.json ANTHROPIC_*Claude Code 读settings.json项目级放在项目根\.claude\settings.json用户级放在%USERPROFILE%\.claude\settings.json。把模型端点指向 TaoToken{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_AUTH_TOKEN: YOUR_API_KEY, ANTHROPIC_MODEL: claude-sonnet-4-5 } }几点说明ANTHROPIC_BASE_URL填https://taotoken.net/api不要手滑加/v1后缀路径由客户端自己拼部分版本优先读ANTHROPIC_API_KEY如果配置好后仍提示未授权把ANTHROPIC_AUTH_TOKEN换成ANTHROPIC_API_KEY再试一次如果环境变量里已经写了同名值配置文件和环境变量的优先级按客户端版本可能不同建议只保留一处避免互相覆盖后自己都搞不清用的是哪个。Claude Code 会监听 skill 目录变化但如果目录是本次会话启动之后才新建的监听不会回溯需要重启会话斜杠命令/wechat-miniprogram-prompts才会出现在命令列表里目录名即命令名。5.2 Codexconfig.tomlCodex 走 TOML配置文件在%USERPROFILE%\.codex\config.toml或%CODEX_HOME%\config.toml。这里用的是 OpenAI 兼容风格的自定义 provider不要写ANTHROPIC_*# %USERPROFILE%\.codex\config.toml model gpt-5 model_provider taotoken approval_policy on-request [model_providers.taotoken] name TaoToken base_url https://taotoken.net/api env_key TAOTOKEN_API_KEY wire_api chat关键三行base_url指向https://taotoken.net/apienv_key TAOTOKEN_API_KEY表示从同名环境变量里读 Key这样 Key 不落在配置文件里方便提交前检查model按你在控制台里可用的模型名填写完先用一次最小请求验证再放回日常使用。如果 Codex 报 provider 找不到检查model_provider的值和[model_providers.xxx]的表名是否完全一致——TOML 表名写错一个字母就会静默回退到默认 provider。5.3 CC SwitchBase URL / API Key / 默认模型 三件套用 CC Switch 这类配置切换工具时本质上只改三个值配置项填什么Base URLhttps://taotoken.net/apiAPI Key你的 TaoToken Key占位符写YOUR_API_KEY默认模型按控制台可用列表选改完做一次最小请求验证三件套改完切一次配置、重启对应 Agent 会话然后让它跑一次 Skill。切换工具的好处是可以同时保留多套配置出问题时切回上一套做对比快速判断是「配置问题」还是「Key 本身的问题」。Key 的统一管理入口在控制台轮换后记得同步更新三端别只改一处。6. /doctor 验证报错前后对照Claude Code 里验证 Skill 是否被识别最直接的方式是运行/doctor。典型的两组状态修复前 /doctor Skills: none loaded MCP: ok Env: ANTHROPIC_BASE_URL(not set)修复后 /doctor Skills: wechat-miniprogram-prompts (SKILL.md, templates.md) MCP: ok Env: ANTHROPIC_BASE_URLhttps://taotoken.net/api把 Windows 上常见的症状和成因对齐成一张表按顺序排查基本不会绕路现象大概率原因处理禁止运行脚本PowerShell 执行策略为 Restrictedpowershell -ExecutionPolicy Bypass -File .\install-all.ps1未找到 ...\SKILL.md当前目录不是分享包根目录cd到wechat-miniprogram-prompts-package再执行装了但 Agent 里看不到 Skill会话没重启 / 目录名被改重启会话目录名保持wechat-miniprogram-prompts/doctor里 Skills 为空目录放错或放进了skills-cursor移到%USERPROFILE%\.cursor\skills\或项目.claude\skills\返回 401 / UnauthorizedKey 未写入、写错作用域、进程没继承重设用户级变量并重启终端与 IDE请求 404Base URL 多写了/v1或写了别的路径改回https://taotoken.net/apiCodex 不读新 providermodel_provider与表名不一致校对 TOML 表名重启 Codex验证通过的标准很简单/doctor能看到 Skill 名和两个文件环境变量回显正确然后让 Agent 实际跑一次生成拿到非空的提示词输出。三步都过链路才算通。7. 装好之后跑一遍财务工具小程序的六阶段路由环境通了回到 Skill 本身的价值。它的默认行为是只生成提示词不直接改你的项目文件需要 Agent 动手产出可运行改动时明确说一句让它动手即可模板里的约束依然生效。拿「财务工具小程序」走一遍看每个阶段 Agent 会给你什么01 需求拆解。你只说了「我想做一个财务工具小程序」Agent 不会急着出代码而是先把缺失信息列出来目标用户是谁、核心问题是记账还是预算还是报表、主体是个人还是企业、用不用云开发、第一版最想有的一两个功能。02 页面结构。你补充完信息它会输出一段填好占位符的提示词并附上「选用模板」「注意事项」「下一步建议」。这一步最容易犯的错是让它一次改app.json加三个页面Skill 会提醒你一次只做一个页面改完一个再看下一个。03 单一功能实现。比如「实现新增一笔支出的功能」生成的提示词自带验收标准主路径能走通、异常有提示、不破坏已有功能。验收要你自己点一遍Skill 不会替你省略。04 排障。保存按钮没反应、真机抛出TypeError: Cannot read property amount of undefined这类错误时Skill 会要求你给全报错原文和复现步骤而不是一句「坏了帮我修」——信息不全Agent 只能猜。05 合规检查。功能差不多了检查类目、隐私说明、个人主体限制这些容易卡审核的点。06 提审自查。主功能可用性、真机测试路径、一份十分钟能走完的行动清单。清单打完勾自己再用手机走三遍主路径模板不能代替真机自测。推荐顺序是 01 → 02 → 03 →04 按需→ 05 → 06。整个流程里消耗的都是你配好的那枚 Key 背后的模型 Token所以前四节的配置做得越干净后面越少被中断。8. 常见追问Skill 会不会每次都把模板塞进上下文不会。这是把模板写成 Skill 而不是贴进对话的第一个收益SKILL.md常驻用来判断阶段和触发templates.md按需读取只有当 Agent 确实要生成某类提示词时才引用对应段落。这也是为什么建议把templates.md写成分节清晰的 Markdown一节一类模板标题明确方便定位。第二个追问是「我改了模板怎么办」。改templates.md即可保存后重启会话让 Agent 重新加载如果改的是SKILL.md里的路由规则同样需要重启会话否则旧规则还在内存里生效。第三个追问是「三端能不能共用一份」。可以文件夹本身是通用的区别只在投放路径和各自的模型配置。真正的差异点是配置字段Claude Code 认ANTHROPIC_BASE_URL和ANTHROPIC_AUTH_TOKENCodex 认config.toml里的base_url加env_keyCC Switch 只要三件套。把字段用错端比把路径写错更难查因为报错往往只是 401看不出根因。9. 下一步从一次对话验证到长期跑起来先跑通最小闭环装 Skill、配环境变量、/doctor看到 Skill、让 Agent 生成一次提示词。四步都过再谈批量使用。跑通之后按这个顺序往下走想先验证模型质量和返回速度用 模型对话 直接试一次确认 Base URL 和 Key 在网页侧同样能通打算把 Skill 用在日常开发流里、每天都要跑很多次生成看 Coding Plan把用量这件事先规划清楚需要自己管理多枚 Key、做轮换或分环境隔离去 创建与管理 API KeysClaude Code 的字段名、settings.json结构、环境变量优先级这些细节以 Claude Code 文档 为准配置改完记得重启会话再验证。Windows 上的坑大多不在 Skill 写得好不好而在三件事脚本执行策略、目录放没放对、Key 有没有真正进到新进程的环境里。这三件事各花五分钟确认一次后面就是纯开发了。你平时用 Cursor、Codex 还是 Claude Code 更多卡在哪一步留言说说下一篇就写你问得最多的那个。