À propos du projet

attini est un agent de codage en ligne de commande conçu pour travailler de manière autonome dans votre espace de travail tout en maintenant un contrôle humain. Il interagit directement avec l'API DeepSeek Chat Completions via HTTP/1.1 + TLS avec prise en charge du streaming. L'agent peut lister et lire des fichiers, rechercher dans le code source, appliquer des correctifs et exécuter des commandes. Les modifications réversibles apportées aux fichiers suivis par git sont appliquées sans invite, tandis que les actions importantes—telles que la création de nouveaux fichiers, la modification de fichiers non suivis ou l'exécution de commandes non autorisées—sont affichées sous forme d'aperçu et nécessitent une approbation explicite. Le projet est construit sur une conception Sans I/O : les analyseurs de base, les types de données et les machines à états n'effectuent aucune opération d'E/S, tandis que le transport asynchrone, l'interface TUI et l'intégration du système de fichiers résident dans des modules environnants. Cette séparation améliore la testabilité et la maintenabilité. Les fonctionnalités clés incluent : - **Outils en lecture seule** : `list`, `read`, `search` pour explorer l'espace de travail. - **Outil de correctif** : Applique des modifications d'ajout/mise à jour ; applique automatiquement les modifications réversibles aux fichiers suivis, mais nécessite une approbation pour les nouveaux fichiers, les modifications non suivies ou les écritures en dehors de l'espace de travail. - **Outil de commande** : Exécute des commandes shell sous contrôle de permission, avec des délais d'attente configurables. - **Système d'approbation** : Utilise `attini approve` pour reprendre les sessions arrêtées, approuver les appels d'outils en attente et éventuellement accorder des permissions persistantes via `--grant`. - **Permissions** : Fichiers JSONL simples (`permissions.jsonl`) pour les règles au niveau de l'espace de travail et de la session, modifiables à la main. - **Gestion des sessions** : Les sessions sont stockées sous forme de répertoires sous `.attini/<NOM>/` avec des journaux de conversation JSONL en ajout seul, un bloc-notes et des fichiers de verrouillage. Inspectez avec `attini status` et `attini ask`. - **Variables d'environnement** : Configurez la clé API, l'URL de base, le nom de session, le modèle, la température, les délais d'attente, et plus encore. La philosophie de conception met l'accent sur la contrôlabilité et la compréhensibilité plutôt que sur l'autonomie. Le contexte n'est ajouté que lorsqu'il est explicitement demandé (via une invite ou `--stdin`), sans découverte implicite de compétences ou de fichiers d'instructions, et sans sous-agents ni mode plan. L'agent refuse les opérations risquées plutôt que de deviner. Les fonctionnalités intentionnellement non prises en charge incluent la persistance de la mémoire, la délégation à des sous-agents, l'analyse de `AGENTS.md`, le chargement automatique de compétences, le mode plan et les outils de commodité qui dupliquent des capacités existantes. C'est une politique délibérée pour garder l'agent explicite et sûr. Exigences : Rust 1.93+, variable d'environnement `DEEPSEEK_API_KEY`, `DEEPSEEK_BASE_URL` optionnel pour les points de terminaison compatibles OpenAI.