Wasu Models Skill
通过 wasu-cli 获取 Wasu AI 平台的 LLM 服务端点(API Key + Base URL),引导用户将其添加到当前 Agent 框架中。
边界声明
使用此 skill 当:
- 用户需要注册/登录 Wasu 平台或获取 API Key
- 用户询问 Wasu 平台有哪些可用模型
- 用户需要模型推荐或场景化选型建议
- 用户需要将模型配置写入某个 Agent 框架
不使用此 skill 当:
- 用户仅查询模型价格或计费账单详情(应查阅 Wasu 平台官网)
- 用户已有其他平台(如 OpenAI、Azure)的 API Key,不需要 Wasu
- 用户需要配置 MCP Server 或工具类插件(与 LLM 模型配置无关)
- 用户的 Agent 不在支持列表中且无自定义配置需求
输入与输出
Input:
- wasu CLI: 已安装或未安装(环境准备阶段处理)
- user logged in: boolean(第一步检测)
- target Agent: string(可选,第五步需要;可通过自动检测推断)
- selected models: string[](可选,第五步需要;若未指定则使用推荐方案)
Output:
- wasu-config.json: 包含 apiKey + baseUrl,保存到工作目录
- 模型推荐报告: 可用模型列表 + 场景化推荐
- Agent 配置文件: 更新目标 Agent 的配置文件(第五步)
环境准备
检测 wasu CLI 是否已安装
wasu --version
- 成功返回版本号:
- 版本号 >= v1.0.26 → 直接进入「工作流程」,无需更新
- 版本号 < v1.0.26 → 执行
wasu --update更新后进入「工作流程」 - 命令不存在 → 进入安装流程
安装 wasu CLI
方式一:npm 安装(推荐)
npm install -g wasu-cli --registry=https://registry.npmmirror.com
方式二:安装脚本(npm 不可用时)
Windows (PowerShell):
irm https://gitee.com/wasu-smarthome/wasu-cli/raw/main/install.ps1 | iex
macOS / Linux:
curl -fsSL https://gitee.com/wasu-smarthome/wasu-cli/raw/main/install.sh | bash
安装完成后验证 wasu --version 确保安装成功。
其他前置条件
- 用户已完成 Wasu 平台注册并拥有可用额度
工作流程
第一步:检查登录状态
wasu --user_config
解析返回的 JSON:
- "status":"logged_in" → 跳到第三步
- "status":"not_logged_in" → 进入第二步
第二步:引导登录
登录需要微信扫码,流程如下:
2.1 生成二维码
执行 wasu --login:
wasu --login
返回 JSON 格式:
{"qrImageURL":"https://api.2dcode.biz/v1/create-qr-code?data=...","qrcodeId":"xxx","scanURL":"https://..."}
2.2 展示二维码并启动轮询(同一条回复中完成,严格先后顺序)
> ⚠️ 关键约束:你必须在同一条回复中完成以下两步,且严格按顺序执行。不要等待用户回复,不要中断交互。
>
> 执行顺序(不可颠倒):
> 1. 先输出文本:将二维码图片或链接作为文本内容输出到回复中
> 2. 再发起工具调用:执行预创建 keystore 和轮询扫码状态的 bash 命令
>
> 禁止颠倒顺序:禁止先调用工具再输出文本。客户端会先渲染文本内容再执行工具调用,只有先输出文本,二维码才能在轮询期间展示给用户。
第一步:输出二维码文本(必须先执行)
按以下优先级展示二维码:
- Markdown 图片语法(推荐):
 - 登录链接:输出
