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
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install dsh-moa from the hub
- This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.