Communitygithub.com

chuspeeism/doubaoplot

DoubaoPlot — Créez des figures scientifiques modifiables avec Origin dans Doubao/Doubao Works, compatible avec Codex et Claude Code. Fork de hang-jin/editaplot avec un sélecteur de 45 graphiques cliquables.

Qu'est-ce que doubaoplot ?

DoubaoPlot est un outil de visualisation scientifique basé sur EditaPlot, conçu pour fonctionner avec Origin sur Windows 10/11 x64. Il permet aux utilisateurs de décrire leurs données et de produire des graphiques scientifiques modifiables, notamment via les assistants IA Doubao, Codex ou Claude Code. L'outil propose un sélecteur visuel de 45 types de graphiques Origin prêts à l'emploi, classés par catégories, pour guider les utilisateurs novices. Il gère l'ensemble du flux de travail : lecture des données, suggestion de templates, inspection, planification, rendu dans Origin et exportation. L'outil insiste sur la transparence et la vérification : chaque étape (compréhension des colonnes, vérification des prérequis, tests de rendu) est auditable. Il supporte également les figures de référence, la personnalisation des styles (couleurs, épaisseurs, transparence) et les palettes de couleurs. La sécurité est renforcée : les permissions Windows sont limitées, l'installation de Python est explicitement approuvée, et l'accès à Origin est contrôlé par un mécanisme de sandbox. L'outil est conçu pour éviter les suppositions erronées et exige une confirmation explicite de l'utilisateur avant toute action critique.

Compatible avec✓Claude Code✓Codex CLI~Cursor
npx skills add chuspeeism/doubaoplot

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

EditaPlot

Transformez une question scientifique et un tableau en lecture seule en une figure Origin modifiable et vérifiable. Gardez l'expérience du débutant conversationnelle ; utilisez le moteur déterministe pour l'inspection, la planification, le rendu, l'exportation et la relecture.

Choisissez d'abord la voie (Nouveau dans la version Doubao Works)

Lorsqu'un utilisateur arrive, voyez d'abord ce qu'il a, puis décidez comment procéder. Ne commencez pas à deviner le type de graphique tant que l'utilisateur n'a pas donné d'orientation.

Ce que l'utilisateur donneQuelle voieComment faire
Une image de référence ("Dessine ça", "Reproduis ce style")Mode image de référenceSuivez le flux existant, entrez à l'étape 10 reference-inspect. L'image de référence n'affecte que la grammaire graphique et les styles sécurisés confirmés par les données, n'ajoute pas de preuves, ne cache pas d'éléments nécessaires.
Un type de graphique spécifique ("Dessine un nuage de points", "Courbe ROC")Mode directSuivez le flux existant. Vérifiez d'abord references/not-covered.md ; si le graphique demandé est dans cette liste, dites clairement qu'il n'est pas disponible, n'essayez pas.
Seulement des données, sans spécifier le type de graphique, ou dit "Je ne sais pas quoi dessiner"Mode sélecteurVoir ci-dessous. C'est le nouveau chemin de cette version, et aussi le plus courant.

Mode sélecteur

Quand l'utilisateur ne sait pas quel graphique il veut, il est beaucoup plus précis de lui faire choisir visuellement que de lui faire décrire.

  1. Exécutez python selector/selector.py. Cela ouvre une page locale : 45 exemples de graphiques Origin réels sont affichés, classés par catégorie. Lorsque l'utilisateur clique sur l'un d'eux, le côté droit affiche quelles colonnes de données sont nécessaires pour ce graphique et génère automatiquement une requête complète.
    • Si l'hôte dispose d'un panneau de navigateur intégré, utilisez plutôt python selector/selector.py --print-path, obtenez le chemin et ouvrez-le dans le panneau, sans ouvrir une autre fenêtre.
  2. L'utilisateur clique sur « Envoyer à Doubao » sur la page, le script récupère la requête générée et l'envoie en sortie standard. S'il clique sur « Copier », le contenu est dans son presse-papiers, demandez-lui de le coller. Les deux voies sont valables, n'attendez pas une seule.
  3. Une fois la requête récupérée, revenez à l'étape 6 du flux existant (start → understand → confirmation → plan → rendu → validation). Le sélecteur sert uniquement à clarifier les besoins, il ne modifie pas le comportement de dessin et ne saute pas les étapes de confirmation.

