跳到主要内容
    ↑↓ 选择↵ 打开esc 关闭
    中文English
    Rnbsov

    Morph Rotation

    v0.1.0认证与凭证
    opencode-morph-rotation

    OpenCode plugin for Morph API key rotation with rate limit handling

    GitHub 星标

    2

    近 30 天 +1

    月装机量

    16

    近 7 天 4

    综合评分SCORE

    25.6

    生态多维模型

    最近提交

    5 个月前

    2026-03-23

    快速安装与配置

    opencode.json

    写入当前项目的 opencode.json,只对这个仓库生效。

    opencode.json

    {
      "$schema": "https://opencode.ai/config.json",
      "plugin": ["opencode-morph-rotation@0.1.0"]
    }

    opencode 启动时会通过内嵌运行时自动加载 npm 依赖并缓存至本地目录,无需手动在全局环境执行安装。

    OpenCode plugin for automatic Morph API key rotation with rate-limit handling.

    Features

    • 🔄 Automatic key rotation when rate limited
    • 📊 Key health monitoring and status reporting
    • ➕ Add/remove keys at runtime via tools
    • 🛡️ Auto-disable keys after repeated failures
    • 📋 /morph-quota slash command for quick status

    Installation

    Add to your opencode.jsonc:

    {
      "plugin": [
        "opencode-morph-rotation@latest"
      ]
    }
    

    Then restart OpenCode.

    Setup

    1. Add your keys

    Use the morph_add_key tool in chat:

    Add my Morph key sk-ABC123... with label "account1"

    Or manually create ~/.config/opencode/morph-keys.json:

    {
      "keys": [
        {
          "key": "sk-YOUR_KEY_1",
          "label": "account1",
          "enabled": true,
          "rateLimitResetTime": 0,
          "consecutiveFailures": 0,
          "lastUsed": 0,
          "addedAt": 1711152000000
        }
      ],
      "strategy": "least-recently-used",
      "defaultCooldownMs": 60000,
      "maxConsecutiveFailures": 5
    }
    

    2. Remove MORPH_API_KEY from MCP config

    Since the plugin injects MORPH_API_KEY via shell.env, remove any hardcoded key from your MCP server config to avoid conflicts.

    Available Tools

    Tool Description
    morph_quota Show status of all keys
    morph_add_key Add a new key for rotation
    morph_remove_key Remove a key by label
    morph_mark_rate_limited Manually mark a key as rate limited

    Rotation Strategies

    • least-recently-used (default): Picks the key used longest ago
    • round-robin: Cycles through keys in order
    • sticky: Stays on current key until it fails

    How It Works

    1. Plugin loads on OpenCode start
    2. Before each shell/tool execution, shell.env hook picks the best available key
    3. When a key hits rate limit (429), use morph_mark_rate_limited to rotate
    4. Disabled keys re-enable after cooldown period

    License

    MIT