Verdent Docs
Funzionalità avanzate

Riferimento del sistema di strumenti

Riferimento completo del sistema di strumenti di Verdent

Cosa imparerai

Riferimento completo del sistema di strumenti integrato di Verdent, comprese le operazioni sui file, le funzionalità di ricerca, l'esecuzione di comandi e gli strumenti di integrazione.


Panoramica degli strumenti disponibili

Verdent for VS Code offre un set completo di strumenti per la manipolazione del codice, la navigazione e l'interazione esterna.

StrumentoScopoFunzionalità principali
file_readLeggere il contenuto dei fileSupporta intervalli di righe per file di grandi dimensioni, funziona con tutti i formati di testo
file_editModifiche mirateSostituisce corrispondenze esatte di testo, sostituzioni multiple, preserva la formattazione
file_writeCreare o sovrascrivere fileCreazione/sostituzione completa dei file, gestisce contenuti testuali
StrumentoScopoFunzionalità principali
bashEsecuzione di comandi shellConfigurazione del timeout, descrizioni riassuntive, concatenazione di comandi
spawn_subagentDelegare a specialistiAvvia sottoagenti general, explorer, verifier o code-reviewer
todo_updateTenere traccia dell'avanzamento delle attivitàGestisce elenchi di attività, aggiorna lo stato, monitora l'avanzamento
StrumentoScopoFunzionalità principali
web_searchRicerca su InternetEsecuzione di query, controllo del numero di risultati, filtro per attualità
web_fetchRecuperare e analizzare pagineRecupera contenuti, estrae informazioni con query

Funzionalità degli strumenti e casi d'uso

file_read

Funzionalità:

  • Legge il contenuto completo dei file o intervalli di righe specifici
  • Essenziale per comprendere il codice prima delle modifiche
  • Gestione efficiente di file di grandi dimensioni tramite specifica degli intervalli

Casi d'uso:

  • Leggere file di configurazione prima di modificarli
  • Comprendere i pattern di implementazione esistenti
  • Esaminare i file di test per capire la copertura

Esempio:

# Read entire file
file_read("src/components/Button.tsx")

# Read specific range for large files
file_read("package-lock.json", start_line=1, max_lines=50)

file_edit

Funzionalità:

  • Sostituzione precisa del testo tramite corrispondenza esatta delle stringhe
  • Operazioni di sostituzione multiple con il flag multiple
  • Preserva la struttura e la formattazione dei file

Casi d'uso:

  • Aggiornare le implementazioni delle funzioni
  • Modificare i valori di configurazione
  • Rinominare le variabili tramite refactoring nei file

Buona pratica: usalo per modifiche mirate. Per riscritture complete, usa invece file_write.


file_write

Funzionalità:

  • Crea nuovi file da zero
  • Sostituisce completamente il contenuto dei file esistenti
  • Gestisce qualsiasi formato basato su testo

Casi d'uso:

  • Generare nuovi componenti o moduli
  • Creare file di configurazione
  • Scrivere file di test

Attenzione: sovrascrive completamente i file esistenti. Usa file_edit per modifiche parziali.

bash

Funzionalità:

  • Esegue comandi shell
  • Timeout massimo: 120 secondi (2 minuti, limite fisso)
  • Concatena comandi con && per le dipendenze
  • Fornisce riepiloghi descrittivi per maggiore chiarezza

Casi d'uso:

  • Eseguire test
  • Compilare progetti
  • Installare dipendenze
  • Operazioni Git
  • Migrazioni di database

Esempio:

# Run tests
bash("npm test", timeout=60000, summary="Run Jest test suite")

# Chain dependent commands
bash("npm install && npm run build", timeout=120000)

Sicurezza: i comandi vengono eseguiti con i permessi dell'utente. Rivedi i comandi in Manual Accept Mode.


spawn_subagent

Funzionalità:

  • Avvia sottoagenti specializzati con contesti isolati
  • Tipi: explorer, verifier, code-reviewer
  • Delega attività complesse senza inquinare il contesto principale
  • Esecuzione parallela di sottoagenti per maggiore efficienza

Casi d'uso:

  • explorer: cercare pattern in codebase di grandi dimensioni
  • verifier: validare la logica di implementazione
  • code-reviewer: valutazione di sicurezza e qualità

Buona pratica: delega la ricerca esplorativa al sottoagente Explorer per preservare il contesto della conversazione principale.


todo_update

Funzionalità:

  • Crea e gestisce elenchi di attività
  • Aggiorna lo stato delle attività (pending, in_progress, completed)
  • Tiene traccia dell'avanzamento in implementazioni complesse

Casi d'uso:

  • Suddividere funzionalità in più passaggi
  • Monitorare l'avanzamento del refactoring
  • Gestire le attività di migrazione

Funzionalità:

  • Interroga i motori di ricerca su Internet
  • Controlla il numero di risultati
  • Filtra per attualità (giorni recenti)

Casi d'uso:

  • Trovare documentazione per API sconosciute
  • Ricercare messaggi di errore
  • Verificare le migliori pratiche attuali

web_fetch

