업데이트 2.40
2026. 6. 9.
v2.40.0BETA
Seymour
AI 어셈블러: 스택 수정기 (레벨 1+2) — 편집으로 인해 스택이 비워질 때 경고를 표시하고 수정 방법을 알려줍니다
- 소유자가 어셈블리 오류를 수정하는 데 도움이 되는 “mini-AI 교정기”를 요청했습니다. 검증기는 이미 유효하지 않은 오프코드 / 매달린 점프 / 인덱스 OOB를 감지했지만, 가장 흔한 오류인 #1 hand-edit 오류인 스택 불균형은 감지하지 못했습니다. 이제 감지합니다. RE-grounded (프프엑스드아트아프아르스어): 새로운
FfxLib/Ai/AiStackModel.cs= per-opcode 스택 효과 (OPCODE_STACKPOPS참조) + 269개 함수의 인자 수 (ScriptFuncLib입력 개수; 액세서 = 주제?+인덱스+값?).AiValidator는 스택 깊이를 시뮬레이션하고 (엔트리포인트에서 0으로 재설정/jump-target) 언더플로우를 보고합니다. 핵심적인 반전: 파서의 아리티가 실제VM와 항상 일치하는 것은 아닙니다(증명:setSelfFloating 0x7029파서는 2라고 표시하지만, 코퍼스는 1을 푸시함) — 따라서 절대 개수(유효한 코드에서 false-positive 오류를 유발할 수 있음) 대신, ORIGINAL와 편집됨 스택 간의 차이를 비교합니다: 두 경우 모두에서 아르리티 노이즈가 존재하지만 상쇄되어, YOUR 편집으로 인해 손상된 부분만 남게 됩니다. 메시지(레벨 2)는 어떤 부분이 비워졌는지와 수정 방법("인수였던 PUSH을 다시 넣으세요; 모든 문장은 그다음 호출 시 인수를 스택에 밀어 넣습니다")을 평이한 언어로 설명합니다. 유효성 검사 패널에서 Auto-surfaces를 참조하세요. 게이트--ai2: 검증기 깨끗한 346/346 (코퍼스에서 오탐지 0건) + stack-break에서 1/1 건 감지 (제거된 arg-push를 감지함을 증명);--ai3PASS; RT0 byte-identical (분석 전용, 0바이트). 에디터 빌드 오류 0건. 정직하게 말하자면: 편집으로 인해 추가된 내용을 감지합니다; 일부 함수의 정확한 인수 개수 = 공개 RE (코퍼스 보정 = 향후 작업)
v2.39.2
v2.40.1BETA
Seymour
AI 어셈블러: “수정해 보기” 버튼 (레벨 3, 정직한 auto-fix)
- 교정기를 닫는 방법: “검증/저장” 옆에 있는 🪄 수정해 보기 버튼을 누릅니다. 정직한 규칙 (개발자 본인의 규칙): SINGLE에 올바른 정답이 있는 수정안만 적용하고, 나머지는 제안만 할 뿐 절대 추측하지 마십시오. 어셈블러 모델(연산 코드 자체에서
HasOperand를 도출하는)에서 유일하게 모호하지 않은 수정 방법은 제거 대상으로 표시했지만 점프/진입점의 TARGET로 판명된 행을 복원하는 것뿐입니다 — 이 행은 해야 함 그대로 유지되어야 합니다(re-pointing 분기 동작이 변경된다면 = 추측이 됨). re-validates 루프 내의 버튼은, un-removes 그 매달린 타깃들을 처리하며(#1 "I 무언가를 제거했더니 고장이 났다" 사례를 해결), 없이 오류에 대해서는 단일 해결책(무효한 오프코드, jump-index OOB, Level-1 스택 언더플로우)을 제시하며, 보고서에서 어떻게 해야 하는지 설명하지만 아님 직접 수정하지는 않습니다 — "I 하지 않음 추측 사용자의 의도". 수정된 건수와 여전히 사용자의 개입이 필요한 건수를 보고합니다.MonsterAiEditor_DataModel.Assembler.TryAutoFixAssembler(gate-testedAiValidator를 사용하며, 피연산자나 오프코드를 수정하거나 어떤 것도 제거하지 않습니다). 편집기는 오류 0건을 생성합니다;--ai2/--ai3PASS (RT0 byte-identical — VM의 제거 플래그만 뒤집고, 바이트 변경은 없습니다). 솔직히 말해서: 의도를 추측하는 auto-fix은 은밀한 버그와 같으므로, 이 버튼은 설계상 보수적으로 작동합니다
v2.40.0