đŠŸ AgentiLoop Agent!
September 21, 2026 · View on GitHub
En toute transparence : je n'utilise plus Cursor ni Claude Code. Agent! d'AgentiLoop n'a pas seulement remplaceÌ ces outils de codage â je l'utilise pour automatiser mes e-mails, deÌployer des logiciels, effectuer des recherches sur le web dans Safari avec plus de 12 moteurs de recherche et creÌer des sites web qui se mettent aÌ jour tout seuls. Agent! est devenu l'outil d'IA agentique le plus puissant pour macOS 26 et 27.
IA agentique pour votre bureau Mac
Agent! pilotant Photo Booth via l'AccessibiliteÌ â pas de clics, pas de scripts, juste « prends une photo ».
Traductions du README
- English
- Español
- Français
- Deutsch
- äžæ (çźäœ)
- Đ ŃŃŃĐșĐžĐč
- áá Ąá«áá źášáá „
- æ„æŹèȘ
Les échecs dans Agent
Qu'est-ce qu'Agent! ?
Une app. N'importe quelle IA. Le contrĂŽle total de votre Mac.
Agent! est une app 100 % native Swift 6.2 / SwiftUI qui relie 21 fournisseurs de LLM â Claude, Codex, OpenAI, Gemini, Grok, Mistral, Mistral Vibe, DeepSeek, Hugging Face, Z.ai, BigModel, Alibaba DashScope, Qwen, Qwen Code, MiniMax, OpenRouter, Requesty, A2Agent, OrcaRouter, Ollama (cloud et local), vLLM et LM Studio â plus Apple Intelligence sur l'appareil â Ă une boucle de tĂąches autonome qui agit vraiment : elle lit votre code, corrige le bug, compile le projet Xcode, committe le diff, pilote n'importe quelle app Mac via l'API d'AccessibilitĂ©, exĂ©cute des commandes shell en votre nom ou en root, vous envoie les rĂ©sultats par iMessage et rĂ©pond Ă un « Agent! » prononcĂ© Ă voix haute.
Pas de NPM, pas d'Electron, pas d'abonnement, pas de tĂ©lĂ©mĂ©trie. Apportez votre propre clĂ© API, tournez entiĂšrement en local, ou gratuitement avec Apple Intelligence. Chaque package Swift dont l'app dĂ©pend a Ă©tĂ© Ă©crit par le mĂȘme auteur. Voir l'Histoire ci-dessous.
NouveautĂ©s đ
v1.1.x â La version Hardened Harness · Releases â
- Compactage du contexte, reconstruit. Seuil = fenĂȘtre du modĂšle â sortie rĂ©servĂ©e â marge, pilotĂ© par les vrais
input_tokens. Un rĂ©sumĂ© LLM en 9 sections cĂŽtĂ© fournisseur remplace les rĂ©sumĂ©s 4K sur l'appareil ; l'objectif ouvert, la checklist du plan et les fichiers modifiĂ©s sont rattachĂ©s aprĂšs chaque compactage. Les rĂ©sultats d'outils trop volumineux sont Ă©crits sur disque dĂšs leur Ă©mission et rĂ©cupĂ©rables viarestore_tool_result. Les dĂ©passements 413 passent par un compactage forcĂ© avec une requĂȘte plus courte ; les dĂ©passements demax_tokensse rĂ©tablissent par escalade, puis continuation. - Garde read-before-edit.
edit_file/apply_diff/diff_applyrefusent de toucher un fichier que le LLM n'a pas lu dans cette tĂąche, ou qui a changĂ© sur le disque depuis la derniĂšre lecture (SHA-256). Le refus lit automatiquement le fichier pour que l'appel suivant soit la modification. Les changements externes de fichiers sont affichĂ©s Ă chaque tour sous forme d'extraits de diff. - Vraies fenĂȘtres de contexte pour les modĂšles locaux. LM Studio, Ollama et vLLM rapportent leur longueur de contexte rĂ©elle par modĂšle â fini l'hypothĂšse fixe de 32K.
- Tours plus rapides. Les outils en lecture seule démarrent pendant que la réponse de Claude est encore en streaming ; concurrence shell tenant compte des entrées ; nouvelle tentative exponentielle avec jitter et
Retry-Aftersur 429/529 ; erreurs en cours de flux SSE remontées pour chaque fournisseur. - Défense en profondeur.
ShellSafetyServiceest dĂ©sormais appliquĂ© cĂŽtĂ© daemon (AgentHelper + AgentUser) en plus du client ; les builds release rejettent les clients XPC sans Ă©quipe ; les deux listeners XPC exigent une signature de code de la mĂȘme Ă©quipe, dĂ©rivĂ©e de la propre signature de l'app. - Journal d'activitĂ©. Plus de troncature Ă 50K ni de coupe Ă 500K au relancement â les gros journaux sont rendus hors du thread principal avec une superposition « Processing tab data⊠» ; disposition optionnelle « Activity Log Below HUD ».
- Menu de l'app : Rechercher des mises à jour⊠(releases GitHub), Site web, GitHub. Workflow CI Build & Test sur chaque PR ; 273 tests réussis.
- Et aussi :
goal_stateavec critÚres vérifiés par des preuves, revue critique optionnelle du diff avant la fin,rewind_taskpar tùche, réflexion étendue pour Claude, transmission dereasoning_effort, sous-agents avec modÚle propre par agent (3 simultanés, 6 en lecture seule), erreurs d'outils typées avec indices de récupération, hooks d'événements.
Démarrage rapide (Téléchargement)
- TĂ©lĂ©chargez Agent! et glissez-le dans Applications â ou avec Homebrew :
brew update && brew install --cask agentiloop-agent - Ouvrez Agent! â tout se configure automatiquement
- Choisissez votre IA â RĂ©glages â choisissez un fournisseur â saisissez la clĂ© API
â Vous n'avez jamais besoin de compiler depuis les sources. Chaque release et chaque prĂ©-release inclut un binaire Mac prĂ©compilĂ© (
.dmg+.zip), construit par la CI et signĂ©, notarisĂ© et agrafĂ© (stapled) par Apple avec le Team ID AgentiLoop. Comme les binaires officiels portent un vrai Developer ID, le Launch Agent et le Launch Daemon s'enregistrent toujours et ne sont jamais « perdus » â cela n'arrive qu'avec les builds depuis les sources signĂ©s ad hoc (voir Option B ci-dessous). Si vos helpers ont disparu, installez simplement le binaire de la derniĂšre release.
Démarrage rapide (Compiler depuis les sources)
NĂ©cessaire uniquement si vous voulez modifier Agent! lui-mĂȘme. Pour tous les autres : utilisez le binaire signĂ© ci-dessus.
git clone https://github.com/AgentiLoop/agent.git
cd Agent
Option A â Xcode (compte Apple Developer) : ouvrez Agent.xcodeproj, dĂ©finissez votre Development Team, compilez et lancez la cible Agent, approuvez le helper quand on vous le demande.
Option B â sans compte dĂ©veloppeur (Xcode Command Line Tools uniquement) :
./build.sh # Debug
./build.sh Release # Release
open "build/DerivedData/Build/Products/Debug/Agent!.app"
â ïž Les builds de l'Option B sont signĂ©s ad hoc. Les helpers Launch Agent/Daemon ne s'enregistreront pas (SMAppService exige un Team ID), mais la boucle LLM, tous les outils, l'AccessibilitĂ©, AppleScript, le shell et MCP fonctionnent quand mĂȘme.
đĄ Configuration Ă©conomique : GLM-5.3 via Z.ai (inscription la plus rapide, modĂšle par dĂ©faut) coĂ»te quelques centimes par million de tokens. En local ? Seul GLM-4.7-Turbo (32B) tient sur du matĂ©riel grand public (Apple Silicon 64â128 Go via Ollama).
Dépannage (Compiler depuis les sources)
xcode-selectpointe vers les Command Line Tools âsudo xcode-select -s /Applications/Xcode.app/Contents/DeveloperBUILD FAILEDĂ©trange aprĂšs un pull â DerivedData obsolĂšte :./build.sh clean && ./build.sh- Les helpers ne s'enregistrent jamais â attendu en Option B ; utilisez l'Option A pour les helpers
- Erreurs de deployment target / SDK â Agent! cible macOS 26 ; mettez Ă jour macOS et Xcode
- L'argument de configuration est sensible Ă la casse â
./build.sh(Debug) ou./build.sh Release
Que peut-il faire ?
« Compile le projet Xcode et corrige les erreurs » · « Lance ma playlist Workout dans Musique » · « Prends une photo avec Photo Booth » · « Envoie un iMessage à maman pour dire que je rentre à 18 h » · « Ouvre Safari et cherche des vols pour Tokyo » · « Refactorise cette classe en fichiers plus petits » · « Quels événements ai-je aujourd'hui dans le calendrier ? »
Tapez simplement ce que vous voulez. Agent! trouve comment et le réalise.
Fonctionnalités clés
- đ§ Boucle de tĂąches auto-vĂ©rifiĂ©e â raisonne, exĂ©cute, observe les rĂ©sultats, se corrige. Une tĂąche ne peut pas se dĂ©clarer terminĂ©e tant que les critĂšres de
goal_statene sont pas validĂ©s avec des preuves ; un critique optionnel relit d'abord le diff. - đ Codage agentique â lit les bases de code, modifie via des diffs de remplacement de chaĂźnes, compile les projets Xcode nativement (erreurs cliquables), gĂšre git, indexe les dĂ©pĂŽts en une carte JSONL portable. Chaque modification est sauvegardĂ©e â rollback en un clic ou
rewind_taskde toute la tĂąche. - đ„ Automatisation du bureau â pilote n'importe quelle app Mac via l'API d'AccessibilitĂ© (AXorcist), basĂ©e sur les Ă©lĂ©ments avec nouvelle tentative floue automatique. Plus NSAppleScript, JXA et 51 ponts ScriptingBridge, le tout en processus avec TCC.
- đ AgentScript â dylibs Swift compilĂ©es Ă l'exĂ©cution et chargĂ©es via
dlopenen processus avec TCC complet. Les scripts supprimĂ©s vont dans.Trashet sont restaurables. - đĄ ExĂ©cution privilĂ©giĂ©e â shell en votre nom via un Launch Agent, ou en root via un Launch Daemon que vous approuvez une seule fois (SMAppService + XPC). Voir docs/SECURITY.md pour comprendre pourquoi SMAppService impose dĂ©jĂ l'identitĂ© de signature.
- đ Voix â dites « Agent! » suivi de votre tĂąche ;
SFSpeechRecognizersur l'appareil, lancement automatique aprĂšs ~2,5 s de silence, en boucle. - đ± TĂ©lĂ©commande iMessage â envoyez
Agent! next songdepuis votre iPhone ; expĂ©diteurs approuvĂ©s uniquement. NĂ©cessite l'AccĂšs complet au disque pourchat.db. - đ Web â automatisation Safari intĂ©grĂ©e (JavaScript + AppleScript) ; Selenium et Playwright MCP optionnels pour le multi-navigateur.
- đ€ Sous-agents â jusqu'Ă 3 simultanĂ©s (6 en lecture seule) agents isolĂ©s avec messagerie par boĂźte aux lettres et modĂšle propre par agent.
- đ§© MCP â ajoutez n'importe quel serveur MCP dans RĂ©glages â Serveurs MCP ; les outils apparaissent comme
mcp_<server>_<tool>. Xcode MCP :{"mcpServers":{"xcode":{"command":"xcrun","args":["mcpbridge"],"transport":"stdio"}}}. - đ Onglets, historique, mĂ©moire, plans, skills â chaque onglet a son propre dossier de projet et son journal ; mĂ©moire utilisateur persistante ; checklists multi-plans dans chaque prompt.
- đ ChaĂźne de repli â bascule automatique vers le fournisseur suivant configurĂ© en cas de 429/timeout/panne rĂ©seau.
đ€ 21 fournisseurs d'IA
| Fournisseur | Coût | Idéal pour |
|---|---|---|
| A2Agent | Bon marché | DeepSeek, GLM, Kimi, MiniMax et Qwen avec une seule clé compatible OpenAI à une fraction du prix officiel |
| Apple Intelligence | Gratuit, sur l'appareil | Triage, résumés, compression de tokens (icÎne cerveau, non disponible dans le sélecteur de fournisseur) |
| Claude | Au token (clé API) ou abonnement (OAuth) | Longues tùches autonomes, réflexion étendue, cache de prompts |
| Codex | Abonnement ChatGPT | ModĂšles OpenAI via OAuth ChatGPT â pas de clĂ© API, pas de facturation au token |
| DeepSeek | Bon marché | Codage économique, rapport de hits de cache |
| Google Gemini | Payant (offre gratuite) | Contexte long, vision |
| Grok (xAI) | Payant | Infos en temps réel |
| Hugging Face | Variable | ModÚles ouverts, serverless ou endpoints dédiés |
| MiniMax | Bon marché | Contexte de 1M tokens |
| Mistral / Mistral Vibe | Payant | Cloud open-weight, code, produit agent |
| Ollama (cloud) | Offre gratuite | ModÚles ouverts hébergés |
| Ollama local / vLLM / LM Studio | Gratuit + matĂ©riel | EntiĂšrement hors ligne ; vraie fenĂȘtre de contexte par modĂšle dĂ©tectĂ©e |
| OpenAI | Payant | Usage général, appels d'outils, vision, reasoning_effort |
| OpenRouter | Payant | 200+ modÚles, une clé ; Claude routé via le protocole Anthropic |
| OrcaRouter | Payant | 190+ modÚles avec une seule clé compatible OpenAI au prix du fournisseur ; routage auto/fusion/fallback |
| Alibaba DashScope (Model Studio / QwenCloud paiement à l'usage) | Bon marché | Qwen 3.8 via DashScope |
| Qwen (qwen.ai Token Plan) | Abonnement | QwenCloud Token Plan (clé sk-sp-) : qwen3.8-max, qwen3.7-plus, GLM-5.2, DeepSeek V4 |
| Qwen Code | Abonnement | Alibaba Coding Plan (clé sk-sp-) : qwen3-coder-plus, qwen3.7-plus, GLM-5, Kimi K2.5, MiniMax-M2.5 |
| Requesty | Payant | 300+ modÚles avec une seule clé compatible OpenAI ; tarifs et capacités par modÚle |
| Z.ai / BigModel | Bon marchĂ© | GLM-5.3 â point de dĂ©part recommandĂ© |
đĄ Les fournisseurs auto-hĂ©bergĂ©s ne sont gratuits qu'au sens des frais d'API â un modĂšle 30B+ utilisable exige un Mac Studio M2/M3/M4 Ultra (64â128 Go). Sans ce matĂ©riel, les voies cloud bon marchĂ© ci-dessus reviennent bien moins cher.
Outils
Les noms canoniques viennent de AgentTools.Name.* (source : le package AgentTools). Les interrupteurs par fournisseur permettent de masquer des outils individuels.
| Groupe | Outils |
|---|---|
| Core | done · list_tools · search · web_search · fetch · chat · memory · plan · goal_state · restore_tool_result · directory · skill · ask_user · index |
| Code / build | file (read/write/edit/diff_apply/undo/list/search/mkdir/âŠ) · git · xcode (build/run/analyze/snippet/code_review/add_file/bump_version/âŠ) · agent_script |
| Shell | user_shell (Launch Agent) · root_shell (Launch Daemon) · shell (repli en processus) · batch · multi |
| Automatisation macOS | accessibility (25 actions basées sur les éléments) · applescript (avec lookup_sdef) · javascript (JXA) |
| Web | safari · selenium · mcp_playwright_browser_* (optionnel) |
| Sous-agents | spawn_agent · tell_agent |
Référence complÚte par action : docs/TECHNICAL.md.
AgentScript â Scripts Swift avec TCC complet
Les AgentScripts sont de simples fichiers Swift dans ~/Documents/AgentScript/agents/Sources/Scripts/. Agent! compile chacun en .dylib avec SwiftPM (Package.swift liste chaque script plus les 51 ponts ScriptingBridge), puis le charge via dlopen avec les autorisations TCC d'Agent! lui-mĂȘme â AccessibilitĂ©, Automatisation, Calendrier, Contacts, Mail, Photos, etc. Le LLM les gĂšre avec agent_script (create / edit / run / delete / restore / pull) ; ~35 exemples sont fournis dans le dossier (Hello, TodayEvents, NowPlaying, CheckMail, CreateDmg, ArchiveXcode, âŠ).
Point d'entrĂ©e â pas de code de niveau supĂ©rieur, pas de exit() ; stdout est renvoyĂ© au LLM, la valeur de retour est le code de sortie :
import Foundation
import CalendarBridge // tout `import XBridge` est cĂąblĂ© automatiquement â aucune modification de Package.swift
@_cdecl("script_main")
public func scriptMain() -> Int32 {
print("Hello from AgentScript! đ")
return 0
}
Variables d'environnement â comment elles sont DĂFINIES. Le LLM ne touche jamais lui-mĂȘme Ă l'environnement. Il appelle l'outil, et le ScriptService d'Agent! exporte les variables dans le processus du script (env["AGENT_PROJECT_FOLDER"] = cwd, env["AGENT_SCRIPT_ARGS"] = arguments dans ScriptService+Execution.swift ; setenv(...) pour la variante en processus). Les deux mĂȘmes variables sont exportĂ©es vers chaque commande user_shell / root_shell / shell.
Appel d'outil du LLM Ce qu'Agent! exporte vers le script
âââââââââââââââââââââââââââââââââââââââââââââââââââââ âââââââââââââââââââââââââââââââââââââââââââââ
agent_script(action:"run", name:"TodayEvents") AGENT_PROJECT_FOLDER=/Users/vous/Documents/GitHub/Agent
(AGENT_SCRIPT_ARGS n'est PAS définie)
agent_script(action:"run", name:"TodayEvents", AGENT_PROJECT_FOLDER=/Users/vous/Documents/GitHub/Agent
arguments:"days=3,location=false,json=true") AGENT_SCRIPT_ARGS="days=3,location=false,json=true"
| Variable | Quand définie | Signification |
|---|---|---|
AGENT_PROJECT_FOLDER | Toujours | Le dossier de projet de l'onglet actif (ou $HOME s'il n'y en a pas). Le cwd du runner y est aussi positionné. |
AGENT_SCRIPT_ARGS | Seulement quand le LLM passe arguments:"âŠ" | La chaĂźne passĂ©e par le LLM, telle quelle. Les exemples utilisent la convention key=value,key=value. |
Variables d'environnement â comment elles sont LUES. Dans le script, les deux proviennent de ProcessInfo.processInfo.environment. C'est exactement le schĂ©ma d'analyse de Hello.swift / TodayEvents.swift :
import Foundation
@_cdecl("script_main")
public func scriptMain() -> Int32 {
let env = ProcessInfo.processInfo.environment
// 1. Dossier de projet â toujours prĂ©sent ; repli sur le cwd par prĂ©caution
let folder = env["AGENT_PROJECT_FOLDER"] ?? FileManager.default.currentDirectoryPath
// 2. Arguments â absents sauf si le LLM a passĂ© `arguments:"âŠ"`
let argsString = env["AGENT_SCRIPT_ARGS"] ?? ""
// 3. Valeurs par défaut, puis analyse de "key=value,key=value"
var daysAhead = 0
var showLocation = true
var outputJSON = false
for pair in argsString.split(separator: ",") {
let parts = pair.split(separator: "=", maxSplits: 1).map { \$0.trimmingCharacters(in: .whitespaces) }
guard parts.count == 2 else { continue }
switch parts[0] {
case "days": daysAhead = Int(parts[1]) ?? 0
case "location": showLocation = parts[1].lowercased() == "true"
case "json": outputJSON = parts[1].lowercased() == "true"
default: break
}
}
print("Dossier de projet : \(folder)")
print("days=\(daysAhead) location=\(showLocation) json=\(outputJSON)")
return 0
}
Les deux variables sont indĂ©pendantes â ne jamais extraire le dossier de projet de AGENT_SCRIPT_ARGS. Ăquivalent Bash dans user_shell : ls "$AGENT_PROJECT_FOLDER/Sources" (le cwd y est dĂ©jĂ , pas besoin de cd).
Conventions réelles de AGENT_SCRIPT_ARGS dans les scripts fournis (~/Documents/AgentScript/agents/Sources/Scripts/) :
| Script | arguments: passé par le LLM | Style |
|---|---|---|
TodayEvents | days=3,location=false,json=true | key=value,⊠|
CheckMail | unreadOnly=true,inboxCount=true,json=true | key=value,⊠|
ListReminders | completed=false,limit=5 | key=value,⊠|
QuitApps | excluded=Xcode,Agent,Terminal | key=value avec une liste |
NowPlaying | json=true,artwork=true | key=value,⊠|
ArchiveXcode | /path/to/Project.xcodeproj MyScheme 469UCUB275 | positionnel, séparé par des espaces (scheme/teamID détectés automatiquement s'ils sont omis) |
CreateDmg | --app /path/to/App.app --output /path/out.dmg --name "My App" --compress | style drapeaux, séparé par des espaces, guillemets respectés |
EntrĂ©e / sortie JSON â un mĂ©canisme SĂPARĂ des variables d'environnement. Les variables d'environnement sont exportĂ©es par Agent! dans le processus ; les fichiers JSON sont de simples fichiers sur disque que le script lui-mĂȘme lit et Ă©crit avec FileManager / JSONSerialization. Agent! ne les crĂ©e pas, ne les transmet pas et ne les analyse pas. Deux schĂ©mas rĂ©els tirĂ©s des scripts fournis :
1. EntrĂ©e JSON uniquement (SendMessage) â aucun argument d'environnement ; le script exige SendMessage_input.json et renvoie 1 s'il est absent :
// ~/Documents/AgentScript/json/SendMessage_input.json (écrit par le LLM via file(action:"write") avant l'exécution)
{ "recipient": "Maman", "message": "Ă la maison Ă 18 h", "imagePath": "~/Pictures/Photos Library.photoslibrary/originals/A/IMG_0001.jpeg" }
// ~/Documents/AgentScript/json/SendMessage_output.json (écrit par le script)
{ "success": true, "timestamp": "2026-09-03T21:14:02Z", "recipient": "Maman", "message": "Ă la maison Ă 18 h" }
// en cas d'Ă©chec : { "success": false, "timestamp": "âŠ", "error": "Missing required field: recipient" }
// SendMessage.swift â comment le script le lit
let inputPath = "\(NSHomeDirectory())/Documents/AgentScript/json/SendMessage_input.json"
guard let inputData = FileManager.default.contents(atPath: inputPath) else {
writeOutput(outputPath, success: false, error: "Input file not found: \(inputPath)"); return 1
}
guard let json = try? JSONSerialization.jsonObject(with: inputData) as? [String: Any],
let recipientHandle = json["recipient"] as? String else { /* ⊠*/ return 1 }
let message = json["message"] as? String
let imagePath = json["imagePath"] as? String
2. Arguments d'environnement pour les options, JSON pour la sortie structurĂ©e (TodayEvents, NowPlaying, CheckMail, ListReminders) â les options viennent de AGENT_SCRIPT_ARGS (ou du fichier optionnel <Name>_input.json) ; avec json=true le script Ă©crit <Name>_output.json en plus de la sortie lisible sur stdout qui revient au LLM :
// agent_script(action:"run", name:"TodayEvents", arguments:"days=3,json=true")
// â ~/Documents/AgentScript/json/TodayEvents_output.json
{ "success": true, "timestamp": "âŠ", "count": 2,
"events": [ { "summary": "Standup", "calendar": "Work", "startTime": "âŠ", "endTime": "âŠ", "allDay": false, "location": "âŠ" }, ⊠] }
// agent_script(action:"run", name:"NowPlaying", arguments:"json=true,artwork=true")
// â ~/Documents/AgentScript/json/NowPlaying_output.json
{ "success": true, "playerState": "playing",
"track": { "name": "âŠ", "artist": "âŠ", "album": "âŠ", "duration": 240 },
"artwork": { "saved": true, "path": "~/Documents/AgentScript/images/âŠ.png", "width": 500, "height": 500 } }
// TodayEvents.swift â comment le script l'Ă©crit
func writeTodayEventsOutput(_ path: String, success: Bool, error: String? = nil,
events: [[String: Any]]? = nil, count: Int? = nil, outputJSON: Bool) {
guard outputJSON else { return }
var result: [String: Any] = ["success": success, "timestamp": ISO8601DateFormatter().string(from: Date())]
if !success, let error { result["error"] = error }
if success { if let events { result["events"] = events }; if let count { result["count"] = count } }
try? FileManager.default.createDirectory(atPath: (path as NSString).deletingLastPathComponent, withIntermediateDirectories: true)
if let out = try? JSONSerialization.data(withJSONObject: result, options: .prettyPrinted) {
try? out.write(to: URL(fileURLWithPath: path))
}
}
Les scripts supprimés vont dans ~/Documents/AgentScript/agents/.Trash/ (agent_script(action:"restore")) ; action:"pull" récupÚre la version upstream depuis le dépÎt AgentScripts.
đ Jev â un second avis avant les commandes shell
Jev (TypeSafe System One) est une couche de dĂ©cision optionnelle qui examine les commandes shell avant qu'Agent! ne les exĂ©cute. Elle complĂšte le fournisseur de LLM que vous avez choisi â elle ne le remplace jamais.
- Ce qu'elle fait. Chaque commande ayant déjà passé les rÚgles figées de
ShellSafetyServiceest envoyĂ©e Ă Jev, qui Ă©value la probabilitĂ© qu'elle dĂ©truise des donnĂ©es de façon irrĂ©versible. Au-dessus de votre seuil, la commande est refusĂ©e avec le pourcentage et le texte de la commande ; en dessous, elle s'exĂ©cute. - OĂč cela s'applique. Sur tous les chemins shell : le shell in-process, le Launch Agent utilisateur (
user_shell) et le Launch Daemon privilĂ©giĂ© (root_shell). - Seuil rĂ©glable. RĂ©glages â LLM Common Settings â Reject at ⊠% destructive, de 0 Ă 100 % par paliers de 10 %. Valeur par dĂ©faut : 70 %.
- Conçu pour Ă©chouer en mode ouvert. Sans clĂ© API, avec l'interrupteur Consult Jev before tools dĂ©sactivĂ©, ou en cas de panne de TypeSafe, le rĂ©sultat est « aucun avis » : la commande continue et l'Ă©chec est journalisĂ©, jamais prĂ©sentĂ© silencieusement comme un verdict sĂ»r. Annuler une tĂąche pendant une vĂ©rification Jev empĂȘche la commande de dĂ©marrer.
- Visible. Chaque vérification journalise le pourcentage de risque destructif, le verdict autorisé/refusé, le modÚle ayant répondu et le nombre de tokens en entrée/sortie.
- Configuration. La clé API (stockée dans le Trousseau), le sélecteur de modÚle avec rafraßchissement du catalogue et l'interrupteur d'avis se trouvent dans LLM Common Settings. Le client réside dans le paquet Swift embarqué
TypeSafeKit/TypeSafeMiddleware.
Confidentialité et sécurité
Vos fichiers, le contenu de votre Ă©cran et vos donnĂ©es personnelles ne quittent jamais votre Mac â les fournisseurs cloud ne voient que le texte du prompt ; les fournisseurs locaux gardent tout hors ligne. Chaque action est journalisĂ©e.
| Couche | Ce qu'elle fait |
|---|---|
| Shell Safety Service | Bloque en dur rm -rf /, rm -rf ~, rm -rf avec glob nu, --no-preserve-root â appliquĂ© cĂŽtĂ© client et cĂŽtĂ© daemon. Impossible Ă contourner par le LLM. |
| Confiance des clients XPC | Les deux listeners exigent une signature de code de la mĂȘme Ă©quipe, dĂ©rivĂ©e de la propre signature de l'app ; les builds release rejettent les clients sans Ă©quipe. |
| Garde read-before-edit | Les modifications de fichiers non lus ou modifiés en externe sont refusées (SHA-256), avec lecture automatique au refus. |
| Sauvegardes de fichiers + rewind | Chaque modification est sauvegardée (TTL d'une semaine) ; UI de Rollback, file(action:"undo") ou rewind_task par tùche. |
| Routage TCC en processus | Les commandes AppleScript/JXA/screencapture/accessibilitĂ© s'exĂ©cutent en processus, lĂ oĂč Agent! dĂ©tient les autorisations TCC, jamais via les daemons. |
| ContrĂŽle d'exĂ©cution des outils | Le LLM ne peut pas inventer de rĂ©sultats â chaque appel passe par dispatchTool() et renvoie une sortie rĂ©elle. Les affirmations « j'ai cliquĂ©/cherché⊠» sans outil reçoivent une correction injectĂ©e. |
| Erreurs typĂ©es + gardes | Chaque rĂ©sultat d'outil en Ă©chec porte un indice de rĂ©cupĂ©ration ; les gardes « disque rayĂ© » et « bloquĂ© » relancent puis s'arrĂȘtent ; les portes de fin limitent les refus Ă 3 par tĂąche. |
| Piste d'audit Console | Chaque appel d'outil et chaque commande du helper sont journalisés. |
Raccourcis clavier et commandes slash
| Raccourci | Action |
|---|---|
Return | Lancer la tĂąche · â . / Esc annuler |
â T / â W / â 1â9 / â â§ ââ | Nouvel / fermer / changer / prĂ©cĂ©dent-suivant onglet |
â B / â D | Basculer la superposition de sortie LLM / les chevrons |
â F / â L / â V | Rechercher dans le journal / vider le journal / coller une image |
â / â | Historique des prompts |
â â§ M / â â§ P | Moniteur Messages / RĂ©glages |
â â§ K L H J U | Tout effacer / panneau LLM / historique des prompts / historique des tĂąches / compteurs de tokens |
Les commandes slash s'exécutent en local : /clear [log|all|llm|history|tasks|tokens], /memory [show|clear|edit|<texte>].
FAQ
Dois-je savoir coder ? Non â du français courant (ou votre langue maternelle). Combien ça couÌte ? L'app est gratuite pour un usage non commercial et personnel (PolyForm Noncommercial 1.0.0). Vous payez votre fournisseur ; GLM-5.3 via Z.ai/BigModel ou DeepSeek sont les moins chers pour un travail seÌrieux. Les modeÌles locaux sont gratuits si vous posseÌdez le mateÌriel. Quel Mac me faut-il ? Apple Silicon, macOS 26.4.1+. N'importe quel Mac rĂ©cent pour les fournisseurs cloud ; 64 Go+ pour les modĂšles locaux 30B. Quelle diffĂ©rence avec Siri ? Siri rĂ©pond. Agent! agit â apps, fichiers, code, systĂšme.
Plus : docs/FAQ.md · Architecture technique · Comparaisons (vs Claude Code, Cursor, Cline, OpenClaw) · ModÚle de sécurité
Histoire
Agent! est le fruit de trois annĂ©es de dĂ©veloppement d'apps d'IA agentique â ANIE, Game Changer, BattleScript, XCF MCP Server and Client, D1F et environ huit packages Swift originaux. La piĂšce manquante Ă©tait une boucle autonome intelligente ; une fois obtenue, le meilleur de ces projets s'est rĂ©uni dans Agent!. Il a Ă©crit des jeux vidĂ©o (Boss-Man), créé des apps, Ă©crit de la poĂ©sie dans Pages via AppleScript, gĂ©nĂ©rĂ© des images disque et les a jointes Ă des releases GitHub. LĂ oĂč Claude Code repose sur ~65 packages NPM tiers, Agent! est 100 % natif, consomme trĂšs peu de RAM et embarque d'origine l'automatisation Xcode, l'analyse Swift Syntax 6.2, l'AccessibilitĂ©, AppleScript, AgentScript/ScriptingBridge, l'automatisation Safari et le support MCP.
Contribuer
Voir CONTRIBUTING.md â compilez depuis les sources en ~5 minutes avec ./build.sh, sans compte dĂ©veloppeur. Les pull requests passent par le workflow CI Build & Test. Consultez les good first issues.
Licence
PolyForm Noncommercial 1.0.0 â gratuit pour un usage non commercial et personnel. L'usage commercial et les versions commerciales du logiciel sont reÌserveÌs exclusivement aÌ AgentiLoop.ai, une socieÌteÌ de Logos InkPen LLC. Contactez AgentiLoop pour une licence commerciale.
â ïž Avis LĂ©gal et Attribution
Avis de Marque Déposée
« AgentiLoop Agent! for Mac » est un projet logiciel indĂ©pendant et n'est pas affiliĂ© Ă , approuvĂ© par, sponsorisĂ© par, ni autrement associĂ© Ă Apple Inc. « Apple », « Mac », « Mac mini », « MacBook », « macOS », et les marques associĂ©es sont des marques dĂ©posĂ©es d'Apple Inc., enregistrĂ©es aux Ătats-Unis et dans d'autres pays. Toutes les autres marques dĂ©posĂ©es, marques de service et noms commerciaux mentionnĂ©s ici sont la propriĂ©tĂ© de leurs dĂ©tenteurs respectifs et sont utilisĂ©s Ă des fins d'identification uniquement.
« AgentiLoop Agent! » et le logo AgentiLoop Agent! sont des marques deÌposeÌes de AgentiLoop.ai, une socieÌteÌ de Logos InkPen LLC. L'utilisation de ces marques nĂ©cessite une autorisation Ă©crite prĂ©alable. La licence PolyForm Noncommercial ci-dessous accorde des droits uniquement sur le code source â elle n'accorde aucun droit de marque.
Licence du Code Source (PolyForm Noncommercial 1.0.0)
Le code source de « AgentiLoop Agent! for Mac » est disponible et sous licence PolyForm Noncommercial License 1.0.0. Vous eÌtes libre d'utiliser, copier, modifier et distribuer le code source aÌ toute fin non commerciale, sous reÌserve des conditions du fichier LICENSE (conserver le Required Notice ainsi qu'une copie des termes de la licence ou un lien vers ceux-ci). L'usage commercial et les versions commerciales du logiciel sont reÌserveÌs exclusivement aÌ AgentiLoop.ai, une socieÌteÌ de Logos InkPen LLC.
Binaires Compilés et Releases
Les binaires compilĂ©s, installateurs, builds signĂ©s, et artefacts de release distribuĂ©s via les GitHub Releases de ce projet, AgentiLoop.ai, ou tout autre canal officiel, sont l'Ćuvre protĂ©gĂ©e par le droit d'auteur de AgentiLoop.ai, une socieĂÂteĂ de Logos InkPen LLC et ne sont pas couverts par la licence PolyForm Noncommercial qui rĂ©git le code source. Tous les droits sur les binaires officiels â y compris le nom « AgentiLoop Agent! », le logo, l'identitĂ© de signature de code, et le Developer ID â sont rĂ©servĂ©s.
Copyright © 2026 AgentiLoop.ai, une socieÌteÌ de Logos InkPen LLC. Tous droits reÌserveÌs.
Vous ĂȘtes libre de compiler vos propres binaires Ă partir des sources pour un usage non commercial sous la licence PolyForm Noncommercial, Ă condition de ne pas utiliser le nom « AgentiLoop Agent! », le logo, ou la marque pour identifier votre produit.
Clause de Non-Garantie
Ce logiciel est fourni « TEL QUEL », sans garantie d'aucune sorte, expresse ou implicite, y compris mais sans s'y limiter les garanties de qualitĂ© marchande, d'adĂ©quation Ă un usage particulier, et de non-contrefaçon. En aucun cas l'auteur ou le dĂ©tenteur des droits d'auteur ne pourra ĂȘtre tenu responsable de toute rĂ©clamation, dommage ou autre responsabilitĂ©, que ce soit dans le cadre d'une action contractuelle, dĂ©lictuelle, ou autre, dĂ©coulant de, rĂ©sultant de, ou en lien avec le logiciel ou l'utilisation ou d'autres transactions du logiciel.
Merci de votre intĂ©rĂȘt pour AgentiLoop Agent! â une application conçue pour les ordinateurs Mac mini, MacBook, et Mac Studio fonctionnant sous macOS 26.4 ou ultĂ©rieur sur du matĂ©riel et logiciel Mac authentique.
- Website: https://AgentiLoop.ai
- Github : https://github.com/AgentiLoop/agent