Initialisation de l'Assistant d'Investissement Personnel
Ce Skill n'est pas un consultant en conception de sites web et ne discute pas de maquettes de pages à partir de zéro. Le dépôt fournit déjà une application fonctionnelle comprenant React, Express, SQLite, un planificateur et une intégration réelle de fournisseurs. La mission de ce Skill est de configurer cette application en fonction des préférences d'investissement réelles de l'utilisateur, et de livrer un site web dont la page d'accueil affiche du contenu personnalisé.
Point d'entrée distant du Skill
L'utilisateur peut déclencher ce processus directement via l'URL publique du Skill ci-dessous, sans avoir à cloner le dépôt ou à installer le Skill au préalable :
https://github.com/3494036618-eng/personal-investment-assistant/blob/v0.3.0/skills/investment-assistant/SKILL.md
Si le fichier {baseDir}/scripts/status.mjs n'existe pas dans l'environnement actuel, cela signifie que ce Skill a été ouvert depuis une URL distante. Dans ce cas, Codex ou Claude Code doit :
- Récupérer l'intégralité du dépôt
https://github.com/3494036618-eng/personal-investment-assistant, sans seulement télécharger le fichierSKILL.md. - Définir
{baseDir}comme le répertoireskills/investment-assistantdans le dépôt. - Vérifier que les répertoires
{baseDir}/scripts/,{baseDir}/references/etapp/à la racine du dépôt existent avant de passer à l'étape 0. - Si un répertoire du même nom existe déjà, vérifier d'abord le remote Git et l'état de l'espace de travail, ne pas écraser les modifications de l'utilisateur, et ne pas créer une deuxième application.
- Si le client actuel est Codex, exécuter
npm run skill:install:codexà la racine du dépôt ; si le client actuel est Claude Code, exécuternpm run skill:install:claude. L'installation écrit uniquement dans le répertoire des Skills personnels du client correspondant. - Une fois l'installation terminée, utiliser directement le Skill présent dans ce dépôt pour continuer l'initialisation, sans prétendre que "le site web est déjà disponible" alors que le Skill a simplement été copié.
L'utilisateur peut directement confier cette phrase à Codex ou Claude Code (supporte la connexion réseau et les opérations en terminal) :
Aide-moi à initialiser l'assistant d'investissement personnel : https://github.com/3494036618-eng/personal-investment-assistant/blob/v0.3.0/skills/investment-assistant/SKILL.md
Une fois installé, Codex peut être déclenché via $investment-assistant, et Claude Code via /investment-assistant. Les deux points d'entrée exécutent le même ensemble de règles d'initialisation et de validation.
Critères d'achèvement
Vous ne pouvez dire "prêt à l'emploi" que lorsque tous les points suivants sont accomplis :
- Au moins un titre réel (nom, code et marché) a été confirmé.
- Les axes d'intérêt de l'utilisateur ont été confirmés un par un, en conservant les termes exacts de l'utilisateur.
- L'activation de la surveillance automatique après-vente a été confirmée ; si activée, l'heure, les jours et le fuseau horaire ont été confirmés.
- La clé Agent Plan a été écrite via la configuration privée de la machine locale, sans apparaître dans la conversation, le code source ou les journaux.
- Les sondes réelles pour DataPro, la recherche Doubao et le modèle Agent Plan ont toutes réussi.
- Le frontend et le backend complets ont été installés et démarrés.
- La configuration utilisateur a été importée, la page d'accueil n'est pas une liste de suivi vide.
- Après que l'utilisateur a accepté de consommer du crédit réel, au moins un commentaire individuel sur l'action et un résumé des risques après-vente ont été générés pour chaque action.
- Les deux types de rapports comportent un contenu substantiel, des sources correspondantes et un historique indépendant.
- Les chemins principaux du bureau ont été vérifiés via le navigateur.
Si un élément n'est pas accompli, vous devez indiquer avec précision à quelle étape vous vous êtes arrêté, ce qui a déjà été fait et quelle est la prochaine étape. N'utilisez pas d'anciens résultats, de données simulées (Mock) ou de jugements verbaux pour remplacer les vérifications.
Principes de travail
- Ne pas discuter de la maquette du site : Le site, sa structure de page et ses limites fonctionnelles sont déjà définis ; nous collectons uniquement la configuration d'investissement nécessaire pour l'utiliser.
- Confirmer la configuration avant d'appeler : Présentez d'abord à l'utilisateur un résumé structuré de la configuration. Ne procédez à l'installation, à l'importation et à la consommation des services réels qu'après confirmation explicite de l'utilisateur.
- Ne pas deviner les titres réels : En cas d'incertitude sur le nom, le code ou le marché, vérifiez d'abord. Si la vérification est impossible, demandez à l'utilisateur de fournir des informations complémentaires. Ne mappez pas sur une entreprise similaire.
- Lier les préférences une par une : Différentes actions peuvent avoir des axes d'intérêt totalement différents. Tous les termes de préférence de l'utilisateur doivent être conservés dans le Profil, sans se limiter à des mots-clés prédéfinis.
- Contenu présent dès l'ouverture : Par défaut, l'initialisation génère les deux premiers rapports pour chaque action. Utilisez le mode "rapports vides" uniquement si l'utilisateur demande explicitement de ne pas les générer pour le moment.
- Les trois capacités utilisent la même clé Agent Plan : Selon la configuration actuelle de l'Agent Plan Harness, une même clé est utilisée par défaut pour le modèle, DataPro et la recherche Doubao. Ne demandez pas à l'utilisateur de fournir une clé de recherche séparée.
- Lier la source au corps du texte : DataPro est responsable des données structurées professionnelles ; la recherche Doubao est responsable des informations publiques les plus récentes ; le modèle Agent Plan ne génère et ne révise qu'à partir des preuves rassemblées lors de cette session.
- Les deux types de rapports ont des rôles distincts : Le commentaire individuel sur l'action répond à la question "Comment se porte l'entreprise actuellement ?" ; le résumé des risques après-vente répond à la question "Quels sont les nouveaux changements et signaux de risque apparus durant cette fenêtre d'inspection ?"
- Ne pas réafficher les informations sensibles : La clé ne peut être configurée que via une saisie en terminal masquée, une variable d'environnement ou un fichier d'identification local avec les permissions
0600. - Expliquer chaque étape : Expliquez ce qui vient d'être fait, à quelle étape vous vous trouvez actuellement, quelle sera la prochaine étape, et si des dépendances seront téléchargées ou des crédits consommés.
Aperçu du flux
| Étape | Action | Marqueur d'achèvement |
|---|---|---|
| 0 | Vérifier l'état actuel | Confirmer l'initialisation pour la première fois, la reprise du fonctionnement ou le dépannage |
| 1 | Collecter la configuration d'investissement | Actions, codes, marchés, axes d'intérêt et paramètres de surveillance complets |
| 2 | L'utilisateur confirme la configuration | L'utilisateur approuve explicitement le résumé structuré |
| 3 | Installation et configuration privée | Installation officielle de l'application terminée, clé écrite en toute sécurité |
| 4 | Sondes des services réels | Les trois fournisseurs sont actuellement disponibles |
| 5 | Importer la configuration personnalisée | Les actions et axes d'intérêt de l'utilisateur sont visibles sur la page d'accueil |
| 6 | Générer les premiers rapports | Chaque action dispose de deux types de rapports réels et d'historique |
| 7 | Validation et livraison par navigateur | L'utilisateur peut ouvrir directement le site web et l'utiliser |
Étape 0 : Vérifier l'état actuel
Commencez par vérifier Node.js, les fichiers du Skill, l'exécution et l'état du site web :
node {baseDir}/scripts/status.mjs
- Application non installée : passer à l'étape 1.
- Installée mais non démarrée : confirmez d'abord la configuration utilisateur, puis décidez de démarrer ou de mettre à jour.
- Déjà en cours d'exécution : lisez la liste de suivi et la configuration existantes. Si l'utilisateur ajoute simplement un nouveau titre, n'effacez pas les données d'origine.
ready=false: une véritable sonde (doctor) doit être réexécutée par la suite ; ne considérez pas le backend comme disponible simplement parce que le processus est en vie.
Ne demandez pas à l'utilisateur le répertoire du code source du site web, et ne créez pas une autre copie du projet.
Étape 1 : Collecter la configuration d'investissement
Procédez par séries de une à deux questions, en évitant de présenter un long formulaire à l'utilisateur en une seule fois. Collectez au minimum :
- Nom du titre.
- Code du titre.
- Marché :
CN,HKouUS. - Axes d'intérêt pour ce titre, 2 à 6 éléments recommandés, mais adaptez-vous aux besoins réels de l'utilisateur.
- Si la vérification automatique après-vente est activée.
- Si oui, l'heure d'exécution, les jours d'exécution et le fuseau horaire.
Vous pouvez d'abord demander :
Quelles actions souhaitez-vous suivre ? Veuillez m'indiquer le nom, le code et le marché du titre. Ensuite, je confirmerai un par un ce qui vous intéresse vraiment, et j'écrirai ces préférences directement dans le site web.
Les axes d'intérêt ne doivent pas être limités par une liste de mots fixes. Ce qui suit est une aide pour l'utilisateur à exprimer ses idées, pas une liste autorisée :
- Marché et technique : tendance des prix, volume, volatilité, niveaux clés, évolution des flux de capitaux.
- Performance opérationnelle et financière : revenus, bénéfices, flux de trésorerie, marge brute, R&D, dividendes, dette.
- Événements d'entreprise : annonces, commandes, produits, capacités de production, direction, litiges, réglementation.
- Secteur et environnement externe : concurrence, politique, matières premières, taux de change, taux d'intérêt, risques à l'étranger.
- Le propre langage naturel de l'utilisateur, par exemple "prix de gros des alcools haut de gamme et stocks des canaux de distribution" ou "progression de la certification des grands clients à l'étranger".
Les préférences composites peuvent être conservées telles quelles. L'application effectuera une décomposition sémantique et un jugement de couverture lors de la recherche. Ne modifiez pas les termes pour les adapter à des mots-clés prédéfinis.
Vérification des titres
Utilisez de préférence DataPro pour vérifier la correspondance entre le nom, le code et le marché. Si l'outil direct n'est pas disponible, ne devinez pas. Une fois les services réels prêts, le premier rapport servira de seuil de blocage pour la vérification de l'appartenance du titre. Pour les codes d'actions de la Chine continentale et de Hong Kong, conservez le format couramment utilisé par la bourse ; pour les actions américaines, utilisez le ticker public.
Étape 2 : Confirmer la configuration structurée
Compilez les résultats de la discussion en un court résumé, et faites confirmer explicitement par l'utilisateur. Exemple :
Configuration d'initialisation
1. Kweichow Moutai | 600519 | CN
Axes d'intérêt : rentabilité, force de la marque, stocks des canaux, dynamique du secteur
Surveillance après-vente : 18:00 les jours ouvrables, Asia/Shanghai
2. Apple | AAPL | US
Axes d'intérêt : ventes d'iPhone, services, avancées des produits IA
Surveillance après-vente : désactivée
Après confirmation, j'installerai et lancerai le site web existant, importerai ces configurations, et générerai pour chaque action un commentaire individuel et un résumé des risques après-vente réels. Cette étape fera appel aux modèles DataPro, recherche Doubao et Agent Plan, et consommera des crédits du forfait.
Ne continuez qu'après confirmation explicite de l'utilisateur. Si l'utilisateur modifie un élément, mettez à jour uniquement l'élément correspondant et présentez à nouveau le résumé complet.
Écrivez le résultat de la confirmation dans un Profil temporaire avec les permissions 0600. Format :
{
"stocks": [
{
"name": "Kweichow Moutai",
"code": "600519",
"exchange": "CN",
"focus": ["rentabilité", "force de la marque", "stocks des canaux", "dynamique du secteur"],
"monitor": {
"enabled": true,
"schedule_time": "18:00",
"schedule_days": ["Lun", "Mar", "Mer", "Jeu", "Ven"],
"timezone": "Asia/Shanghai"
}
}
]
}
Le Profil ne doit pas contenir de clé API. Le fichier temporaire est supprimé après utilisation via --consume-profile.
Étape 3 : Installer l'application et configurer Agent Plan
Expliquez que cette étape copiera l'application officielle, installera les dépendances npm, exécutera les vérifications et la construction de production, puis exécutez :
node {baseDir}/scripts/install.mjs
Si les identifiants manquent, exécutez dans le terminal interactif :
node {baseDir}/scripts/configure.mjs
configure.mjs demande uniquement une clé API Agent Plan et l'écrit de manière sécurisée dans :
~/.config/investment-assistant/credentials.env
Les permissions du fichier doivent être 0600. Ne demandez pas à l'utilisateur d'envoyer la clé dans la conversation. N'écrivez pas la clé dans le Profil, .env.example, le README ou le code source.
Étape 4 : Sonder les trois fournisseurs en réel
Exécutez :
node {baseDir}/scripts/doctor.mjs --live
Vous devez voir :
agent_plan_model : okdatapro : okweb_search : ok
Cette étape génère quelques appels réels. En cas d'échec d'un fournisseur, traitez le problème selon references/troubleshooting.md et arrêtez-vous ici. Ne continuez pas à générer des rapports, et ne prétendez pas que le "backend est disponible" simplement parce que "la clé est configurée".
Étape 5 : Importer la configuration utilisateur
Démarrez le site web et importez le Profil confirmé :
node {baseDir}/scripts/start.mjs
node {baseDir}/scripts/profile.mjs --input /chemin/absolu/du/Profil/secret.json --consume-profile
L'importation est idempotente par marché et code de titre. Les actions existantes conservent leur historique ; une exécution répétée ne crée pas de doublons.
Vérifiez que la page d'accueil remplit au moins les conditions suivantes :
- Chaque titre de l'utilisateur est présent.
- Le nom, le code et le marché sont corrects.
- La carte affiche les axes d'intérêt saisis par l'utilisateur.
- Les paramètres après-vente correspondent à ceux confirmés par l'utilisateur.
Étape 6 : Générer les premiers rapports personnalisés
Si l'utilisateur a déjà accepté de consommer des crédits à l'étape 2, exécutez la génération complète initiale :
node {baseDir}/scripts/acceptance.mjs --all --seed
--seed génère pour chaque action :
- Un commentaire individuel sur l'action.
- Un résumé des risques après-vente.
Et vérifie automatiquement :
- Les deux types de rapports ont des ID différents et des instantanés de preuves indépendants.
- Les deux types de rapports n'utilisent pas la même URL de connexion réseau.
- Le commentaire individuel contient des preuves DataPro financières clés vérifiables.
- Les ID de preuve (
evidence ID) cités dans le texte existent tous. - Les sources en ligne ont un titre, un éditeur, une URL et un résumé réels.
- Chaque préférence utilisateur a un statut de couverture.
- Les deux types de rapports sont respectivement entrés dans l'historique correspondant.
Si l'utilisateur demande explicitement de ne pas générer les premiers rapports pour le moment, vous pouvez effectuer uniquement une validation de base :
node {baseDir}/scripts/acceptance.mjs --all
Dans ce cas, vous devez préciser que "le site web est configuré, mais la zone des rapports peut encore être vide", et ne pas prétendre que le contenu est disponible dès l'ouverture.
La commande d'initialisation la plus courte en un clic est :
node {baseDir}/scripts/onboard.mjs \
--profile /chemin/absolu/du/Profil/secret.json \
--consume-profile
Cette commande installe, configure, sonde en réel, démarre, importe et génère par défaut les premiers rapports. N'ajoutez --skip-initial-reports que si l'utilisateur demande explicitement de ne pas générer de rapports.
Étape 7 : Validation par navigateur sur le bureau
Ouvrez l'adresse locale affichée par le script, par défaut :
http://127.0.0.1:8788
Suivez le parcours utilisateur réel pour vérifier :
- La page d'accueil n'est pas vide, tous les titres et axes d'intérêt sont visibles.
- Ouvrez le "commentaire individuel" : le premier rapport enregistré s'affiche.
- Le texte suit la structure "Performance du marché, Performance opérationnelle et financière, Axes d'intérêt, Observations ultérieures", pas une simple concaténation de champs.
- La zone de référence correspond aux numéros du texte. Les sources en ligne sont cliquables. Les sources DataPro n'affichent pas de trace.
- Ouvrez le "résumé des risques après-vente" : il montre un rapport indépendant, qui ne réutilise pas le texte ou les sources du commentaire individuel.
- Les paramètres après-vente peuvent être sauvegardés. "Exécuter immédiatement" peut générer un nouvel enregistrement.
- Si la surveillance automatique est activée, l'heure de la prochaine exécution est correcte ; l'état du service de planification est normal.
- L'historique contient tous les rapports générés.
- La page ne présente pas de débordement, d'occultation, d'anomalie de saut de ligne évidente ou d'erreur dans la console.
Voir une page dans le navigateur ne signifie pas que le backend réel est disponible. Vous ne pouvez livrer que si la sonde réelle (doctor), la génération de rapports et le chemin du navigateur sont tous validés.
Limites fixes du commentaire individuel et du résumé des risques après-vente
Commentaire individuel sur l'action
Répond à la question "Comment se porte cette entreprise actuellement ?", en utilisant les données de marché actuelles, les derniers résultats financiers publiés et les documents publics liés aux axes d'intérêt de l'utilisateur. Structure fixe :
- Résumé : conclusion concise, sans concaténer tout le texte.
- Performance du marché.
- Performance opérationnelle et financière.
- Axes d'intérêt.
- Observations ultérieures.
Résumé des risques après-vente
Répond à la question "Que s'est-il passé durant cette fenêtre d'inspection ?", en utilisant les mouvements anormaux du marché du jour, les nouveaux événements d'entreprise depuis la dernière inspection et le contexte de risque externe récent. Structure fixe :
- Résumé : changements de risque et faits les plus importants, sans répéter toutes les colonnes.
- Mouvements du marché.
- Événements d'entreprise.
- Risques externes.
- Observations ultérieures.
S'il n'y a pas de preuve qualifiée pour une colonne, celle-ci peut être omise, mais ne la remplissez pas avec des phrases vagues comme "rien trouvé" ou "continuer à observer". L'absence de nouvel événement à risque ne signifie pas que l'entreprise est sans risque ; l'enregistrement vérifiable de cette session doit tout de même être conservé.
Récupération après incident
- Site web non démarré : exécutez
status.mjs, puisstart.mjs. ready=false: réexécutezdoctor.mjs --live.- Nouvelle action sans contenu : confirmez la réussite de l'importation du Profil, puis exécutez
acceptance.mjs --stock CODE --seedpour cette action. - Tâche planifiée non exécutée : vérifiez l'interrupteur de surveillance, la date, l'heure, le fuseau horaire, l'état du service de planification et les enregistrements d'exécution.
- Échec de la génération du rapport : conservez l'erreur spécifique et les journaux de diagnostic, traitez le problème par fournisseur, appartenance du titre, couverture des preuves ou révision du modèle, sans désactiver la validation.
- Mise à jour de l'application : sauvegardez d'abord, puis arrêtez, installez, démarrez et réexécutez la sonde (doctor). La base de données et les identifiants ne sont pas supprimés lors de la mise à jour de l'application.
La configuration détaillée se trouve dans references/setup.md, les règles de validation dans references/acceptance.md, les règles sur les sources dans references/evidence-policy.md, et le dépannage dans references/troubleshooting.md.
Instructions finales de livraison
La réponse finale doit lister clairement :
- L'adresse du site web et l'état actuel du processus.
- Les titres, marchés et axes d'intérêt importés.
- L'état de l'interrupteur de surveillance après-vente, l'heure, les jours et le fuseau horaire pour chaque titre.
- Les résultats réels des sondes pour le modèle Agent Plan, DataPro et la recherche Doubao.
- Si un commentaire individuel et un résumé des risques après-vente ont déjà été générés pour chaque titre.
- Si les deux types d'historique et l'état de la planification sont valides.
- Les vérifications, tests, constructions et validations par navigateur réellement effectués.
- Les éléments non accomplis, les dépendances externes et les risques nécessitant encore une vérification manuelle.
Ne dites pas simplement "initialisation terminée". L'utilisateur a besoin de savoir ce qu'il peut faire maintenant, quels résultats ont été vérifiés par des appels réels, et ce qui ne l'a pas encore été.