feat(reusable): run claude lenses concurrently too (claude-code=5)
Build & push image / build-and-push (pull_request) Successful in 6s

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) <noreply@anthropic.com>
This commit is contained in:
Steve Dudenhoeffer
2026-06-27 22:08:47 -04:00
parent 79da1bfde3
commit 6407c0defe
+10 -5
View File
@@ -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