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 :

Texte
Copilot Chat = je pose une question.
Agent Mode = je confie une tâche structurée.

Exemple simple

Tu demandes dans Chat :

Texte
Explain this function.

Copilot répond avec une explication.

Mais en Agent Mode, tu peux demander :

Texte
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 :

Texte
src/controllers/users.controller.ts
src/services/users.service.ts
src/repositories/users.repository.ts
tests/users.service.test.ts

Tu demandes :

Texte
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 :

Texte
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 :

Texte
Ask Mode → Plan Mode → puis Agent Mode ou Copilot Edits (edit mode)

Exemple de bon prompt Agent Mode

Texte
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 :

Texte
A developer needs Copilot to implement a change across multiple files and update tests.
Which Copilot capability is most appropriate?

Bonne réponse :

Texte
Agent Mode

Mauvaise réponse probable :

Texte
Inline suggestion

Pourquoi ? 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

BesoinMeilleur choix
Modifier une fonction sélectionnéeCopilot Edits (edit mode)
Modifier un fichier précisCopilot Edits (edit mode)
Modifier plusieurs fichiers avec logique globaleAgent Mode
D’abord comprendre le codeAsk Mode
D’abord créer une stratégiePlan Mode

Exemple simple

Code initial :

Python
def calculate_discount(price, discount):
    return price - discount

Prompt Copilot Edits (edit mode) :

Texte
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 :

Python
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 - discount

Exemple plus réaliste

Tu as ce code :

TypeScript
export function normalizeEmail(email: string): string {
  return email.toLowerCase();
}

Prompt :

Texte
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 :

TypeScript
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 :

Texte
A developer selected a function and wants Copilot to update it without changing the public signature.
Which mode should they use?

Bonne réponse :

Texte
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

ModeBut
Ask ModeComprendre, expliquer, poser des questions
Plan ModePréparer une stratégie d’action
Copilot Edits (edit mode)Modifier du code avec contrôle du working set
Agent ModeExécuter une tâche plus complète

Exemple simple

Prompt :

Texte
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 :

  1. Identify existing middleware setup.
  2. Choose a rate-limiting library or existing internal utility.
  3. Configure limits per route or globally.
  4. Add configuration through environment variables.
  5. Add tests for allowed requests.
  6. Add tests for blocked requests.
  7. Document the behavior.
  8. Review security and operational impact.

Exemple sécurité

Prompt :

Texte
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 :

  1. Locate hardcoded credentials.
  2. Remove credentials from code and config files.
  3. Use AWS SDK default credential provider chain.
  4. Attach least-privilege IAM role to runtime.
  5. Rotate exposed credentials.
  6. Update deployment documentation.
  7. Add validation for missing permissions.
  8. Test in staging.
  9. 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

Texte
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 strategy

Piège d’examen

Question possible :

Texte
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 :

Texte
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.

D2 · Utiliser les fonctionnalités de GitHub Copilot · 25–30 %