Funzionalità:

  • Recupera il contenuto delle pagine web
  • Analizza il contenuto con query specifiche
  • Estrae informazioni strutturate

Casi d'uso:

  • Leggere pagine di documentazione
  • Analizzare la documentazione API
  • Estrarre esempi dai tutorial

Supporto ai formati di file

Verdent funziona con tutti i formati di file basati su testo tramite i suoi strumenti per le operazioni sui file.

CategoriaLinguaggi/Estensioni
WebJavaScript, TypeScript, HTML, CSS, SCSS, LESS
BackendPython, Java, Go, Rust, C, C++, C#, Ruby, PHP, Perl
MobileSwift, Kotlin, Dart (Flutter), Objective-C
FunzionaleHaskell, Scala, Elixir, Clojure, F#
ScriptingBash, PowerShell, Zsh, Fish
DatiSQL, R, Julia, MATLAB
FormatoEsempi comuni
JSONpackage.json, tsconfig.json, settings.json
YAMLdocker-compose.yml, GitHub Actions, configurazioni Kubernetes
TOMLCargo.toml, pyproject.toml
XMLpom.xml, web.xml, file di configurazione
INI.gitconfig, .editorconfig
ENVfile .env, configurazione dell'ambiente
HCLConfigurazione Terraform
FormatoCasi d'uso
MarkdownREADME.md, file di documentazione
HTMLTemplate, pagine web
LaTeXDocumenti scientifici, articoli accademici
reStructuredTextDocumentazione Python
AsciiDocDocumentazione tecnica

Formati di dati

FormatoDescrizione
CSV/TSVFile di dati tabulari
Dati basati su testoFile di log, dump di dati
JSON/YAMLInterscambio di dati strutturati

File di build e di pacchetto

FileScopo
MakefileAutomazione della build
package.jsonDipendenze Node.js
requirements.txtPacchetti Python
GemfileGem Ruby
Cargo.tomlPacchetti Rust
build.gradleBuild Gradle
Tipo di formatoEsempiModificabilità
ImmaginiPNG, JPG, GIF, SVG (binari)Non modificabili direttamente
VideoMP4, AVI, MOVNon modificabili direttamente
Binari compilatiEXE, DLL, SONon modificabili direttamente
ArchiviZIP, TAR, GZNon modificabili direttamente
Documenti OfficeDOCX, XLSX, PPTXNon modificabili direttamente
PDFFile PDFNon modificabili direttamente

I file binari possono essere referenziati nel codice ma non possono essere modificati tramite gli strumenti per i file.


Supporto ai linguaggi di programmazione

Verdent offre un supporto completo per tutti i linguaggi di programmazione e i framework basati su testo.

Linguaggio/FrameworkLivello di supportoCasi d'uso comuni
JavaScriptEccellenteLogica frontend, backend Node.js, tooling
TypeScriptEccellenteApp web type-safe, progetti su larga scala
ReactEccellenteUI basate su componenti, hook, gestione dello stato
VueEccellenteProgressive web app, componenti single-file
AngularEccellenteApplicazioni enterprise, integrazione TypeScript
SvelteMolto buonoComponenti compilati, programmazione reattiva
HTML/CSSEccellenteMarkup, styling, design responsive
SCSS/LESSEccellenteStyling avanzato, variabili, mixin
Linguaggio/FrameworkLivello di supportoCasi d'uso comuni
PythonEccellenteAPI, elaborazione dati, automazione
Django/Flask/FastAPIEccellenteFramework web, API REST
Node.js/ExpressEccellenteBackend JavaScript, microservizi
Java/SpringEccellenteApplicazioni enterprise, Spring Boot
GoEccellenteServizi ad alte prestazioni, CLI
RustMolto buonoProgrammazione di sistema, codice critico per le prestazioni
C/C++Molto buonoSistemi, embedded, motori di gioco
C# / .NETEccellenteApp Windows, servizi web, Unity
Ruby/RailsMolto buonoApplicazioni web, sviluppo rapido
PHPBuonoWordPress, Laravel, app legacy
Linguaggio/FrameworkLivello di supportoCasi d'uso comuni
SwiftEccellenteApp native iOS/macOS
KotlinEccellenteApp native Android
Dart/FlutterEccellenteApp mobili multipiattaforma
React NativeEccellenteApp mobili basate su JavaScript
Objective-CBuonoApp legacy iOS/macOS
LinguaggioLivello di supportoCasi d'uso comuni
PythonEccellenteNumPy, Pandas, scikit-learn, TensorFlow
RMolto buonoAnalisi statistica, visualizzazione dei dati
SQLEccellenteQuery di database, progettazione di schemi
JuliaBuonoCalcolo scientifico, analisi numerica
LinguaggioLivello di supportoCasi d'uso comuni
CMolto buonoProgrammazione di sistema, embedded
C++Molto buonoApplicazioni critiche per le prestazioni
RustMolto buonoProgrammazione di sistema memory-safe
GoEccellenteSistemi concorrenti, servizi cloud
AssemblyBuonoOttimizzazione di basso livello, debugging