Les « colonnes nécessaires » données par le sélecteur sont une indication, pas une conclusion. Les colonnes réelles des données de l'utilisateur sont toujours vérifiées colonne par colonne à l'étape 7 understand ; si des colonnes manquent, informez-en l'utilisateur comme d'habitude, ne présumez pas que les données sont complètes parce qu'il a cliqué sur la page.

Si selector.py ne démarre pas (ports occupés, pas d'interface graphique), ne vous arrêtez pas : donnez le chemin de la page à l'utilisateur, laissez-le double-cliquer pour l'ouvrir, cliquer sur « Copier » et le coller, le processus continue.

Ne demandez que les permissions Windows limitées nécessaires

  • Lisez l'intégralité du dépôt, le tableau sélectionné et l'image de référence locale facultative.
  • Écrivez uniquement dans le dépôt EditaPlot, le répertoire des compétences de l'utilisateur actuel (Doubao Works ou Codex) et le dossier parent du fichier source sélectionné pour les livrables adjacents.
  • Exécutez le lanceur local, les sous-processus PowerShell/Python et une instance Origin appartenant à EditaPlot dans la même session utilisateur Windows interactive active.
  • Une commande hôte normale peut d'abord s'exécuter sous un compte isolé. Si le travailleur Origin retourne origin_codex_sandbox_context, soumettez une demande d'exécution locale formelle et étroitement ciblée pour cette commande exacte origin-smoke ou render. Ne réexécutez que si cette demande exacte est approuvée, soit par l'utilisateur lorsqu'il y est invité, soit par l'examinateur automatique configuré par l'hôte. L'approbation n'est pas garantie, et ce transfert n'est pas un contournement du bac à sable. Ne demandez jamais à l'utilisateur de copier la commande dans une fenêtre PowerShell séparée ou d'élargir la demande à un accès administrateur ou de configuration système.
  • Utilisez l'accès réseau uniquement pour le téléchargement/mise à jour du dépôt et la récupération verrouillée des dépendances. Considérez une installation Python via winget dans le scope utilisateur comme un changement système distinct nécessitant un consentement explicite.
  • Ne demandez pas de droits d'administrateur, de contrôle de la souris, d'accès en écriture à l'ensemble du disque, de téléchargement cloud des entrées privées, ou de modifications DCOM, registre, pare-feu, groupes d'utilisateurs ou installation d'Origin. Lorsque l'accès contrôlé aux dossiers, une politique d'organisation, une synchronisation cloud ou un emplacement en lecture seule bloque les écritures, demandez l'accès uniquement au dossier concerné ou demandez un dossier de sortie alternatif explicite.

Commencez par le chemin du débutant

  1. Rejetez les plates-formes non prises en charge avant d'installer quoi que ce soit. Ne prenez en charge la couche CLI/dépendances que sur Windows 10/11 x64 physique avec CPython 3.10–3.12 64 bits. Visez Origin/OriginPro 2021 et versions ultérieures via originpro externe ; Origin 2020b et versions antérieures ne sont pas pris en charge par cette voie. La base de référence en direct entièrement vérifiée est CPython 3.10 + Origin 2024b / 10.15. Traitez toute autre version 2021+ comme limitée par ses capacités, non automatiquement vérifiée, tant que son test et ses artefacts complets ne sont pas passés. Indiquez clairement que macOS (Intel/Apple Silicon), Linux, WSL, Wine/CrossOver, Parallels et autres machines virtuelles ne sont pas pris en charge dans V1. doctor ne peut pas détecter de manière fiable toutes les machines virtuelles, demandez donc à l'utilisateur de confirmer un hôte Windows physique lorsque ce fait est inconnu.
  2. Localisez editaplot.cmd dans le répertoire Skill installé ; lorsque vous travaillez à partir d'un dépôt cloné, utilisez editaplot.cmd à la racine du dépôt. Utilisez un chemin de lanceur absolu dans les commandes. Ne demandez pas aux débutants de sélectionner un exécutable Python ou d'invoquer scripts/editaplot.py directement.
  3. Exigez le dépôt complet pour la première installation. Exécutez editaplot.cmd setup à la racine du dépôt ; n'incitez jamais les utilisateurs à copier uniquement skill/editaplot, car cela omet l'exécution. Lisez references/runtime.md pour les détails d'installation, de découverte et de commandes.
  4. Réutilisez un Python compatible existant. S'il n'en existe pas, expliquez en chinois que l'installation de Python est un changement au niveau système. Exécutez d'abord winget show et expliquez l'éditeur exact, la source et les accords. Seule une confirmation explicite de l'utilisateur permet une installation ultérieure non interactive de Python.Python.3.12 avec le scope utilisateur et l'architecture x64. Si winget n'est pas disponible, fournissez les instructions d'installation Windows officielles de python.org et attendez l'utilisateur ; n'utilisez jamais un miroir non fiable et n'installez pas Python en silence.
  5. Exécutez editaplot.cmd doctor pour chaque nouveau flux de travail. Autorisez doctor --repair uniquement pour la réparation des dépendances Python locales du projet signalée. Gardez tous les packages Python dans .editaplot-venv. Traitez Origin comme une application locale gérée par l'utilisateur ; ne l'installez ni ne le modifiez jamais pendant la réparation.
  6. Exécutez editaplot.cmd start <fichier-données> pour un nouveau tableau. Ajoutez --intent "<intention utilisateur>" lorsque l'utilisateur énonce un objectif. Traitez sa charge utile d'inspection et de recommandation comme un état de travail interne. Utilisez le chemin source local d'origine exposé par la pièce jointe. Si l'hôte ne fournit qu'une copie temporaire de la pièce jointe et que le dossier d'origine ne peut pas être récupéré, demandez une fois le dossier source/sortie local prévu avant le rendu ; ne devinez jamais un espace de travail de destination sans rapport.
  7. Après avoir sélectionné un modèle candidat, exécutez editaplot.cmd understand <fichier-données> --template-id <id> avec le même mappage confirmé qui sera utilisé pour la planification. Regroupez son résultat dans une courte liste de contrôle : type de données ; colonnes à dessiner ; colonnes utilisées uniquement pour le support ou la validation ; colonnes conservées mais non dessinées ; éléments de figure proposés ; et calculs qui ne seront pas effectués. Chaque colonne source doit apparaître exactement une fois. Si un élément est incertain, demandez un mappage corrigé et réexécutez understand ; ne confirmez ni ne planifiez.
  8. Dites à un débutant uniquement : ce qui a été reconnu, les un à trois meilleurs choix de graphiques, pourquoi ils conviennent, et la plus petite décision scientifique encore requise. Ne déversez pas un pipeline inspect → recommend → understand → plan ou du JSON brut, sauf s'ils demandent des détails techniques.
  9. Demandez à l'utilisateur de confirmer à la fois un objectif scientifique en une phrase et la liste de contrôle concise des éléments. Figez le proposal_hash exact, les ID d'éléments dérivés approuvés et les choix de résolution d'ambiguïté dans --semantic-confirmation-json. Ne réutilisez jamais une confirmation après que la source, le mappage, l'objectif ou le hachage de la proposition a changé. Lorsque la confiance est faible, les marges des candidats sont petites, les rôles ou les unités sont ambigus, ou une transformation d'affichage est proposée, ne posez que les questions supplémentaires ciblées nécessaires.
  10. Si l'utilisateur fournit une figure de référence, exécutez d'abord reference-inspect. Vous pouvez ensuite décrire uniquement sa grammaire de panneau/marque/encodage/disposition/style dans le JSON strict ReferenceFigureSpec et exécuter reference-review ; le runtime n'effectue aucune OCR ou inférence de modèle. Montrez les fonctionnalités adoptées et rejetées, liez chaque marque essentielle à des données utilisateur confirmées et rendables, et obtenez une confirmation distincte liée au hachage. Ne copiez jamais les valeurs de référence, les étiquettes, les ajustements, les affectations de phase, le texte de l'auteur, les logos, les filigranes ou le bitmap dans le projet Origin. Privilégiez template_adaptation vérifié ; gardez controlled_composition bloqué jusqu'à ce que cette composition exacte ait passé la porte de preuve complète d'Origin. Une référence ne peut pas ajouter de preuves manquantes ou modifier la liste d'éléments scientifiques confirmée. Traitez le style déduit de la référence comme une suggestion, pas comme une instruction de l'utilisateur. Demandez à l'utilisateur de choisir l'un des trois modes : conserver le modèle par défaut vérifié ; utiliser une approximation confirmée et autorisée suggérée par la référence ; ou fournir des valeurs personnalisées exactes. Pour le mode exact, demandez séparément les couleurs, la largeur de ligne physique, la transparence de remplissage, la taille de la page et la visibilité de la légende, le cadre ou la position. Un choix explicite de l'utilisateur a priorité sur un jeton de référence conflictuel. Figez chaque suggestion de référence comme appliqué, conservé_modèle_par_défaut ou rejeté ; ne prétendez jamais qu'une demande a été appliquée à moins que le modèle sélectionné n'ait la même prévisualisation/voie Origin vérifiée et la relecture d'objet Origin requise.
  11. Lorsque la couleur est sélectionnable par l'utilisateur, exécutez editaplot.cmd palettes, montrez assets/palettes/palette-selector-public.zh-CN.png et recommandez au maximum deux valeurs de palette_id compatibles. Lisez references/palettes.md avant d'en figer une.
  12. Figez en interne le choix confirmé avec editaplot.cmd plan ; ne modifiez jamais un plan à la main et n'écrivez jamais une décision dans le fichier source. Pour une requête XPS exacte, écrivez les valeurs confirmées dans un objet JSON séparé et transmettez son chemin avec --visual-style-json. Les champs exacts pris en charge sont series_colors, line_width_pt, fill_transparency_percent, page_size_cm, legend_visible, legend_position et legend_frame. Les champs ou valeurs explicites invalides doivent échouer rapidement et être corrigés avec l'utilisateur ; ne les supprimez jamais en silence et ne revenez pas à un style par défaut/de référence. La commande de rendu copie ce plan approuvé dans le dossier de sortie final sous le nom render-plan.json.
  13. Considérez l'état de préparation d'Origin comme un état technique uniquement. Doctor effectue une découverte en lecture seule de Origin.Application, Origin.ApplicationSI, des candidats installés, de Python, de originpro et d'OriginExt ; il ne lance jamais Origin et ready_for_render ne signifie jamais qu'une connexion en direct a réussi. Si l'enregistrement de lancement par défaut est présent, passez au test de pré-rendu réel sans demander à l'utilisateur d'ouvrir Origin ou de le confirmer à nouveau. Gardez la sortie du débutant à une à trois phrases en langage simple ; laissez les CLSID, les vues du registre, les candidats et les étapes en JSON. Lisez le origin_execution_context rédigé séparément de ready_for_render. Un statut codex_sandbox nécessite le transfert d'approbation de commande exacte ci-dessus avant que COM ne soit appelé ; seule une demande approuvée peut être réexécutée. L'auto-examen évalue cette demande individuelle et n'accorde pas d'avance l'accès à Origin. Un contexte d'exécution Windows inconnu est fermé en cas d'échec et n'est pas une demande d'approbation : arrêtez-vous avant COM et signalez que l'identité Windows actuelle n'a pas pu être vérifiée.
  14. Exécutez editaplot.cmd origin-smoke --output-dir <répertoire-test-unique> avec launch_isolated : démarrez et possédez une instance Origin dédiée, effectuez le test en direct et la poignée de main de version, puis appliquez la décision de capacité du modèle. Cette commande est obligatoire après la planification et avant le rendu formel. attach_existing est un mode avancé explicite uniquement ; ne réinitialisez, n'écrasez ou ne fermez jamais un projet appartenant à l'utilisateur, et détachez-vous au lieu de quitter. Signalez les échecs par étape technique et prochaine étape sans spéculation. N'utilisez jamais d'automatisation de la souris et ne fournissez jamais de correctifs d'application ou d'instructions de contournement. Le runtime doit tenter de nettoyer une activation partielle appartenant à EditaPlot et peut essayer une nouvelle instance isolée pour un code de démarrage réessayable uniquement si le nettoyage réussit. L'échec du nettoyage renvoie origin_activation_cleanup_failed et s'arrête. Il doit ensuite attendre avec sec -poc 30 et confirmer run.isOCready() avant de lire la version ou de créer un projet. Ne bouclez jamais, ne passez jamais à ApplicationSI, ne modifiez jamais les autorisations DCOM/registre et ne dites jamais à un débutant d'exécuter l'ensemble du flux de travail en tant qu'administrateur. Après l'épuisement de la tentative automatique, demandez l'approbation pour au plus une nouvelle tentative dans le même contexte utilisateur Windows actif et utilisez un nouveau répertoire test vide et frère afin que le premier rapport reste intact. origin_com_class_not_registered et origin_com_activation_access_denied s'arrêtent sans nouvelle tentative automatique. Ne forcez pas la terminaison d'un travailleur Python simplement parce qu'il a fonctionné longtemps : il peut posséder une instance Origin cachée. Conservez les diagnostics et signalez la dernière étape de progression avant de proposer une annulation contrôlée par l'utilisateur. Gardez le transfert d'approbation du bac à sable distinct d'une nouvelle tentative d'activation : le premier se produit avant COM, tandis que le second n'est disponible qu'après l'exécution de la politique d'activation/nettoyage limitée. Lorsque l'activation principale et le nettoyage échouent tous deux, exposez uniquement primary_activation_code, primary_activation_stage, cleanup_error_code et cleanup_error_stage. N'incluez jamais de nom de compte Windows, de chemin local, de HRESULT brut ou de texte COM brut dans cette charge utile de diagnostic structurée, et ne réessayez jamais car les deux paires sont présentes. Les travailleurs EditaPlot actuels sérialisent uniquement leur section Origin origin-smoke / render active dans une session Windows connectée ; l'inspection des données, la recommandation et la planification peuvent rester simultanées. Respectez origin_job_queue progress, qui est émis immédiatement lors de l'attente, puis environ toutes les 30 secondes. L'ordre n'est pas garanti d'être strictement FIFO. La limite de 30 minutes s'applique uniquement au travail en attente : elle arrête cet attenteur sans tuer ni interrompre le détenteur actif. Ne soumettez pas de doublon tant qu'un message de file d'attente est visible. Les scripts manuels, les anciennes versions d'EditaPlot et les programmes non liés sont en dehors de cette limite de coordination.
  15. Ce n'est qu'après la réussite de ce test que vous pouvez effectuer le rendu d'une route de modèle autorisée avec editaplot.cmd render <plan>. Gardez une instance Origin appartenant à EditaPlot ouverte après la réussite, sauf si l'utilisateur demande le contraire. Par défaut, laissez le runtime créer un frère direct du fichier source nommé <nom_source>_EditaPlot_AAAAMMJJ_HHMMSS ; conservez tous les artefacts formels dans ce dossier. Ne redirigez pas les exécutions ordinaires vers le dépôt, le répertoire Skill, le répertoire de travail actuel ou un dossier de sortie global partagé. Utilisez --output-dir uniquement lorsque l'utilisateur demande explicitement un autre emplacement.
  16. ... [Levé pour la traduction]

Skills associés