7.1 KiB
LANC1 : guillemets du lanceur HyperAIStudio
Lot LANC1, session « Lanceur ». Niveau N1. Skills : sk-protocol, sk-windows-shell, sk-change-safety. Copie D:\Game\LifePlay-master 5.8, branche ue5.8.
Date : 2026-10-12/13. Statut : lot clos, sans commit puisque le fichier n'est pas suivi. La correction est PASS : le projet s'ouvre. MCP prêt : prouvé par STE-H10 (a), par arbitrage de Big Boss (§ 5). Limite connue : la régénération par le plugin efface la correction (§ 2).
1. Objet
.hyperai\scripts\Start-HyperAIStudioEditor.ps1, l. 13-14 : le chemin du projet est passé sans guillemets à Start-Process. Start-Process joint les éléments de -ArgumentList par des espaces sans les mettre entre guillemets. L'espace de « LifePlay-master 5.8 » coupe donc l'argument, et l'éditeur s'ouvre sur le navigateur de projets. Constaté par MCPA le 2026-10-11. Correction approuvée par l'utilisateur dans la session MCPA (2026-10-12, MCPA-T1-ESSAI § 6 point 4).
2. Statut du fichier (établi)
- Non suivi par git :
git ls-files .hyperai/scriptsest vide.git check-ignore -vrenvoie.git/info/exclude:12:/.hyperai/. Le lot n'a donc ni CHG ni ticket au gardien : livrable seul, accepté par Big Boss. - Régénéré par HyperAIStudio : le plugin écrit ce fichier dans
Plugins\Marketplace\HyperAIStudio\Source\HyperAIStudio\Private\HyperAIStudioService.cpp.- La même ligne sans guillemets s'y trouve, l. 6240-6241.
- L'écriture passe par
GenerateHelperScripts(WriteFileIfChanged, l. 6471). - Trois fonctions l'appellent :
GenerateProjectFiles(l. 3599, parGenerateManagedProjectFilesTransactional),GenerateManagedProjectFilesTransactional(l. 6099) etBuildTerminalLaunchPlanForPrompt(l. 4461, lancement d'un terminal agent depuis le plugin). - Toute régénération par le plugin efface la correction. Le plugin est lui aussi hors git (
.git/info/exclude:15:/Plugins/Marketplace/). Il n'a pas été modifié (hors lot).
3. Instantané
Sous D:\Game\LifePlay_Backup_5.5\LANC1\ :
Start-HyperAIStudioEditor.ps1.avant: sha256b23625c9f8818bc1d551674970f61273862c598cd7cc952f58978178dd54da26, identique à l'original au moment de la copie.Start-HyperAIStudioEditor.ps1.apres: sha256dbcf2b1e46b9eb8ad4161fb1df704b8a9056cc44709c795ae83d64f1af3ec74b.
Retour arrière : recopier .avant sur .hyperai\scripts\Start-HyperAIStudioEditor.ps1.
4. Correction
Une seule ligne, la l. 13 :
< $args = @($ProjectFile, '-ModelContextProtocolStartServer', "-ModelContextProtocolPort=$Port")
> $args = @("`"$ProjectFile`"", '-ModelContextProtocolStartServer', "-ModelContextProtocolPort=$Port")
Rien d'autre ne change. La l. 10, recherche du processus par -like "*$ProjectFile*", reste valable avec les guillemets.
Mesuré (hors éditeur) :
diffentre.avantet le fichier : 1 ligne (13c13).- Analyse syntaxique :
Parser]::ParseFile→ 0 erreur (pwsh 7). - Fins de ligne :
tr -cd '\r' | wc -c→ 16, CRLF conservé comme dans l'original. - Argument joint :
"D:/Game/LifePlay-master 5.8/LifePlay.uproject" -ModelContextProtocolStartServer -ModelContextProtocolPort=8000.
5. Essai de lancement
En attente du GO de Big Boss. Plan approuvé :
- Lancer le script corrigé.
- Relever la ligne de commande du processus
UnrealEditor.exeet le projet chargé. - Vérifier que
Wait-HyperAIStudioMCP.ps1donne PASS. - Fermer l'éditeur sans rien sauvegarder (TopRight, Person et GI sont gelés).
- Envoyer le BUILD-FIN avec
Tools\CopieEtat.ps1 -Lot LANC1.
Résultat (BUILD-GO de Big Boss, nuit du 2026-10-12 au 13)
- Avant :
CopieEtat -Lot LANC1 -Assets …donne proc=0, modifies=0. Empreintes MD5 : GIFE4406A0…, PersonD1B4C63D…, TopRight1FCB94A6…, conformes à l'attendu. L'alerte GIT porte sur 17 fichiers de l'addonPlugins/LPSandbox(13 M, 4 ??) : elle est antérieure à l'essai et vient d'autres lots. - Lancement :
Start-HyperAIStudioEditor.ps1 -TimeoutSeconds 400. - Ligne de commande du processus (PASS, établi) :
"…\UnrealEditor.exe" "D:/Game/LifePlay-master 5.8/LifePlay.uproject" -ModelContextProtocolStartServer -ModelContextProtocolPort=8000. Le chemin arrive entier, entre guillemets. - Projet chargé (PASS, établi) :
Saved\Logs\LifePlay.logcontientRunning engine for game: LifePlay. Le plugin ModelContextProtocol est monté et le port 127.0.0.1:8000 écoute, tenu par le processus de l'éditeur. Il n'y a plus de navigateur de projets. - MCP prêt (NON PROUVÉ) :
Wait-HyperAIStudioMCPsort en code 1 après 401 s.- Cause : la fenêtre de l'éditeur est la boîte modale « Restaurer les paquets », qui bloque le fil de jeu.
- Paquet proposé :
/Game/BPs/GI, depuisSaved\Autosaves\Game\BPs\GI_Auto2.uassetdu 2026-10-11 à 07:43, selonPackageRestoreData.json. - Cette cause est sans lien avec la correction.
- Boîte non touchée. Restaurer modifierait GI, qui est gelé. Ignorer effacerait des données de reprise qui ne sont pas à LANC1. Décision laissée à Big Boss et à l'utilisateur.
- Fermeture :
Stop-Processsur le processus de l'éditeur, sans sauvegarde. - Après : proc=0, modifies=0, empreintes MD5 inchangées (identiques à l'avant).
PackageRestoreData.json(2026-10-11 07:43, 352 o) et lesGI_Auto1/2.uassetsont inchangés.
Verdict : la correction est PASS (le projet s'ouvre). L'essai du MCP prêt reste bloqué par la boîte de restauration de GI.
Arbitrage de Big Boss (BUILD-FIN acceptée)
- Origine des fichiers d'autosave de GI : l'écriture interrompue de STE.
- Suite : STE déplace ces fichiers en sauvegarde, puis lance l'éditeur par ce lanceur corrigé.
- MCP prêt : prouvé par STE-H10 (a). La ligne « MCP prêt » de STE tient lieu de fin de cet essai, et LANC1 ne le rejoue pas. Au moment de la clôture de LANC1, cette ligne n'est pas encore écrite : la preuve est déléguée à STE-H10 (a).
- Limite connue : HyperAIStudio régénère ce script (
HyperAIStudioService.cppl. 6240-6241,GenerateHelperScripts), et toute régénération efface la correction (§ 2 et § 6).
6. Suites hors lot
-
Données de reprise de GI (
Saved\Autosaves\PackageRestoreData.json,GI_Auto1/2.uasset, 2026-10-11 07:32 et 07:43). Elles font apparaître la boîte « Restaurer les paquets » à chaque ouverture interactive de l'éditeur, ce qui bloque le MCP. Trois issues :- restaurer (GI change : interdit pendant le gel) ;
- ignorer (les données de reprise sont perdues) ;
- mettre ces fichiers de côté par instantané avant d'ignorer.
Tranché par Big Boss : STE met ces fichiers en sauvegarde (voir § 5, Arbitrage).
-
Source du plugin (
HyperAIStudioService.cppl. 6240) : la correction du script sera perdue à la prochaine régénération. Décision de l'utilisateur (2026-10-13) : « garde la commande headless ». La commande headless delp-mcp§ 2 reste la voie officielle et le plugin n'est pas corrigé. Le lanceur corrigé reste en place comme voie d'appoint, sans garantie qu'il survive à une régénération. -
Le script assigne la variable automatique
$args(l. 13-14). Cela fonctionne, mais c'est une mauvaise pratique PowerShell. Non corrigé (correction minimale demandée).