Qualità del supporto: i linguaggi comuni (JavaScript, Python, TypeScript) godono di un supporto più solido grazie all'ampia disponibilità di dati di addestramento. I linguaggi meno comuni o specifici per un dominio possono avere una qualità di supporto ridotta ma restano comunque funzionali.


Limiti d'uso e migliori pratiche

Efficienza di file_read

Migliori pratiche:

  • Usa intervalli di righe per file di oltre 500 righe per evitare il sovraccarico del contesto
  • Leggi solo le sezioni rilevanti per l'attività
  • Per i file di grandi dimensioni, usa prima grep_content per identificare i numeri di riga rilevanti
# Good: Read specific section
file_read("large-config.json", start_line=100, max_lines=50)

# Less efficient: Read entire large file
file_read("large-config.json")  # May consume excessive context

Precisione di file_edit

Migliori pratiche:

  • Assicurati che le corrispondenze delle stringhe siano esatte per evitare modifiche fallite
  • Per più modifiche simili, usa il flag multiple=true
  • Verifica i percorsi dei file prima di modificarli

Sicurezza di file_write

Migliori pratiche:

  • Controlla attentamente i percorsi per evitare sovrascritture accidentali
  • Usalo solo per nuovi file o riscritture complete
  • Per le modifiche, preferisci file_edit per maggiore sicurezza

Migliori pratiche per bash

Esecuzione sicura dei comandi:

  • Fornisci riepiloghi chiari per le descrizioni dei comandi
  • Imposta timeout appropriati per le operazioni di lunga durata
  • Concatena i comandi dipendenti con &&
  • Rivedi attentamente i comandi distruttivi (rm, drop, truncate)
# Good: Clear summary, reasonable timeout
bash("npm run build", timeout=120000, summary="Build production bundle")

# Good: Chained dependencies
bash("npm install && npm run test", timeout=180000)

Considerazioni sulla sicurezza

Regole di sicurezza fondamentali:

  • I comandi vengono eseguiti con i permessi dell'utente
  • Non eseguire mai comandi non attendibili
  • Usa Manual Accept Mode per la revisione nelle codebase condivise
  • Evita comandi che espongono credenziali o dati sensibili

Rivedi sempre i comandi bash in Manual Accept Mode quando lavori in codebase condivise o ambienti di produzione.

Efficienza nella delega ai sottoagenti

Quando usare i sottoagenti:

  • Explorer: ricerche nella codebase, domande sull'architettura (risparmia il contesto principale)
  • Verifier: controlli di validazione rapidi (verifica isolata)
  • Code-reviewer: revisioni di sicurezza e qualità (analisi dettagliata)
  • General: attività complesse in più passaggi (esecuzione parallela)

Buona pratica: Delega le attività esplorative e di ricerca ai sottoagenti per preservare il contesto della conversazione principale per il lavoro di sviluppo attivo.


Gestione del contesto

Uso strategico degli strumenti:

  • Leggi i file in modo strategico, solo ciò che serve
  • Usa i sottoagenti per la ricerca in background
  • Monitora il consumo del contesto durante le sessioni lunghe
  • Suddividi le operazioni complesse in passaggi con todo_update

Flussi di lavoro efficienti:

  1. Pianificazione: usa glob/grep per identificare l'ambito
  2. Lettura: leggi solo i file/sezioni rilevanti
  3. Esecuzione: delega ai sottoagenti quando appropriato
  4. Verifica: controlli rapidi con il sottoagente Verifier

Limiti sulle dimensioni dei file

Gestione dei file di grandi dimensioni: I file molto grandi (>10.000 righe) dovrebbero essere letti a sezioni per evitare:

  • Esaurimento della finestra di contesto
  • Tempi di risposta lenti
  • Problemi di memoria

Per i file di oltre 500 righe, usa sempre gli intervalli di righe con file_read per mantenere prestazioni ottimali.


Timeout predefiniti degli strumenti

Limiti degli strumenti:

  • Timeout di bash: 120 secondi (2 minuti) al massimo
  • Operazioni sui file: nessun limite di dimensione (i file di grandi dimensioni vengono letti automaticamente a blocchi)
  • Gestione dei file di grandi dimensioni: i file >256KB restituiscono solo i primi 256KB di contenuto
  • Risultati di ricerca: nessun limite sui risultati di glob o grep_content
  • Sottoagenti concorrenti: nessun limite sull'esecuzione parallela

Configurazione del timeout:

  • Imposta timeout espliciti per le operazioni di lunga durata
  • Monitora i processi bloccati
  • I comandi che superano il timeout di 2 minuti verranno terminati

Operazioni concorrenti

Esecuzione parallela: Più sottoagenti possono essere eseguiti in parallelo per operazioni complesse più veloci. L'agente principale gestisce automaticamente il coordinamento.

Vantaggi in termini di prestazioni:

  • Riduzione del tempo totale di esecuzione per le attività in più passaggi
  • Utilizzo efficiente delle risorse
  • Orchestrazione automatica delle attività
  • Nessun limite sul numero di sottoagenti concorrenti

Vedi anche