moa

ClawSkills 作者 John Scianna (@Scianna) v1.2.0

Mixture of Agents: Make 3 frontier models argue, then synthesize their best insights into one superior answer. ~$0.03/query.

安装 / 下载方式

TotalClaw CLI推荐
totalclaw install clawskills:clawskills~jscianna-moa
cURL直接下载,无需登录
curl -fsSL https://skills.taituai.com/api/skills/clawskills%3Aclawskills~jscianna-moa/file -o jscianna-moa.md
# Mixture of Agents (MoA)

**TL;DR:** Make 3 AI models argue with each other. Get an answer better than any single model. Cost: ~$0.03.

## Two Usage Modes

### A. Standalone CLI (Node.js)
```bash
export OPENROUTER_API_KEY="your-key"
node scripts/moa.js "Your complex question"
```

### B. OpenClaw Skill (Agent-orchestrated)
```bash
# Install
clawhub install moa

# Or copy to ~/clawd/skills/moa/
```

The agent can then invoke MoA for complex analysis tasks.

---

## Origin Story

The concept of "Mixture of Agents" comes from research showing LLMs can improve each other's outputs through collaboration. I built this for VC deal analysis—when evaluating startups, you want multiple perspectives, not one model's opinion.

**The journey:**
1. Started with 5 free OpenRouter models (Llama, Gemini, Mistral, Qwen, Nemotron)
2. Rate limits killed me at 2am during peak hours
3. Switched to 3 paid frontier specialists
4. Result: ~$0.03/query, answers better than any single model

---

## When to Use

- **Complex analysis** — due diligence, market research, technical evaluation
- **Brainstorming** — get diverse ideas, synthesize the best
- **Fact-checking** — cross-reference across models with different training data
- **High-stakes decisions** — when one model's blind spots could hurt you
- **Contrarian thinking** — different models have different biases

**When NOT to use:**
- Quick Q&A (too slow, 30-90s latency)
- Real-time chat (not designed for streaming)
- Simple lookups (overkill)

---

## Model Configuration

### Paid Tier (Default) — Recommended

| Role | Model | ~Latency | Strength |
|------|-------|----------|----------|
| Proposer 1 | `moonshotai/kimi-k2.5` | 23s | Long context, strong reasoning |
| Proposer 2 | `z-ai/glm-5` | 36s | Technical depth, different training corpus |
| Proposer 3 | `minimax/minimax-m2.5` | 64s | Nuance catching, thorough analysis |
| Aggregator | `moonshotai/kimi-k2.5` | 15s | Fast synthesis |

**Why these models?**
- Frontier-class but less congested than GPT-4/Claude
- Different training data = genuinely different perspectives
- Chinese models excel at certain reasoning tasks
- Combined cost still cheaper than single Opus call

**Cost breakdown:**
```
3 proposers × ~$0.008 = $0.024
1 aggregator × ~$0.005 = $0.005
─────────────────────────────
Total: ~$0.029/query
```

### Free Tier (Fallback)
5 models: Llama 3.3 70B, Gemini 2.0 Flash, Mistral Small, Nemotron 70B, Qwen 2.5 72B

⚠️ **Warning:** Free tier hits rate limits during peak hours. Use `--free` flag only for testing.

---

## How It Works

```
        ┌─────────────┐
        │   PROMPT    │
        └──────┬──────┘
               │
    ┌──────────┼──────────┐
    ▼          ▼          ▼
┌────────┐ ┌────────┐ ┌────────┐
│Kimi 2.5│ │ GLM 5  │ │MiniMax │  ← Parallel (they "argue")
│(reason)│ │(depth) │ │(nuance)│
└───┬────┘ └───┬────┘ └───┬────┘
    │          │          │
    └──────────┼──────────┘
               ▼
       ┌──────────────┐
       │  AGGREGATOR  │
       │  (Kimi 2.5)  │
       │              │
       │ • Best of 3  │
       │ • Resolve    │
       │   conflicts  │
       │ • Synthesize │
       └──────┬───────┘
              ▼
       ┌──────────────┐
       │ FINAL ANSWER │
       │ (Synthesized)│
       └──────────────┘
```

---

## API Reference

### Function Signature

```typescript
interface MoAOptions {
  prompt: string;           // Required: The question to analyze
  tier?: 'paid' | 'free';   // Default: 'paid'
}

interface MoAResult {
  synthesis: string;        // The final aggregated answer
}

// Throws on complete failure (all models down, invalid key)
// Returns partial synthesis if 1-2 models fail
async function handle(options: MoAOptions): Promise<string>
```

### CLI Usage

```bash
# Paid tier (default)
node scripts/moa.js "Your complex question"

# Free tier
node scripts/moa.js "Your question" --free
```

### Programmatic Usage

```javascript
const { handle } = require('./scripts/moa.js');

const synthesis = await handle({ 
  prompt: "Analyze the competitive moats in AI code generation",
  tier: 'paid'
});

console.log(synthesis);
```

---

## Failure Modes

| Scenario | Behavior |
|----------|----------|
| **1 proposer fails** | Synthesis from remaining 2 models |
| **2 proposers fail** | Synthesis from 1 model (degraded) |
| **All proposers fail** | Returns error message |
| **Invalid API key** | Immediate error with setup instructions |
| **Rate limit (free tier)** | Returns rate limit error |

The system is designed to degrade gracefully. A 2/3 response is still valuable.

---

## Example Use Cases

### VC Due Diligence
```bash
node scripts/moa.js "Analyze the competitive landscape for AI code generation. \
Who has defensible moats? Who's likely to be commoditized? Be specific."
```

### Technical Evaluation
```bash
node scripts/moa.js "Compare RLHF vs DPO vs RLAIF for LLM alignment. \
Which scales better? What are the failure modes of each?"
```

### Market Research
```bash
node scripts/moa.js "What are the emerging use cases for embodied AI in 2026? \
Focus on robotics, drones, and autonomous systems. Include specific companies."
```

---

## Performance Expectations

| Metric | Paid Tier | Free Tier |
|--------|-----------|-----------|
| **P50 Latency** | ~45s | ~60s |
| **P95 Latency** | ~90s | ~120s+ |
| **Success Rate** | >99% | ~80% (rate limits) |
| **Cost/Query** | ~$0.03 | $0.00 |

---

## Tips

1. **Be specific** — Vague prompts get vague synthesis
2. **Ask for structure** — "Give me pros/cons" or "List top 5" helps the aggregator
3. **Use for analysis, not chat** — MoA shines for complex reasoning
4. **Batch your queries** — 30-90s per query, so plan accordingly

---

## Installation

### Via ClawHub (Recommended)
```bash
clawhub install moa
```

### Manual
1. Copy `skills/moa/` to your `~/clawd/skills/` directory
2. Set `OPENROUTER_API_KEY` in your environment
3. The agent can now invoke MoA for complex queries

---

## Environment Variables

| Variable | Required | Description |
|----------|----------|-------------|
| `OPENROUTER_API_KEY` | Yes | Your OpenRouter API key |

Get your key at: https://openrouter.ai/keys

---

## Credits

- MoA concept: [Together AI Research](https://www.together.ai/blog/together-moa)
- Implementation: [@Scianna](https://x.com/Scianna)
- Built for: [OpenClaw](https://github.com/openclaw/openclaw)