拓冰建站拓冰建站
首页 / 资讯中心 / 正文

/spec 命令在 VS Code 失踪,TaoToken 只补 Base URL 不补适配层

在 VS Code 里装完 agent-skills敲/却只跳出默认那几个命令/spec、/plan、/build一个都没出现——这是最近不少 Copilot 用户踩到的同一个坑。先把结论放在前面这类命令缺失不是模型没接上也不是 Key 没配好而是这套 Skills 的斜杠命令依赖宿主适配层。如果你想先把模型入口切到稳定通道可以去 TaoToken 官网 拿一个 Key把 Base URLhttps://taotoken.net/api填到模型入口里但适配层那一层TaoToken 只负责把请求转发出去不会替 VS Code Copilot 凭空造出/spec命令。这篇就按 VS Code Copilot 用户的视角把命令缺失的复现路径、适配层差异对照表以及三条不依赖斜杠命令的替代调用方式一次讲清楚。1. 先复现装了 agent-skills 之后/菜单里到底少了什么在开始排查之前先把现象固定下来避免把「命令没注册」和「模型没响应」两件事混为一谈。1.1 复现环境与最小步骤准备一个干净的 VS Code 工作区然后按下面顺序操作# 1. 确认 VS Code 与 Copilot 扩展版本 code --version code --list-extensions | grep -i copilot # 2. 用开放的 Skills CLI 查看可用 Skill 目录 npx skills list # 3. 只装一个最小集合先别整仓搬 npx skills add spec-driven-development npx skills add planning-and-task-breakdown装完之后重载窗口CtrlShiftP→Developer: Reload Window然后在 Copilot Chat 输入框里敲一个/。预期结果下拉里出现/spec、/plan、/build。实际结果只有/explain、/tests、/fix、/doc这类内置命令Skill 自带的斜杠入口一个都没有。这时候最容易被误导的一步是打开 Copilot 的日志看到请求确实发出去了模型也有回包于是判断「已经接上了只是命令没显示」。其实这两件事完全独立——模型通道走的是 HTTP命令注册走的是宿主的命令发现机制两条链路互不影响。1.2 三个最容易误判的排查方向很多人在这一步会浪费掉半小时以上常见的三个误判误判一以为是 Key 的问题。现象是「命令没出现」不是「命令出现了但报 401」。Key 有问题时你会看到明确的鉴权错误而不是菜单里空空如也。把 Key 换成另一个再重载窗口/菜单不会多出任何东西。误判二以为是扩展没重载。重载窗口、重启 VS Code、甚至重装扩展都试过一遍之后仍然没有。这说明问题不在加载时机而在查找路径。误判三以为装少了。有人会把 25 个 Skill 全部装一遍再看。结果还是老样子因为命令注册与否跟 Skill 装了多少个无关只跟「宿主去哪里找命令定义」有关。1.3 用一条命令看清关键差异真正能定位问题的是目录结构而不是菜单。在项目根目录执行# 看三类目录是否存在以及各自装了什么 ls -la .claude/commands 2/dev/null ls -la .github/prompts 2/dev/null ls -la .codex 2/dev/null你会发现Skills CLI 把命令写进了.claude/commands/这一类位置而 VS Code 版 Copilot Chat 发现自定义命令的路径是.github/prompts/prompt files。两个目录名不同、文件后缀不同、frontmatter 字段也不同。宿主不会跨目录扫描所以/spec在 VS Code 里必然是「失踪」状态。这就是标题里那句话的由来TaoToken 能补 Base URL但补不了适配层。2. 适配层差异对照同一个 Skill三种宿主三种认法理解这一点之后后面的问题就都好办了。agent-skills 本身是「方法论的集合」它把开发流程拆成定义需求、制定计划、编写代码、验证结果、审查质量、准备发布六个阶段每个阶段用一份SKILL.md规定适用时机、操作步骤、常见借口与反驳、异常信号和验收要求。真正决定「你能不能敲/spec」的是宿主怎么读这些文件。2.1 三类宿主的命令发现机制宿主命令发现路径调用语法是否原生支持斜杠命令Claude Code命令目录下的 Markdown/spec、/plan是适配层最完整Codex CLI原生插件机制spec-driven-development否用引用VS Code Copilot Chat.github/prompts/*.prompt.md/文件名是但只认自己的目录重点看第三行。VS Code Copilot Chat 其实支持自定义斜杠命令它只是不认别人家的目录布局。也就是说缺的不是能力是「翻译」。2.2 一个容易踩的版本坑Codex 侧的要求更硬一些需要较新的 CLI 版本才能装原生插件装完之后要重开会话再用spec-driven-development这类名字引用。而 README 里演示的那些斜杠命令主要是给 Claude Code 这类有完整适配层的宿主用的。把 Claude Code 的用法直接搬到 Codex 上会得到一堆「命令不存在」。社区里已经有人反馈过在 VS Code 版 GitHub Copilot 安装后找不到/spec等命令相关 Issue 至今仍处于开放状态。较新的版本已经在文档里把 Copilot CLI 和 VS Code 的安装、调用方式分开写但文档分开写不等于 VS Code 侧就自动有了适配层——它只是告诉你「这两条路不一样」。2.3 对照结论把上面三行浓缩成一句话Skill 文件是内容谁都能读斜杠命令是壳每个宿主一个壳你在 VS Code 里要的那个壳得自己写。3. TaoToken 接入把 Base URL 填到模型入口适配层要自己补但模型入口可以先用外部通道顶上来。这里把三个常见工具分开写注意不要把它们的环境变量互相套用这是最容易出错的地方。在动手之前先到 TaoToken 官网 注册并创建一个 Key后面所有配置里的YOUR_API_KEY都替换成它。统一使用的 Base URL 是https://taotoken.net/api3.1 Claude Code用 settings.json 走ANTHROPIC_*Claude Code 读的是自己的配置文件和ANTHROPIC_*前缀变量两者选一个即可配置文件更稳。{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_AUTH_TOKEN: YOUR_API_KEY }, permissions: { allow: [Read, Edit, Bash(git status), Bash(npm test:*)] } }对应到 shell 里就是export ANTHROPIC_BASE_URLhttps://taotoken.net/api export ANTHROPIC_AUTH_TOKENYOUR_API_KEY写完之后重开一个终端会话让变量生效。验证方式是随便发一句提示看是否能正常返回如果返回 401先检查 Key 有没有多余空格如果返回 404检查 Base URL 有没有多写一层路径。3.2 Codex用 config.toml 定义 provider不要把ANTHROPIC_*抄到 Codex 上它认的是自己的 TOML 配置。正确写法是定义一个自定义 provider# ~/.codex/config.toml model gpt-5-codex model_provider taotoken [model_providers.taotoken] name TaoToken base_url https://taotoken.net/api/v1 env_key TAOTOKEN_API_KEY wire_api responses对应的环境变量export TAOTOKEN_API_KEYYOUR_API_KEY注意env_key的值必须和你在 shell 里导出的变量名完全一致大小写敏感。改完配置后重开会话Codex 不会热加载 provider 定义。3.3 CC Switch三件套一次配齐如果你同时用多个工具用 CC Switch 这类切换器会省事很多。它需要的就是三件套供应商名称TaoToken Base URL https://taotoken.net/api API Key YOUR_API_KEY填完之后在工具列表里勾选要切换的目标Claude Code / Codex 各一份 profile切换时它会帮你改写各自的配置文件。这样就不用在settings.json和config.toml之间来回手改了。3.4 把 Base URL 填到 VS Code Copilot 的模型入口回到本文的主视角。在 VS Code 里模型入口的配置方式和上面三种都不一样它是通过 Copilot Chat 的模型管理界面完成的打开 Copilot Chat点模型下拉菜单选择管理模型 / 添加模型选择 OpenAI 兼容类型的自定义端点在 Base URL 一栏填入https://taotoken.net/apiAPI Key 一栏填入YOUR_API_KEY保存后回到对话界面确认模型列表里出现了新条目。这一步做完你得到的是「换了一条模型通道」不是「装好了 agent-skills 的命令」。两条线仍然是分开的。这也是为什么很多人配完 Key 之后/spec依旧不见踪影——它本来就不会因为换通道而出现。4. 把/spec造出来三条不依赖适配层的替代调用方式既然宿主不认别人的命令目录那就用宿主认的格式重写一遍。以下三种方式按推荐度从高到低排列任选其一即可。4.1 方式一转成 VS Code 的 prompt file最推荐在项目根目录建一个.github/prompts/目录然后创建spec.prompt.md--- mode: agent description: 把一句模糊需求逼成可验收的规格说明 --- 你现在的角色是需求分析师不是实现者。 输入用户接下来给出的需求描述。 执行要求 1. 先判断需求是否包含明确的验收标准。如果缺失逐条提问补齐每次只问一个最关键的问题。 2. 把需求拆成若干条可独立验证的功能点每条功能点写出输入、预期输出、失败判据。 3. 明确指出哪些决策需要人确认列出候选方案与取舍理由。 4. 输出一份规格说明草稿末尾附上「未决问题」清单。 5. 在本轮对话中不要写任何实现代码只产出规格。保存后重载窗口再敲/你就会看到spec出现在菜单里。同理可以复制出plan.prompt.md、build.prompt.md、test.prompt.md、review.prompt.md。命名规则就是「文件名即命令名」所以文件名要短、要能记住。这里有个细节值得注意原仓库的 Skill 文件里除了主流程还引用了一些共享的检查清单。用npx单独装某一个 Skill 时只会复制对应的skills/name/目录仓库根目录下那些共享的参考资料不会一起跟过来。Skill 仍然能跑但引用到补充清单的路径可能失效。要拿全材料就用整仓克隆或者手动把需要的清单复制到 Skill 自己的参考目录里。写 prompt file 的时候把关键约束直接内联进去反而比引用外部文件更稳。4.2 方式二定义自定义 chat mode如果你的/spec和/plan需要的工具权限不一样用自定义模式更合适。在.github/chatmodes/下建一个spec-architect.chatmode.md--- description: 只做需求澄清与规格输出不修改文件 tools: [codebase, search, usages] --- 你只能读取和分析代码库禁止修改任何文件。 你的唯一产出是规格说明与未决问题清单。 当用户要求「直接开始写」时回复一句规格未确认前不进入实现阶段。这样切到该模式后即使误触也会被权限挡住避免了「还没想清楚就开始改代码」的经典翻车。4.3 方式三自然语言路由零配置兜底如果不想动任何配置文件就在对话里显式点名 Skill请使用 spec-driven-development 这个 Skill 的方式处理下面的需求。 先做需求澄清再输出可验收的规格说明本轮不要进入实现。 需求把现有的用户导出接口改成分页导出支持按时间范围筛选。再用一句补充把流程收口现在切换到 planning-and-task-breakdown把上面确认过的规格拆成可独立验证的小步骤 每步注明完成证据测试命令或检查项。这种方式的可控性最差——它依赖模型是否愿意遵守步骤。Skill 文件里那些「常见借口与反驳」正是为这种情况准备的比如模型想说「稍后再补测试」反驳规则会把它顶回去。但在没有适配层的宿主里你只能靠提示词反复强调稳定性不如前两种。4.4 三种方式怎么选只想在 VS Code 里恢复手感选方式一十分钟搞定需要权限隔离、多角色评审选方式二临时试用、不想留配置文件选方式三。三种方式都不影响你换模型通道它们和 Base URL 是正交的两件事。5. 两条容易被忽略的使用边界补完适配层之后还有两个坑值得提前说清楚能省下不少返工时间。第一条装单个 Skill 不等于装全。前面提过单独装某个 Skill 时不会带上仓库根目录的共享参考资料引用路径可能断掉。判断方法很简单打开 Skill 文件看它有没有引用相对路径之外的文件。如果有要么整仓克隆要么把那份清单复制进来。第二条Skill 管流程不管质量兜底。Skill 能让 Agent 先写规格、先跑测试、先给证据但它替代不了代码审查也不能保证所有模型都同样严格地守步骤。准备合并或上线时测试输出、代码差异、安全检查这三样仍然要人来过一遍。把「规范先行」当成流程约束看别当成质量保证看。再补一句关于命令缺失的边界即使你把.github/prompts/建好了如果工作区是多根multi-root workspaceprompt file 的发现范围可能会受根目录配置影响。这种情况在单文件夹工作区里复现一次就能快速确认是不是这个原因。6. 验证清单改完之后怎么确认真的好了最后给一份可以逐条打勾的验证清单避免「看起来好了但其实是缓存」的情况。# 1. 确认 prompt file 确实在正确位置 find . -path ./.git -prune -o -name *.prompt.md -print # 2. 确认 frontmatter 没写错冒号后有空格、字段名拼写正确 head -n 6 .github/prompts/spec.prompt.md # 3. 确认模型通道可用用 curl 探一下端点连通性Key 由本地环境变量提供 curl -sS -o /dev/null -w %{http_code}\n \ -H Authorization: Bearer ${TAOTOKEN_API_KEY} \ https://taotoken.net/api/v1/models三条都通过之后回到 VS Code 重载窗口敲/确认菜单里出现了spec。然后在对话里输入/spec加一句需求观察它是否按「先澄清、后产出规格、不进入实现」的顺序走。如果它一上来就开始改文件说明 frontmatter 里的模式或权限没生效回头检查mode和tools两个字段。如果验证下来发现是模型通道这一侧的问题可以直接从下面这条路径走一遍先在 模型对话 里发一条消息确认 Key 和 Base URL 是通的再根据用量选择 Coding Plan然后到 API Keys 页面创建或重置 Key最后对照 Claude Code 文档 把配置文件再核一遍。整条链路上TaoToken 解决的是 Key 与 Base URL 这一段.github/prompts/里的那些文件仍然要你自己写——这恰好也说明了标题那句话通道可以换适配层换不了。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门