L'intelligence du code offre deux couches complémentaires de compréhension du code :
Toutes les fonctionnalités tree-sitter ci-dessous sont multiplateformes (IDE, CLI, Web, Mobile). Les fonctionnalités LSP nécessitent un serveur de langage et sont disponibles uniquement sur l'IDE et la CLI.
| Capacité | Nécessite LSP |
|---|---|
| Recherche de symboles (floue) | — |
| Symboles du document | — |
| Recherche de motifs (AST) | — |
| Réécriture de motifs (AST) | — |
| Aperçu de la base de code | — |
| Recherche de références | ✓ |
| Accès à la définition | ✓ |
| Renommer un symbole | ✓ |
| Obtenir les diagnostics | ✓ |
| Documentation au survol | ✓ |
Bash, C, C++, C#, Elixir, Go, Java, JavaScript, Kotlin, Lua, PHP, Python, Ruby, Rust, Scala, Swift, TSX, TypeScript
Trouvez des fonctions, des classes et des méthodes par nom avec une correspondance floue :
> Find the UserRepository class Searching for symbols matching: "UserRepository" (using tool: code) ✓ Found 1 match Class UserRepository at src/repositories/user.repository.ts:15:1
Recherche structurelle de code basée sur l'AST. Trouvez du code par structure, pas seulement par texte.
| Motif | Correspondances |
|---|---|
$VAR | Nœud unique (identifiant, expression) |
$$$ | Zéro ou plusieurs nœuds (instructions, paramètres) |
// Find all console.log calls pattern: console.log($ARG) language: javascript // Find all async functions pattern: async function $NAME($$$PARAMS) { $$$ } language: typescript // Find all .unwrap() calls pattern: $E.unwrap() language: rust
Transformations de code automatisées utilisant des motifs AST :
// Convert var to const pattern: var $N = $V replacement: const $N = $V language: javascript // Modernize hasOwnProperty pattern: $O.hasOwnProperty($P) replacement: Object.hasOwn($O, $P) language: javascript // Convert unwrap to expect pattern: $E.unwrap() replacement: $E.expect("unexpected None") language: rust
Obtenez un aperçu global d'un espace de travail ou d'un répertoire :
L'agent utilise l'intelligence du code automatiquement lors de l'exploration de votre projet. Demandez « donnez-moi un aperçu de cette base de code » ou « que fait ce projet? »
Générez la documentation du projet basée sur l'analyse de la base de code :
Demandez à l'agent : « Générez un fichier README pour ce projet » ou « Créez un fichier AGENTS.md. »
Avec un serveur de langage installé, l'intelligence du code gagne en précision supplémentaire :
Dans l'IDE, les capacités reposant sur le LSP proviennent des extensions de langage que vous avez déjà installées. Sur la CLI, activez-les par espace de travail avec /code init - consultez la référence de configuration ci-dessous.
Kiro CLI génère des processus de serveur LSP en arrière-plan qui communiquent via JSON-RPC sur stdio. Lorsque vous initialisez un espace de travail, il détecte les langages à partir des marqueurs de projet (comme package.json, Cargo.toml) et des extensions de fichiers, puis démarre les serveurs de langage appropriés. Ces serveurs analysent continuellement votre code et maintiennent un index des symboles, des types et des références. Lorsque vous effectuez des requêtes, Kiro traduit votre langage naturel en requêtes de protocole LSP, les envoie au serveur concerné, puis formate les réponses en une sortie lisible.
Exécutez cette commande à barre oblique dans la racine de votre projet :
/code init
Cela crée .kiro/settings/lsp.json et démarre les serveurs de langage :
✓ Workspace initialization started Workspace: /path/to/your/project Detected Languages: ["python", "rust", "typescript"] Project Markers: ["Cargo.toml", "package.json"] Available LSPs: ○ clangd (cpp) - available ○ gopls (go) - not installed ◐ jdtls (java) - initializing... ✓ pyright (python) - initialized (687ms) ✓ rust-analyzer (rust) - initialized (488ms) ○ solargraph (ruby) - not installed ✓ typescript-language-server (typescript) - initialized (214ms)
Indicateurs d'état : ✓ initialisé et prêt · ◐ en cours d'initialisation · ○ disponible (installé mais pas nécessaire) · ○ non installé
/code init -f./code init, Kiro CLI initialise automatiquement l'intelligence du code au démarrage lorsque .kiro/settings/lsp.json existe dans l'espace de travail..kiro/settings/lsp.json pour désactiver. Réactivez à tout moment avec /code init.| Langage | Extensions | Serveur | Commande d'installation |
|---|---|---|---|
| TypeScript/JavaScript | .ts, .js, .tsx, .jsx | typescript-language-server | npm install -g typescript-language-server typescript |
| Rust | .rs | rust-analyzer | rustup component add rust-analyzer |
| Python | .py | pyright | pip install pyright |
| Go | .go | gopls | go install golang.org/x/tools/gopls@latest |
| Java | .java | jdtls | brew install jdtls (macOS) |
| Ruby | .rb | solargraph | gem install solargraph |
| C/C++ | .c, .cpp, .h, .hpp | clangd | brew install llvm (macOS) ou apt install clangd (Linux) |
| Kotlin | .kt, .kts | kotlin-language-server | brew install kotlin-language-server |
Interrogez l'intelligence sémantique du code en langage naturel - recherchez des symboles, naviguez dans les définitions, trouvez des références, renommez dans plusieurs fichiers, obtenez des diagnostics, consultez la documentation et découvrez les API disponibles :
> Find references of Person class Finding all references at: auth.ts:42:10 1. src/auth.ts:42:10 - export function authenticate(...) 2. src/handlers/login.ts:15:5 - authenticate(credentials) 3. src/handlers/api.ts:89:12 - await authenticate(token)
> Dry run: rename the method "FetchUser" to "fetchUserData" Dry run: Would rename 12 occurrences in 5 files
> What methods are available on the s3Client instance? Available completions: 1. putObject - Function: (params: PutObjectRequest) => Promise<PutObjectOutput> 2. getObject - Function: (params: GetObjectRequest) => Promise<GetObjectOutput> 3. deleteObject - Function: (params: DeleteObjectRequest) => Promise<DeleteObjectOutput>
Ajoutez des serveurs de langage personnalisés en modifiant .kiro/settings/lsp.json :
{ "languages": { "mylang": { "name": "my-language-server", "command": "my-lsp-binary", "args": ["--stdio"], "file_extensions": ["mylang", "ml"], "file_patterns": ["Mylangfile", "mylang.config.*"], "project_patterns": ["mylang.config"], "exclude_patterns": ["**/build/**"], "multi_workspace": false, "initialization_options": { "custom": "options" }, "request_timeout_secs": 60 } } }
Champs :
["--stdio"])Dockerfile, Dockerfile.* ou docker-compose*.yml. Les correspondances exactes l'emportent sur les motifs glob, et les motifs glob plus spécifiques l'emportent sur les plus généraux, peu importe l'ordre de déclaration.package.json)Après modification, redémarrez Kiro CLI pour charger la nouvelle configuration.
| Commande | Objectif |
|---|---|
/code init | Initialiser l'intelligence du code dans le répertoire actuel |
/code init -f | Forcer la réinitialisation (redémarrer tous les serveurs LSP) |
/code status | Afficher l'état de l'espace de travail et des serveurs LSP |
/code overview [path] [--silent] | Aperçu de la structure de la base de code |
/code summary | Génération de documentation interactive |
/code logs | Afficher les journaux LSP pour le dépannage |
Options de /code logs : -l, --level <LEVEL> filtre (ERROR, WARN, INFO, DEBUG, TRACE; par défaut ERROR) · -n, --lines <N> nombre de lignes (par défaut 20) · -p, --path <PATH> exporter les journaux vers un fichier JSON.
| Problème | Cause(s) | Solution |
|---|---|---|
| Code tool is not enabled for this agent | L'agent n'a pas l'outil code dans sa liste d'outils | Ajoutez "code" au tableau d'outils de l'agent, ou utilisez @builtin pour inclure tous les outils intégrés, ou utilisez @builtin/code |
| Workspace is still initializing | Les serveurs LSP sont en cours de démarrage | Attendez et réessayez. Si les serveurs ont planté, utilisez /code init -f pour redémarrer |
| LSP initialization failed | Consultez les journaux pour plus de détails : /code logs -l ERROR | |
| No symbols found | Le serveur de langage est encore en cours d'indexation, le fichier contient des erreurs de syntaxe, ou le nom du symbole ne correspond pas | Vérifiez le fichier pour des erreurs, essayez des termes de recherche plus larges |
| No definition found | La position ne pointe pas vers un symbole | Vérifiez que les numéros de ligne et de colonne pointent vers un nom de symbole |
Tous les serveurs de langage ne prennent pas en charge toutes les opérations (certains peuvent ne pas prendre en charge le renommage ou le formatage), et les grandes bases de code peuvent être lentes à indexer initialement.
Les recherches de symboles et l'analyse de code dans votre espace de travail s'exécutent sans invite. Les opérations ciblant des fichiers hors de l'espace de travail nécessitent une approbation.
Intelligence du code