scanURL,让用户在微信中打开。如剪贴板可用(macOS:pbcopy),可自动复制
第二步:预创建 keystore 并启动轮询(在输出文本之后发起工具调用)
# 预创建 keystore 文件(规避沙盒 O_CREAT 限制)
# Windows (PowerShell):
New-Item -ItemType Directory -Force -Path "$env:USERPROFILE\.wasu" | Out-Null
New-Item -ItemType File -Force -Path "$env:USERPROFILE\.wasu\keystore.enc" | Out-Null
# macOS / Linux:
mkdir -p ~/.wasu && touch ~/.wasu/keystore.enc && chmod 600 ~/.wasu/keystore.enc
# 轮询扫码状态(最长等待 120 秒)
wasu --login-status <qrcodeId> --out 120
--out <seconds> 会自动轮询直到用户扫码或超时,无需用户手动回复登录完成。
"status":"success"→ 登录成功,进入第三步"status":"expired"→ 二维码已过期,回到 2.1 重新生成"status":"timeout"→ 等待超时,提示用户:"轮询超时。如果你已经扫码登录,请回复我"。用户回复后,再次执行wasu --login-status <qrcodeId>(不加--out参数)做最后一次检查:"status":"success"→ 登录成功,进入第三步"status":"expired"→ 二维码已过期,回到 2.1 重新生成"status":"timeout"→ 仍未登录,提示用户检查网络或重新执行登录流程
第三步:获取配置并保存
绝对不要在对话、文本输出或日志中展示 API Key。
3.1 获取 LLM 配置
wasu --llm-config
返回 JSON:
{"apiKey":"sk-xxxx","baseUrl":"https://api.example.com/v1"}
3.2 保存到文件
获取配置后立即保存,不要将 apiKey 打印到对话中:
- 使用文件写入工具(推荐):解析返回 JSON,使用 Write / write-file 等工具写入
wasu-config.json - Shell 重定向(兜底):
bash # macOS / Linux: wasu --llm-config > wasu-config.json # Windows (PowerShell): wasu --llm-config | Out-File -FilePath wasu-config.json -Encoding utf8
3.3 验证保存结果
使用文件读取工具打开 wasu-config.json,确认 apiKey 和 baseUrl 字段存在且非空。
输出格式示例:
已获取 Wasu AI LLM 服务配置并保存到 wasu-config.json。请查看该文件获取 API Key 和 Base URL。
第四步:模型推荐
当用户完成配置或询问可用模型时,执行此步骤:
wasu --models
获取用户当前可用的模型列表,然后与以下参考文件交叉比对:
references/model-features.md:完整模型功能清单(分类、能力、适用场景、计费方式)references/recommendations.md:按场景的推荐矩阵和组合方案
输出格式
- 可用模型概览:列出用户可用的文本生成和多模态模型,按类别分组。图片和视频生成模型不在此展示(大部分 Agent 框架不支持直接配置此类模型)
- 功能介绍:对每个可用模型简要说明核心能力和适用场景
- 推荐建议:根据用户需求(如有)或通用场景,推荐首选 + 备选模型组合
- 计费提示:说明各模型的 Token 计费标准,提醒用户关注用量
交互方式
- 如果用户已明确需求(如"我需要一个代码能力强的模型"),直接给出针对性推荐
- 如果用户只是查看可用模型,展示文本生成和多模态模型列表 + 通用推荐方案
- 如果用户有特定场景问题,引导其描述需求后再推荐
- 如果用户明确询问图片或视频生成模型,可额外列出,但提醒这些模型无法直接配置到 Agent
追问:是否配置到当前 Agent
在模型推荐完成后,主动询问用户:
> 需要我帮你把这些模型配置到当前使用的 Agent 中吗?请告诉我你想配置的模型和 Agent(如 OpenCode、Claude Code、WorkBuddy、OpenClaw/QClaw 等)。
等待用户回复后,进入第五步。
第五步:配置模型到 Agent
根据用户指定的模型和 Agent,将模型配置写入对应配置文件。
前置操作:使用文件读取工具读取 wasu-config.json 获取 apiKey 和 baseUrl。绝对不要在对话中输出 apiKey 的值。
模型 ID 命名规则:配置中的模型 ID(id、name、model 等字段)必须严格使用 wasu --models 返回的原始名称,禁止添加任何前缀或后缀。参见 references/agent-configs.md 通用写入规则。
Agent 检测(可选)
如果用户未指定 Agent,可通过以下方式检测当前环境中已安装的 Agent:
command -v opencode && echo "OpenCode: installed"
command -v claude && echo "Claude Code: installed"
command -v codex && echo "Codex: installed"
ls -d ~/.openclaw 2>/dev/null && echo "OpenClaw: installed"
ls -d ~/.workbuddy 2>/dev/null && echo "WorkBuddy: installed"
ls -d ~/.hermes 2>/dev/null && echo "Hermes Agent: installed"
ls -d ~/.config/kilo 2>/dev/null && echo "Kilo CLI: installed"
默认选择路径:
- 仅检测到 1 个 Agent → 直接使用该 Agent,确认后立即执行
- 检测到多个 Agent → 列出列表,推荐当前正在运行的 Agent 作为首选
- 未检测到任何 Agent → 告知用户未检测到已安装 Agent,引导手动配置或询问目标 Agent
Agent 配置索引
| Agent | 配置文件 | 协议 | 详情 |
|---|---|---|---|
| OpenCode | ~/.config/opencode/opencode.json |
OpenAI 兼容 | references/agent-configs.md → OpenCode |
| Claude Code | ~/.claude/settings.json |
Anthropic | references/agent-configs.md → Claude Code |
| WorkBuddy | ~/.workbuddy/models.json |
OpenAI 兼容 | 见下方内联模板 |
| OpenClaw (QClaw) | ~/.openclaw/openclaw.json |
Anthropic Messages | references/agent-configs.md → OpenClaw |
| Codex | ~/.codex/config.toml + auth.json |
OpenAI Responses | references/agent-configs.md → Codex |
| Kilo CLI | ~/.config/kilo/config.json |
OpenAI 兼容 | references/agent-configs.md → Kilo CLI |
| Hermes Agent | ~/.hermes/config.yaml + .env |
Anthropic/OpenAI | references/agent-configs.md → Hermes Agent |
| Cursor | GUI 操作 | OpenAI 兼容 | references/agent-configs.md → Cursor / Cline |
| Cline | GUI 操作 | OpenAI 兼容 | references/agent-configs.md → Cursor / Cline |
WorkBuddy 配置(内联)
配置文件:~/.workbuddy/models.json
这是一个 JSON 数组文件。为每个模型追加一个对象:
[
{
"id": "<model-id>",
"name": "<model-id>",
"vendor": "Custom",
"url": "<baseUrl>",
"apiKey": "<apiKey>",
"supportsToolCall": true,
"supportsImages": false,
"supportsReasoning": false,
"useCustomProtocol": false
}
]
注意事项:
- 读取现有数组内容,合并新模型后写回完整数组
- id 和 name 字段必须严格使用 wasu --models 返回的原始模型名称,不要添加 wasu- 等前缀
- 根据模型实际能力调整 supportsImages、supportsReasoning 等布尔字段
- 多模态模型应设置 supportsImages: true
配置验证
写入完成后,执行格式合法性检查:
- JSON 文件(OpenCode / Claude Code / WorkBuddy / OpenClaw / Kilo):
bash python3 -c "import json; json.load(open('<file>'))" - TOML 文件(Codex):检查
[model_providers.wasu]节是否存在 - YAML 文件(Hermes):
bash python3 -c "import yaml; yaml.safe_load(open('<file>'))"
验证通过 → 进入「配置生效」;验证失败 → 向用户报告错误位置,建议手动检查。
配置生效
配置写入完成后,提示用户重启 Agent 客户端使配置生效:
- OpenCode / Kilo CLI:退出当前会话,重新启动终端会话
- Claude Code:退出当前会话,重新启动
claude命令 - WorkBuddy:关闭并重新打开 WorkBuddy 应用
- OpenClaw (QClaw):退出当前会话,重新启动
openclaw命令 - Codex:退出当前会话,重新启动
codex命令 - Hermes Agent:退出当前会话,重新启动
hermes命令 - Cursor / Cline:关闭并重新打开编辑器窗口
错误处理
| 场景 | 处理方式 |
|---|---|
wasu 命令不存在 |
提示用户先安装 wasu-cli(环境准备阶段) |
| 登录超时(二维码过期) | 重新执行 wasu --login 生成新二维码 |
| Token 过期 | wasu-cli 会自动刷新,无需额外处理 |
| 网络错误 | 提示用户检查网络连接后重试 |
save credentials: operation not permitted |
在沙盒配置 extraAllowWrite 中添加 ~/.wasu;或先执行 touch ~/.wasu/keystore.enc && chmod 600 预创建文件 |
parse: invalid character '<' (llm-config) |
沙盒限制了网络请求,检查网络连通性;最后才考虑 dangerouslyDisableSandbox=true |
| keystore.enc 已创建但大小为 0 | 删除后重新执行登录状态检查 |
wasu --models 返回空或未登录 |
提示用户先完成登录流程(第二步) |
| 用户可用模型列表与 model-features.md 无匹配 | 告知用户当前可用模型暂未收录在功能清单中,建议联系华数平台确认模型详情 |
| Agent 配置文件不存在 | 创建新文件并写入完整配置 |
| Agent 配置文件格式非法(JSON/TOML/YAML 解析失败) | 向用户报告错误位置,建议手动备份后重建 |
| 写入配置文件权限不足 | 检查目录权限;macOS/Linux 尝试 chmod;仍失败则输出配置内容让用户手动粘贴 |
| 配置文件已有同名 provider | 询问用户是覆盖现有 provider 还是跳过 |
| TOML 配置节不存在(Codex) | 追加 [model_providers.wasu] 节到文件末尾 |
注意事项
- API Key 是敏感信息,必须保存到文件而非直接输出明文,避免泄露到日志或对话历史
- 写入 Agent 配置文件时,必须先读取现有文件内容并合并,不可直接覆盖用户已有配置
- 写入配置过程中,绝对不要将 apiKey 的值输出到对话、日志或终端
- 如果用户需要自动化配置所有 Agent,建议使用
wasu --config-all命令(不在本 skill 范围内)