ai-consultants 2.20.0 → 2.21.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/.claude/commands/ai-consultants:consult.md +1 -1
  2. package/CLAUDE.md +47 -64
  3. package/README.md +98 -76
  4. package/SKILL.md +14 -11
  5. package/bin/ai-consultants +5 -0
  6. package/docs/COST_RATES.md +9 -15
  7. package/docs/JSON_SCHEMA.md +1 -1
  8. package/docs/RECIPES.md +272 -0
  9. package/docs/SETUP.md +80 -187
  10. package/docs/SMART_ROUTING.md +2 -2
  11. package/docs/cost_rates.json +23 -54
  12. package/docs/releases/v2.21.0.md +65 -0
  13. package/docs/releases/v2.21.1.md +84 -0
  14. package/package.json +5 -3
  15. package/references/affinity.json +20 -23
  16. package/references/configuration.md +106 -33
  17. package/references/details.md +3 -7
  18. package/scripts/config.sh +85 -111
  19. package/scripts/configure.sh +13 -16
  20. package/scripts/consult_all.sh +33 -3
  21. package/scripts/debate_round.sh +0 -12
  22. package/scripts/doctor.sh +33 -80
  23. package/scripts/followup.sh +0 -3
  24. package/scripts/install.sh +1 -1
  25. package/scripts/lib/api_query.sh +9 -0
  26. package/scripts/lib/common.sh +75 -24
  27. package/scripts/lib/costs.sh +1 -3
  28. package/scripts/lib/orchestration.sh +33 -5
  29. package/scripts/lib/personas.sh +12 -12
  30. package/scripts/lib/progress.sh +2 -2
  31. package/scripts/lib/reflection.sh +4 -2
  32. package/scripts/lib/reliability.sh +132 -0
  33. package/scripts/lib/routing.sh +1 -1
  34. package/scripts/lib/schema.json +2 -2
  35. package/scripts/lib/stance.sh +70 -0
  36. package/scripts/lib/voting.sh +73 -20
  37. package/scripts/peer_review.sh +18 -11
  38. package/scripts/preflight_check.sh +2 -2
  39. package/scripts/query_gemini.sh +12 -7
  40. package/scripts/query_kimi.sh +28 -5
  41. package/scripts/query_minimax.sh +72 -7
  42. package/scripts/release.sh +220 -0
  43. package/scripts/roster_calibrate.sh +8 -2
  44. package/scripts/setup_wizard.sh +3 -26
  45. package/scripts/synthesize.sh +12 -5
  46. package/scripts/update_clis.sh +230 -0
  47. package/templates/consultation_report.md +17 -17
  48. package/scripts/lib/test_helpers.sh +0 -82
  49. package/scripts/query_aider.sh +0 -83
  50. package/scripts/query_amp.sh +0 -67
  51. package/scripts/query_kilo.sh +0 -148
  52. package/scripts/query_ollama.sh +0 -329
  53. package/scripts/test_all.sh +0 -65
  54. package/scripts/test_bin.sh +0 -139
  55. package/scripts/test_capability_weighting.sh +0 -135
  56. package/scripts/test_context_optimization.sh +0 -333
  57. package/scripts/test_doctor.sh +0 -264
  58. package/scripts/test_fixtures/context/sample.json +0 -13
  59. package/scripts/test_fixtures/context/sample.py +0 -90
  60. package/scripts/test_fixtures/context/sample.sh +0 -66
  61. package/scripts/test_fixtures/context/sample.txt +0 -11
  62. package/scripts/test_orchestration.sh +0 -203
  63. package/scripts/test_roster_audit.sh +0 -65
  64. package/scripts/test_roster_calibrate.sh +0 -76
  65. package/scripts/test_routing_parity.sh +0 -180
  66. package/scripts/test_set_e_safety.sh +0 -118
  67. package/scripts/test_suite.sh +0 -1712
  68. package/scripts/test_taste_elo.sh +0 -61
  69. package/scripts/test_user_config.sh +0 -359
@@ -1,5 +1,5 @@
1
1
  ---
2
- description: Consult AI experts (Gemini, Codex, Mistral, Kilo, Cursor, Aider, Amp, Kimi, Qwen, GLM, Grok, DeepSeek, MiniMax, Ollama) for coding questions. Use when weighing trade-offs, comparing approaches, or wanting multiple expert perspectives on non-trivial decisions.
2
+ description: Consult AI experts (Gemini, Codex, Mistral, Cursor, Kimi, Qwen, GLM, Grok, DeepSeek, MiniMax) for coding questions. Use when weighing trade-offs, comparing approaches, or wanting multiple expert perspectives on non-trivial decisions.
3
3
  argument-hint: <question> [file1] [file2] ...
4
4
  allowed-tools: Bash Read Glob Grep
5
5
  ---
package/CLAUDE.md CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
  ## Project Overview
4
4
 
5
- AI Consultants is a multi-model AI deliberation system that queries up to 15 AI consultants (Gemini, Codex, Mistral, Kilo, Cursor, Aider, Amp, Kimi, Claude, Qwen3, GLM, Grok, DeepSeek, MiniMax, Ollama) to obtain diverse perspectives on coding problems.
5
+ AI Consultants is a multi-model AI deliberation system that queries up to 11 AI consultants (Gemini, Codex, Mistral, Cursor, Kimi, Claude, Qwen3, GLM, Grok, DeepSeek, MiniMax) to obtain diverse perspectives on coding problems.
6
6
 
7
7
  **Self-Exclusion**: The invoking agent is automatically excluded from the panel to prevent self-consultation. Claude Code won't query Claude, Codex CLI won't query Codex, etc.
8
8
 
9
- **Version**: 2.20.0
9
+ **Version**: 2.21.1
10
10
 
11
11
  ## Distribution
12
12
 
@@ -38,6 +38,7 @@ ai-consultants/
38
38
  │ ├── consult_all.sh # Main orchestrator - entry point
39
39
  │ ├── config.sh # Centralized configuration
40
40
  │ ├── doctor.sh # Diagnostic and auto-fix tool (v2.2)
