Repository navigation
Description
/fleet Parallel Dispatch for squad watch --execute
Summary
Add a --dispatch-mode flag to the execute capability that enables hybrid dispatch: /fleet for read-heavy work (triage, analysis, reviews) and the existing task tool for write-heavy work (code changes, PRs).
Benchmark Results (tested on real issues)
| Metric | Fleet (parallel) | Sequential | Improvement |
|---|---|---|---|
| Total time (4 issues) | 116s | 332s | 2.9x faster |
| Per-issue avg | ~29s | ~83s | 2.9x |
| Premium requests | 12 (~3/track) | ~16 | ~25% cheaper |
| MCP startup overhead | 1x (shared) | 4x (per process) | 4x less |
Quality Validation
Fleet correctly triaged 4 real open issues with proper urgency classification:
- 🔴 P0: DK8S on-call checklist — same-day action required
- 🟡 P1: NPD stale PR — SLA already breached
- 🟡 P1: Squad watch logging gaps — reliability issue
- ⚪ P2: Arxiv paper assessment — research task
Each track produced specific, actionable next steps — not generic summaries.
Key Finding: Fleet Ignores Custom Agents
When referencing @seven or @data in a /fleet prompt, Copilot CLI spawns generic explore agents, NOT the custom agents from .github/agents/. This means agent charters are NOT followed in fleet mode.
Implication: Fleet is ideal for read-only analysis but NOT for charter-driven code changes.
Proposed Design
Add --dispatch-mode to watch CLI flags:
// New flag in cli-entry.ts
const dispatchMode = args.includes('--dispatch-mode')
? args[args.indexOf('--dispatch-mode') + 1] as 'fleet' | 'task' | 'hybrid'
: undefined;Modify the execute capability to support three modes:
// In execute.ts
if (dispatchMode === 'fleet') {
await executeViaFleet(batch, context);
} else if (dispatchMode === 'hybrid') {
const { reads, writes } = classifyIssues(batch);
if (reads.length) await executeViaFleet(reads, context);
if (writes.length) await Promise.all(writes.map(i => executeOne(i, context)));
} else {
// Default: existing Promise.all behavior (unchanged)
await Promise.all(batch.map(i => executeOne(i, context)));
}Issue classification by title keywords:
- Read-heavy → fleet:
research,review,analyze,investigate,audit,check,scan,assess,evaluate,fact-check,document,report - Write-heavy → task tool:
fix,implement,create,build,refactor,add,update,migrate,deploy,feature
New files needed
packages/squad-cli/src/cli/commands/watch/capabilities/fleet-dispatch.ts— fleet dispatch capability- Update
packages/squad-cli/src/cli/commands/watch/capabilities/execute.ts— add hybrid dispatch mode - Update
packages/squad-cli/src/cli-entry.ts— add--dispatch-modeflag
How /fleet works (reference)
Blog: https://github.blog/ai-and-ml/github-copilot/run-multiple-agents-at-once-with-fleet-in-copilot-cli/
copilot -p "/fleet Execute these tracks in parallel:
Track 1 (seven): Research issue #42
Track 2 (q): Fact-check PR #43
..." --allow-all --no-ask-user --autopilot
Important gotchas:
- Don't use
-s(silent) flag — suppresses results - Write prompt to temp file — PowerShell splits multi-line CLI args
- Custom agents ignored — fleet uses generic explore agents
- Sub-agents share filesystem with no locking — need worktree isolation for writes
Relationship to PR #709
This builds on the watch capability plugin system from PR #709 (merged to dev). The execute capability already supports Promise.all parallelism — this adds fleet as an alternative dispatch mechanism for read-heavy work.
Activity
feat(watch): add /fleet hybrid dispatch mode for parallel execution (#…
feat(watch): add /fleet hybrid dispatch mode for parallel execution (#…
feat(watch): /fleet hybrid dispatch — 2.9x faster parallel execution (#…
feat(watch): next-gen watch with execute redesign, robustness, and PS…