Skip to content
dsh.fish
Bundle

dsh-moa

Mixture of Agents (MoA) tool plugin for DeepSeek Harness — run several models in parallel on the same prompt, then have a stronger aggregator model synthesize a final answer. On-demand tool, zero cost when unused.

Source
morphlinglan
License
MIT
Updated
Updated 3 days ago

Readme

# dsh-moa

A [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) plugin that adds Mixture of Agents (MoA) as an on-demand tool: `run_moa`.

Instead of using one model, MoA sends the same prompt to several proposer models **in parallel**, then has a stronger aggregator model synthesize the best final answer from all their outputs. It is not on the normal request path — the agent calls the tool only when multi-model synthesis is worth the extra tokens/latency.

## Install

```sh
dsh plugin --profile web add github:morphlinglan/dsh-moa
```

Then restart `dsh web` if it is already running.

## Usage

Configure the proposer pool and aggregator in your profile's `cordis.patch.yml`:

```yaml
- insert:
    - id: dsh-moa
      name: dsh-moa
      config:
        toolName: run_moa
        # Replace with your own providers/models.
        proposers:
          - provider: proposer-provider-a
            model: proposer-model-a
          - provider: proposer-provider-b
            model: proposer-model-b
        aggregator:
          provider: aggregator-provider
          model: aggregator-model
        minProposers: 2
        proposerMaxTokens: 1500
        aggregatorMaxTokens: 2500
        fallbackLongest: true
        maxRetries: 2
```

The providers/models above are **placeholders only**. Replace them with providers and models you actually have access to.

Then ask the agent to use `run_moa` for complex analysis, synthesis, translation, or review tasks.

## Config

| Field | Type | Default | Description |
| --- | --- | --- | --- |
| `toolName` | `string` | `"run_moa"` | Tool name registered in DSH. |
| `proposers` | `{ provider, model }[]` | `[]` | Models that independently answer the prompt in parallel. |
| `aggregator` | `{ provider, model }` | required | Stronger model that synthesizes the final answer. |
| `minProposers` | `number` | `2` | Minimum successful proposers required to run aggregation. |
| `proposerMaxTokens` | `number` | `1500` | Output cap for each proposer. |
| `aggregatorMaxTokens` | `number` | `2500` | Output cap for the aggregator. |
| `fallbackLongest` | `boolean` | `true` | If the aggregator fails, fall back to the longest proposer output. |
| `temperature` | `number` | — | Optional sampling temperature passed to every call. |
| `reasoningEffort` | `string` | — | Optional adapter-owned reasoning effort id. |
| `maxRetries` | `number` | `0` | Retries per proposer/aggregator on transient errors, with exponential backoff. |
| `iterations` | `number` | `1` | Iterative MoA rounds (`1` = single layer + aggregator). |

## License

MIT

Install

dsh plugin --profile web add github:morphlinglan/dsh-moa

Profile: web

  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source