41
+ │ ├── update_clis.sh # Check/update installed consultant CLIs (v2.21)
41
42
  │ ├── peer_review.sh # Anonymous peer review (v2.2)
42
43
  │ ├── roster_audit.sh # Roster uncorrelated-value audit (v2.20)
43
44
  │ ├── roster_calibrate.sh # Measured capability calibration, Tier A (v2.20)
@@ -46,7 +47,6 @@ ai-consultants/
46
47
  │ ├── install.sh # One-liner installer (v2.2)
47
48
  │ ├── query_*.sh # Wrapper for each consultant
48
49
  │ ├── query_claude.sh # Claude consultant (v2.2)
49
- │ ├── query_ollama.sh # Local model support (v2.2)
50
50
  │ ├── synthesize.sh # Auto-synthesis of responses
51
51
  │ ├── debate_round.sh # Multi-Agent Debate
52
52
  │ ├── classify_question.sh # Question classifier
@@ -59,6 +59,7 @@ ai-consultants/
59
59
  │ ├── voting.sh # Voting/consensus + confidence intervals
60
60
  │ ├── routing.sh # Smart routing + cost-aware routing
61
61
  │ ├── orchestration.sh # Dynamic orchestration planner + shapes (v2.16)
62
+ │ ├── stance.sh # Stance-based semantic consensus (v2.21, opt-in)
62
63
  │ ├── session.sh # Session management
63
64
  │ ├── costs.sh # Cost tracking + response limits
64
65
  │ ├── cache.sh # Semantic caching (v2.3)
@@ -71,6 +72,7 @@ ai-consultants/
71
72
  ├── docs/
72
73
  │ ├── releases/ # Release notes (one per version)
73
74
  │ ├── SETUP.md # Installation guide
75
+ │ ├── RECIPES.md # Copy-paste workflow configurations
74
76
  │ ├── COST_RATES.md # Model pricing
75
77
  │ ├── SMART_ROUTING.md # Affinity matrix
76
78
  │ └── JSON_SCHEMA.md # Output schema
@@ -198,9 +200,8 @@ Functions in `lib/common.sh`:
198
200
 
199
201
  # Use Case Presets
200
202
  ./scripts/consult_all.sh --preset minimal "question" # Gemini + Codex
201
- ./scripts/consult_all.sh --preset balanced "question" # + Mistral + Kilo
203
+ ./scripts/consult_all.sh --preset balanced "question" # + Mistral + Cursor
202
204
  ./scripts/consult_all.sh --preset high-stakes "question" # All + debate
203
- ./scripts/consult_all.sh --preset local "question" # Ollama only
204
205
  ```
205
206
 
206
207
  Presets are defined in `config.sh` via `apply_preset()` function.
@@ -223,17 +224,6 @@ Strategies are implemented in `synthesize.sh` via `get_strategy_instructions()`.
223
224
  ./scripts/doctor.sh --verbose # Detailed output
224
225
  ```
225
226
 
