@dtlabs/ai-toolkit 0.7.0 → 0.8.0
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.
- package/.claude/agents/define-feature.md +67 -1
- package/.claude/agents/install-toolkit.md +34 -0
- package/.claude/workflows/pm-phase1.js +78 -0
- package/.claude/workflows/pm-phase2.js +103 -26
- package/.claude/workflows/pm-phase3.js +98 -20
- package/CHANGELOG.md +42 -0
- package/bin/cli.js +428 -3
- package/docs/token-pricing.json +21 -0
- package/package.json +1 -1
- package/docs/token-optimization-backlog.md +0 -115
- package/docs/token-optimization.md +0 -274
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
# Token Optimization — Backlog di feature atomiche
|
|
2
|
-
|
|
3
|
-
> Deriva da `docs/token-optimization.md`. Data: 2026-07-24.
|
|
4
|
-
> Ogni voce è **atomica**: implementabile e verificabile in isolamento.
|
|
5
|
-
> "Criticità" = priorità di ottimizzazione (impatto/rischio), NON severità di difetto.
|
|
6
|
-
> Nessun intervento è un bug attivo → nessun `CRITICAL`.
|
|
7
|
-
> Sequenza consigliata = ordine degli ID.
|
|
8
|
-
|
|
9
|
-
## Quadro sintetico
|
|
10
|
-
|
|
11
|
-
| ID | Intervento | Criticità | Sforzo | Rischio | File toccati | Dipende da |
|
|
12
|
-
|----|-----------|-----------|--------|---------|--------------|-----------|
|
|
13
|
-
| OPT-01 ✅ | `model:` esplicito su ogni agent (→ FTR-007, PR #20) | **HIGH** | Basso | Basso | 15 agent (frontmatter) | — |
|
|
14
|
-
| OPT-02 | Deduplicare CLAUDE.md globale vs progetto | **HIGH** | Minimo | Zero | `~/.claude/CLAUDE.md` | — |
|
|
15
|
-
| OPT-03 | Blocco "Compact instructions" in CLAUDE.md | MEDIUM | Minimo | Zero | `CLAUDE.md` (progetto) | — |
|
|
16
|
-
| OPT-04 | Spostare i cataloghi da CLAUDE.md a reference.md | MEDIUM | Basso | Basso | `CLAUDE.md`, `docs/reference.md` | — |
|
|
17
|
-
| OPT-05 | Procedure on-demand — assessment-manager | MEDIUM | Medio | Basso | `assessment-manager.md` | — |
|
|
18
|
-
| OPT-06 | Procedure on-demand — project-manager | MEDIUM | Medio | Basso | `project-manager.md` | — |
|
|
19
|
-
| OPT-07 | Resource-budget testuale negli assessment agent | MEDIUM | Basso | Basso | 3+ assessment agent | — |
|
|
20
|
-
| OPT-08 | Summary/full split negli output di assessment | **HIGH** | Alto | Medio | assessment agents + int-doc + manager | OPT-07 |
|
|
21
|
-
| OPT-09 | Estrarre calcolo deterministico da assessment-manager | **HIGH** | Alto | Medio | `assessment-manager.md` + nuovo script | — |
|
|
22
|
-
| OPT-10 | generic-software-assessment → ruolo triage | MEDIUM | Medio | Medio | `generic-software-assessment.md` + manager | OPT-08 |
|
|
23
|
-
| OPT-11 | Delegation policy negli orchestratori | LOW | Basso | Basso | 2 orchestratori | — |
|
|
24
|
-
| OPT-12 | Hook di filtro output verboso (opzionale) | LOW | Basso | Basso | `settings.json` + script hook | — |
|
|
25
|
-
|
|
26
|
-
---
|
|
27
|
-
|
|
28
|
-
## Feature atomiche
|
|
29
|
-
|
|
30
|
-
### OPT-01 — `model:` esplicito su ogni agent
|
|
31
|
-
- **Criticità:** HIGH · **Sforzo:** Basso · **Rischio:** Basso
|
|
32
|
-
- **Obiettivo:** ogni agent dichiara il modello adatto al suo ruolo, così nessuno eredita Opus per default.
|
|
33
|
-
- **Scope (solo frontmatter):** aggiungere `model:` ai 15 agent che ne sono privi. Mappatura:
|
|
34
|
-
- `sonnet`: `assessment-manager`, `project-manager`, `developer-backend`, `developer-frontend`, `developer-testing`, `god-class-decomposition`, `domain-model-refactoring`, `dependency-injection-refactoring`, `security-hardening`, `dependency-supply-chain-security`, `define-feature`, `init-agents-md`, `install-toolkit`, `intervention-documentation-standard`
|
|
35
|
-
- `opus`: `review-solution` (unico ruolo con giudizio architetturale profondo)
|
|
36
|
-
- **Fuori scope:** i 7 agent già `haiku` restano invariati.
|
|
37
|
-
- **Criteri di accettazione:** `grep -L "^model:" .claude/agents/*.md` non restituisce nulla; ogni valore ∈ {haiku, sonnet, opus}.
|
|
38
|
-
- **Dipendenze:** nessuna.
|
|
39
|
-
|
|
40
|
-
### OPT-02 — Deduplicare CLAUDE.md globale vs progetto
|
|
41
|
-
- **Criticità:** HIGH · **Sforzo:** Minimo · **Rischio:** Zero
|
|
42
|
-
- **Obiettivo:** eliminare il duplicato caricato a ogni sessione; il `CLAUDE.md` di progetto resta la fonte unica del catalogo toolkit.
|
|
43
|
-
- **Scope:** ridurre `~/.claude/CLAUDE.md` alle sole preferenze cross-progetto (lingua, stile, convenzioni personali). Rimuovere il catalogo toolkit duplicato.
|
|
44
|
-
- **Criteri di accettazione:** `diff ~/.claude/CLAUDE.md ./CLAUDE.md` NON è più identico; il globale non contiene più le tabelle Skills/Commands/Agents; il Gate Protocol resta accessibile (nel progetto).
|
|
45
|
-
- **Dipendenze:** nessuna. ⚠️ File utente globale — confermare con l'utente prima di modificare.
|
|
46
|
-
|
|
47
|
-
### OPT-03 — Blocco "Compact instructions" in CLAUDE.md
|
|
48
|
-
- **Criticità:** MEDIUM · **Sforzo:** Minimo · **Rischio:** Zero
|
|
49
|
-
- **Obiettivo:** guidare l'auto-compaction a preservare ciò che conta (decisioni, file, finding IDs) e scartare rumore.
|
|
50
|
-
- **Scope:** aggiungere al `CLAUDE.md` di progetto una sezione `# Compact instructions` (preserva: obiettivo corrente, decisioni confermate, risposte utente, file modificati, errori aperti, finding/artifact IDs; scarta: risultati grep grezzi, output tool riusciti, spiegazioni ripetute, piani superati).
|
|
51
|
-
- **Criteri di accettazione:** la sezione esiste in `CLAUDE.md`; nessun'altra modifica.
|
|
52
|
-
- **Dipendenze:** nessuna. (Coordinare con OPT-04 se si tocca lo stesso file.)
|
|
53
|
-
|
|
54
|
-
### OPT-04 — Spostare i cataloghi da CLAUDE.md a reference.md
|
|
55
|
-
- **Criticità:** MEDIUM · **Sforzo:** Basso · **Rischio:** Basso
|
|
56
|
-
- **Obiettivo:** CLAUDE.md sotto ~200 righe, solo essenziali operativi; il catalogo di scoperta vive in reference.md.
|
|
57
|
-
- **Scope:** spostare le tabelle Skills / Commands / Agents / Procedures in `docs/reference.md`. In `CLAUDE.md` restano: Dependencies, How it works, override procedure, **Gate Protocol**. Aggiungere in CLAUDE.md un puntatore a reference.md.
|
|
58
|
-
- **Criteri di accettazione:** `CLAUDE.md` < 200 righe; nessuna tabella-catalogo persa (presente in reference.md); Gate Protocol ancora in CLAUDE.md.
|
|
59
|
-
- **Dipendenze:** nessuna.
|
|
60
|
-
|
|
61
|
-
### OPT-05 — Procedure on-demand (assessment-manager)
|
|
62
|
-
- **Criticità:** MEDIUM · **Sforzo:** Medio · **Rischio:** Basso
|
|
63
|
-
- **Obiettivo:** leggere ogni procedura nella fase in cui serve, non tutte all'avvio.
|
|
64
|
-
- **Scope:** in `assessment-manager.md`, spostare le istruzioni "read at startup" così che `token-estimation.md`/`pricing.md` si leggano in Phase 3-4, `assessment-findings-gate.md` in Phase 5, ecc.
|
|
65
|
-
- **Criteri di accettazione:** nessuna procedura letta prima della fase che la usa; il comportamento delle fasi resta invariato.
|
|
66
|
-
- **Dipendenze:** nessuna. (Se si fa OPT-09, `token-estimation.md` sparisce del tutto dal contesto LLM.)
|
|
67
|
-
|
|
68
|
-
### OPT-06 — Procedure on-demand (project-manager)
|
|
69
|
-
- **Criticità:** MEDIUM · **Sforzo:** Medio · **Rischio:** Basso
|
|
70
|
-
- **Obiettivo:** stesso principio di OPT-05 applicato al `project-manager` (che legge ancora più procedure).
|
|
71
|
-
- **Scope:** riorganizzare `project-manager.md` per caricare ogni procedura alla fase pertinente (PR-procedure alla fase PR, ecc.).
|
|
72
|
-
- **Criteri di accettazione:** nessuna procedura caricata anticipatamente; pipeline invariata.
|
|
73
|
-
- **Dipendenze:** nessuna.
|
|
74
|
-
|
|
75
|
-
### OPT-07 — Resource-budget testuale negli assessment agent
|
|
76
|
-
- **Criticità:** MEDIUM · **Sforzo:** Basso · **Rischio:** Basso
|
|
77
|
-
- **Obiettivo:** limiti di lettura/output come **istruzioni nel prompt** (NON frontmatter — `budget:` non è supportato dall'harness).
|
|
78
|
-
- **Scope:** aggiungere una sezione `## Resource budget` in prosa agli assessment agent (es. "Inspect at most ~25 files; ≤2 evidence snippets per finding; stop when evidence is sufficient — do not explore to increase coverage").
|
|
79
|
-
- **Criteri di accettazione:** la sezione è testo del prompt, non YAML; presente in `generic-software-assessment`, `layered-architecture-assessment`, `concurrency-safety-assessment`.
|
|
80
|
-
- **Dipendenze:** nessuna.
|
|
81
|
-
|
|
82
|
-
### OPT-08 — Summary/full split negli output di assessment
|
|
83
|
-
- **Criticità:** HIGH · **Sforzo:** Alto · **Rischio:** Medio
|
|
84
|
-
- **Obiettivo:** l'orchestratore legge un **summary compatto**, non il documento intero. Il guadagno reale (non il formato JSON in sé).
|
|
85
|
-
- **Scope:** ogni assessment agent produce `{PREFIX}-{area}.full.md` (dettagli) + `{PREFIX}-{area}.summary` (conteggi per severità, finding IDs, path del full). `assessment-manager` e `intervention-documentation-standard` consumano il summary; il full si apre solo per i finding accettati.
|
|
86
|
-
- **Criteri di accettazione:** ogni agent scrive entrambi i file; il manager non legge i `.full` in Phase 3; l'int-doc apre i full solo per i finding selezionati.
|
|
87
|
-
- **Dipendenze:** OPT-07 (budget di output coerente).
|
|
88
|
-
|
|
89
|
-
### OPT-09 — Estrarre calcolo deterministico da assessment-manager
|
|
90
|
-
- **Criticità:** HIGH · **Sforzo:** Alto · **Rischio:** Medio
|
|
91
|
-
- **Obiettivo:** togliere dal prompt ~3.500 parole di pseudo-codice (calcolo token/effort, registry write) che un LLM esegue in modo costoso e fragile.
|
|
92
|
-
- **Scope:** spostare Token-Estimate / Effort-Estimate / registry-write in uno script (`scripts/estimate.*`) invocato via Bash; il prompt dell'agent si riduce a "esegui lo script con questi input e verifica l'output".
|
|
93
|
-
- **Criteri di accettazione:** i tre file prodotti sono identici (per input noti) a prima; `assessment-manager.md` perde le sezioni di calcolo passo-passo; nessun errore aritmetico possibile lato LLM.
|
|
94
|
-
- **Dipendenze:** nessuna hard; sinergica con OPT-05.
|
|
95
|
-
|
|
96
|
-
### OPT-10 — generic-software-assessment → ruolo triage
|
|
97
|
-
- **Criticità:** MEDIUM · **Sforzo:** Medio · **Rischio:** Medio
|
|
98
|
-
- **Obiettivo:** evitare che il generic duplichi il lavoro degli specialisti (layer, security, concurrency) sullo stesso codebase.
|
|
99
|
-
- **Scope:** trasformare `generic-software-assessment` in triage: scansione superficiale che decide quali specialisti attivare e copre solo le aree non coperte (Opzione A della gap analysis).
|
|
100
|
-
- **Criteri di accettazione:** il generic non riesamina aree già coperte da uno specialista attivo; l'output indica gli specialisti raccomandati.
|
|
101
|
-
- **Dipendenze:** meglio dopo OPT-08 (contratto di output stabile).
|
|
102
|
-
|
|
103
|
-
### OPT-11 — Delegation policy negli orchestratori
|
|
104
|
-
- **Criticità:** LOW · **Sforzo:** Basso · **Rischio:** Basso
|
|
105
|
-
- **Obiettivo:** regola esplicita "delega un subagent solo se serve" (task indipendente/parallelo, output voluminoso, riuso multiplo); non delegare ciò che una grep/read risolve.
|
|
106
|
-
- **Scope:** aggiungere una sezione `## Delegation policy` a `assessment-manager` e `project-manager`.
|
|
107
|
-
- **Criteri di accettazione:** entrambi gli orchestratori contengono i criteri delega/non-delega.
|
|
108
|
-
- **Dipendenze:** nessuna.
|
|
109
|
-
|
|
110
|
-
### OPT-12 — Hook di filtro output verboso (opzionale)
|
|
111
|
-
- **Criticità:** LOW · **Sforzo:** Basso · **Rischio:** Basso
|
|
112
|
-
- **Obiettivo:** filtrare output verbosi (build/test/log) prima che entrino nel contesto.
|
|
113
|
-
- **Scope:** `PreToolUse` su Bash in `settings.json` + script che riduce l'output di test/build alle sole righe rilevanti.
|
|
114
|
-
- **Criteri di accettazione:** l'hook appare in `/hooks`; un comando di test mostra solo failures.
|
|
115
|
-
- **Dipendenze:** nessuna. Fare solo se gli assessment inizieranno a lanciare build/test.
|
|
@@ -1,274 +0,0 @@
|
|
|
1
|
-
# Ottimizzazione dell'uso dei token — AI Toolkit
|
|
2
|
-
|
|
3
|
-
> Report di analisi. Data: 2026-07-23.
|
|
4
|
-
> Fonti: misurazioni sul repo + documentazione ufficiale Claude Code (`code.claude.com/docs/en/costs`).
|
|
5
|
-
> Stato: **solo raccomandazioni** — nessuna modifica applicata.
|
|
6
|
-
|
|
7
|
-
## Come Claude Code fattura i token (il modello mentale corretto)
|
|
8
|
-
|
|
9
|
-
Il costo scala con la **dimensione del contesto processato a ogni turno**, non con
|
|
10
|
-
il numero di file nel toolkit. Tre meccanismi automatici mitigano già molto:
|
|
11
|
-
|
|
12
|
-
- **Prompt caching**: system prompt, CLAUDE.md e tool definitions ripetuti vengono
|
|
13
|
-
cachati (cache read costa ~1/10 di un input token). Vita cache: 1h su subscription,
|
|
14
|
-
5 min su API/usage-credits.
|
|
15
|
-
- **Auto-compaction**: la history lunga viene riassunta vicino al limite di contesto.
|
|
16
|
-
- **Subagent isolati**: l'output verboso resta nel contesto del subagent, al main
|
|
17
|
-
loop torna solo un riassunto.
|
|
18
|
-
|
|
19
|
-
Conseguenza pratica: **le leve più grosse non sono "accorciare i prompt" ma
|
|
20
|
-
(a) non pagare due volte lo stesso contesto, (b) usare il modello giusto per ogni
|
|
21
|
-
agent, (c) tenere fuori dal contesto ciò che non serve al turno corrente.**
|
|
22
|
-
|
|
23
|
-
---
|
|
24
|
-
|
|
25
|
-
## Leva 1 — Deduplicare CLAUDE.md ⭐ impatto alto / sforzo minimo / rischio zero
|
|
26
|
-
|
|
27
|
-
### Cosa ho misurato
|
|
28
|
-
- `CLAUDE.md` (progetto) e `~/.claude/CLAUDE.md` (globale) sono **byte-per-byte identici**
|
|
29
|
-
(verificato con `diff -q`).
|
|
30
|
-
- 169 righe / 1.257 parole ciascuno (~1.700 token).
|
|
31
|
-
- Entrambi vengono caricati in **ogni** sessione → ~3.400 token di contesto base,
|
|
32
|
-
di cui **metà è puro duplicato**.
|
|
33
|
-
- 55 delle 169 righe sono tabelle-catalogo (elenco skill/comandi/agent) — informazione
|
|
34
|
-
di *scoperta*, non *istruzione operativa*.
|
|
35
|
-
|
|
36
|
-
### Raccomandazione
|
|
37
|
-
1. **Il globale non deve duplicare il progetto.** `~/.claude/CLAUDE.md` dovrebbe
|
|
38
|
-
contenere solo preferenze cross-progetto (lingua, stile). Il catalogo del toolkit
|
|
39
|
-
vive già nel `CLAUDE.md` di progetto + `docs/reference.md`.
|
|
40
|
-
2. **Spostare le tabelle-catalogo in `docs/reference.md`** (che già esiste ed è pensato
|
|
41
|
-
come cheatsheet). CLAUDE.md tiene solo: dipendenze, Gate Protocol, override
|
|
42
|
-
procedure. La doc ufficiale raccomanda **CLAUDE.md < 200 righe, solo essenziali**.
|
|
43
|
-
3. Il Gate Protocol (regole MANDATORY sul PM) **resta** in CLAUDE.md: è un vincolo
|
|
44
|
-
operativo che deve essere sempre attivo.
|
|
45
|
-
|
|
46
|
-
### Risparmio stimato
|
|
47
|
-
~1.700 token di duplicato eliminati + ~600 token di catalogo spostato = **~2.300 token
|
|
48
|
-
risparmiati su ogni turno di ogni sessione**. Su sessioni lunghe (dove il contesto si
|
|
49
|
-
rimanda intero a ogni messaggio) è il risparmio con il miglior rapporto costo/beneficio.
|
|
50
|
-
|
|
51
|
-
---
|
|
52
|
-
|
|
53
|
-
## Leva 2 — Assegnare `model:` esplicito a ogni agent ⭐ impatto altissimo
|
|
54
|
-
|
|
55
|
-
### Cosa ho misurato
|
|
56
|
-
Solo 7 agent su 22 hanno `model:` nel frontmatter (tutti `haiku`). Gli altri 15 —
|
|
57
|
-
**inclusi i due orchestratori `assessment-manager` e `project-manager`** — non lo
|
|
58
|
-
specificano e quindi ereditano il modello di sessione (spesso Opus).
|
|
59
|
-
|
|
60
|
-
### Perché conta più di tutto il resto
|
|
61
|
-
Dal listino in `docs/pricing.md`:
|
|
62
|
-
|
|
63
|
-
| Modello | Blended $/1k token | Rapporto vs Haiku |
|
|
64
|
-
|---|---|---|
|
|
65
|
-
| Opus 4.8 | $0.009000 | **5×** |
|
|
66
|
-
| Sonnet 5 | $0.005400 | 3× |
|
|
67
|
-
| Haiku 4.5 | $0.001800 | 1× |
|
|
68
|
-
|
|
69
|
-
Un agent che gira su Opus invece che su Sonnet costa **~1,7× in più a parità di token**.
|
|
70
|
-
La doc ufficiale è esplicita: *"Reserve Opus for complex architectural decisions or
|
|
71
|
-
multi-step reasoning. For simple subagent tasks, specify `model: haiku`."*
|
|
72
|
-
|
|
73
|
-
### Raccomandazione — mappatura per ruolo
|
|
74
|
-
| Ruolo | Modello suggerito | Motivo |
|
|
75
|
-
|---|---|---|
|
|
76
|
-
| Orchestratori (`assessment-manager`, `project-manager`) | **sonnet** | Coordinamento, non ragionamento profondo. La doc consiglia Sonnet per il coordinamento nei team. |
|
|
77
|
-
| Assessment read-only (già haiku) | haiku ✅ | Pattern-matching su codice |
|
|
78
|
-
| `generate-*`, `validate-*` (già haiku) | haiku ✅ | Trasformazione documentale |
|
|
79
|
-
| Developer (`developer-backend/frontend/testing`) | **sonnet** | Scrittura codice, buon compromesso |
|
|
80
|
-
| Refactoring (`god-class`, `domain-model`, `dependency-injection`) | **sonnet** | Modifiche strutturali con verifica build |
|
|
81
|
-
| `review-solution` | **opus** *(o sonnet)* | Unico punto dove il ragionamento profondo ripaga |
|
|
82
|
-
| `define-feature`, `init-agents-md` | sonnet | Interviste/analisi |
|
|
83
|
-
|
|
84
|
-
Regola: **default Sonnet, Haiku per il meccanico, Opus solo dove il giudizio architetturale ripaga.**
|
|
85
|
-
|
|
86
|
-
### Risparmio stimato
|
|
87
|
-
Se gli orchestratori giravano su Opus, passarli a Sonnet è **~40% sul loro costo**.
|
|
88
|
-
Dato che `assessment-manager` è l'agent più pesante (~6.700 token di solo prompt +
|
|
89
|
-
~3.000 di procedure lette a runtime), è il singolo intervento a maggior ritorno.
|
|
90
|
-
|
|
91
|
-
---
|
|
92
|
-
|
|
93
|
-
## Leva 3 — Estrarre la logica deterministica da `assessment-manager` ⭐ impatto alto / sforzo medio
|
|
94
|
-
|
|
95
|
-
### Cosa ho misurato
|
|
96
|
-
`assessment-manager.md` = **5.052 parole (~6.700 token)**, il doppio del secondo agent.
|
|
97
|
-
Di queste, le sezioni righe **104–357** (calcolo Token/Effort Estimate) e **378–630**
|
|
98
|
-
(Data Contracts + Registry Write Algorithm) sono **~3.500 parole di pseudo-codice
|
|
99
|
-
deterministico**: somme, formule fisse, gestione errori I/O passo-passo, parsing tabelle.
|
|
100
|
-
|
|
101
|
-
### Il problema
|
|
102
|
-
Far *eseguire a un LLM* aritmetica e I/O deterministici è:
|
|
103
|
-
- **costoso** — quelle 3.500 parole entrano nel contesto dell'agent a ogni run;
|
|
104
|
-
- **fragile** — il modello può sbagliare una somma o un formato;
|
|
105
|
-
- **ridondante** — è esattamente il lavoro che uno script fa a costo ~zero.
|
|
106
|
-
|
|
107
|
-
### Raccomandazione
|
|
108
|
-
Spostare la logica meccanica fuori dal prompt in uno di questi modi (in ordine di preferenza):
|
|
109
|
-
1. **Script esterno** (Python/Node) invocato via Bash: prende i `<usage>` block +
|
|
110
|
-
Interventions-Index e produce Token-Estimate.md / Effort-Estimate.md / registry.md.
|
|
111
|
-
Il prompt dell'agent si riduce a "esegui `scripts/estimate.py` con questi input".
|
|
112
|
-
2. **Workflow script** (`Workflow` tool) se preferisci restare dentro Claude Code:
|
|
113
|
-
fan-out degli assessment + fasi di calcolo deterministico in JS.
|
|
114
|
-
3. Se deve restare prosa, **comprimere** i Data Contract e la gestione errori in una
|
|
115
|
-
procedura referenziata (`docs/procedures/`) letta solo quando serve, non inline.
|
|
116
|
-
|
|
117
|
-
Il prompt di `assessment-manager` potrebbe scendere da ~6.700 a ~2.500 token.
|
|
118
|
-
|
|
119
|
-
### Risparmio stimato
|
|
120
|
-
~4.000 token di prompt in meno per ogni invocazione dell'assessment-manager, **più**
|
|
121
|
-
eliminazione del rischio di errori aritmetici (che oggi costano ri-esecuzioni).
|
|
122
|
-
|
|
123
|
-
---
|
|
124
|
-
|
|
125
|
-
## Leva 4 — Procedure lette on-demand invece che all'avvio ⭐ impatto medio
|
|
126
|
-
|
|
127
|
-
### Cosa ho misurato
|
|
128
|
-
`assessment-manager` legge all'avvio 4 procedure + `pricing.md`:
|
|
129
|
-
`process-log` (144w) + `issues-register` (140w) + `assessment-findings-gate` (629w)
|
|
130
|
-
+ `token-estimation` (1.283w) + `pricing` = **~2.900 parole (~3.900 token)** iniettate
|
|
131
|
-
nel contesto *prima* di iniziare. 7 agent hanno questo pattern "read these procedures".
|
|
132
|
-
|
|
133
|
-
### Raccomandazione
|
|
134
|
-
- Leggere ogni procedura **nel momento in cui serve**, non tutte all'inizio.
|
|
135
|
-
Es. `token-estimation.md` serve solo in Phase 3/4, non in Phase 1.
|
|
136
|
-
- Se la Leva 3 estrae il calcolo token in uno script, `token-estimation.md` (1.283w,
|
|
137
|
-
la procedura più grossa) **non serve più nel contesto dell'LLM**.
|
|
138
|
-
- Valutare la compressione delle procedure più lunghe: `token-estimation.md` e
|
|
139
|
-
`approval-gates.md` contengono esempi ripetuti comprimibili.
|
|
140
|
-
|
|
141
|
-
### Risparmio stimato
|
|
142
|
-
~2.000 token per run dell'assessment-manager, cumulativo con la Leva 3.
|
|
143
|
-
|
|
144
|
-
---
|
|
145
|
-
|
|
146
|
-
## Leva 5 — Igiene di sessione (comportamentale, costo zero)
|
|
147
|
-
|
|
148
|
-
Dalla doc ufficiale, gli sprechi più comuni sono **sessioni mai pulite** e **modello
|
|
149
|
-
troppo grosso di default**:
|
|
150
|
-
|
|
151
|
-
- **`/clear` tra task non correlati.** Il contesto stantio si ri-invia a ogni messaggio.
|
|
152
|
-
Prima di pulire, `/rename` per ritrovare la sessione, poi `/resume`.
|
|
153
|
-
- **`/compact "focus su X"`** quando serve continuità ma il contesto è cresciuto.
|
|
154
|
-
- **`/context` e `/usage`** per vedere cosa occupa spazio; `/usage` segnala i
|
|
155
|
-
comportamenti che superano il 10% (long context, cache miss).
|
|
156
|
-
- **Cache miss**: la prima richiesta dopo >1h (subscription) ri-processa tutto il
|
|
157
|
-
contesto. Raggruppare il lavoro sul toolkit in finestre temporali serrate aiuta.
|
|
158
|
-
- **`/effort` più basso** per i task meccanici: i thinking token sono fatturati come
|
|
159
|
-
output. Per gli agent Haiku (assessment pattern-matching) l'effort alto raramente ripaga.
|
|
160
|
-
|
|
161
|
-
---
|
|
162
|
-
|
|
163
|
-
## Leva 6 — Hook di pre-processing per output verbosi ⭐ opzionale
|
|
164
|
-
|
|
165
|
-
Gli agent di assessment leggono molto codice. Un hook `PreToolUse` su Bash può
|
|
166
|
-
filtrare l'output dei comandi (es. solo righe `ERROR`/`FAIL`, o `grep` mirati) prima
|
|
167
|
-
che entri nel contesto — la doc mostra un esempio che riduce un log da decine di
|
|
168
|
-
migliaia a centinaia di token. Utile se in futuro gli assessment lanciano build/test.
|
|
169
|
-
|
|
170
|
-
---
|
|
171
|
-
|
|
172
|
-
## Riepilogo prioritizzato
|
|
173
|
-
|
|
174
|
-
| # | Leva | Impatto | Sforzo | Rischio | Risparmio stimato |
|
|
175
|
-
|---|---|---|---|---|---|
|
|
176
|
-
| 1 | Deduplicare CLAUDE.md globale/progetto | Alto | Minimo | Zero | ~2.300 tok / turno |
|
|
177
|
-
| 2 | `model:` esplicito su tutti gli agent | **Altissimo** | Basso | Basso | ~40% sugli orchestratori |
|
|
178
|
-
| 3 | Estrarre calcolo deterministico da assessment-manager | Alto | Medio | Medio | ~4.000 tok / run |
|
|
179
|
-
| 4 | Procedure on-demand | Medio | Medio | Basso | ~2.000 tok / run |
|
|
180
|
-
| 5 | Igiene di sessione (/clear, /compact, /effort) | Alto | Zero | Zero | variabile, cumulativo |
|
|
181
|
-
| 6 | Hook di filtro output | Medio | Basso | Basso | dipende dall'uso |
|
|
182
|
-
|
|
183
|
-
**Ordine consigliato di attacco:** 2 → 1 → 5 (tutti a basso sforzo e alto ritorno),
|
|
184
|
-
poi 3 → 4 (refactoring più impegnativo dell'assessment-manager), infine 6 se necessario.
|
|
185
|
-
|
|
186
|
-
---
|
|
187
|
-
|
|
188
|
-
## Riconciliazione con l'analisi ChatGPT del repo
|
|
189
|
-
|
|
190
|
-
ChatGPT ha analizzato il repo pubblico `dtlab-tech/ai-toolkit` e prodotto ~15
|
|
191
|
-
raccomandazioni. Ecco il giudizio critico su ciascuna, alla luce di **come funziona
|
|
192
|
-
realmente Claude Code** (non un framework generico) e di cosa ho verificato sul codice.
|
|
193
|
-
|
|
194
|
-
### Convergenze — GPT ha ragione, e coincide con le mie leve
|
|
195
|
-
|
|
196
|
-
| Raccomandazione GPT | Mio giudizio | Nota |
|
|
197
|
-
|---|---|---|
|
|
198
|
-
| Modelli differenziati per ruolo (haiku/sonnet/opus) | ✅ **Valida, priorità #1** | = mia Leva 2. Allineata alla doc ufficiale. |
|
|
199
|
-
| Effort basso per task meccanici | ✅ Valida | Thinking token = output token. `/effort` o `MAX_THINKING_TOKENS`. |
|
|
200
|
-
| Summary + full split (orchestratore legge solo il summary) | ✅ **Valida, alto ROI** | La doc Anthropic lo raccomanda esplicitamente per i subagent. |
|
|
201
|
-
| Procedure caricate on-demand per fase | ✅ Valida | = mia Leva 4. |
|
|
202
|
-
| `/clear`, `/compact`, compact-instructions in CLAUDE.md | ✅ Valida | = mia Leva 5. Confermato dalla doc. |
|
|
203
|
-
| CLAUDE.md breve | ✅ **Valida** | = mia Leva 1 — ma GPT non poteva vedere il duplicato globale/progetto. |
|
|
204
|
-
| generic-assessment → triage (non duplicare gli specialisti) | ✅ Valida | Riduce sovrapposizione di scope. Buon punto. |
|
|
205
|
-
| Delegation policy (subagent solo se serve) | ✅ Valida | Allineata alla doc sui subagent. |
|
|
206
|
-
| Scope a livello di file, non solo di agente | 🟡 Utile | Vero che `--scope` seleziona agent, non file. Ma vedi caveat sotto. |
|
|
207
|
-
|
|
208
|
-
### Caveat e correzioni — dove GPT ragiona da "framework tradizionale"
|
|
209
|
-
|
|
210
|
-
1. **"Aggiungi `budget:` nel frontmatter dell'agent" — ❌ tecnicamente errato.**
|
|
211
|
-
Lo schema frontmatter degli agent Claude Code (`name`, `description`, `model`,
|
|
212
|
-
`tools`) **non ha un campo `budget:`**. Metterlo lì non fa nulla: non è *enforced*
|
|
213
|
-
dall'harness. Un `max_files: 25` in YAML è ignorato.
|
|
214
|
-
→ *Correzione:* i limiti vanno espressi come **istruzioni testuali nel corpo del
|
|
215
|
-
prompt** ("Inspect at most ~25 files; stop when evidence is sufficient"). Sono
|
|
216
|
-
linee guida che il modello segue, non vincoli hard. Un budget di token *reale*
|
|
217
|
-
esiste solo dentro i **Workflow script** (`budget.total`), che è un altro meccanismo.
|
|
218
|
-
|
|
219
|
-
2. **"Repository Scanner unico + `repository-index.json`" (P0 di GPT) — 🟡 valido come
|
|
220
|
-
principio, sopravvalutato nell'impatto.** GPT assume che ogni agent "riceva/riscansioni
|
|
221
|
-
l'intero repository". In realtà un subagent Claude Code parte con **contesto minimo**
|
|
222
|
-
e legge on-demand via Grep/Glob/Read: ricevere il *path* ≠ ricevere tutto il repo.
|
|
223
|
-
La duplicazione di lettura esiste (N agent che grep-ano gli stessi file), ma è meno
|
|
224
|
-
drammatica del quadro dipinto. Inoltre, su un toolkit *generico* che gira su codebase
|
|
225
|
-
arbitrarie, l'indice va **rigenerato a ogni run** (= una scansione comunque). Il
|
|
226
|
-
risparmio reale c'è **solo se molti agent condividono lo stesso indice** — va misurato,
|
|
227
|
-
non assunto. Buona idea per l'assessment parallelo; ROI da verificare.
|
|
228
|
-
|
|
229
|
-
3. **"Output JSON compatti invece di Markdown" (P0 di GPT) — 🟡 il punto giusto è un
|
|
230
|
-
altro.** JSON non è intrinsecamente più economico del Markdown: virgolette, parentesi
|
|
231
|
-
e chiavi ripetute spesso lo rendono *più* verboso. Il guadagno vero non è "JSON vs MD"
|
|
232
|
-
ma **il summary/full split** (l'orchestratore legge il riassunto, non il documento
|
|
233
|
-
intero). Adottare lo split: sì. Farlo *perché* è JSON: irrilevante.
|
|
234
|
-
|
|
235
|
-
4. **"Cache hash-based (commit_sha + agent_version + …)" (P1 di GPT) — 🟡 chiarire il
|
|
236
|
-
livello.** Questo è caching **applicativo** (evitare di *ri-eseguire* un agent se
|
|
237
|
-
l'input non è cambiato), NON il **prompt caching** di Claude (che riduce il costo
|
|
238
|
-
input a ogni turno ed è già automatico). Sono complementari. La cache hash-based è
|
|
239
|
-
utile ma va capito che agisce su un asse diverso dal costo per-turno.
|
|
240
|
-
|
|
241
|
-
5. **"Skill progressive per Clean Code / Clean Architecture" (P1 di GPT) — 🟡 premessa
|
|
242
|
-
parz. sovrastimata.** GPT ipotizza "300 righe di regole Clean Code nei prompt".
|
|
243
|
-
Verificato: gli agent **non** contengono quel volume — `god-class-decomposition` e
|
|
244
|
-
`domain-model-refactoring` citano i concetti brevemente. L'idea di skill progressive
|
|
245
|
-
resta buona in generale, ma il risparmio su *questo* repo è minore di quanto stimato.
|
|
246
|
-
|
|
247
|
-
6. **"agent-registry.json per evitare la discovery ripetuta" (P1) — 🟢 basso ROI.**
|
|
248
|
-
GPT stesso ammette che "il costo non è enorme". Micro-ottimizzazione: leggere i
|
|
249
|
-
frontmatter di ~22 file è economico. Farlo solo se si tocca comunque l'installer.
|
|
250
|
-
|
|
251
|
-
7. **"Handbook di 120-150 pagine" — ⚠️ attenzione al paradosso token.** Un manuale
|
|
252
|
-
umano va benissimo *come documentazione*. Ma se lo si referenzia da CLAUDE.md o lo si
|
|
253
|
-
fa leggere agli agent, **aumenta** i token — l'opposto dell'obiettivo. Tenerlo come
|
|
254
|
-
riferimento per umani, mai in contesto automatico.
|
|
255
|
-
|
|
256
|
-
### Suggerimenti "generici" (non da questa chat) che comunque NON valgono per Claude Code
|
|
257
|
-
|
|
258
|
-
- **"Abbassa `max_tokens` / `temperature`"** — non esposti nella CLI; la lunghezza
|
|
259
|
-
dell'output è guidata dal task.
|
|
260
|
-
- **"Manda meno messaggi"** — irrilevante: costa il *contesto per turno*, non il numero
|
|
261
|
-
di messaggi.
|
|
262
|
-
- **"Usa un modello piccolo per tutto"** — controproducente: un modello troppo debole
|
|
263
|
-
sbaglia e forza ri-esecuzioni. La regola è *modello adatto al task*.
|
|
264
|
-
|
|
265
|
-
### Sintesi del giudizio
|
|
266
|
-
|
|
267
|
-
La base del toolkit è solida (GPT dà 6,5/10, ragionevole). Le raccomandazioni a **più
|
|
268
|
-
alto ritorno e più basso rischio**, su cui io e GPT convergiamo, sono:
|
|
269
|
-
**(1) modelli differenziati, (2) summary/full split, (3) procedure on-demand, (4) igiene
|
|
270
|
-
di sessione.** A queste aggiungo la **deduplicazione del CLAUDE.md globale/progetto**
|
|
271
|
-
(che GPT non poteva vedere). Le idee più "architetturali" di GPT (repository-scanner,
|
|
272
|
-
budget, cache hash-based) sono valide come *direzione* ma vanno (a) tradotte nei
|
|
273
|
-
meccanismi reali di Claude Code e (b) **misurate con `/usage` prima e dopo**, non
|
|
274
|
-
adottate sulla fiducia.
|