Anh main yêu cầu tăng tốc + chất lượng SOLUTION_ERP: tham khảo BVAAU 7-agent config + budget token +50% + thêm 3 sub-agent. Adapted (NOT copied) — SOLUTION_ERP 2-FE-app fit + giữ 6 skill proven battle-test 38 session. Split 4→7 agent (anh main chốt via AskUserQuestion): - investigator → SPLIT: investigator-codebase (cyan, internal SQL/EF/grep) + investigator-api (blue, external docs/CVE/lib/cross-project) - implementer → SPLIT: implementer-backend (yellow, .NET Domain+App+Infra+Api) + implementer-frontend (orange, FE 2 app cookie-cutter mirror SHA256) [anh chốt backend/frontend thay domain/infra BVAAU — fit 2 React app + giảm gotcha #53 truncate] - test-specialist NEW (purple, dedicated tests/ — anh chốt full test layer) - reviewer (red) + cicd-monitor (green) giữ Tool grant +3 RAG MCP all 7 agent (search_code BM25 + store_memory + list_projects) — BVAAU port, MCP server verified support. Prior chỉ 2 (search_memory + cross_project). Skill re-distribute 6 skill across 7 agent (xem README matrix). Memory: rename investigator→investigator-codebase + implementer→implementer-backend (giữ history) + seed 3 new MEMORY (investigator-api/implementer-frontend/test-specialist) extract relevant patterns. Delete old investigator.md + implementer.md. README rewrite: 7-agent architecture + decision tree split-routing + phân việc matrix boundary + token budget +50% cost reality (~1.05M opt / ~2M heavy ceiling) + anti-truncation rules (gotcha #53 5× mitigation: brief ≤8K + curate pre-spawn + entry ≤1.5K + 529 fallback solo). ⚠️ Anh main RESTART Claude Code CLI để registry hot-reload 7 agent (per S27 lesson model:inherit + new files). Verify post-restart: smoke spawn 3 new agent confirm load. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
174 lines
11 KiB
Markdown
174 lines
11 KiB
Markdown
# Multi-agent SOLUTION_ERP — Master Coordination Guide (7-agent)
|
||
|
||
> **Architecture:** 7 sub-agents Opus 4.8 1M Max + em main coordinator.
|
||
> Pattern: Anthropic Building Effective Agents orchestrator-workers + Cognition "writes single-threaded" hybrid + post-deploy automated watchdog.
|
||
> **Upgrade S39 (2026-05-29):** 4→7 agent (split investigator + implementer, +test-specialist) + budget +50% + 5 RAG MCP per agent. Reference BVAAU 7-agent config (adapted, NOT copied — SOLUTION_ERP 2-FE-app fit + 6 skill proven battle-test 38 session). Prior: S20t12 initial 3 + S21t1 +cicd-monitor.
|
||
|
||
---
|
||
|
||
## 🎯 Architecture (7 agent)
|
||
|
||
```
|
||
┌──────────────────────────────────────────────────────────────┐
|
||
│ EM (Main) — Opus 4.8 1M Max │
|
||
│ • Reasoning + write code (single-threaded principle) │
|
||
│ • Schema/UX/architecture decision + cross-stack tight coupling│
|
||
│ • Coordinate 7 sub-agents via spawn + SendMessage │
|
||
│ • Synthesize cross-agent findings + commit/push (em main only)│
|
||
│ • Fallback solo nếu spawn fail (gotcha #53 truncate / 529) │
|
||
└──────────────────────────────────────────────────────────────┘
|
||
↓ spawn + keep-alive (Opus 4.8 1M Max inherit each)
|
||
── RESEARCH (READ) ────────── ── IMPLEMENT (WRITE) ──────────── ── QUALITY ──────────
|
||
┌──────────────────┐ ┌───────┐ ┌─────────────────┐ ┌──────────┐ ┌────────┐ ┌─────────┐ ┌────────┐
|
||
│investigator- │ │invest-│ │implementer- │ │implement-│ │test- │ │reviewer │ │cicd- │
|
||
│codebase │ │igator-│ │backend │ │er- │ │special-│ │ │ │monitor │
|
||
│ │ │api │ │ │ │frontend │ │ist │ │ │ │ │
|
||
│ INTERNAL audit │ │EXTERN-│ │ .NET Domain+App │ │ FE 2 app │ │ tests/ │ │adversa- │ │post- │
|
||
│ SQL/EF/grep/ │ │AL docs│ │ +Infra+Api │ │cookie- │ │dedica- │ │rial pre-│ │deploy │
|
||
│ reference mirror │ │CVE/lib│ │ entity/CQRS/Mig │ │cutter │ │ted │ │commit + │ │Gitea + │
|
||
│ │ │/cross-│ │ /Controller │ │mirror │ │xUnit │ │live curl│ │bundle │
|
||
│ │ │project│ │ │ │SHA256 │ │ │ │ │ │+ smoke │
|
||
└──────────────────┘ └───────┘ └─────────────────┘ └──────────┘ └────────┘ └─────────┘ └────────┘
|
||
cyan blue yellow orange purple red green
|
||
```
|
||
|
||
---
|
||
|
||
## 🚨 RULE BẮT BUỘC (S39 updated)
|
||
|
||
**Em main BẮT BUỘC phân việc cho sub-agent đúng vai trò khi ACCEPT criteria match. Budget +50% → lean toward delegate + parallel, ít em main solo fallback.**
|
||
|
||
**Workflow forward S39+:**
|
||
- Trước mọi task → classify qua decision tree dưới
|
||
- Read-only research → **split**: internal codebase audit → `investigator-codebase` · external docs/CVE/lib → `investigator-api` (có thể spawn parallel cả 2)
|
||
- WRITE scaffold → **split**: .NET backend → `implementer-backend` · FE 2 app → `implementer-frontend` (parallel khi independent — vd BE entity + FE types cùng lúc)
|
||
- Test → **`test-specialist`** dedicated (KHÔNG để implementer kiêm)
|
||
- Deploy claim → `cicd-monitor` sau push (skip docs-only gotcha #41)
|
||
- Heavy diff / security / wire BE claim → `reviewer` pre-commit
|
||
|
||
**Em main solo CHỈ khi:** schema/UX/architecture decision · cross-stack tight coupling · bug fix reasoning chain · gotcha #53 fallback (spawn truncate/529 → em main solo reliable, proven S37 BE 700 LOC + FE 4 file).
|
||
|
||
**Anti-truncation rules (gotcha #53 — 5× occurrence S35-S37):**
|
||
- Brief WRITE agent ≤ 8K (heavy spec ~10K → truncate risk). FE tight brief proven 0 truncation S36.
|
||
- Curate MEMORY pre-spawn nếu > 25KB (Investigator 32KB S37 → truncate mid-MEMORY).
|
||
- Agent keep entry ≤ 1.5K chars (frontmatter rule mỗi agent).
|
||
- Em main grep verify manual nếu agent return truncated mid-task.
|
||
- 529 Overload transient → em main solo fallback (KHÔNG retry loop).
|
||
|
||
---
|
||
|
||
## 🔄 Invocation decision tree (em main apply)
|
||
|
||
```
|
||
├── Read-only INTERNAL audit (codebase/SQL/EF diff/grep > 5 files)?
|
||
│ → investigator-codebase (cyan)
|
||
│
|
||
├── Read-only EXTERNAL (official docs / NuGet-npm CVE / lib eval / cross-project ref)?
|
||
│ → investigator-api (blue)
|
||
│ → Cả 2 investigator parallel OK khi task cần both (vd "audit current + research best practice")
|
||
│
|
||
├── WRITE .NET backend (entity/EF Config/Mig/CQRS/Controller/DbInit)?
|
||
│ ✓ Spec deterministic · pattern proven >1× · >30min · ≤2 layer
|
||
│ → implementer-backend (yellow) [Case 1/2/3/5]
|
||
│
|
||
├── WRITE FE 2 app (page/types/component cookie-cutter mirror)?
|
||
│ ✓ UX flow chốt by em main · spec deterministic
|
||
│ → implementer-frontend (orange) [Case 1/2]
|
||
│ → BE + FE parallel khi independent (em main chốt DTO shape first)
|
||
│
|
||
├── WRITE test (xUnit Domain policy / Infra handler / authz regression)?
|
||
│ → test-specialist (purple) [test-before bug/critical, test-after feature UAT]
|
||
│
|
||
├── After push code commit (NOT docs-only)?
|
||
│ → cicd-monitor (green) — Gitea poll + bundle hash + Mig prod + smoke
|
||
│
|
||
├── Adversarial pre-commit / heavy diff / wire BE claim / security?
|
||
│ → reviewer (red) — Smart Friend 5-category + live curl
|
||
│
|
||
├── Quick task < 30 min? → Em solo direct
|
||
│
|
||
└── Schema/UX/architecture/cross-stack tight/bug reasoning chain?
|
||
→ Em solo (Cognition) + investigator pre-flight optional + reviewer pre-commit
|
||
```
|
||
|
||
---
|
||
|
||
## 📋 Phân việc matrix — split boundary (CRITICAL)
|
||
|
||
| Layer / File | Owner |
|
||
|---|---|
|
||
| `src/Backend/SolutionErp.{Domain,Application,Infrastructure,Api}/**` | **implementer-backend** |
|
||
| `fe-admin/src/**` + `fe-user/src/**` | **implementer-frontend** |
|
||
| `tests/**` | **test-specialist** |
|
||
| Mig design / FK strategy / discriminator / schema | **em main solo** (implementer-backend scaffold sau khi chốt) |
|
||
| UX flow (drawer/tab/modal) / page structure | **em main solo** (implementer-frontend scaffold sau khi chốt) |
|
||
| Internal SQL/EF/grep audit | **investigator-codebase** |
|
||
| External docs/CVE/lib/cross-project | **investigator-api** |
|
||
| Pre-commit verify | **reviewer** (NEVER write) |
|
||
| Post-deploy verify | **cicd-monitor** (NEVER write) |
|
||
|
||
**Boundary dứt khoát:** implementer-backend KHÔNG touch FE · implementer-frontend KHÔNG touch BE (chỉ Read DTO shape) · cả 2 implementer KHÔNG viết test (→ test-specialist) · test-specialist reveal prod bug → REPORT em main KHÔNG fix.
|
||
|
||
---
|
||
|
||
## 🛠️ Skill assignment (6 skill, re-distributed S39)
|
||
|
||
| Agent | Skills |
|
||
|---|---|
|
||
| investigator-codebase | `contract-workflow` + `permission-matrix` + `ef-core-migration` |
|
||
| investigator-api | `dependency-audit-erp` |
|
||
| implementer-backend | `ef-core-migration` + `permission-matrix` + `contract-workflow` + `form-engine` |
|
||
| implementer-frontend | `permission-matrix` |
|
||
| test-specialist | `contract-workflow` + `permission-matrix` |
|
||
| reviewer | `dependency-audit-erp` + `contract-workflow` + `permission-matrix` |
|
||
| cicd-monitor | `iis-deploy-runbook` + `dependency-audit-erp` + `ef-core-migration` |
|
||
|
||
## 🔧 Tool grant (S39 — +3 RAG MCP per agent)
|
||
|
||
All 7 agent có 5 RAG MCP: `search_memory` + `search_code` (BM25, prefer over Read full file — tiết kiệm token) + `cross_project_search` + `store_memory` + `list_projects`. Base tools per role (READ: Read/Grep/Glob/Bash [+WebFetch/Search cho api] · WRITE: +Edit/Write/Skill).
|
||
|
||
---
|
||
|
||
## 💾 Memory discipline
|
||
|
||
Each agent `.claude/agent-memory/<name>/MEMORY.md` persistent diary. Spawn auto-inject 200 lines/25KB. Update BEFORE return (BẮT BUỘC, entry ≤ 1.5K chars). 7 folder: investigator-codebase (history từ investigator) · investigator-api (NEW seed) · implementer-backend (history từ implementer) · implementer-frontend (NEW seed) · test-specialist (NEW seed) · reviewer · cicd-monitor.
|
||
|
||
**End-of-session:** em main SendMessage mỗi agent flush MEMORY → đọc 7 update → synthesize cross-agent → integrate project memory/session log → commit/push.
|
||
|
||
---
|
||
|
||
## 📊 Cost reality (budget +50% S39)
|
||
|
||
| Component | Effective tokens billed (after caching) |
|
||
|---|---|
|
||
| 7 sub-agents spawn setup | ~1.1M (7 × ~155K cache WRITE) |
|
||
| SendMessages cached | ~500K |
|
||
| Em main session | ~250K |
|
||
| **Total per heavy session** | **~1.85M (~9× solo)** |
|
||
| **Optimized (compact + cache + skip trivial + parallel)** | **~1.05M (~5× solo)** |
|
||
|
||
**+50% budget** (vs prior ~700K opt / ~1.35M heavy → now ~1.05M opt / ~2M heavy ceiling). Max 20× plan absorbs ~5× comfortable. Trade-off justify: split nhẹ hơn mỗi spawn (giảm gotcha #53 truncate) + parallel BE+FE+test (giảm wall-clock) + test-specialist clear coverage gap backlog (quality).
|
||
|
||
---
|
||
|
||
## 🎯 Project tunings (SOLUTION_ERP)
|
||
|
||
**Stack:** .NET 10 Clean Arch + CQRS MediatR + EF Core 10 + SQL Server + 2 React 19 Vite 8 FE + Gitea CI + Windows IIS.
|
||
|
||
**State (S38 — 2026-05-28):** 40 mig · 84 tables · ~223 endpoints · 53 FE pages · 130 test PASS · 53 gotchas · 27 memory · 6 skills · **7 sub-agents** · Phase 10 COMPLETE 11/11 Plan G-*.
|
||
|
||
**Windows MAX_PATH:** project path nested + Dropbox-managed → implementer KHÔNG dùng `isolation: worktree`. Default branch OK.
|
||
|
||
**UAT live mode (Phase 9):** `feedback_uat_skip_verify` — skip `dotnet test` mỗi chunk, vẫn `npm run build` × 2. test-specialist test-after khi UAT confirm; test-before cho bug/critical algo.
|
||
|
||
---
|
||
|
||
## 🔗 References
|
||
- [Anthropic Building Effective Agents](https://www.anthropic.com/engineering/building-effective-agents)
|
||
- [Cognition "Don't Build Multi-Agents"](https://cognition.ai/blog/dont-build-multi-agents)
|
||
- BVAAU 7-agent reference: `D:\Dropbox\CONG_VIEC\BENHVIEN_A_AU\SOURCE_CODDE\.claude\agents\` (adapted S39 — split trục + 5 RAG tool; SOLUTION_ERP giữ 6 skill + backend/frontend split thay domain/infra cho 2-FE-app fit)
|
||
- Memory: `feedback_per_chunk_commit` · `feedback_uat_skip_verify` · `feedback_audit_reuse_before_clone` · `feedback_implementer_truncation_mitigation` (gotcha #53)
|
||
|
||
## ⚠️ CLI restart required
|
||
Agent definition change (S39 split 4→7) → **anh main restart Claude Code CLI** để registry hot-reload (per S27 lesson — model:inherit + new agent files). Verify post-restart: spawn smoke test mỗi agent mới (investigator-api / implementer-frontend / test-specialist) confirm load OK.
|