3.6 KiB
3.6 KiB
Changelog - Commande Shell !
Version actuelle
Nouvelle fonctionnalité : Commande Shell !
Date : Décembre 2024
Description
Implémentation de la commande ! permettant d'exécuter des commandes shell directement dans les prompts et les commandes markdown personnalisées.
Syntaxe
- Commande simple :
!commande- exécute la commande et remplace par sa sortie - Commande avec arguments :
!commande avec args`` - utilise des backticks pour les espaces
Fonctionnalités
-
Exécution inline dans les prompts
- L'utilisateur peut taper :
Analyse le projet : !git status`` - MagicCode exécute la commande et envoie le résultat au LLM
- L'utilisateur peut taper :
-
Support dans les commandes markdown
- Les fichiers
.claude/commands/**/*.mdpeuvent contenir des commandes! - Expansion automatique avec les arguments
$1,$2, etc.
- Les fichiers
-
Gestion intelligente
- Exécution parallèle de multiples commandes pour performance
- Timeout de 30 secondes par commande
- Buffer de sortie limité à 10 MB
- Gestion des erreurs avec messages clairs
-
Intégration avec les permissions
- Respect des variables d'environnement de
.claude/settings.json - Exécution dans le dossier de travail configuré
- Respect des variables d'environnement de
Fichiers modifiés/créés
- ✨ Nouveau :
packages/ext-claudecode/src/shell-commands.ts- Logique d'exécution - ✨ Nouveau :
packages/ext-claudecode/src/shell-commands.test.ts- Tests unitaires (11 tests) - ✨ Nouveau :
packages/ext-claudecode/SHELL_COMMANDS.md- Documentation détaillée - ✨ Nouveau :
.claude/commands/sysinfo.md- Exemple de commande - 🔧 Modifié :
packages/cli/src/index.ts- Intégration dans la boucle principale - 🔧 Modifié :
packages/ext-claudecode/src/commands.ts- Support asynchrone - 🔧 Modifié :
packages/ext-claudecode/src/mode.ts- Passage des options - 🔧 Modifié :
packages/ext-claudecode/src/index.ts- Export des fonctions - 🔧 Modifié :
packages/core/src/types.ts- SlashCommand async - 🔧 Modifié :
README.md- Documentation principale
Tests
- ✅ 11 tests unitaires pour
shell-commands - ✅ Tests d'intégration dans
lot2.test.tsmis à jour - ✅ Tous les tests passent (84/84)
- ✅ TypeCheck OK sur tous les packages
Exemple d'utilisation
Dans un prompt direct :
Utilisateur actuel : !whoami
Liste des fichiers : !`ls -la`
Dans .claude/commands/status.md :
---
description: État du projet
---
## Git
!`git status --short`
## Derniers commits
!`git log --oneline -5`
Puis utiliser /status dans MagicCode.
Impact sur l'API
- ⚠️ Breaking change mineur :
SlashCommand.prompt()retourne maintenantstring | Promise<string>- Rétrocompatible : les commandes synchrones fonctionnent toujours
- Les appels doivent maintenant être
awaités
Notes techniques
- Utilise
child_process.execpour l'exécution - Regex de détection :
/!((?:[^]+)|(?:[^\s]+))/g` - Expansion de la fin vers le début pour éviter les décalages d'indices
- Protection TypeScript stricte avec vérifications nullables
Documentation
- Guide utilisateur complet dans
SHELL_COMMANDS.md - README mis à jour avec section dédiée
- Aide CLI mise à jour (
--help) - Commentaires de code détaillés
Prochaines étapes possibles
- Support des permissions plus fines pour les commandes
! - Sandbox optionnel avec restrictions
- Cache des résultats pour commandes identiques
- Support du streaming pour les commandes longues
- Interface de confirmation configurable