En bref
Ce que dit cet article
Lorsqu'une application Android est open source, un agent IA peut réaliser l'ingénierie à partir d'une demande simple : cloner, modifier, compiler, installer sur un téléphone USB, regarder l'écran et itérer. L'article montre les vrais prompts courts derrière tg-digest-android.
- Le fork présenté ajoute un onglet Digest qui réunit les publications non lues de canaux Telegram sélectionnés dans un seul flux chronologique.
- Claude a compilé, installé, ouvert, vérifié visuellement et amélioré l'application sur un Redmi Note 8 Pro physique en une journée.
- Le lecteur doit obtenir ses propres api_id et api_hash Telegram, les placer dans le fichier local.properties à la racine, puis activer les Options pour les développeurs et le Débogage USB d'Android.
- Au moment de la publication, les identifiants Telegram personnels de l'auteur ne figuraient ni dans l'arbre public ni dans aucun des deux commits publics ; seule la paire d'exemple issue de la source amont Telegram subsistait.
- La version fournie cible arm64-v8a et repose sur Telegram pour Android 12.7.3 (6750).
Le plus étonnant n’est pas qu’un fork de Telegram ait gagné un onglet Digest. C’est que le mettre sur un vrai téléphone ne m’a pas demandé d’écrire un plan de compilation Android. J’ai décrit le comportement manquant en langage courant, branché le téléphone, puis écrit seulement « Lance la dernière version sur mon téléphone » — et le soir même j’utilisais ma propre version.
Le matin même, cette fonctionnalité n’existait pas
Les abonnements à des canaux finissent généralement dans l’une de ces deux situations, aussi mauvaises l’une que l’autre : des centaines de compteurs rouges, ou tout marqué comme lu tandis que les publications utiles disparaissent. Je voulais un troisième modèle : choisir moi-même quelques canaux, puis lire toutes leurs publications non lues dans une seule chronologie ordinaire.
L’onglet Digest obtenu fait exactement cela :
- il permet de rechercher des canaux et rassemble leurs publications par ordre chronologique ;
- il conserve, pour chaque compte, un repère de dernière lecture distinct ;
- il s’ouvre sur le premier élément non lu et permet de remonter indéfiniment dans le passé ;
- il affiche les noms des canaux, albums multimédias, dates et réactions avec l’interface de Telegram ;
- il marque les messages visibles comme lus par le même mécanisme qu’un canal normal.
Ce n’est ni une minuscule démonstration ni un nouveau client redessiné de zéro. L’agent a dû mettre la base à niveau vers la dernière source publiée de Telegram, comprendre sa base de données locale, la pagination, le regroupement des médias et la navigation. Mais je n’ai pas eu à lui dicter des noms de classes. J’ai décrit ce que la personne qui l’utilise devait voir et ressentir.
Le travail était technique. Le prompt était en langage courant
La demande centrale ressemblait à peu près à ceci. La dernière phrase était importante : elle a empêché l’agent de construire, à côté de l’interface existante de Telegram, une seconde interface manifestement étrangère à l’application.
Ajoute une page distincte contenant tous les messages non lus des canaux Telegram que je sélectionne.
J’ai besoin d’un sélecteur de canaux. Conserve un repère Digest distinct pour le dernier élément que j’ai réellement lu. À l’ouverture de la page, place-la sur le premier message non lu. Ajoute un défilement infini vers le passé et un bouton en bas qui ramène au premier élément non lu. Marque les publications visibles comme lues au moyen de l’état de lecture standard de Telegram.
Affiche les albums, le nom du canal et son avatar exactement comme Telegram le fait normalement. Réutilise autant que possible l’interface existante ; n’écris une interface personnalisée que là où c’est inévitable.
Compile l’application, installe-la sur le téléphone connecté et vérifie le résultat sur l’appareil.Quelques heures plus tard, l’application fonctionnait sur un Redmi Note 8 Pro. J’ai alors donné deux brèves instructions supplémentaires : supprimer les à-coups du défilement, puis déplacer le bouton rond au-dessus de la navigation inférieure tout en retirant un avatar parasite entre les messages. Claude a examiné le résultat sur le téléphone, trouvé les causes, recompilé l’APK et vérifié à nouveau. Cela ressemblait davantage à un travail avec une équipe produit qu’à de la « génération de code ».
Le code devient moins cher ; une intention précise gagne en valeur
Il existait autrefois une chaîne coûteuse entre « j’ai besoin de ceci » et « je l’utilise » : trouver un développeur Android, expliquer l’architecture, assembler l’environnement, attendre les compilations et apprendre ADB. Cela nous a habitués à considérer l’interface d’une application comme définitive. Nous acceptons ce que l’éditeur livre et attendons la version suivante.
Un agent de codage change l’économie de cette chaîne. Il peut lire un vaste dépôt inconnu, faire
correspondre les versions du JDK, du SDK et du NDK, trouver le bon point d’intégration, compiler un
APK, examiner un échec d’installation, lire logcat et recommencer. Tous les résultats ne
sont pas bons, mais le coût d’une première version fonctionnelle s’est effondré.
Cela ne s’applique pas à tout. Une application fermée sans code source, une fonctionnalité côté serveur, une infrastructure de paiement ou une modification de protocole cryptographique n’apparaîtront pas grâce à un seul prompt. Mais lorsque le comportement souhaité se trouve dans un client Android ouvert et peut être vérifié à l’écran, attendre le bouton officiel n’est plus toujours rationnel.
Comment faire de même : ne laisser à l’humain que les actions indispensables
Le processus ci-dessous concerne ce fork. Il vous faut un ordinateur, un agent de codage capable d’utiliser le terminal, comme Claude Code ou Codex, un téléphone Android, un câble USB de données et plusieurs gigaoctets d’espace libre. Le dépôt est volumineux et la première compilation Android prend du temps. Laissez l’agent préparer l’environnement technique ; vous ajouterez les identifiants privés, modifierez les réglages du téléphone et vous connecterez à Telegram.
1 Laisser l’agent préparer le projet
Ouvrez l’agent dans un dossier vide. Le projet original a commencé par une demande tout aussi courte : forker le client Android officiel et le lancer sur le téléphone connecté. Pour le fork public fini :
Clone https://github.com/howaihelps/tg-digest-android et lance la dernière version sur mon téléphone Android connecté en USB.
Dis-moi quand je dois saisir moi-même mon app id et mon app hash Telegram ou confirmer quelque chose sur le téléphone. Ne montre pas et ne committe pas ces identifiants.2 Obtenir son propre ID API et hash Telegram
Action humaine
- Connectez-vous dans une application Telegram officielle si vous n’avez pas encore de compte.
- Ouvrez my.telegram.org, connectez-vous avec votre numéro de téléphone et choisissez API development tools.
- Remplissez le formulaire de l’application, choisissez Android et enregistrez les valeurs
api_idetapi_hashfournies.
Il ne s’agit pas d’un token de bot. Telegram délivre une paire par numéro de téléphone et exige un ID personnel pour un client tiers. Consultez les instructions officielles de Telegram.
À la racine du dépôt cloné, à côté de settings.gradle, ouvrez local.properties et remplacez manuellement les valeurs temporaires. N’ajoutez pas de
guillemets :
sdk.dir=/Users/[VOTRE_NOM]/Library/Android/sdk
TELEGRAM_API_ID=[VOTRE_API_ID_NUMERIQUE]
TELEGRAM_API_HASH=[VOTRE_API_HASH_DE_32_CARACTERES]Le chemin sdk.dir est différent sous Windows et Linux ; l’agent devrait déjà l’avoir
renseigné. Dans ce fork, TMessagesProj/build.gradle injecte les deux valeurs dans BuildConfig, puis BuildVars.java les lit à l’exécution. local.properties figure dans .gitignore.
Au moment de la publication, j’ai également comparé mes vraies valeurs à chaque fichier des deux commits publics : mes api_id et api_hash personnels ne figuraient ni dans l’arbre alors publié ni dans l’historique Git. La source amont importée contient bien la paire d’exemple standard et restreinte de Telegram. Ce ne sont pas mes identifiants, et vous ne devez pas vous en servir pour votre compilation.
3 Préparer le téléphone
Action humaine
- Ouvrez À propos du téléphone et touchez sept fois Numéro de build. Sur Xiaomi, l’option peut s’appeler Version MIUI ou Version HyperOS.
- Revenez dans les Réglages, ouvrez les Options pour les développeurs et activez Débogage USB.
- Sur Xiaomi, activez aussi Installer via USB ; certains modèles nécessitent également Débogage USB (paramètres de sécurité).
- Branchez le téléphone déverrouillé avec un câble prenant en charge les données, et pas seulement la recharge.
- Acceptez l’empreinte RSA de l’ordinateur sur le téléphone ; « Toujours autoriser » est pratique.
Le nom des menus varie selon les fabricants. La séquence de base est décrite dans le guide officiel Android sur les options pour les développeurs. Gardez l’écran déverrouillé pendant la première installation : un agent ne peut pas accepter une boîte de dialogue système à votre place.
4 Demander à l’agent de compiler et de lancer
Une fois local.properties complété et le téléphone branché, inutile de citer ADB, la tâche
Gradle, l’ABI, CMake, le chemin de l’APK ou une activité Android. Dans la vraie session Claude, toute
ma demande de lancement tenait en une phrase :
Lance la dernière version sur mon téléphone.Claude a lui-même vérifié l’appareil, ajusté la chaîne d’outils Android, compilé la bonne variante,
l’a installée et lancée, puis a examiné les captures d’écran. C’étaient les actions de l’agent, pas
des connaissances techniques cachées dans mon prompt. Le résultat était un APK de débogage
d’environ 75 Mo exécuté comme org.telegram.messenger.beta sur arm64-v8a.
Vous devez toujours vous connecter vous-même et ne jamais communiquer vos codes à l’agent.
5 Formuler sa fonctionnalité en termes de résultats
Après le lancement de l’application, vous pouvez modifier ce fork ou répéter le processus avec une autre application open source. Ne commencez pas par « crée une classe » ou « corrige le RecyclerView ». Décrivez la situation, le comportement observable et les critères d’acceptation.
Modifie l’application pour ce besoin personnel.
Aujourd’hui : [ce qui manque ou ce que je fais à la main].
Je veux : [ce que je dois voir et ce qui doit se produire].
Conserve : [les écrans et comportements existants à ne pas modifier].
Réutilise autant que possible l’interface de l’application. Fais fonctionner le tout, lance la dernière version sur mon téléphone connecté et vérifie toi-même le résultat.6 Corriger les sensations, pas seulement la compilation
La première version de Digest fonctionnait, mais le flux tressautait légèrement au chargement d’éléments supplémentaires. Le prompt suivant ne contenait ni diagnostic ni plan de test, seulement ce que je voyais sur le téléphone :
Tout fonctionne très bien, mais l’écran tressaute un peu pendant le défilement. Peux-tu le vérifier toi-même et corriger le problème ?L’agent a découvert qu’une actualisation complète de la liste se produisait pendant la pagination et l’a remplacée par une mise à jour incrémentale. Lors de la nouvelle mesure, la proportion d’images saccadées est passée de 11,9 % à 2,1 %, tandis que le temps d’image au 99e percentile est passé de 40 à 22 ms. J’ai décrit un autre défaut visuel encore plus simplement : « déplace le bouton au-dessus de la navigation inférieure et supprime l’artefact au centre, tout en conservant le nom du canal ». C’était encore du langage courant, pas une spécification d’interface. Le compromis final est un en-tête avec le nom seul : l’avatar d’auteur qui provoquait l’artefact n’est pas affiché. Cette boucle — regarder, nommer le défaut, laisser l’agent le reproduire, puis vérifier — compte davantage qu’un premier prompt parfait.
Avant de publier, utiliser un prompt de sécurité distinct
Un APK fonctionnel ne garantit pas la sûreté d’un dépôt. Dans ma vraie demande de publication, j’ai formulé la limite en langage courant ; Claude l’a transformée en vérifications des fichiers suivis et de l’historique avant le push :
Pousse toutes les modifications vers le dépôt public dans un seul bon commit en anglais.
Ne pousse sous aucun prétexte mon app id ni mon app hash. Ils doivent rester dans un fichier local exclu du dépôt. Vérifie-le soigneusement avant le push.Telegram pour Android est distribué sous GNU GPL v2 ou version ultérieure ; le fork conserve donc la licence et met le code source à disposition. Il existe aussi une obligation pratique : maintenir son fork, examiner son diff et ne pas considérer du code généré comme automatiquement digne de confiance. Un agent réduit radicalement le coût de l’implémentation ; il ne supprime pas la responsabilité du propriétaire.
Pas une application pour tout le monde — une application exactement pour vous
Un produit grand public doit choisir des fonctionnalités qui ont du sens pour des millions de personnes. Une version personnelle peut être étrange, étroite et parfaite pour une seule personne. C’est là que les agents changent le plus le logiciel : nul besoin de fonder une start-up ni d’attendre des années qu’une demande de fonctionnalité recueille assez de votes. Parfois, un dépôt ouvert, une description précise, un câble USB et la volonté d’examiner le résultat suffisent.
Le code n’est pas devenu inutile. Il est devenu beaucoup moins rare. Le droit de le prendre, de le modifier et de l’exécuter sur son propre appareil a gagné d’autant plus de valeur.
Le chemin le plus court
- Choisir un code source Android ouvert et laisser un agent préparer la chaîne d’outils.
- Obtenir soi-même les identifiants privés et les enregistrer uniquement dans un fichier local ignoré.
- Activer les Options pour les développeurs et le Débogage USB, puis brancher un téléphone déverrouillé.
- Demander à l’agent de compiler, installer, lancer et vérifier l’APK.
- Décrire le comportement souhaité en langage courant.
- Itérer sur un véritable appareil, puis auditer séparément les secrets et les licences avant tout push.
FAQ rapide
Une personne qui n'est pas développeuse peut-elle vraiment modifier une application Android avec un agent IA ?
Oui, lorsque le code source est disponible et que la tâche peut être vérifiée sur un appareil. Il faut toujours décrire le comportement souhaité, autoriser les actions sensibles, fournir localement les identifiants privés et tester le résultat ; l'agent peut prendre en charge l'essentiel du travail lié au dépôt, à la chaîne d'outils, à la compilation, à l'installation et au débogage.
Où placer les api_id et api_hash Telegram dans ce fork ?
Créez local.properties à la racine du dépôt et ajoutez TELEGRAM_API_ID et TELEGRAM_API_HASH sans guillemets. Le fichier est ignoré par Git ; Gradle injecte les valeurs dans BuildConfig lors de la compilation.
Que faut-il faire sur le téléphone Android ?
Activez les Options pour les développeurs en touchant sept fois Numéro de build, activez le Débogage USB, branchez un téléphone déverrouillé avec un câble de données et acceptez l'empreinte RSA de l'ordinateur. Les appareils Xiaomi peuvent aussi nécessiter l'option Installer via USB.