226
- ### Ollama Local Models
227
- ```bash
228
- ENABLE_OLLAMA=true ./scripts/consult_all.sh "question"
229
- OLLAMA_MODEL=codellama ./scripts/consult_all.sh "question"
230
- ```
231
-
232
- Configuration in `config.sh`:
233
- - `OLLAMA_MODEL` - Model to use (default: hf.co/prithivMLmods/VibeThinker-3B-GGUF)
234
- - `OLLAMA_HOST` - Server URL (default: http://localhost:11434)
235
- - `OLLAMA_TIMEOUT` - Timeout in seconds (default: 300)
236
-
237
227
  ### Panic Button Mode
238
228
  Automatically adds rigor when uncertainty detected:
239
229
  - Average confidence below `PANIC_CONFIDENCE_THRESHOLD` (default: 5)
@@ -268,30 +258,6 @@ Functions in `lib/reflection.sh`:
268
258
  - `heuristic_overconfidence_check()` - Fast fallback without LLM
269
259
  - `judge_all_responses()` - Batch evaluation
270
260
 
271
- ## v2.8 Features
272
-
273
- ### Amp CLI Support
274
- Amp Code is now supported as a CLI-based consultant with "The Systems Thinker" persona.
275
-
276
- ```bash
277
- # Enable Amp consultant
278
- export ENABLE_AMP=true
279
- ./scripts/consult_all.sh "question"
280
- ```
281
-
282
- **CLI Installation:**
283
- ```bash
284
- curl -fsSL https://ampcode.com/install.sh | bash
285
- ```
286
-
287
- **Environment Variables:**
288
- - `ENABLE_AMP` - Enable Amp consultant (default: false)
289
- - `AMP_CMD` - CLI command (default: amp)
290
- - `AMP_TIMEOUT` - Timeout in seconds (default: 180)
291
- - `AMP_API_KEY` - API key for authentication
292
-
293
- **Persona:** The Systems Thinker - Focuses on holistic system design, component interactions, and emergent behaviors.
294
-
295
261
  ## v2.9 Features
296
262
 
297
263
  ### Kimi CLI Support
@@ -312,7 +278,7 @@ curl -L code.kimi.com/install.sh | bash
312
278
  - `ENABLE_KIMI` - Enable Kimi consultant (default: false)
313
279
  - `KIMI_CMD` - CLI command (default: kimi)
314
280
  - `KIMI_TIMEOUT` - Timeout in seconds (default: 180)
315
- - `KIMI_MODEL` - Model identifier (default: kimi-code/kimi-for-coding)
281
+ - `KIMI_MODEL` - Kimi CLI model alias (default: kimi-code/k3; passed explicitly with `--model`)
316
282
 
317
283
  **Persona:** The Eastern Sage - Focuses on holistic understanding, balance of perspectives, and wisdom from diverse viewpoints.
318
284
 
@@ -326,7 +292,7 @@ Qwen3 now supports CLI/API mode switching using the qwen-code CLI.
326
292
  export QWEN3_USE_API=false
327
293
  ./scripts/consult_all.sh "question"
328
294
 
329
- # API mode (default, preserves v2.6 behavior)
295
+ # API mode (opt-in)
330
296
  export QWEN3_USE_API=true
331
297
  export QWEN3_API_KEY="your-dashscope-key"
332
298
  ./scripts/consult_all.sh "question"
@@ -342,7 +308,7 @@ npm install -g @qwen-code/qwen-code@latest
342
308
  ## v2.6 Features
343
309
 
344
310
  ### CLI/API Mode Switching
345
- Five consultants can now switch between CLI and API mode: **Gemini, Codex, Claude, Mistral, Qwen3**.
311
+ Six consultants can now switch between CLI and API mode: **Gemini, Codex, Claude, Mistral, Qwen3, MiniMax**.
346
312
 
347
313
  When API mode is enabled for an agent, CLI mode is disabled (mutual exclusivity).
348
314
 
@@ -379,6 +345,7 @@ New environment variables in `config.sh`:
379
345
  | `CLAUDE_USE_API` | false | Use Anthropic API instead of claude CLI |
380
346
  | `MISTRAL_USE_API` | false | Use Mistral API instead of vibe CLI |
381
347
  | `QWEN3_USE_API` | false | Use DashScope API instead of qwen CLI (v2.7) |
348
+ | `MINIMAX_USE_API` | false | Use MiniMax API instead of the mmx CLI (v2.21) |
382
349
  | `GEMINI_API_URL` | https://generativelanguage.googleapis.com/v1beta/models | Google AI endpoint |
383
350
  | `CODEX_API_URL` | https://api.openai.com/v1/chat/completions | OpenAI endpoint |
384
351
  | `CLAUDE_API_URL` | https://api.anthropic.com/v1/messages | Anthropic endpoint |
@@ -465,13 +432,10 @@ All consultants now use premium models by default:
465
432
  | Cursor | composer-2.5 |
466
433
  | DeepSeek | deepseek-v4-pro |
467
434
  | GLM | glm-5.2 |
468
- | Grok | grok-4.3 |
435
+ | Grok | grok-4.5 |
469
436
  | Qwen3 | qwen3.7-max |
470
- | Kimi | kimi-code/kimi-for-coding |
471
- | Aider | qwen3-coder:free |
437
+ | Kimi | kimi-code/k3 |
472
438
  | MiniMax | MiniMax-M2.7 |
473
- | Kilo | auto |
474
- | Ollama | hf.co/prithivMLmods/VibeThinker-3B-GGUF |
475
439
 
476
440
  Override with environment variables: `CLAUDE_MODEL`, `GEMINI_MODEL`, `CODEX_MODEL`, `KIMI_MODEL`, etc.
477
441
 
@@ -625,6 +589,12 @@ REPORT_MAX_JSON_LINES=50 # Max JSON lines in full report
625
589
  ## Testing
626
590
 
627
591
  ```bash
592
+ # Full regression suite (required before committing/releasing)
593
+ npm test
594
+
595
+ # ShellCheck lint
596
+ npm run lint
597
+
628
598
  # Full diagnostic
629
599
  ./scripts/doctor.sh
630
600
 
@@ -649,7 +619,7 @@ for f in scripts/*.sh scripts/lib/*.sh; do bash -n "$f" && echo "OK: $f"; done
649
619
  | Variable | Default | Description |
650
620
  |----------|---------|-------------|
651
621
  | `INVOKING_AGENT` | unknown | Agent invoking the skill (for self-exclusion) |
652
- | `ENABLE_CLAUDE` | false | Enable Claude consultant |
622
+ | `ENABLE_CLAUDE` | true | Enable Claude consultant (auto-excluded under Claude Code) |
653
623
  | `ENABLE_DEBATE` | false | Enable Multi-Agent Debate |
654
624
  | `DEBATE_ROUNDS` | 1 | Number of debate rounds |
655
625
  | `ENABLE_SYNTHESIS` | true | Auto-synthesis of responses |
@@ -658,8 +628,6 @@ for f in scripts/*.sh scripts/lib/*.sh; do bash -n "$f" && echo "OK: $f"; done
658
628
  | `MAX_SESSION_COST` | 1.00 | Max budget ($) |
659
629
  | `ENABLE_PANIC_MODE` | auto | Panic mode trigger (v2.2) |
660
630
  | `PANIC_CONFIDENCE_THRESHOLD` | 5 | Panic threshold (v2.2) |
661
- | `ENABLE_OLLAMA` | false | Local model support (v2.2) |
662
- | `OLLAMA_MODEL` | hf.co/prithivMLmods/VibeThinker-3B-GGUF | Ollama model (v2.17 default) |
663
631
  | `CLAUDE_MODEL` | claude-opus-4-8 | Claude model (v2.5) |
664
632
  | `GEMINI_MODEL` | Gemini 3.1 Pro (High) | Gemini agy CLI model (v2.15) |
665
633
  | `GEMINI_API_MODEL` | gemini-3.1-pro-preview | Gemini API-mode model ID (v2.15) |
@@ -670,21 +638,25 @@ for f in scripts/*.sh scripts/lib/*.sh; do bash -n "$f" && echo "OK: $f"; done
670
638
  | `CACHE_TTL_HOURS` | 24 | Cache expiration in hours (v2.3) |
671
639
  | `ENABLE_RESPONSE_LIMITS` | false | Response token limits (v2.3, opt-in) |
672
640
  | `ENABLE_COST_AWARE_ROUTING` | false | Cost-based model routing (v2.3) |
673
- | `ENABLE_DEBATE_OPTIMIZATION` | false | Skip debate if all agree (v2.3, opt-in) |
641
+ | `ENABLE_DEBATE_OPTIMIZATION` | true | Skip debate if all agree; SECURITY and ARCHITECTURE remain mandatory (default since v2.13) |
674
642
  | `ENABLE_COMPACT_REPORT` | true | Compact report format (v2.3) |
675
643
  | `ENABLE_CAPABILITY_WEIGHTING` | false | Capability-weighted voting (v2.20, opt-in) |
676
644
  | `ENABLE_CAPABILITY_ROUTING` | false | Capability-aware panel composition (v2.20, opt-in) |
677
645
  | `CAPABILITY_WEIGHT_STRENGTH` | 10 | Vote-weight modulation: conf*(S+cap)/S (v2.20) |
678
646
  | `CAPABILITY_DEFAULT` | 5 | Fallback capability for a missing consultant/axis (v2.20) |
647
+ | `ENABLE_STANCE_CONSENSUS` | false | Enumerated-stance exact-match consensus (v2.21, opt-in; +1 LLM call/run) |
648
+ | `STANCE_MAX_OPTIONS` | 5 | Max stance options generated per question (v2.21) |
679
649
  | `ENABLE_BUDGET_LIMIT` | false | Budget enforcement (v2.4, opt-in) |
680
650
  | `BUDGET_ACTION` | warn | Action on budget exceeded: warn/stop (v2.4) |
681
651
  | `QWEN3_USE_API` | false | Use DashScope API instead of qwen CLI (v2.7) |
682
652
  | `QWEN3_CMD` | qwen | Qwen CLI command (v2.7) |
683
- | `ENABLE_KIMI` | false | Enable Kimi consultant (v2.9) |
653
+ | `ENABLE_KIMI` | true | Enable Kimi consultant (v2.9) |
684
654
  | `KIMI_CMD` | kimi | Kimi CLI command (v2.9) |
685
- | `KIMI_MODEL` | kimi-code/kimi-for-coding | Kimi model (v2.9) |
686
- | `ENABLE_MINIMAX` | false | Enable MiniMax consultant (v2.10) |
687
- | `MINIMAX_API_KEY` | - | MiniMax API key (v2.10) |
655
+ | `KIMI_MODEL` | kimi-code/k3 | Kimi CLI model alias |
656
+ | `ENABLE_MINIMAX` | true | Enable MiniMax consultant (v2.10; CLI via mmx v2.21) |
657
+ | `MINIMAX_USE_API` | false | Use MiniMax API instead of the mmx CLI (v2.21) |
658
+ | `MINIMAX_CMD` | mmx | MiniMax CLI command (v2.21) |
659
+ | `MINIMAX_API_KEY` | - | MiniMax API key (API mode only) (v2.10) |
688
660
  | `MINIMAX_MODEL` | MiniMax-M2.7 | MiniMax model (v2.10) |
689
661
 
690
662
  ## External Dependencies
@@ -692,14 +664,11 @@ for f in scripts/*.sh scripts/lib/*.sh; do bash -n "$f" && echo "OK: $f"; done
692
664
  - `agy` CLI - Antigravity CLI (Gemini consultant; successor to the deprecated Gemini CLI, v2.15)
693
665
  - `codex` CLI - OpenAI Codex
694
666
  - `vibe` CLI - Mistral Vibe
695
- - `kilocode` CLI - Kilo Code
696
667
  - `agent` CLI - Cursor
697
- - `aider` CLI - Aider
698
- - `amp` CLI - Amp Code (v2.8)
699
668
  - `kimi` CLI - Kimi Code (v2.9)
700
669
  - `claude` CLI - Claude (v2.2, also used for synthesis)
701
670
  - `qwen` CLI - Qwen via qwen-code (v2.7, optional)
702
- - `ollama` CLI - Local models (v2.2)
671
+ - `mmx` CLI - MiniMax via mmx-cli (v2.21, optional; `npm i -g mmx-cli`, auth `mmx auth login`)
703
672
  - `jq` - JSON parsing
704
673
 
705
674
  ## Error Handling and Retry
@@ -719,13 +688,12 @@ RETRY_DELAY_SECONDS=10
719
688
  # Per-consultant timeout
720
689
  GEMINI_TIMEOUT=240
721
690
  CODEX_TIMEOUT=180
722
- OLLAMA_TIMEOUT=300 # Longer for local inference
723
691
  ```
724
692
 
725
693
  ## Extended Documentation
726
694
 
727
695
  For detailed information, see:
728
- - [docs/SETUP.md](docs/SETUP.md) - Installation, authentication, Ollama setup
696
+ - [docs/SETUP.md](docs/SETUP.md) - Installation and authentication
729
697
  - [docs/COST_RATES.md](docs/COST_RATES.md) - Rates and budget management
730
698
  - [docs/SMART_ROUTING.md](docs/SMART_ROUTING.md) - Affinity matrix and routing
731
699
  - [docs/JSON_SCHEMA.md](docs/JSON_SCHEMA.md) - Complete output schema
@@ -733,8 +701,8 @@ For detailed information, see:
733
701
  ## Development Notes
734
702
 
735
703
  - Scripts in `lib/` are libraries, not standalone executables
736
- - Output goes to `/tmp/ai_consultations/TIMESTAMP/`
737
- - Session state in `/tmp/ai_consultants_sessions/`
704
+ - Output goes to `$XDG_CACHE_HOME/ai-consultants/consultations/TIMESTAMP/` (normally `~/.cache/ai-consultants/consultations/`)
705
+ - Session state lives in `$XDG_STATE_HOME/ai-consultants/sessions/` (normally `~/.local/state/ai-consultants/sessions/`)
738
706
  - All timeouts are configurable in `config.sh`
739
707
  - Consultants can be disabled individually (`ENABLE_GEMINI=false`, etc.)
740
708
  - Use `.env.example` as template for environment configuration
@@ -834,6 +802,21 @@ curl -fsSL https://raw.githubusercontent.com/matteoscurati/ai-consultants/main/s
834
802
 
835
803
  ## Changelog
836
804
 
805
+ ### v2.21.1
806
+ - **Kimi upgraded to K3.** `KIMI_MODEL` now defaults to `kimi-code/k3`; premium, standard, and economy tiers all resolve to the same K3 alias.
807
+ - **Model selection is now real, not metadata-only.** `query_kimi.sh` passes `--model "$KIMI_MODEL"` to the CLI, overriding a stale user-level Kimi default. A dedicated offline regression test captures the CLI arguments and validates response metadata; a live K3 smoke test returned a structured response with confidence 10.
808
+ - **Roster reduced from 15 to 11 supported consultants.** Kilo, Aider, Amp, and Ollama were removed end-to-end: canonical/default lists, presets, routing and personas, debate/synthesis/reflection, doctor/preflight, updater, configuration/wizard, schemas, tests, docs, and their four query adapters. `ENABLE_KILO`/`KILO_*`, `ENABLE_AIDER`/`AIDER_*`, `ENABLE_AMP`/`AMP_*`, `ENABLE_OLLAMA`/`OLLAMA_*`, and the Ollama-only `local` preset are obsolete and ignored.
809
+ - **Documentation and release surfaces synced.** README, SKILL, `.env.example`, setup/configuration/recipes, cost catalog, changelog, release note, npm metadata, and the showcase site all identify Kimi K3. Version bumped to 2.21.1.
810
+
811
+ ### v2.21.0
812
+ - **CLI-first transport (principle).** Every `*_USE_API` defaults `false`; a consultant with a CLI always uses it, API is opt-in (CLI-less model or explicit choice). `ENABLE_AMP`/`ENABLE_CLAUDE` default true.
813
+ - **MiniMax via `mmx` CLI** (was API-only). `query_minimax.sh` runs `mmx text chat --non-interactive …` in CLI mode; `config.sh` adds `MINIMAX_CMD` + auto-resolves `MINIMAX_USE_API` (API iff `MINIMAX_API_KEY` set — back-compat), drops MiniMax from `API_CONSULTANTS`; `doctor.sh` treats it as switchable.
814
+ - **`scripts/update_clis.sh`** (+ `ai-consultants update-clis`): per CLI-backed consultant, `detect_method` (brew formula/cask, npm, uv, pipx, pip, self-update, curl installer) → update. `--dry-run`, `--only`.
815
+ - **Stance consensus** (opt-in, `ENABLE_STANCE_CONSENSUS`): new `lib/stance.sh` (`generate_stance_options` — one synthesizer call wrapped in `run_with_timeout`; `_stance_clean`; `build_stance_prompt`). `consult_all.sh` generates the shared set → `stance_options.json` + exports `STANCE_OPTIONS_PROMPT`; injected via `personas.sh` (CLI) + `api_query.sh` (API). `voting.sh::calculate_consensus_score` scores the plurality stance over the PANEL size (not the count of emitted stances). `STANCE_MAX_OPTIONS`, `STANCE_TIMEOUT`.
816
+ - **Smoke-test reliability**: `query_gemini.sh` (`agy -p "$QUERY"`), `query_kimi.sh` (`stream-json` + `_kimi_extract_content`), `query_kilo.sh` (de-fence). Shared `_is_consultant_response_file` metadata filter in `common.sh`, applied across `voting.sh`/`synthesize.sh`/`peer_review.sh`/`reflection.sh`. `orchestration.sh` stalled→stable relabel (set -e-safe) + debate-round promote validation.
817
+ - **Persona fix**: `_AGENT_DEFAULT_PERSONAS` mapped `GLM|17`/`DEEPSEEK|7` (each got the other's persona) → `GLM|7`/`DEEPSEEK|17`.
818
+ - **Dev/reliability**: reliability tracking + Amp/Claude default-on; offline e2e test; `scripts/release.sh` version-bump automation; calibration fixes (diagnosable peer-review failures + cost-only path); `test_user_config.sh` XDG test made hermetic (unset the exported `_AI_CONSULTANTS_XDG_*` intermediates). `npm test` = 18 suites. Hardened by a `/code-review max` pass.
819
+
837
820
  ### v2.20.0
838
821
  - **Capability axes (borrowed from the delegation-kit cost/intelligence/taste table).** `references/affinity.json` → v1.1: new `capabilities` (per-consultant {intelligence, taste, cost}, 1-10), `category_axis` (category → the quality axis it stresses: taste for API_DESIGN/ARCHITECTURE/CODE_REVIEW/GENERAL, intelligence otherwise), `capability_default`. New `lib/routing.sh::get_capability` / `get_category_axis` (cached like `get_affinity`).
839
822
  - **Capability-weighted voting** (`ENABLE_CAPABILITY_WEIGHTING`, opt-in): `lib/voting.sh::_effective_vote_weight` modulates a vote by the consultant's capability on the run's axis — `confidence × (S + cap) / S` (`S = CAPABILITY_WEIGHT_STRENGTH`, default 10). Applied in `calculate_weighted_recommendation` and `calculate_final_score` (normalizer uses the same weight → 1-10 scale preserved). Axis from `QUESTION_CATEGORY`. `cost` never weights a vote (tie-break intelligence > taste > cost).
package/README.md CHANGED
@@ -1,8 +1,8 @@
1
- # AI Consultants v2.20.0
1
+ # AI Consultants v2.21.1
2
2
 
3
- > **A harness for every question.** A panel of up to 15 frontier models that writes its own playbook per question — fan out, debate to convergence, cross-examine under adversarial review, or run a tournament — and checks its work before it reaches you.
3
+ > **A harness for every question.** A panel of up to 11 frontier models that writes its own playbook per question — fan out, debate to convergence, cross-examine under adversarial review, or run a tournament — and checks its work before it reaches you.
4
4
 
5
- [![Version](https://img.shields.io/badge/version-2.20.0-blue.svg)](https://github.com/matteoscurati/ai-consultants)
5
+ [![Version](https://img.shields.io/badge/version-2.21.1-blue.svg)](https://github.com/matteoscurati/ai-consultants)
6
6
  [![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
7
7
  [![Claude Code Skill](https://img.shields.io/badge/Claude%20Code-Skill-orange.svg)](https://docs.anthropic.com/en/docs/claude-code/skills)
8
8
  [![GitHub stars](https://img.shields.io/github/stars/matteoscurati/ai-consultants?style=social)](https://github.com/matteoscurati/ai-consultants)
@@ -20,11 +20,11 @@
20
20
  - [OpenAI Codex CLI](#openai-codex-cli)
21
21
  - [Gemini CLI](#gemini-cli)
22
22
  - [Cursor / Copilot / Windsurf](#cursor--copilot--windsurf-via-skillport)
23
- - [Aider](#aider)
24
23
  - [Standalone Bash](#standalone-bash)
25
24
  - [Consultants](#consultants)
26
25
  - [Quality Tiers](#quality-tiers)
27
26
  - [Configuration](#configuration)
27
+ - [Configuration Recipes](#configuration-recipes)
28
28
  - [How It Works](#how-it-works)
29
29
  - [Best Practices](#best-practices)
30
30
  - [Documentation](#documentation)
@@ -42,9 +42,8 @@ Instead of running a fixed script, it classifies your question, picks an orchest
42
42
  - **Dynamic orchestration** — the engine chooses the strategy per question: a quick read, a convergence loop, an adversarial refutation gate, a tournament of approaches, or an exhaustive sweep
43
43
  - **Convergence, not fixed rounds** — debate iterates until the panel actually agrees (or provably won't), instead of a hardcoded count
44
44
  - **Self-checking** — security answers are stress-tested by consultants trying to refute them before anything reaches you
45
- - **15 frontier models** with distinct personas (Architect, Pragmatist, Devil's Advocate, …)
45
+ - **11 supported consultants** with distinct personas (Architect, Pragmatist, Devil's Advocate, …)
46
46
  - **Confidence-weighted synthesis** — one recommendation, with the dissent and the path it took surfaced so you know how much to trust it
47
- - **Local + private** — runs fully offline via Ollama when you need it
48
47
 
49
48
  ---
50
49
 
@@ -174,8 +173,8 @@ For CLI-based consultants, you'll also need:
174
173
 
175
174
  | Dependency | Required for |
176
175
  |------------|--------------|
177
- | **Node.js 18+** | Gemini CLI, Codex CLI, Kilo CLI |
178
- | **Python 3.8+** | Mistral Vibe CLI, Aider |
176
+ | **Node.js 18+** | Gemini CLI, Codex CLI, Qwen CLI, MiniMax CLI |
177
+ | **Python 3.8+** | Mistral Vibe CLI |
179
178
 
180
179
  ```bash
181
180
  # macOS
@@ -321,37 +320,6 @@ skillport status ai-consultants
321
320
 
322
321
  ---
323
322
 
324
- ### Aider
325
-
326
- > **Status:** ✅ Via AGENTS.md
327
-
328
- **Installation:**
329
-
330
- ```bash
331
- git clone https://github.com/matteoscurati/ai-consultants.git
332
- cd ai-consultants
333
- # Aider reads AGENTS.md for skill instructions
334
- ```
335
-
336
- **Usage:**
337
-
338
- Reference the skill in your Aider session:
339
-
340
- ```
341
- /add AGENTS.md
342
- # Then ask: "Use ai-consultants to review my code"
343
- ```
344
-
345
- **Self-Exclusion:** When using Aider as the invoking agent, set `INVOKING_AGENT=aider`.
346
-
347
- **Verify:**
348
-
349
- ```bash
350
- ./scripts/doctor.sh
351
- ```
352
-
353
- ---
354
-
355
323
  ### Standalone Bash
356
324
 
357
325
  > **Status:** ✅ Direct execution
@@ -410,28 +378,22 @@ INVOKING_AGENT=codex ./scripts/consult_all.sh "Question" # Codex excluded
410
378
  | **Google Gemini** | `agy` | The Architect | Design patterns, scalability, enterprise |
411
379
  | **OpenAI Codex** | `codex` | The Pragmatist | Simplicity, quick wins, proven solutions |
412
380
  | **Mistral Vibe** | `vibe` | The Devil's Advocate | Problems, edge cases, vulnerabilities |
413
- | **Kilo Code** | `kilocode` | The Innovator | Creativity, unconventional approaches |
414
381
  | **Cursor** | `agent` | The Integrator | Full-stack perspective |
415
- | **Aider** | `aider` | The Pair Programmer | Collaborative coding |
416
- | **Amp** | `amp` | The Systems Thinker | System design, interactions, emergent behavior |
417
- | **Kimi** | `kimi` | The Eastern Sage | Holistic, balanced perspectives |
382
+ | **Kimi K3** | `kimi` | The Eastern Sage | Holistic, balanced perspectives |
418
383
  | **Claude** | `claude` | The Synthesizer | Big picture, synthesis, connecting ideas |
384
+ | **Qwen3** | `qwen` | The Analyst | Data-driven analysis |
385
+ | **MiniMax** | `mmx` | The Pragmatic Optimizer | Performance, efficiency, pragmatism |
386
+
387
+ Qwen3 and MiniMax can switch from their CLI to API transport. Gemini, Codex,
388
+ Claude, and Mistral are also CLI/API switchable.
419
389
 
420
- ### API-Based Consultants
390
+ ### API-Only Consultants
421
391
 
422
392
  | Consultant | Default Model | Persona | Focus |
423
393
  |------------|---------------|---------|-------|
424
- | **Qwen3** | qwen3.7-max | The Analyst | Data-driven analysis |
425
394
  | **GLM** | glm-5.2 | The Methodologist | Structured approaches |
426
- | **Grok** | grok-4.3 | The Provocateur | Challenge conventions |
395
+ | **Grok** | grok-4.5 | The Provocateur | Challenge conventions |
427
396
  | **DeepSeek** | deepseek-v4-pro | The Code Specialist | Algorithms, code generation |
428
- | **MiniMax** | MiniMax-M2.7 | The Pragmatic Optimizer | Performance, efficiency, pragmatism |
429
-
430
- ### Local Consultants
431
-
432
- | Consultant | Default Model | Persona | Focus |
433
- |------------|---------------|---------|-------|
434
- | **Ollama** | hf.co/prithivMLmods/VibeThinker-3B-GGUF | The Local Expert | Privacy-first, zero API cost |
435
397
 
436
398
  ### Installing Consultant CLIs
437
399
 
@@ -441,17 +403,21 @@ At least 2 consultant CLIs are required:
441
403
  curl -fsSL https://antigravity.google/cli/install.sh | bash # Gemini (Antigravity CLI: agy)
442
404
  npm install -g @openai/codex # Codex
443
405
  pip install mistral-vibe # Mistral
444
- npm install -g @kilocode/cli # Kilo
445
406
  curl https://cursor.com/install -fsS | bash # Cursor
446
407
 
447
408
  # Optional CLI-based consultants
448
- curl -fsSL https://ampcode.com/install.sh | bash # Amp
449
- curl -L code.kimi.com/install.sh | bash # Kimi
409
+ curl -L code.kimi.com/install.sh | bash # Kimi K3
450
410
  npm install -g @qwen-code/qwen-code@latest # Qwen (alternative to API)
411
+ npm install -g mmx-cli # MiniMax
451
412
 
452
- # For local inference (optional)
453
- curl -fsSL https://ollama.com/install.sh | sh
454
- ollama pull llama3.2
413
+ ```
414
+
415
+ Kimi is pinned to K3 for every consultation, even if the user's Kimi CLI has a
416
+ different default model:
417
+
418
+ ```bash
419
+ KIMI_MODEL=kimi-code/k3 ai-consultants \
420
+ "Review this API design from a holistic perspective"
455
421
  ```
456
422
 
457
423
  ---
@@ -464,10 +430,9 @@ Choose the right balance of quality, speed, and cost with model quality tiers.
464
430
 
465
431
  | Preset | Tier | Agents | Debate | Reflection | Use Case |
466
432
  |--------|------|--------|--------|------------|----------|
467
- | `max_quality` | Premium | 7 (all) | 3 rounds | 2 cycles + peer review | Critical decisions |
433
+ | `max_quality` | Premium | 8 | 3 rounds | 2 cycles + peer review | Critical decisions |
468
434
  | `medium` | Standard | 4 | 1 round | No | General questions |
469
435
  | `fast` | Economy | 2 | No | No | Quick checks |
470
- | `local` | Economy | 1 (Ollama) | No | No | Full privacy |
471
436
 
472
437
  ### Models by Tier
473
438
 
@@ -480,11 +445,10 @@ Choose the right balance of quality, speed, and cost with model quality tiers.
480
445
  | Cursor | composer-2.5 | composer-2 | gemini-3-flash |
481
446
  | DeepSeek | deepseek-v4-pro | deepseek-v4-flash | deepseek-v4-flash |
482
447
  | GLM | glm-5.2 | glm-5.2 | glm-4-flash |
483
- | Grok | grok-4.3 | grok-4.1-fast | grok-4.1-fast |
448
+ | Grok | grok-4.5 | grok-4.1-fast | grok-4.1-fast |
484
449
  | Qwen3 | qwen3.7-max | qwen3.6-35b-a3b | qwen3-32b |
485
- | Aider | qwen3-coder:free | gpt-5.4 | gpt-5.4-nano |
450
+ | Kimi | kimi-code/k3 | kimi-code/k3 | kimi-code/k3 |
486
451
  | MiniMax | MiniMax-M2.7 | MiniMax-M2.7 | MiniMax-M2.5 |
487
- | Ollama | hf.co/prithivMLmods/VibeThinker-3B-GGUF | llama3.3 | llama3.2 |
488
452
 
489
453
  ### Usage
490
454
 
@@ -515,14 +479,13 @@ Choose how many consultants to use:
515
479
 
516
480
  | Preset | Consultants | Tier | Use Case |
517
481
  |--------|-------------|------|----------|
518
- | `max_quality` | 7 (all) + debate + reflection | Premium | Critical decisions |
482
+ | `max_quality` | 8 + debate + reflection | Premium | Critical decisions |
519
483
  | `medium` | 4 + light debate | Standard | General questions |
520
484
  | `fast` | 2 | Economy | Quick checks |
521
485
  | `minimal` | 2 (Gemini + Codex) | Default | Quick questions, low cost |
522
- | `balanced` | 4 (+ Mistral + Kilo) | Default | Standard consultations |
523
- | `thorough` | 5 (+ Cursor) | Default | Comprehensive analysis |
524
- | `high-stakes` | All + debate | Default | Critical decisions |
525
- | `local` | Ollama only | Economy | Full privacy |
486
+ | `balanced` | 4 (+ Mistral + Cursor) | Default | Standard consultations |
487
+ | `thorough` | 4 | Default | Comprehensive analysis |
488
+ | `high-stakes` | Expanded panel + debate | Default | Critical decisions |
526
489
  | `security` | Security-focused + debate | Default | Security reviews |
527
490
  | `cost-capped` | Budget-conscious | Default | Minimal API costs |
528
491
 
@@ -560,26 +523,74 @@ $EDITOR ~/.config/ai-consultants/.env
560
523
  For ad-hoc overrides without persisting, the most common knobs:
561
524
 
562
525
  ```bash
563
- DEFAULT_PRESET=balanced # minimal | balanced | thorough | high-stakes | fast | local | security
526
+ DEFAULT_PRESET=balanced # minimal | balanced | thorough | high-stakes | fast | security
564
527
  DEFAULT_STRATEGY=majority # majority | risk_averse | security_first | cost_capped | compare_only
565
528
  ENABLE_DEBATE=true # Multi-agent debate (auto-skipped when consensus is high since v2.13)
566
- ENABLE_OLLAMA=true # Enable local Ollama consultant
567
529
  MAX_SESSION_COST=1.00 # USD budget cap (paired with ENABLE_BUDGET_LIMIT=true to enforce)
530
+ KIMI_MODEL=kimi-code/k3 # Pin the Kimi consultant to K3
531
+ ```
532
+
533
+ Full reference: [`references/configuration.md`](references/configuration.md). Copy-paste workflows: [`docs/RECIPES.md`](docs/RECIPES.md). For category-aware preset suggestions: `ai-consultants doctor --suggest-preset --question "..."`.
534
+
535
+ ### Configuration Recipes
536
+
537
+ **Dynamic debate until convergence:**
538
+
539
+ ```bash
540
+ ENABLE_DEBATE=true \
541
+ ORCHESTRATION_MODE=converge \
542
+ CONVERGENCE_MAX_ROUNDS=4 \
543
+ CONVERGENCE_TARGET_CONSENSUS=75 \
544
+ ai-consultants --strategy risk_averse \
545
+ "Event log or mutable relational state for this service?"
546
+ ```
547
+
548
+ **Repeatable two-round review:**
549
+
550
+ ```bash
551
+ ENABLE_DEBATE=true \
552
+ ORCHESTRATION_MODE=fixed \
553
+ DEBATE_ROUNDS=2 \
554
+ ENABLE_DEBATE_OPTIMIZATION=false \
555
+ ai-consultants "Review this migration plan" docs/migration.md@PRIMARY
568
556
  ```
569
557
 
570
- Full reference (~150 vars): [`references/configuration.md`](references/configuration.md). For category-aware preset suggestions: `ai-consultants doctor --suggest-preset --question "..."`.
558
+ **Security review with adversarial verification:**
559
+
560
+ ```bash
561
+ ENABLE_DEBATE=true \
562
+ ORCHESTRATION_MODE=adversarial \
563
+ ENABLE_PEER_REVIEW=true \
564
+ ai-consultants --preset security --strategy security_first \
565
+ "Find authentication bypasses" src/auth.ts@PRIMARY
566
+ ```
567
+
568
+ **Live health gate plus hard quorum:**
569
+
570
+ ```bash
571
+ ENABLE_HEALTH_GATE=true \
572
+ QUORUM_MIN=3 \
573
+ QUORUM_ACTION=stop \
574
+ ai-consultants "Make a release recommendation"
575
+ ```
576
+
577
+ See [13 complete recipes](docs/RECIPES.md) for fast, high-stakes, tournament,
578
+ exhaustive audit, budget-capped, CLI-only, hybrid API, semantic-consensus, and
579
+ large-context workflows.
571
580
 
572
581
  ### Doctor Command
573
582
 
574
583
  Diagnose, suggest, and fix:
575
584
 
576
585
  ```bash
577
- ai-consultants doctor # 22 health checks (CLI installed?)
586
+ ai-consultants doctor # Installation and configuration checks
578
587
  ai-consultants doctor --fix # Auto-fix common issues
579
588
  ai-consultants doctor --json # JSON for automation
580
589
  ai-consultants doctor --live # Real ping per consultant — catches installed-but-unauthenticated CLIs
581
590
  ai-consultants doctor --suggest-config # Print recommended ENABLE_* based on detected CLIs
582
591
  ai-consultants doctor --suggest-preset --question "..." # Recommend preset + strategy for a question
592
+ ai-consultants update-clis # Check & update every installed consultant CLI
593
+ ai-consultants update-clis --dry-run # Preview: each CLI's install method + update command
583
594
  ```
584
595
 
585
596
  > When a consultant fails mid-consultation, the run surfaces the captured reason (e.g. `CLI not found`, `401 Unauthorized`) instead of a bare "Failed", so you can tell *not installed* from *not authenticated* from *transient*.
@@ -594,7 +605,7 @@ Classify -> Plan shape -> Fan out -> Deliberate & converge -> Synthesize
594
605
  category orchestration Gemini (8) convergence loop /
595
606
  complexity shape Codex (7) adversarial gate /
596
607
  intent Mistral (6) tournament / exhaustive
597
- Kilo (9)
608
+ Cursor (9)
598
609
  ```
599
610
 
600
611
  The **shape** is chosen per question (or pinned via `ORCHESTRATION_MODE`):
@@ -609,6 +620,11 @@ The **shape** is chosen per question (or pinned via `ORCHESTRATION_MODE`):
609
620
 
610
621
  Set `ORCHESTRATION_MODE=fixed` for the classic fixed-round pipeline.
611
622
 
623
+ Consensus is measured lexically by default; set `ENABLE_STANCE_CONSENSUS=true`
624
+ (opt-in, v2.21) to have the panel pick from a shared set of enumerated stance
625
+ options and score agreement by exact match instead — see
626
+ [references/configuration.md](references/configuration.md#semantic-consensus-v221-opt-in).
627
+
612
628
  With peer review:
613
629
  ```
614
630
  Responses -> Anonymize -> Peer Ranking -> De-anonymize -> Peer Scores
@@ -623,7 +639,7 @@ Each consultation generates:
623
639
  ├── gemini.json # Individual responses
624
640
  ├── codex.json # with confidence scores
625
641
  ├── mistral.json
626
- ├── kilo.json
642
+ ├── cursor.json
627
643
  ├── voting.json # Consensus calculation
628
644
  ├── synthesis.json # Weighted recommendation
629
645
  ├── report.md # Human-readable report
@@ -653,7 +669,7 @@ Each consultation generates:
653
669
  ### Security
654
670
 
655
671
  - **Never** include credentials or API keys in queries
656
- - Use `--preset local` for sensitive code
672
+ - Review and redact sensitive code before sending it to any external consultant
657
673
  - Files in `/tmp` are automatically cleaned up
658
674
 
659
675
  ---
@@ -661,6 +677,7 @@ Each consultation generates:
661
677
  ## Documentation
662
678
 
663
679
  - [Setup Guide](docs/SETUP.md) - Installation, authentication, Claude Code setup
680
+ - [Configuration Recipes](docs/RECIPES.md) - Copy-paste workflows for debate, routing, budgets, and transport
664
681
  - [Cost Rates](docs/COST_RATES.md) - Model pricing and budgets
665
682
  - [Smart Routing](docs/SMART_ROUTING.md) - Category-based routing
666
683
  - [JSON Schema](docs/JSON_SCHEMA.md) - Output format specification
@@ -671,6 +688,11 @@ Each consultation generates:
671
688
 
672
689
  ## Changelog
673
690
 
691
+ ### v2.21.1
692
+
693
+ - **Kimi K3**: Kimi now defaults to `kimi-code/k3`, and the adapter passes the model explicitly with `--model`.
694
+ - **Focused 11-consultant roster**: Kilo, Aider, Amp, and Ollama were removed end-to-end, including their adapters and configuration variables. See the [v2.21.1 release note](docs/releases/v2.21.1.md) for migration guidance.
695
+
674
696
  ### v2.15.1
675
697
 
676
698
  - **Gemini fixes (Antigravity CLI)**: the default model (`Gemini 3.1 Pro (High)`) wraps its JSON in a ```` ```json ```` fence; v2.15.0 didn't strip it, so every Gemini reply degraded to a generic fallback. Now de-fenced on all paths (response processing, self-reflection, synthesis).