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_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 地址是 https://taotoken.net/api 。
先去控制台拿 Key:打开 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite ,登录后创建 API Key,复制出来先存到本地临时文件。注意 Key 只显示一次,别关页面就忘了。拿到 Key 之后,模型 ID 可以在模型对话页确认,比如 https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=models&utm_campaign=rewrite 里能看到当前可用的模型列表,选一个你打算在 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 Manager(WSL2 无 sudo 版)
如果你有图形界面,直接去 Releases 下载对应安装包即可。WSL2 或无 sudo 环境用 AppImage:
mkdir -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 2>&1 | 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.json,Base 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 failed
OpenCode 报这个,通常是 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_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite 。它适合长期做编码 Agent 的场景,按套餐走比单次调用更可控。
技能管理方面,Skills Manager 的场景(Scenario)功能值得用起来。比如建一个“Backend Dev”场景,只启用后端相关技能;再建一个“Code Review”场景,只启用审查类技能。切换场景时,OpenCode 看到的技能集合会跟着变,不用手动改目录。
Git 备份也建议开。把~/.skills-manager/skills/纳入一个私有仓库,多台机器之间同步技能。注意skills-manager.db不要提交,它是 SQLite 元数据,换机器后重新扫描技能文件就能重建。
如果你还想看更细的接入文档,可以打开 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite ,里面有 Base URL、Key 管理、模型列表的说明。API Key 管理页在 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite ,需要轮换 Key 时去那里操作。
最后给一个实用技巧:每次改完 settings 配置,先用 curl 验证通道,再启动 OpenCode。这样能把“配置错误”和“技能问题”分开定位,省掉一半排查时间。技能目录的软链接建议写进 shell 启动脚本,WSL2 重启后自动重建,避免每次手动修。