Skip to content

feat(moa): support per-analyzer runtimes and Hermes providers - #4

Merged
Xuan0629 merged 3 commits into
masterfrom
feat/moa-multi-runtime-analyzers
Jul 30, 2026
Merged

feat(moa): support per-analyzer runtimes and Hermes providers#4
Xuan0629 merged 3 commits into
masterfrom
feat/moa-multi-runtime-analyzers

Conversation

@Xuan0629

Copy link
Copy Markdown
Owner

Summary

  • support explicit per-analyzer runtime/model routes for MoA while preserving legacy homogeneous agents + analyzer mode
  • support optional explicit Hermes provider routing for analyzers and synthesizer
  • validate malformed, contradictory, unknown-runtime, provider/runtime-incompatible, and runtime-concurrency-invalid configurations before execution
  • expose actual runtime/model/provider metadata in state and the Web UI
  • fix Hermes CLI query ordering so -q is immediately followed by its prompt

Why

The previous MoA configuration expanded agents: N into N copies of one shared analyzer runtime/model pair. It could not execute a genuine heterogeneous review such as Hermes + Claude Code + Codex in one fan-out/fan-in run. Hermes model aliases also require explicit provider selection when the same model identifier may exist under several configured providers.

Compatibility

Legacy mode remains supported:

moa:
  agents: 3
  analyzer:
    runtime: hermes
    model: qwen3.7-plus

Explicit heterogeneous mode:

moa:
  analyzers:
    - runtime: hermes
      provider: custom:alibaba
      model: qwen3.7-plus
    - runtime: claude
      model: deepseek-v4-pro
    - runtime: codex
      model: gpt-5.6-terra
  synthesizer:
    runtime: hermes
    provider: custom:openai-987xyz
    model: gpt-5.6-sol

Provider is intentionally Hermes-only; non-Hermes provider declarations fail during load instead of being silently ignored.

Verification

  • python3 -m pytest -q1961 passed
  • git diff origin/master...HEAD --check — passed
  • independent Claude Code review — PASS
  • independent Codex review — PASS after resolving direct-construction, runtime concurrency, state schema, dashboard display, and positional compatibility findings

Real E2E evidence

A read-only three-runtime MoA audit was executed against AI_Website_Audit_Platform:

  • Hermes / custom:alibaba / qwen3.7-plus
  • Claude / deepseek-v4-pro
  • Codex / gpt-5.6-terra
  • synthesizer: Hermes / custom:openai-987xyz / gpt-5.6-sol

The E2E sequence found two real defects before the final routed run:

  1. Hermes -q was separated from the prompt by model/skill flags; fixed in 1e6e034.
  2. Hermes model IDs could route through the wrong default provider; fixed in f7fffb0.

In the final routed run, all three analyzer artifacts were written. The Qwen/Hermes CLI then hit a context-compaction connection error after writing its complete report and exceeded the outer 900-second timeout, so Unison correctly halted fail-closed and did not automatically synthesize. A controlled recovery used the same Unison HermesRunner, configured synthesizer route, and analysis input caps to produce the final synthesis while preserving and disclosing the original run failure. This PR does not claim that original run was a clean success.

Commits

  • c62ce52 feat(moa): support per-analyzer runtimes
  • 1e6e034 fix(runtime): pass Hermes query argument correctly
  • f7fffb0 feat(moa): route Hermes providers explicitly

@Xuan0629
Xuan0629 merged commit cb761e6 into master Jul 30, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant