Skip to content

feat: support different agents (pluggable, multi-vendor reviewer engine) [draft] #5

Description

@wei18

Status: draft / proposal — captured from an initial discussion. A detailed design doc + phased implementation plan will follow.

Problem

The reviewer and synthesis engine is hardwired to anthropics/claude-code-action@v1, with a single global model input and one CLAUDE_CODE_OAUTH_TOKEN. So:

  • You're locked to one vendor (Claude).
  • Every reviewer uses the same model — you can't give a cheap/fast model to lightweight reviewers and a strong model to demanding ones.

Goal

Make the engine pluggable:

  1. Multi-vendor — reviewers/synthesis can run on agents other than Claude (e.g. OpenAI/Codex, Gemini, local models).
  2. Per-reviewer agent assignment — each reviewer (and synthesis) can be pointed at a different agent/model, forming a heterogeneous team.

Backward compatible: the default stays Claude; existing configs keep working unchanged.

Proposed direction (from the initial discussion)

An "agent" abstraction with two integration paths:

  • Built-in adapters for common vendors (Claude, OpenAI, Gemini, …) — official, curated, easy to pick.
  • Generic command escape hatch — any action/CLI that honors the contract "read a prompt file → write a conforming findings/<reviewer>.json" can be plugged in, no vendor lock-in.

Agent assignment lives in repo config (e.g. .claude/audit.yml): a small agents registry + a per-reviewer agent: selector, with a default agent.

Key design questions (for the detailed plan)

  • Uniform I/O contract — the linchpin. claude-code-action already does prompt-in → JSON-out; the contract must be vendor-neutral (prompt file in, findings/synthesis JSON out, same schema + failed fallback).
  • Auth/secrets per vendor — today one OAuth token; need per-agent secrets (e.g. OPENAI_API_KEY, GEMINI_API_KEY) passed via secrets:.
  • Config schema — the agents-registry shape; reviewers.<name>.agent; the default; interaction with rubric_lang, model, max_turns.
  • Matrix dispatch — the composite reviewer action always runs claude-code-action; it must branch by agent type (adapter step vs generic command).
  • Cost / determinism — mixing vendors changes the cost story; the deterministic skeleton (discovery / consolidate / report) is unaffected.
  • NamingCLAUDE_CODE_OAUTH_TOKEN and the claude- branding assume Claude; revisit neutral naming while keeping back-compat.

Out of scope (for now)

  • Auto-selecting the "best" agent per task.
  • Streaming / interactive agents.

Next steps

  1. Detailed design doc (spec) — the contract + config schema.
  2. Phased implementation plan, behind the default-Claude back-compat.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions