From 6407c0defe1dae5baf9776cd2711969b65dc086c Mon Sep 17 00:00:00 2001 From: Steve Dudenhoeffer Date: Sat, 27 Jun 2026 22:08:47 -0400 Subject: [PATCH] feat(reusable): run claude lenses concurrently too (claude-code=5) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit provider_lens_concurrency default adds claude-code=5 so each claude model runs all 5 lenses at once (was serial — defaultLensConcurrency=1). The engine already supports it: each lens is an independent read-only 'claude -p' (plan mode) in its own process group; no shared mutable state beyond ~/.claude + the API. Peak claude concurrency is now 3 models x 5 lenses = up to 15 concurrent claude -p per pass — documented, dial back either knob if rate-limited. Co-Authored-By: Claude Opus 4.8 (1M context) --- .gitea/workflows/review-reusable.yml | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/.gitea/workflows/review-reusable.yml b/.gitea/workflows/review-reusable.yml index 68a96e9..27e932d 100644 --- a/.gitea/workflows/review-reusable.yml +++ b/.gitea/workflows/review-reusable.yml @@ -35,17 +35,22 @@ on: # Inputs ship the DEFAULT Gadfly swarm so a consumer can just call this # workflow (no `with:` block) and inherit it. The default is opinionated — # 3 strong cloud models + the Claude Code engine (sonnet/opus/opus:max), the - # 5-lens suite, all three claudes concurrent. It needs OLLAMA_CLOUD_API_KEY - # and CLAUDE_CODE_OAUTH_TOKEN; a consumer with only one (or a different - # provider) overrides `models:` (and forwards just the secrets it uses). - # Set any input to "" to fall back to the image/entrypoint built-in default. + # 5-lens suite, all three claudes concurrent AND each running its 5 lenses at + # once. It needs OLLAMA_CLOUD_API_KEY and CLAUDE_CODE_OAUTH_TOKEN; a consumer + # with only one (or a different provider) overrides `models:` (and forwards + # just the secrets it uses). Set any input to "" to fall back to the + # image/entrypoint built-in default. + # + # Peak claude concurrency = provider_concurrency × provider_lens_concurrency + # (3 models × 5 lenses = up to 15 concurrent `claude -p` per pass). If you hit + # subscription rate limits or runner load, dial claude-code down in either knob. inputs: models: { type: string, default: "minimax-m3:cloud,glm-5.2:cloud,deepseek-v4-pro:cloud,claude-code/sonnet,claude-code/opus,claude-code/opus:max" } # GADFLY_MODELS (csv) specialists: { type: string, default: "security,correctness,maintainability,performance,error-handling" } # GADFLY_SPECIALISTS (5-lens default suite) provider: { type: string, default: "" } # GADFLY_PROVIDER base_url: { type: string, default: "" } # GADFLY_BASE_URL provider_concurrency: { type: string, default: "ollama-cloud=3,claude-code=3" } # GADFLY_PROVIDER_CONCURRENCY (all 3 claudes at once) - provider_lens_concurrency: { type: string, default: "ollama-cloud=3" } # GADFLY_PROVIDER_LENS_CONCURRENCY + provider_lens_concurrency: { type: string, default: "ollama-cloud=3,claude-code=5" } # GADFLY_PROVIDER_LENS_CONCURRENCY (each claude runs all 5 lenses at once) timeout_secs: { type: string, default: "600" } # GADFLY_TIMEOUT_SECS (per lens) max_steps: { type: string, default: "14" } # GADFLY_MAX_STEPS worker_model: { type: string, default: "" } # GADFLY_WORKER_MODEL