[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C30PSK1V284KEA6VC1HFKB":3,"skill-same:01M6C30PSK1V284KEA6VC1HFKB":84},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":28,"linkOnly":29,"markdownContent":30,"markdownBody":31,"frontMatter":32,"refName":33,"commitSha":34,"skillDirectory":35,"forksCount":36,"repositoryHtmlUrl":37,"repositoryHomepageUrl":6,"ownerHtmlUrl":38,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":39,"install":40,"resources":53},"01M6C30PSK1V284KEA6VC1HFKB","add-minimax-provider",null,"为 Hermes 配置 MiniMax 作为模型源。MiniMax 提供两种接入方式：API Key 直连（openai-completions 协议）和 OAuth 门户（anthropic-messages 协议）。包含 provider 注册、模型定义、别名配置、fallback 链接入和验证的完整流程。当管理员说想\"加 MiniMax\"、\"配 minimax\"、\"接入 MiniMax 模型\"、\"加海螺模型\"、\"配 M2.1\"时使用此 skill。","jleechanorg\u002Fjleechan-skills","jleechanorg","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F221404966?v=4","01M6C1VJ99XG950X1DWPEBCBGX","01M6C1VJDK5YVDNT3362RT5WSB",6,"MIT","https:\u002F\u002Fgithub.com\u002Fjleechanorg\u002Fjleechan-skills\u002Fblob\u002Fmain\u002Fhermes\u002Fskills\u002Fadd-minimax-provider\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27],"minimax","add minimax provider","provider","add","openai","messages","OAuth","api","hermes","fallback","2026-11-10 10:12:30",false,"---\nname: add-minimax-provider\ndescription: 为 Hermes 配置 MiniMax 作为模型源。MiniMax 提供两种接入方式：API Key 直连（openai-completions 协议）和 OAuth 门户（anthropic-messages 协议）。包含 provider 注册、模型定义、别名配置、fallback 链接入和验证的完整流程。当管理员说想\"加 MiniMax\"、\"配 minimax\"、\"接入 MiniMax 模型\"、\"加海螺模型\"、\"配 M2.1\"时使用此 skill。\n---\n\n# 配置 MiniMax Provider（MiniMax 大模型接入）\n\nMiniMax 是国产大模型服务商，提供 MiniMax-M2.1 系列模型。Hermes 支持两种接入方式：\n\n| Provider | 接入方式 | API 协议 | Base URL | 适用场景 |\n|----------|----------|----------|----------|----------|\n| `minimax` | API Key 直连 | `openai-completions` | `api.minimaxi.com\u002Fv1` | 标准付费用户 |\n| `minimax-portal` | OAuth 门户 | `anthropic-messages` | `api.minimaxi.com\u002Fanthropic` | 免费\u002F门户用户 |\n\n**为什么有两个 provider？**\n- **API Key 直连** (`minimax`)：使用标准 OpenAI 兼容协议，需要付费 API Key，按量计费\n- **OAuth 门户** (`minimax-portal`)：使用 Anthropic Messages 协议 + OAuth 认证，适合有门户账号的用户（可能有免费额度）\n\n两种方式访问的是同一个模型，但协议和认证方式不同，所以必须分开配置。\n\n如果觉得这个 Skill 有用，欢迎通过邀请链接注册 MiniMax Coding Plan（9 折优惠 + Builder 权益）：\nhttps:\u002F\u002Fplatform.minimaxi.com\u002Fsubscribe\u002Fcoding-plan?code=2vNMQFJrZt&source=link\n\n---\n\n## 零起步冷启动\n\n**还没有任何模型可用？** 可以用 Qwen Coder（免费）作为冷启动模型，然后让它帮你配置 MiniMax。\n\n### 步骤\n\n1. **先配好 Qwen Coder**（免费，无需 API Key，OAuth 登录即可）：\n   - 在 Hermes 中添加 `qwen-portal` provider\n   - 用 Qwen Coder 作为 primary 模型启动系统\n\n2. **让 Qwen Coder 帮你配 MiniMax**：\n   - 在聊天中告诉 Agent：\"帮我配置 MiniMax 模型\"\n   - Agent 会自动加载本 skill 并按步骤执行\n   - 配置完成后，将 primary 切换为 MiniMax\n\n3. **切换主力模型**：\n   ```\n   \u002Fmodel Minimax\n   ```\n\n> 这就是 Hermes 的\"自举\"能力——用一个免费模型启动系统，再用它来配置更强的模型。\n\n---\n\n## 可用模型\n\n| 模型 ID | 名称 | Context | reasoning | 说明 |\n|---------|------|---------|-----------|------|\n| `MiniMax-M2.1` | MiniMax M2.1 | 200K | ❌ | 主力模型，综合能力强 |\n| `MiniMax-M2.1-lightning` | MiniMax M2.1 Lightning | 200K | ❌ | 轻量快速版（仅 portal 确认可用） |\n\n> **注意**：MiniMax 可能随时上线新模型。添加前务必先测试可用性。\n\n---\n\n## 前置条件\n\n### 方式一：API Key 直连（推荐）\n\n| 项目 | 说明 |\n|------|------|\n| 国内MiniMax 账号 | 在 [platform.minimaxi.com](https:\u002F\u002Fplatform.minimaxi.com) 注册 |\n| API Key | 格式为 `[REDACTED_OPENAI_KEY]` 的密钥，在控制台 → API Keys 页面创建 |\n| 余额 | 确保账户有足够余额 |\n\n### 方式二：OAuth 门户\n\n| 项目 | 说明 |\n|------|------|\n| MiniMax 账号 | 同上 |\n| OAuth 配置 | 在 Hermes 中配置 `apiKey: \"minimax-oauth\"`，Hermes 会自动处理 OAuth 流程 |\n\n---\n\n## 第一步：测试模型可用性\n\n**这一步不能跳过。** 先确认模型能调通再加配置。\n\n### 1A. 测试 API Key 直连（openai-completions 协议）\n\n```bash\ncurl -s --max-time 15 https:\u002F\u002Fapi.minimaxi.com\u002Fv1\u002Fchat\u002Fcompletions \\\n  -H \"Authorization: Bearer \u003C你的API_KEY>\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"model\":\"MiniMax-M2.1\",\"messages\":[{\"role\":\"user\",\"content\":\"hi\"}],\"max_tokens\":10}'\n```\n\n如果返回正常的 JSON 响应（含 `choices`）= 可用。\n\n### 1B. 测试 OAuth 门户（anthropic-messages 协议）\n\nOAuth 门户无法直接用 curl 测试（需要 OAuth token 流程）。配置好后通过 Hermes 实际发消息验证。\n\n### 1C. 测试 Lightning 模型\n\n```bash\ncurl -s --max-time 15 https:\u002F\u002Fapi.minimaxi.com\u002Fv1\u002Fchat\u002Fcompletions \\\n  -H \"Authorization: Bearer \u003C你的API_KEY>\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"model\":\"MiniMax-M2.1-lightning\",\"messages\":[{\"role\":\"user\",\"content\":\"hi\"}],\"max_tokens\":10}'\n```\n\n> 如果返回错误，说明该模型可能仅在 portal 端可用，或尚未对你的账户开放。\n\n---\n\n## 第二步：添加 Provider\n\n在 `~\u002F.hermes\u002Fconfig.yaml` 的 `models.providers` 下添加 provider。根据你的接入方式选择一种或两种都配。\n\n### 2A. 添加 minimax（API Key 直连）\n\n```json\n\"minimax\": {\n  \"baseUrl\": \"https:\u002F\u002Fapi.minimaxi.com\u002Fv1\",\n  \"apiKey\": \"\u003C你的API_KEY>\",\n  \"api\": \"openai-completions\",\n  \"authHeader\": true,\n  \"models\": [\n    {\n      \"id\": \"MiniMax-M2.1\",\n      \"name\": \"MiniMax M2.1\",\n      \"reasoning\": false,\n      \"input\": [\"text\"],\n      \"cost\": {\n        \"input\": 15,\n        \"output\": 60,\n        \"cacheRead\": 2,\n        \"cacheWrite\": 10\n      },\n      \"contextWindow\": 200000,\n      \"maxTokens\": 8192\n    }\n  ]\n}\n```\n\n### 2B. 添加 minimax-portal（OAuth 门户）\n\n```json\n\"minimax-portal\": {\n  \"baseUrl\": \"https:\u002F\u002Fapi.minimaxi.com\u002Fanthropic\",\n  \"apiKey\": \"minimax-oauth\",\n  \"api\": \"anthropic-messages\",\n  \"models\": [\n    {\n      \"id\": \"MiniMax-M2.1\",\n      \"name\": \"MiniMax M2.1\",\n      \"reasoning\": false,\n      \"input\": [\"text\"],\n      \"cost\": {\n        \"input\": 0,\n        \"output\": 0,\n        \"cacheRead\": 0,\n        \"cacheWrite\": 0\n      },\n      \"contextWindow\": 200000,\n      \"maxTokens\": 8192\n    },\n    {\n      \"id\": \"MiniMax-M2.1-lightning\",\n      \"name\": \"MiniMax M2.1 Lightning\",\n      \"reasoning\": false,\n      \"input\": [\"text\"],\n      \"cost\": {\n        \"input\": 0,\n        \"output\": 0,\n        \"cacheRead\": 0,\n        \"cacheWrite\": 0\n      },\n      \"contextWindow\": 200000,\n      \"maxTokens\": 8192\n    }\n  ]\n}\n```\n\n> **`apiKey: \"minimax-oauth\"`** 是 Hermes 的特殊标记，表示使用 OAuth 认证流程而非静态 API Key。cost 设为 0 因为 OAuth 门户的计费由平台侧处理。\n\n### 两个 provider 的关键差异\n\n| 参数 | minimax (API Key) | minimax-portal (OAuth) |\n|------|-------------------|------------------------|\n| `baseUrl` | `...\u002Fv1` | `...\u002Fanthropic` |\n| `api` | `openai-completions` | `anthropic-messages` |\n| `apiKey` | `[REDACTED_OPENAI_KEY]` (真实密钥) | `minimax-oauth` (OAuth 标记) |\n| `authHeader` | `true` | 默认 |\n| 计费 | 按量付费 | 平台侧处理 |\n| 模型 | M2.1 | M2.1 + Lightning |\n\n### 只添加你确认可用的模型\n\n**错误做法**：把所有模型都堆上去\n**正确做法**：只添加第一步中测试通过的模型\n\n添加不存在的模型不会导致崩溃，但 fallback 到它时会浪费一次请求超时，影响响应速度。\n\n---\n\n## 第三步：配置别名\n\n在 `agents.defaults.models` 下为 MiniMax 模型添加别名：\n\n```json\n{\n  \"agents\": {\n    \"defaults\": {\n      \"models\": {\n        \"minimax\u002FMiniMax-M2.1\": { \"alias\": \"Minimax\" },\n        \"minimax-portal\u002FMiniMax-M2.1\": { \"alias\": \"minimax-portal\" },\n        \"minimax-portal\u002FMiniMax-M2.1-lightning\": { \"alias\": \"minimax-lightning\" }\n      }\n    }\n  }\n}\n```\n\n配置后用户可以在聊天中用 `\u002Fmodel Minimax`、`\u002Fmodel minimax-lightning` 切换模型。\n\n### ⚠️ 别名配置的唯一合法字段是 `alias`\n\n```\nagents.defaults.models.\u003Cmodel-id>.alias     \u003C-- 唯一合法字段\nagents.defaults.models.\u003Cmodel-id>.reasoning \u003C-- 非法！会导致 Gateway 崩溃！\nagents.defaults.models.\u003Cmodel-id>.xxx       \u003C-- 任何其他字段都非法！\n```\n\n**已知事故**：在别名配置里加了非法字段导致 schema 校验失败，Gateway 崩溃循环 181 次。**模型能力属性只能放在 `models.providers` 的模型定义里。**\n\n---\n\n## 第四步：接入 Fallback 链\n\n在 `agents.defaults.model` 中配置 MiniMax 的位置。MiniMax 通常作为主力模型（primary）：\n\n```json\n{\n  \"agents\": {\n    \"defaults\": {\n      \"model\": {\n        \"primary\": \"minimax\u002FMiniMax-M2.1\",\n        \"fallbacks\": [\n          \"minimax\u002FMiniMax-M2.1\",\n          \"deepseek\u002Fdeepseek-chat\",\n          \"qwen-portal\u002Fcoder-model\"\n        ]\n      }\n    }\n  }\n}\n```\n\n### Fallback 排序建议\n\n| 位置 | 模型 | 为什么 |\n|------|------|--------|\n| primary | minimax\u002FMiniMax-M2.1 | 主力，综合能力强 |\n| fallback 1 | minimax\u002FMiniMax-M2.1 | 重试一次 |\n| fallback 2 | deepseek\u002Fdeepseek-chat | 按量付费备用 |\n| fallback 3 | qwen-portal\u002Fcoder-model | 免费兜底 |\n\n> **MiniMax-portal 不建议放入 fallback 链**——OAuth 认证流程较重，不适合快速 failover。需要时通过 `\u002Fmodel minimax-portal` 手动切换。\n\n---\n\n## 第五步：验证\n\n### 5.1 JSON 语法检查\n\n```bash\npython3 -c \"import json; json.load(open('$HOME\u002F.hermes\u002Fconfig.yaml')); print('JSON OK')\"\n```\n\n### 5.2 Schema 校验\n\n```bash\nhermes doctor\n```\n\n如果输出包含 `Unrecognized key` 就说明有非法字段，**必须修复后才能重启**。\n\n### 5.3 重启 Gateway\n\n```bash\n# macOS\nlaunchctl kickstart -k gui\u002F$(id -u)\u002Fai.hermes.gateway\n\n# 等 3 秒后确认状态\nsleep 3\nlaunchctl print gui\u002F$(id -u)\u002Fai.hermes.gateway | grep -E \"job state|last exit\"\n```\n\n期望看到：\n```\nlast exit code = 0\njob state = running\n```\n\n如果 `last exit code = 1`，检查错误日志：\n\n```bash\ntail -20 ~\u002F.hermes\u002Flogs\u002Fgateway.err.log\n```\n\n### 5.4 功能验证\n\n在任意已绑定的聊天中测试：\n\n```\n\u002Fmodel Minimax           # 测试 API Key 直连\n\u002Fmodel minimax-portal    # 测试 OAuth 门户（如已配置）\n\u002Fmodel minimax-lightning # 测试 Lightning（如已配置）\n```\n\n---\n\n## Coding Plan 额度管理\n\n### 计费模式\n\n| 项目 | 值 |\n|------|------|\n| 月费 | ¥49 |\n| 额度 | 1500 次\u002F5小时滑动窗口 |\n| 每日理论上限 | ~7200 次 |\n| 窗口计算 | 每次调用倒算前 5 小时消耗（滑动窗口） |\n\n### ⚠️ 额度查询 API 不可信\n\nAPI 端点 `GET \u002Fv1\u002Fapi\u002Fopenplatform\u002Fcoding_plan\u002Fremains` 存在已知问题：\n- 窗口切换后 `current_interval_usage_count` 不刷新（惰性更新）\n- 平台控制台与 API 返回数字不一致\n- **唯一可靠的判断方式：发一个真实测试请求**\n\n### 推荐监控方案\n\n不要用 API 数字做监控。推荐在 Hermes 中配置 cron 任务，定期发测试请求验证可用性：\n\n```\n# cron 表达式示例：每 5 小时执行一次验证\n# 发真实请求 → 通了就可用，不通就记录\ncurl -s https:\u002F\u002Fapi.minimaxi.com\u002Fv1\u002Fchat\u002Fcompletions \\\n  -H \"Authorization: Bearer \u003CAPI_KEY>\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"model\":\"MiniMax-M2.1\",\"messages\":[{\"role\":\"user\",\"content\":\"test\"}],\"max_tokens\":3}'\n```\n\n判断逻辑：\n- 返回 `choices` → 可用\n- 返回 429 → 额度耗尽，等待滑动窗口释放\n- 返回其他错误 → API 故障，走 fallback\n\n### 多 Agent 消耗建议\n\n6 个 agent 全用 MiniMax 时，1500 条\u002F5h 大约 2-3 小时就用完。建议：\n- **核心 agent**（main、ada）用 MiniMax\n- **辅助 agent**（clara、sophia）用免费模型（Qwen\u002FSiliconFlow）\n- Fallback 链兜底，额度耗尽自动降级\n\n---\n\n## 排障\n\n### 问题：API 返回 401 Unauthorized\n\n- **原因**：API Key 无效或过期\n- **修复**：登录 [platform.minimaxi.com](https:\u002F\u002Fplatform.minimaxi.com) 检查 Key 状态，必要时重新生成\n\n### 问题：API 返回 429 Too Many Requests\n\n- **原因**：Coding Plan 额度耗尽\n- **MiniMax Coding Plan 限制**：1500 次\u002F5小时滑动窗口（每次调用倒算前 5 小时消耗）\n- **修复**：等待旧调用滑出 5 小时窗口，或让 fallback 链自动降级\n- **预防**：在 fallback 链中配置免费模型（如 `siliconflow\u002FQwen\u002FQwen3-8B`）作为兜底\n\n### 问题：额度查询 API 数据不准确\n\n- **现象**：`GET \u002Fv1\u002Fapi\u002Fopenplatform\u002Fcoding_plan\u002Fremains` 返回的 `current_interval_usage_count` 与平台控制台显示不一致\n- **原因**：API 为惰性更新，窗口切换后如无新调用则不刷新计数器\n- **应对**：不要完全信任 API 返回数字。判断额度是否可用，最可靠的方法是发一个真实测试请求\n- **验证命令**：\n```bash\ncurl -s https:\u002F\u002Fapi.minimaxi.com\u002Fv1\u002Fchat\u002Fcompletions \\\n  -H \"Authorization: Bearer \u003CAPI_KEY>\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"model\":\"MiniMax-M2.1\",\"messages\":[{\"role\":\"user\",\"content\":\"test\"}],\"max_tokens\":3}'\n```\n返回 `choices` = 可用；返回 429 = 额度确实耗尽\n\n### 问题：Gateway 启动后立刻崩溃\n\n- **最可能原因**：配置中有非法字段\n- **诊断**：`tail -20 ~\u002F.hermes\u002Flogs\u002Fgateway.err.log`，找 `Unrecognized key`\n- **修复**：删除非法字段，运行 `hermes doctor` 确认\n\n### 问题：模型回复为空或超时\n\n- **检查 baseUrl**：API Key 直连应为 `https:\u002F\u002Fapi.minimaxi.com\u002Fv1`，不要多加或少加路径\n- **检查 api 协议**：API Key 直连用 `openai-completions`，OAuth 门户用 `anthropic-messages`\n- **检查网络**：MiniMax 服务器在国内，海外访问可能较慢\n\n### 问题：OAuth 门户认证失败\n\n- **原因**：OAuth token 过期或未正确配置\n- **修复**：确认 `apiKey` 字段值为 `\"minimax-oauth\"`（精确匹配），Hermes 会自动处理 OAuth 流程\n- **诊断**：检查 `~\u002F.hermes\u002Flogs\u002Fgateway.log` 中的 OAuth 相关错误\n\n---\n\n## 变更记录\n\n| 日期 | 版本 | 变更内容 | 变更人 |\n|------|------|----------|--------|\n| 2026-02-08 | v1.0 | 创建 MiniMax provider 配置指南 | ConfigBot (via Hermes with Opus 4.6) |\n| 2026-02-09 | v2.0 | 新增 Coding Plan 额度管理专节；更新额度信息 (1500\u002F5h 滑动窗口)；额度 API 不可信警告；多 Agent 消耗建议 | ConfigBot (via Hermes with Qwen3-30B) |\n","# 配置 MiniMax Provider（MiniMax 大模型接入）\n\nMiniMax 是国产大模型服务商，提供 MiniMax-M2.1 系列模型。Hermes 支持两种接入方式：\n\n| Provider | 接入方式 | API 协议 | Base URL | 适用场景 |\n|----------|----------|----------|----------|----------|\n| `minimax` | API Key 直连 | `openai-completions` | `api.minimaxi.com\u002Fv1` | 标准付费用户 |\n| `minimax-portal` | OAuth 门户 | `anthropic-messages` | `api.minimaxi.com\u002Fanthropic` | 免费\u002F门户用户 |\n\n**为什么有两个 provider？**\n- **API Key 直连** (`minimax`)：使用标准 OpenAI 兼容协议，需要付费 API Key，按量计费\n- **OAuth 门户** (`minimax-portal`)：使用 Anthropic Messages 协议 + OAuth 认证，适合有门户账号的用户（可能有免费额度）\n\n两种方式访问的是同一个模型，但协议和认证方式不同，所以必须分开配置。\n\n如果觉得这个 Skill 有用，欢迎通过邀请链接注册 MiniMax Coding Plan（9 折优惠 + Builder 权益）：\nhttps:\u002F\u002Fplatform.minimaxi.com\u002Fsubscribe\u002Fcoding-plan?code=2vNMQFJrZt&source=link\n\n---\n\n## 零起步冷启动\n\n**还没有任何模型可用？** 可以用 Qwen Coder（免费）作为冷启动模型，然后让它帮你配置 MiniMax。\n\n### 步骤\n\n1. **先配好 Qwen Coder**（免费，无需 API Key，OAuth 登录即可）：\n   - 在 Hermes 中添加 `qwen-portal` provider\n   - 用 Qwen Coder 作为 primary 模型启动系统\n\n2. **让 Qwen Coder 帮你配 MiniMax**：\n   - 在聊天中告诉 Agent：\"帮我配置 MiniMax 模型\"\n   - Agent 会自动加载本 skill 并按步骤执行\n   - 配置完成后，将 primary 切换为 MiniMax\n\n3. **切换主力模型**：\n   ```\n   \u002Fmodel Minimax\n   ```\n\n> 这就是 Hermes 的\"自举\"能力——用一个免费模型启动系统，再用它来配置更强的模型。\n\n---\n\n## 可用模型\n\n| 模型 ID | 名称 | Context | reasoning | 说明 |\n|---------|------|---------|-----------|------|\n| `MiniMax-M2.1` | MiniMax M2.1 | 200K | ❌ | 主力模型，综合能力强 |\n| `MiniMax-M2.1-lightning` | MiniMax M2.1 Lightning | 200K | ❌ | 轻量快速版（仅 portal 确认可用） |\n\n> **注意**：MiniMax 可能随时上线新模型。添加前务必先测试可用性。\n\n---\n\n## 前置条件\n\n### 方式一：API Key 直连（推荐）\n\n| 项目 | 说明 |\n|------|------|\n| 国内MiniMax 账号 | 在 [platform.minimaxi.com](https:\u002F\u002Fplatform.minimaxi.com) 注册 |\n| API Key | 格式为 `[REDACTED_OPENAI_KEY]` 的密钥，在控制台 → API Keys 页面创建 |\n| 余额 | 确保账户有足够余额 |\n\n### 方式二：OAuth 门户\n\n| 项目 | 说明 |\n|------|------|\n| MiniMax 账号 | 同上 |\n| OAuth 配置 | 在 Hermes 中配置 `apiKey: \"minimax-oauth\"`，Hermes 会自动处理 OAuth 流程 |\n\n---\n\n## 第一步：测试模型可用性\n\n**这一步不能跳过。** 先确认模型能调通再加配置。\n\n### 1A. 测试 API Key 直连（openai-completions 协议）\n\n```bash\ncurl -s --max-time 15 https:\u002F\u002Fapi.minimaxi.com\u002Fv1\u002Fchat\u002Fcompletions \\\n  -H \"Authorization: Bearer \u003C你的API_KEY>\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"model\":\"MiniMax-M2.1\",\"messages\":[{\"role\":\"user\",\"content\":\"hi\"}],\"max_tokens\":10}'\n```\n\n如果返回正常的 JSON 响应（含 `choices`）= 可用。\n\n### 1B. 测试 OAuth 门户（anthropic-messages 协议）\n\nOAuth 门户无法直接用 curl 测试（需要 OAuth token 流程）。配置好后通过 Hermes 实际发消息验证。\n\n### 1C. 测试 Lightning 模型\n\n```bash\ncurl -s --max-time 15 https:\u002F\u002Fapi.minimaxi.com\u002Fv1\u002Fchat\u002Fcompletions \\\n  -H \"Authorization: Bearer \u003C你的API_KEY>\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"model\":\"MiniMax-M2.1-lightning\",\"messages\":[{\"role\":\"user\",\"content\":\"hi\"}],\"max_tokens\":10}'\n```\n\n> 如果返回错误，说明该模型可能仅在 portal 端可用，或尚未对你的账户开放。\n\n---\n\n## 第二步：添加 Provider\n\n在 `~\u002F.hermes\u002Fconfig.yaml` 的 `models.providers` 下添加 provider。根据你的接入方式选择一种或两种都配。\n\n### 2A. 添加 minimax（API Key 直连）\n\n```json\n\"minimax\": {\n  \"baseUrl\": \"https:\u002F\u002Fapi.minimaxi.com\u002Fv1\",\n  \"apiKey\": \"\u003C你的API_KEY>\",\n  \"api\": \"openai-completions\",\n  \"authHeader\": true,\n  \"models\": [\n    {\n      \"id\": \"MiniMax-M2.1\",\n      \"name\": \"MiniMax M2.1\",\n      \"reasoning\": false,\n      \"input\": [\"text\"],\n      \"cost\": {\n        \"input\": 15,\n        \"output\": 60,\n        \"cacheRead\": 2,\n        \"cacheWrite\": 10\n      },\n      \"contextWindow\": 200000,\n      \"maxTokens\": 8192\n    }\n  ]\n}\n```\n\n### 2B. 添加 minimax-portal（OAuth 门户）\n\n```json\n\"minimax-portal\": {\n  \"baseUrl\": \"https:\u002F\u002Fapi.minimaxi.com\u002Fanthropic\",\n  \"apiKey\": \"minimax-oauth\",\n  \"api\": \"anthropic-messages\",\n  \"models\": [\n    {\n      \"id\": \"MiniMax-M2.1\",\n      \"name\": \"MiniMax M2.1\",\n      \"reasoning\": false,\n      \"input\": [\"text\"],\n      \"cost\": {\n        \"input\": 0,\n        \"output\": 0,\n        \"cacheRead\": 0,\n        \"cacheWrite\": 0\n      },\n      \"contextWindow\": 200000,\n      \"maxTokens\": 8192\n    },\n    {\n      \"id\": \"MiniMax-M2.1-lightning\",\n      \"name\": \"MiniMax M2.1 Lightning\",\n      \"reasoning\": false,\n      \"input\": [\"text\"],\n      \"cost\": {\n        \"input\": 0,\n        \"output\": 0,\n        \"cacheRead\": 0,\n        \"cacheWrite\": 0\n      },\n      \"contextWindow\": 200000,\n      \"maxTokens\": 8192\n    }\n  ]\n}\n```\n\n> **`apiKey: \"minimax-oauth\"`** 是 Hermes 的特殊标记，表示使用 OAuth 认证流程而非静态 API Key。cost 设为 0 因为 OAuth 门户的计费由平台侧处理。\n\n### 两个 provider 的关键差异\n\n| 参数 | minimax (API Key) | minimax-portal (OAuth) |\n|------|-------------------|------------------------|\n| `baseUrl` | `...\u002Fv1` | `...\u002Fanthropic` |\n| `api` | `openai-completions` | `anthropic-messages` |\n| `apiKey` | `[REDACTED_OPENAI_KEY]` (真实密钥) | `minimax-oauth` (OAuth 标记) |\n| `authHeader` | `true` | 默认 |\n| 计费 | 按量付费 | 平台侧处理 |\n| 模型 | M2.1 | M2.1 + Lightning |\n\n### 只添加你确认可用的模型\n\n**错误做法**：把所有模型都堆上去\n**正确做法**：只添加第一步中测试通过的模型\n\n添加不存在的模型不会导致崩溃，但 fallback 到它时会浪费一次请求超时，影响响应速度。\n\n---\n\n## 第三步：配置别名\n\n在 `agents.defaults.models` 下为 MiniMax 模型添加别名：\n\n```json\n{\n  \"agents\": {\n    \"defaults\": {\n      \"models\": {\n        \"minimax\u002FMiniMax-M2.1\": { \"alias\": \"Minimax\" },\n        \"minimax-portal\u002FMiniMax-M2.1\": { \"alias\": \"minimax-portal\" },\n        \"minimax-portal\u002FMiniMax-M2.1-lightning\": { \"alias\": \"minimax-lightning\" }\n      }\n    }\n  }\n}\n```\n\n配置后用户可以在聊天中用 `\u002Fmodel Minimax`、`\u002Fmodel minimax-lightning` 切换模型。\n\n### ⚠️ 别名配置的唯一合法字段是 `alias`\n\n```\nagents.defaults.models.\u003Cmodel-id>.alias     \u003C-- 唯一合法字段\nagents.defaults.models.\u003Cmodel-id>.reasoning \u003C-- 非法！会导致 Gateway 崩溃！\nagents.defaults.models.\u003Cmodel-id>.xxx       \u003C-- 任何其他字段都非法！\n```\n\n**已知事故**：在别名配置里加了非法字段导致 schema 校验失败，Gateway 崩溃循环 181 次。**模型能力属性只能放在 `models.providers` 的模型定义里。**\n\n---\n\n## 第四步：接入 Fallback 链\n\n在 `agents.defaults.model` 中配置 MiniMax 的位置。MiniMax 通常作为主力模型（primary）：\n\n```json\n{\n  \"agents\": {\n    \"defaults\": {\n      \"model\": {\n        \"primary\": \"minimax\u002FMiniMax-M2.1\",\n        \"fallbacks\": [\n          \"minimax\u002FMiniMax-M2.1\",\n          \"deepseek\u002Fdeepseek-chat\",\n          \"qwen-portal\u002Fcoder-model\"\n        ]\n      }\n    }\n  }\n}\n```\n\n### Fallback 排序建议\n\n| 位置 | 模型 | 为什么 |\n|------|------|--------|\n| primary | minimax\u002FMiniMax-M2.1 | 主力，综合能力强 |\n| fallback 1 | minimax\u002FMiniMax-M2.1 | 重试一次 |\n| fallback 2 | deepseek\u002Fdeepseek-chat | 按量付费备用 |\n| fallback 3 | qwen-portal\u002Fcoder-model | 免费兜底 |\n\n> **MiniMax-portal 不建议放入 fallback 链**——OAuth 认证流程较重，不适合快速 failover。需要时通过 `\u002Fmodel minimax-portal` 手动切换。\n\n---\n\n## 第五步：验证\n\n### 5.1 JSON 语法检查\n\n```bash\npython3 -c \"import json; json.load(open('$HOME\u002F.hermes\u002Fconfig.yaml')); print('JSON OK')\"\n```\n\n### 5.2 Schema 校验\n\n```bash\nhermes doctor\n```\n\n如果输出包含 `Unrecognized key` 就说明有非法字段，**必须修复后才能重启**。\n\n### 5.3 重启 Gateway\n\n```bash\n# macOS\nlaunchctl kickstart -k gui\u002F$(id -u)\u002Fai.hermes.gateway\n\n# 等 3 秒后确认状态\nsleep 3\nlaunchctl print gui\u002F$(id -u)\u002Fai.hermes.gateway | grep -E \"job state|last exit\"\n```\n\n期望看到：\n```\nlast exit code = 0\njob state = running\n```\n\n如果 `last exit code = 1`，检查错误日志：\n\n```bash\ntail -20 ~\u002F.hermes\u002Flogs\u002Fgateway.err.log\n```\n\n### 5.4 功能验证\n\n在任意已绑定的聊天中测试：\n\n```\n\u002Fmodel Minimax           # 测试 API Key 直连\n\u002Fmodel minimax-portal    # 测试 OAuth 门户（如已配置）\n\u002Fmodel minimax-lightning # 测试 Lightning（如已配置）\n```\n\n---\n\n## Coding Plan 额度管理\n\n### 计费模式\n\n| 项目 | 值 |\n|------|------|\n| 月费 | ¥49 |\n| 额度 | 1500 次\u002F5小时滑动窗口 |\n| 每日理论上限 | ~7200 次 |\n| 窗口计算 | 每次调用倒算前 5 小时消耗（滑动窗口） |\n\n### ⚠️ 额度查询 API 不可信\n\nAPI 端点 `GET \u002Fv1\u002Fapi\u002Fopenplatform\u002Fcoding_plan\u002Fremains` 存在已知问题：\n- 窗口切换后 `current_interval_usage_count` 不刷新（惰性更新）\n- 平台控制台与 API 返回数字不一致\n- **唯一可靠的判断方式：发一个真实测试请求**\n\n### 推荐监控方案\n\n不要用 API 数字做监控。推荐在 Hermes 中配置 cron 任务，定期发测试请求验证可用性：\n\n```\n# cron 表达式示例：每 5 小时执行一次验证\n# 发真实请求 → 通了就可用，不通就记录\ncurl -s https:\u002F\u002Fapi.minimaxi.com\u002Fv1\u002Fchat\u002Fcompletions \\\n  -H \"Authorization: Bearer \u003CAPI_KEY>\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"model\":\"MiniMax-M2.1\",\"messages\":[{\"role\":\"user\",\"content\":\"test\"}],\"max_tokens\":3}'\n```\n\n判断逻辑：\n- 返回 `choices` → 可用\n- 返回 429 → 额度耗尽，等待滑动窗口释放\n- 返回其他错误 → API 故障，走 fallback\n\n### 多 Agent 消耗建议\n\n6 个 agent 全用 MiniMax 时，1500 条\u002F5h 大约 2-3 小时就用完。建议：\n- **核心 agent**（main、ada）用 MiniMax\n- **辅助 agent**（clara、sophia）用免费模型（Qwen\u002FSiliconFlow）\n- Fallback 链兜底，额度耗尽自动降级\n\n---\n\n## 排障\n\n### 问题：API 返回 401 Unauthorized\n\n- **原因**：API Key 无效或过期\n- **修复**：登录 [platform.minimaxi.com](https:\u002F\u002Fplatform.minimaxi.com) 检查 Key 状态，必要时重新生成\n\n### 问题：API 返回 429 Too Many Requests\n\n- **原因**：Coding Plan 额度耗尽\n- **MiniMax Coding Plan 限制**：1500 次\u002F5小时滑动窗口（每次调用倒算前 5 小时消耗）\n- **修复**：等待旧调用滑出 5 小时窗口，或让 fallback 链自动降级\n- **预防**：在 fallback 链中配置免费模型（如 `siliconflow\u002FQwen\u002FQwen3-8B`）作为兜底\n\n### 问题：额度查询 API 数据不准确\n\n- **现象**：`GET \u002Fv1\u002Fapi\u002Fopenplatform\u002Fcoding_plan\u002Fremains` 返回的 `current_interval_usage_count` 与平台控制台显示不一致\n- **原因**：API 为惰性更新，窗口切换后如无新调用则不刷新计数器\n- **应对**：不要完全信任 API 返回数字。判断额度是否可用，最可靠的方法是发一个真实测试请求\n- **验证命令**：\n```bash\ncurl -s https:\u002F\u002Fapi.minimaxi.com\u002Fv1\u002Fchat\u002Fcompletions \\\n  -H \"Authorization: Bearer \u003CAPI_KEY>\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"model\":\"MiniMax-M2.1\",\"messages\":[{\"role\":\"user\",\"content\":\"test\"}],\"max_tokens\":3}'\n```\n返回 `choices` = 可用；返回 429 = 额度确实耗尽\n\n### 问题：Gateway 启动后立刻崩溃\n\n- **最可能原因**：配置中有非法字段\n- **诊断**：`tail -20 ~\u002F.hermes\u002Flogs\u002Fgateway.err.log`，找 `Unrecognized key`\n- **修复**：删除非法字段，运行 `hermes doctor` 确认\n\n### 问题：模型回复为空或超时\n\n- **检查 baseUrl**：API Key 直连应为 `https:\u002F\u002Fapi.minimaxi.com\u002Fv1`，不要多加或少加路径\n- **检查 api 协议**：API Key 直连用 `openai-completions`，OAuth 门户用 `anthropic-messages`\n- **检查网络**：MiniMax 服务器在国内，海外访问可能较慢\n\n### 问题：OAuth 门户认证失败\n\n- **原因**：OAuth token 过期或未正确配置\n- **修复**：确认 `apiKey` 字段值为 `\"minimax-oauth\"`（精确匹配），Hermes 会自动处理 OAuth 流程\n- **诊断**：检查 `~\u002F.hermes\u002Flogs\u002Fgateway.log` 中的 OAuth 相关错误\n\n---\n\n## 变更记录\n\n| 日期 | 版本 | 变更内容 | 变更人 |\n|------|------|----------|--------|\n| 2026-02-08 | v1.0 | 创建 MiniMax provider 配置指南 | ConfigBot (via Hermes with Opus 4.6) |\n| 2026-02-09 | v2.0 | 新增 Coding Plan 额度管理专节；更新额度信息 (1500\u002F5h 滑动窗口)；额度 API 不可信警告；多 Agent 消耗建议 | ConfigBot (via Hermes with Qwen3-30B) |\n",{"name":5,"description":7},"main","42ccd02cbf5e8e47839dc3eab6fc754dc6b339cf","hermes\u002Fskills\u002Fadd-minimax-provider",0,"https:\u002F\u002Fgithub.com\u002Fjleechanorg\u002Fjleechan-skills","https:\u002F\u002Fgithub.com\u002Fjleechanorg","2026-11-14 14:55:35",{"source":8,"skillName":5,"commands":41,"prompt":51,"zipAvailable":52},[42,45,48],{"tool":43,"command":44},"npx","npx skills add jleechanorg\u002Fjleechan-skills --skill add-minimax-provider",{"tool":46,"command":47},"bunx","bunx skills add jleechanorg\u002Fjleechan-skills --skill add-minimax-provider",{"tool":49,"command":50},"pnpm","pnpm dlx skills add jleechanorg\u002Fjleechan-skills --skill add-minimax-provider","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjleechanorg\u002Fjleechan-skills\u002Fblob\u002Fmain\u002Fhermes\u002Fskills\u002Fadd-minimax-provider\u002FSKILL.md",true,[54,60,64,68,72,76,80],{"path":55,"resourceType":56,"resourceTypeDesc":57,"sizeBytes":58,"sourceHtmlUrl":59},"_meta.json","REFERENCE","参考文档",139,"https:\u002F\u002Fgithub.com\u002Fjleechanorg\u002Fjleechan-skills\u002Fblob\u002Fmain\u002Fhermes\u002Fskills\u002Fadd-minimax-provider\u002F_meta.json",{"path":61,"resourceType":56,"resourceTypeDesc":57,"sizeBytes":62,"sourceHtmlUrl":63},".clawhub\u002Forigin.json",152,"https:\u002F\u002Fgithub.com\u002Fjleechanorg\u002Fjleechan-skills\u002Fblob\u002Fmain\u002Fhermes\u002Fskills\u002Fadd-minimax-provider\u002F.clawhub\u002Forigin.json",{"path":65,"resourceType":56,"resourceTypeDesc":57,"sizeBytes":66,"sourceHtmlUrl":67},"README.md",2521,"https:\u002F\u002Fgithub.com\u002Fjleechanorg\u002Fjleechan-skills\u002Fblob\u002Fmain\u002Fhermes\u002Fskills\u002Fadd-minimax-provider\u002FREADME.md",{"path":69,"resourceType":56,"resourceTypeDesc":57,"sizeBytes":70,"sourceHtmlUrl":71},"references\u002Fdirectory-structure.md",1434,"https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Fplugins-community\u002Fplugins\u002Fsaas-packs\u002Fskill-databases\u002Fwindsurf\u002Fskills\u002Fwindsurf-cascade-context\u002Freferences\u002Fdirectory-structure.md",{"path":73,"resourceType":56,"resourceTypeDesc":57,"sizeBytes":74,"sourceHtmlUrl":75},"references\u002Ferrors.md",526,"https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Fplugins-community\u002Fplugins\u002Fsaas-packs\u002Fskill-databases\u002Fwindsurf\u002Fskills\u002Fwindsurf-cascade-context\u002Freferences\u002Ferrors.md",{"path":77,"resourceType":56,"resourceTypeDesc":57,"sizeBytes":78,"sourceHtmlUrl":79},"references\u002Fexamples.md",545,"https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Fplugins-community\u002Fplugins\u002Fsaas-packs\u002Fskill-databases\u002Fwindsurf\u002Fskills\u002Fwindsurf-cascade-context\u002Freferences\u002Fexamples.md",{"path":81,"resourceType":56,"resourceTypeDesc":57,"sizeBytes":82,"sourceHtmlUrl":83},"references\u002Fimplementation.md",826,"https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Fplugins-community\u002Fplugins\u002Fsaas-packs\u002Fskill-databases\u002Fwindsurf\u002Fskills\u002Fwindsurf-cascade-context\u002Freferences\u002Fimplementation.md",[85,103,125,139,153,169],{"skillNo":86,"name":87,"nameZh":6,"description":88,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":89,"categories":90,"keywords":91,"publishedAt":28},"01M716Y5MTJ6GYJZ2ATXCJK8G4","instinct","Use when the user invokes \u002Finstinct or \u002Fin, or asks to \"message Instinct\", \"ask Instinct\", \"tell Instinct\", \"check Instinct\", or read replies from the configured peer assistant. iMessage first, WhatsApp Web as fallback.","https:\u002F\u002Fgithub.com\u002Fjleechanorg\u002Fjleechan-skills\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Finstinct\u002FSKILL.md",[],[87,92,93,94,95,96,97,98,99,100,101,102],"user","when","replies","check","use","identity","whatsapp","gmail","read","message","ask",{"skillNo":104,"name":105,"nameZh":6,"description":106,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":107,"categories":108,"keywords":114,"publishedAt":28},"01M716Y4HF7FVVMJSA2CCVN5VF","hr","Compatibility alias for history-resume; produce the same fresh-state, provenance-aware resume briefing.","https:\u002F\u002Fgithub.com\u002Fjleechanorg\u002Fjleechan-skills\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fhr\u002FSKILL.md",[109],{"categoryNo":110,"categoryName":111,"taxonomyType":112,"taxonomyTypeDesc":113},"01JBSEEDCAT000000000000038","人力资源","PROFESSION","适用职业",[105,115,116,117,118,119,120,121,122,123,124],"resume","compatibility","provenance","for","history","produce","alias","briefing","state","fresh",{"skillNo":126,"name":127,"nameZh":6,"description":128,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":129,"categories":130,"keywords":132,"publishedAt":28},"01M716Y1FFNFKFJYYKF8HQA6T8","history-resume","Resume briefing for the current repository branch or worktree using fresh state and admitted history sources.","https:\u002F\u002Fgithub.com\u002Fjleechanorg\u002Fjleechan-skills\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fhistory-resume\u002FSKILL.md",[131],{"categoryNo":110,"categoryName":111,"taxonomyType":112,"taxonomyTypeDesc":113},[119,115,133,134,92,135,122,136,118,137,138,123,124],"history resume","branch","analysis","repository","worktree","sources",{"skillNo":140,"name":141,"nameZh":6,"description":142,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":143,"categories":144,"keywords":145,"publishedAt":28},"01M716XWXJ8EPHK4RH9T14TR85","grok","Alias for the canonical grokbot browser conversation workflow; \u002Fgrok talks to the Grok bot the same way \u002Fdot talks to Dot.","https:\u002F\u002Fgithub.com\u002Fjleechanorg\u002Fjleechan-skills\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fgrok\u002FSKILL.md",[],[141,146,147,148,118,149,121,150,151,152],"dot","bot","workflow","canonical","conversation","browser","grokbot",{"skillNo":154,"name":155,"nameZh":6,"description":156,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":157,"categories":158,"keywords":159,"publishedAt":28},"01M70N9Q07DTE0EW5KFXMMMSJ0","codexa-bench","Compare `codexa` and normal `codex` on a fair split of comparable work by default; use `--strict` for duplicate runs of the exact same task.","https:\u002F\u002Fgithub.com\u002Fjleechanorg\u002Fjleechan-skills\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fcodexa-bench\u002FSKILL.md",[],[160,161,162,96,163,118,164,165,166,167,168],"codexa bench","work","split","default","duplicate","task","compare","normal","codex",{"skillNo":170,"name":171,"nameZh":6,"description":172,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":173,"licenseFileUrl":174,"sourceHtmlUrl":175,"categories":176,"keywords":188,"publishedAt":28},"01M6C24S2X60SP8BBFGAEKPEGW","frontend-design","Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, artifacts, posters, or applications (examples include websites, landing pages, dashboards, React components, HTML\u002FCSS layouts, or when styling\u002Fbeautifying any web UI). Generates creative, polished code and UI design that avoids generic AI aesthetics.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fjleechanorg\u002Fjleechan-skills\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Ffrontend-design\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fjleechanorg\u002Fjleechan-skills\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Ffrontend-design\u002FSKILL.md",[177,182,185],{"categoryNo":178,"categoryName":179,"taxonomyType":180,"taxonomyTypeDesc":181},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",{"categoryNo":183,"categoryName":184,"taxonomyType":180,"taxonomyTypeDesc":181},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":186,"categoryName":187,"taxonomyType":112,"taxonomyTypeDesc":113},"01JBSEEDCAT000000000000032","设计师",[189,190,191,96,192,193,194,92,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,93,213],"frontend","design","frontend design","generic","ui design","react","html","components","code","artifacts","ui","aesthetics","Production","web components","landing","applications","quality","web","css","create","examples","with","react components","web ui","pages"]