1. 为什么 Skills Manager 值得先装再谈 OpenCode如果你刚接触 OpenCode大概率会遇到一个很现实的问题技能Skills散落在各个目录里今天在~/.config/opencode/skills/手动建一个明天在项目里又复制一份.claude/skills/时间一长根本记不清哪个技能在哪、哪个版本是新的。Skills Manager 就是来解决这件事的——它是一个桌面应用把 OpenCode、Cursor、Claude Code、Codex 等 15 工具的 Skills 统一收进~/.skills-manager中央库再通过软链接或复制的方式同步到各个工具目录。它适合谁适合第一次配置 OpenCode、又不想把技能目录搞成一团乱麻的开发者。你不需要理解 Tauri 或 Rust只要会复制命令、会改一个 settings 配置片段就能在本地把第一个技能跑通。这篇指南的路径是先装 Skills Manager再把 OpenCode 的 Skills 目录指向中央库然后接入 TaoToken 的 API 通道最后用一条命令确认技能真的被加载了。我试过在 WSL2 里从零走一遍踩过的坑主要集中在软链接断裂和 API Key 没生效这两处下面会按顺序拆开讲。核心检索词先记住三个Skills Manager 安装、OpenCode Skills 目录、TaoToken API 接入。搞懂这三个后面的步骤就是顺水推舟。2. 前置准备TaoToken 通道与 OpenCode 环境在动 Skills Manager 之前先把 OpenCode 能用的模型通道准备好。OpenCode 本身是一个编码 Agent 工具它需要 Base URL、API Key、Model ID 三件套才能发请求。这里用 TaoToken 作为统一入口官网是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 地址是 https://taotoken.net/api 。先去控制台拿 Key打开 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite 登录后创建 API Key复制出来先存到本地临时文件。注意 Key 只显示一次别关页面就忘了。拿到 Key 之后模型 ID 可以在模型对话页确认比如 https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodelsutm_campaignrewrite 里能看到当前可用的模型列表选一个你打算在 OpenCode 里用的比如claude-sonnet-4-5这类编码向模型。OpenCode 的环境要求不复杂Node.js 18、能访问外网、有一个可写的配置目录。Linux/macOS 下配置目录通常是~/.config/opencode/Windows 下是%APPDATA%\opencode\。Skills Manager 的中央库固定在~/.skills-manager/这个路径在 WSL2 里同样适用。如果你在 WSL2 且没有 sudo 权限后面会用 AppImage 便携版不需要 root。这里先明确一个概念Skills Manager 管的是“技能文件”TaoToken 管的是“模型请求通道”两者不冲突。技能是给 OpenCode 看的提示词和工具描述模型通道是 OpenCode 发请求时用的出口。先把通道配好再装技能顺序别反。3. 可复制配置settings 片段与 Skills 目录同步这一节是全文最需要动手的部分。先装 Skills Manager再写 OpenCode 的 settings 配置最后把技能目录同步过去。3.1 安装 Skills ManagerWSL2 无 sudo 版如果你有图形界面直接去 Releases 下载对应安装包即可。WSL2 或无 sudo 环境用 AppImagemkdir -p ~/tools curl -L -o ~/tools/skills-manager.AppImage \ https://github.com/xingkongliang/skills-manager/releases/download/v1.11.1/skills-manager_1.11.1_amd64.AppImage chmod x ~/tools/skills-manager.AppImage ~/tools/skills-manager.AppImage 21 | head -5预期会看到libEGL warning: DRI3 error之类的输出这是正常的——WSL2 没有 GUI但目录结构已经创建好了。检查一下ls -la ~/.skills-manager/应该能看到skills/、scenarios/、cache/、logs/和skills-manager.db。3.2 建立 OpenCode 的 Skills 软链接OpenCode 默认读~/.config/opencode/skills/。把它指向中央库mkdir -p ~/.config/opencode rm -rf ~/.config/opencode/skills ln -s ~/.skills-manager/skills ~/.config/opencode/skills readlink -f ~/.config/opencode/skills最后一条命令应该输出/home/你的用户名/.skills-manager/skills。如果输出为空或报错说明软链接没建成功回到上一步检查中央库目录是否存在。3.3 OpenCode settings 配置片段OpenCode 的配置文件在~/.config/opencode/opencode.json部分版本是settings.json以你本地实际文件名为准。下面是一个可复制的 JSON 片段把 TaoToken 的 Base URL、Key、Model ID 三件套写进去{ provider: { taotoken: { type: openai-compatible, baseURL: https://taotoken.net/api, apiKey: sk-你的TaoTokenKey, models: { claude-sonnet-4-5: { id: claude-sonnet-4-5, name: Claude Sonnet 4.5 via TaoToken } } } }, skills: { directory: ~/.config/opencode/skills, autoLoad: true } }注意baseURL写https://taotoken.net/api不要加 UTM 参数也不要写成别的路径。apiKey换成你刚才在控制台复制的 Key。skills.directory指向软链接路径autoLoad设为 true 让 OpenCode 启动时自动扫描技能。如果你用的是 TOML 格式的配置部分 OpenCode 版本支持等价写法[provider.taotoken] type openai-compatible baseURL https://taotoken.net/api apiKey sk-你的TaoTokenKey [skills] directory ~/.config/opencode/skills autoLoad true保存后OpenCode 下次启动就会读取这个配置。如果你同时用 Claude Code它的配置在~/.claude/settings.jsonBase URL 和 Key 的写法类似但字段名可能不同按官方文档对齐即可。3.4 创建一个测试技能在中央库建一个最小技能验证同步链路mkdir -p ~/.skills-manager/skills/hello-skill cat ~/.skills-manager/skills/hello-skill/SKILL.md EOF # Hello Skill ## Description A minimal skill to verify Skills Manager sync. ## When to Use - When testing OpenCode skill loading ## Instructions Reply with hello from skill when invoked. EOF因为软链接已经建好这个技能会立刻出现在~/.config/opencode/skills/hello-skill/SKILL.md。用cat确认一下cat ~/.config/opencode/skills/hello-skill/SKILL.md能打印出内容说明 Skills Manager 到 OpenCode 的同步链路是通的。4. 验证请求确认技能加载与模型通道可用配置写完不算完得验证两件事技能真的被 OpenCode 加载了模型请求真的能通。4.1 验证技能加载OpenCode 启动时会扫描skills.directory。你可以用一条命令模拟扫描逻辑确认技能目录可读且结构正确find ~/.config/opencode/skills -name SKILL.md -maxdepth 2 | while read f; do echo found: $f done预期输出里应该包含hello-skill/SKILL.md。如果为空检查软链接是否断裂ls -la ~/.config/opencode/skills/如果显示红色或No such file or directory重新建链接rm -rf ~/.config/opencode/skills ln -s ~/.skills-manager/skills ~/.config/opencode/skills4.2 验证 TaoToken 模型通道用 curl 直接打 TaoToken 的 API确认 Key 和 Base URL 没问题curl -s https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer sk-你的TaoTokenKey \ -H Content-Type: application/json \ -d { model: claude-sonnet-4-5, messages: [{role: user, content: ping}], max_tokens: 16 } | head -20如果返回里有choices字段和内容说明通道正常。如果返回 401说明 Key 不对或没带上Bearer前缀如果返回model not found去模型对话页确认模型 ID 拼写。4.3 在 OpenCode 里跑第一个技能启动 OpenCode让它加载配置opencode --config ~/.config/opencode/opencode.json进入交互后输入触发技能的话比如“use hello-skill”。如果 OpenCode 返回了技能里定义的内容说明技能加载和模型通道都通了。这一步的成功标志是技能被识别 模型有响应两者缺一不可。如果 OpenCode 报local proxy failed通常是 Base URL 写错或网络不通如果报reading choices相关错误多半是 API 返回格式和 OpenCode 预期不一致检查type是否写成了openai-compatible。5. 常见报错排查401、软链接断裂与 OAuth 问题这一节按真实报错来对照遇到哪个查哪个。5.1 401 Unauthorized最常见。原因有三个Key 复制时带了空格、Key 已过期、请求头没带Bearer。检查方法echo sk-你的Key | wc -c如果长度明显不对重新去控制台复制。请求头必须是Authorization: Bearer sk-xxx少一个空格都会 401。5.2 local proxy failedOpenCode 报这个通常是 Base URL 不可达。先 curl 测一下curl -I https://taotoken.net/api如果 curl 也失败检查本地网络或 DNS。如果 curl 通但 OpenCode 不通检查配置文件里baseURL有没有多写路径比如写成https://taotoken.net/api/v1而 OpenCode 自己会拼/v1就会变成/api/v1/v1。5.3 reading choices 报错这个报错说明 OpenCode 收到了响应但解析choices字段失败。常见于type写错比如写成了anthropic但实际走的是 OpenAI 兼容格式。把type改成openai-compatible重启 OpenCode。5.4 OAuth 相关报错如果你在 OpenCode 里配了 OAuth 登录而不是 API Key可能会遇到 token 刷新失败。最省事的做法是改用 API Key 模式也就是上面 settings 片段里的写法。OAuth 适合有专门账号体系的场景本地开发用 Key 更直接。5.5 软链接断裂WSL2 重启后如果中央库目录被清理软链接会指向不存在的路径。检查readlink -f ~/.config/opencode/skills如果输出不是~/.skills-manager/skills重建链接。另外如果你在 Windows 侧和 WSL 侧都装了 Skills Manager注意两边的~不是同一个目录别混用。5.6 技能不生效技能文件存在但 OpenCode 不识别检查三点文件名必须是SKILL.md大小写敏感、目录层级必须是skills/skill-name/SKILL.md、autoLoad是否为 true。改完重启 OpenCode。6. 后续怎么用Coding Plan 与长期技能管理跑通第一个技能之后你可能会想技能多了怎么管模型调用量大了怎么控成本这时候可以了解 TaoToken 的 Coding Plan地址是 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 。它适合长期做编码 Agent 的场景按套餐走比单次调用更可控。技能管理方面Skills Manager 的场景Scenario功能值得用起来。比如建一个“Backend Dev”场景只启用后端相关技能再建一个“Code Review”场景只启用审查类技能。切换场景时OpenCode 看到的技能集合会跟着变不用手动改目录。Git 备份也建议开。把~/.skills-manager/skills/纳入一个私有仓库多台机器之间同步技能。注意skills-manager.db不要提交它是 SQLite 元数据换机器后重新扫描技能文件就能重建。如果你还想看更细的接入文档可以打开 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 里面有 Base URL、Key 管理、模型列表的说明。API Key 管理页在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 需要轮换 Key 时去那里操作。最后给一个实用技巧每次改完 settings 配置先用 curl 验证通道再启动 OpenCode。这样能把“配置错误”和“技能问题”分开定位省掉一半排查时间。技能目录的软链接建议写进 shell 启动脚本WSL2 重启后自动重建避免每次手动修。