04 Fonctionnalités avancées
Agent Mode, Copilot Edits et Plan Mode
Cette leçon contient des faits datés. Dates et sources
4.1 Agent Mode
Définition simple
Agent Mode permet à Copilot d’agir de manière plus autonome sur une tâche de développement.
Au lieu de simplement répondre à une question ou compléter une ligne, Copilot peut :
- analyser une demande ;
- explorer le contexte ;
- proposer un plan ;
- modifier plusieurs fichiers ;
- lancer ou proposer des tests ;
- itérer sur une solution ;
- aider à produire un changement plus complet.
L’idée est :
Copilot Chat = je pose une question.
Agent Mode = je confie une tâche structurée.Exemple simple
Tu demandes dans Chat :
Explain this function.Copilot répond avec une explication.
Mais en Agent Mode, tu peux demander :
Add pagination to this API endpoint.
Update the controller, service, repository, and tests.
Preserve backward compatibility.Là, Copilot peut raisonner sur plusieurs étapes.
Exemple réaliste
Tu as une API Node.js :
src/controllers/users.controller.ts
src/services/users.service.ts
src/repositories/users.repository.ts
tests/users.service.test.tsTu demandes :
Implement soft delete for users.
Do not physically delete records.
Add a deletedAt field.
Update repository methods to ignore deleted users by default.
Add unit tests.Agent Mode est pertinent parce que la tâche touche :
- modèle de données ;
- repository ;
- service ;
- tests ;
- comportement métier.
Quand utiliser Agent Mode ?
Utilise Agent Mode quand la tâche est :
- multi-fichiers ;
- multi-étapes ;
- assez claire ;
- automatisable ;
- testable ;
- liée à une feature ou correction concrète.
Exemples :
Add input validation across this endpoint and its tests.
Refactor this module to use dependency injection.
Fix this failing test and update the implementation if needed.
Add a new endpoint following the existing project conventions.Quand éviter Agent Mode ?
Évite Agent Mode si :
- tu ne comprends pas encore le problème ;
- le besoin est flou ;
- la logique métier est très sensible ;
- la tâche nécessite une décision produit ;
- la sécurité est critique ;
- tu n’as pas encore de tests ;
- le changement risque d’être trop large.
Dans ces cas, commence par :
Ask Mode → Plan Mode → puis Agent Mode ou Copilot Edits (edit mode)Exemple de bon prompt Agent Mode
Implement a retry mechanism for failed payment requests.
Constraints:
- Use exponential backoff.
- Retry only on network errors and 5xx responses.
- Do not retry on 4xx responses.
- Add unit tests.
- Keep the public API unchanged.
- Explain the files changed.Pourquoi c’est bon ?
Parce que tu donnes :
- objectif ;
- contraintes ;
- règles métier ;
- tests attendus ;
- limite de changement ;
- besoin d’explication.
Piège d’examen
Question possible :
A developer needs Copilot to implement a change across multiple files and update tests.
Which Copilot capability is most appropriate?Bonne réponse :
Agent ModeMauvaise réponse probable :
Inline suggestionPourquoi ? Une inline suggestion est trop locale pour une tâche multi-fichiers.
4.2 Copilot Edits : edit mode
Définition
Copilot Edits est la surface de Copilot Chat qui permet de modifier plusieurs fichiers depuis un même prompt. Son edit mode donne un contrôle granulaire : working set explicite, contexte par itération et acceptation ou rejet de chaque changement.
Il est moins autonome qu’Agent Mode. Tu l’utilises quand tu sais quoi modifier et que le périmètre est raisonnablement clair.
Différence entre Copilot Edits (edit mode) et Agent Mode
| Besoin | Meilleur choix |
|---|---|
| Modifier une fonction sélectionnée | Copilot Edits (edit mode) |
| Modifier un fichier précis | Copilot Edits (edit mode) |
| Modifier plusieurs fichiers avec logique globale | Agent Mode |
| D’abord comprendre le code | Ask Mode |
| D’abord créer une stratégie | Plan Mode |
Exemple simple
Code initial :
def calculate_discount(price, discount):
return price - discountPrompt Copilot Edits (edit mode) :
Update this function to validate inputs.
Price and discount must be non-negative.
Discount cannot be greater than price.
Raise ValueError with clear messages.Résultat possible :
def calculate_discount(price, discount):
if price < 0:
raise ValueError("price must be non-negative")
if discount < 0:
raise ValueError("discount must be non-negative")
if discount > price:
raise ValueError("discount cannot be greater than price")
return price - discountExemple plus réaliste
Tu as ce code :
export function normalizeEmail(email: string): string {
return email.toLowerCase();
}Prompt :
Update this function to trim whitespace before lowercasing.
Throw an error if the email is empty after trimming.
Keep the return type as string.Résultat possible :
export function normalizeEmail(email: string): string {
const normalizedEmail = email.trim().toLowerCase();
if (!normalizedEmail) {
throw new Error("Email must not be empty");
}
return normalizedEmail;
}Quand utiliser Copilot Edits en edit mode ?
Utilise Copilot Edits en edit mode pour :
- corriger une fonction ;
- ajouter de la validation ;
- améliorer une implémentation ;
- changer une logique locale ;
- ajouter une docstring ;
- refactorer un bloc ;
- adapter un fichier existant ;
- ajouter des tests ciblés.
Quand éviter Copilot Edits en edit mode ?
Évite Copilot Edits en edit mode si :
- tu veux d’abord comprendre ;
- tu veux un plan ;
- plusieurs fichiers doivent être coordonnés ;
- la tâche est exploratoire ;
- tu risques d’introduire une régression large.
Piège d’examen
Question possible :
A developer selected a function and wants Copilot to update it without changing the public signature.
Which mode should they use?Bonne réponse :
Copilot Edits (edit mode)4.3 Plan Mode avancé
Définition
Plan Mode sert à demander à Copilot de réfléchir avant d’agir.
Il produit un plan d’implémentation, sans forcément modifier le code immédiatement. C’est une fonctionnalité importante pour les tâches où il faut réduire le risque.
La documentation GitHub sur Copilot CLI précise que Plan Mode permet de créer un plan d’implémentation structuré avant d’écrire du code, et qu’un bon plan améliore la qualité des résultats.
Différence entre Ask Mode et Plan Mode
| Mode | But |
|---|---|
| Ask Mode | Comprendre, expliquer, poser des questions |
| Plan Mode | Préparer une stratégie d’action |
| Copilot Edits (edit mode) | Modifier du code avec contrôle du working set |
| Agent Mode | Exécuter une tâche plus complète |
Exemple simple
Prompt :
Create a plan to add rate limiting to this Express API.
Do not modify the code yet.
Include affected files, implementation steps, tests, and risks.Plan attendu :
- Identify existing middleware setup.
- Choose a rate-limiting library or existing internal utility.
- Configure limits per route or globally.
- Add configuration through environment variables.
- Add tests for allowed requests.
- Add tests for blocked requests.
- Document the behavior.
- Review security and operational impact.
Exemple sécurité
Prompt :
Create a plan to replace hardcoded AWS credentials with IAM role-based authentication.
Do not edit files yet.
Include security risks, rollout steps, testing, and rollback.Bon plan :
- Locate hardcoded credentials.
- Remove credentials from code and config files.
- Use AWS SDK default credential provider chain.
- Attach least-privilege IAM role to runtime.
- Rotate exposed credentials.
- Update deployment documentation.
- Add validation for missing permissions.
- Test in staging.
- Monitor access denied errors after deployment.
Plan Mode avancé : ce qu’il faut demander
Un bon prompt Plan Mode doit demander :
- les fichiers impactés ;
- les étapes ;
- les risques ;
- la stratégie de test ;
- les décisions ouvertes ;
- le rollback ;
- les impacts sécurité ;
- les impacts performance ;
- les impacts backward compatibility.
Prompt template
Create an implementation plan for [TASK].
Do not modify code yet.
Include:
- affected files
- proposed steps
- risks
- testing strategy
- security considerations
- backward compatibility concerns
- rollback strategyPiège d’examen
Question possible :
A team wants to migrate a legacy module but wants to reduce risk before editing files.
What should they ask Copilot to do first?Bonne réponse :
Use Plan Mode to create an implementation plan.À retenir pour le GH-300
- Agent Mode : une tâche multi-étapes ou multi-fichiers, assez claire et testable ; Copilot choisit fichiers, outils et étapes.
- Copilot Edits en edit mode : une modification ciblée dont le périmètre est connu, avec un working set explicite et des changements acceptés un par un.
- Besoin flou, logique sensible ou pas de tests : Ask Mode puis Plan Mode d’abord, puis Agent Mode ou Edits.
- Un bon prompt d’agent borne le changement : cause, fichiers nécessaires, API publique préservée, tests, explication.
Faits datés de cette leçon
Ces points changent avec le produit. Chacun indique quand il a été vérifié et où le contrôler.
- Fonctionnalités de Copilot, CLI et agents
Questions de la leçon
Chargement de la question…
Pour finir
À retenir
- Agent Mode : une tâche multi-étapes ou multi-fichiers, assez claire et testable ; Copilot choisit fichiers, outils et étapes.
- Copilot Edits en edit mode : une modification ciblée dont le périmètre est connu, avec un working set explicite et des changements acceptés un par un.
- Besoin flou, logique sensible ou pas de tests : Ask Mode puis Plan Mode d’abord, puis Agent Mode ou Edits.
- Un bon prompt d’agent borne le changement : cause, fichiers nécessaires, API publique préservée, tests, explication.
Objectif GH-300
- Agent, MCP et sessions (Use agent mode, MCP, and sessions)
Achèvement
Il reste à faire : .