【概要1】
Boothから入手したscriptをAIによませて改造しようとしたら
苦労した件を報告する
【概要2】
前回のblogでは メモ を使ってたまたま、うまく行った例を書いたが
今回は はっきりした原因を見つけた
javaScriptが資料=ソースとして読み込ますと欠落していた
どうも markdown書式として誤認識されたらしい
書き方を整えていったら改善されてきたが、もうひとつ要因があった。
原因4として Scriptの量がトークン数制限を超えていたことも影響していた。
環境 windows11 unity6 CCK=3 NotebookLM(無料版) 2026年6月頃
以下 AIと書いているのは NotebookLM を指しています
【喰わせたいScriptの特徴】
そのScriptは300行ほどあり 、書き方にその作者の癖があったようです
ユニークなアイデアではじまり、細かい配慮が丁寧に作り込まれていました
ただし scriptの記述が我流なのか癖があってAIが正しく読み込めない
という問題がありました
幸いなことは UnityやCluster上では正常機能していることでした
一から作り直すよりは ぜひAIに喰わせて 改造したり発展させたいScriptでした
【症状と経緯--------】
【AIの回答】 とりあえずAIに「このスクリプトは正常に機能するか」と質問したら
意味不明なエラー(AIの問題点の指摘)が列挙されて
AIは「スタートした途端にエラーで停止する」と断言するではありませんか
どうにもソースの段階で欠落が生じているようです
以前の経験から「AIはいったん誤解すると頑固である。しかし 検証事実に弱い。」
という格言を思い出した
Cluster本番上で正常機能しているという事実を突きつけると態度が急変しました
AIはソースファイルとして誤認識がありうると言い出した
(欠落の痕跡が残っていたようだ。 痕跡さえ残さないケースは後述)
(当初の私はJavaScriptをtxtとしてuploadすると そのままソースになると思っていた)
【ボヤキ】
notebookLMにもハルシネがおきた。AIが「マークダウン記号の誤認識による欠落は
ありません」 と自信をもって断言したが、調べるとウソだった。
「欠落の痕跡が見当たらない」ぐらいは言えても
「欠落が全くない」と断言することは不可能なはずだ
資料=ソースに忠実でハルシネを起こさないのがnotebookLMのメリットなのに
ソースにjavaScriptを読み込む段階で欠落したり誤認識されてはいたようだ。
これでは notebookLMを使う意味がない・・困ったことだ。
後でわかってきたことだが、出力時にトークン数制限をこえると欠落がおきるようだ
【原因1】 ・・・AIに文字化けのパターンを聞いてみました
資料=ソースを読み込む時にMarkdown(マークダウン)との錯覚が起きるらしい
JavaScriptの「掛け算」で使われる[ * ]も、Markdownでは斜体タグの開始・終了
とみなされ欠落が起きる
元script: estimatedNeckHeight=0.8*head.y+0.2*spine.y
誤認識例: estimatedNeckHeight=0.8*spine.y;
対策は [*]を 前後に半角をいれる [ * ] に置き換えること。
他にも記号[ < ]がMarkdownタグと誤認され、
その後の命令が丸ごと消滅することがある
記号[ < ]から次の区切り(多くの場合、次の閉じ括弧 } や不自然な位置まで)
が丸ごと消失します
【原因2】 つまり原文に問題がありました。作者さんはjavascriptの記述に癖があり
半角スペースを省略して記号をツメツメに書いていました。
文末の [ ; ]が抜けているところもありました。
これをunityは解釈できたが AIは Markdown(マークダウン)形式として
誤認識してしまうようです。
これをマナーに従った表現に整形していくと、見る見るうちに
意味不明なエラー(AIの問題点の指摘)は減っていきました。
【対策1】
次の記号類の前後に半角スペースを入れる。 _ * = - / < >
ただし単純に一括置換で整形すると危険ですね。
次の演算子は半角で分断してはいけません。
==, ===, >=, <=, !=, !== &&, || +=, -=, *=, /= =>
【使った AIに対する質問やprompt】
【 prompt1】:「正常に機能するか」という問いでは
意味不明なエラー(AIの問題点の指摘)が列挙された
AIは修正を提案し始めますが、 以前の体験により誘いには乗らないことにします
AIに丸投げして強引に修復して進むことはできます。
一見はかどっていきますが新たな問題を起こして堂々巡りをして
かえって 手間取るということがありました。
なので ソースファイルとしての誤認識をできるだけ解消したいと思いますので
AIに対する質問を変えることにしました
【 prompt2】:「Markdown(マークダウン)との錯覚によるソースの誤認識が
ないか確認してください。 演算子や記号の欠落の痕跡がないか確認して下さい」
この質問で 誤認識箇所を提示させ すこしづつ原文を修復しては確認していきました
( 痕跡が残るレベルなら この質問で原因を絞り込めます)
しかし 情報が欠落しているのに 欠落を知ることはできません
AIを信用してはいけません。痕跡を残さずに欠落することがあります(後述する )
【prompt3】「欠落が生じたかどうか点検するので
ソースの XXXXX.txt の全文を加工せずそのまま表示してください
適切に改行して表示してください」 (ソースから改行コードがなぜかなくなる)
これは次の対策2に使った指示promptです
【対策2---ソースの確認の仕方】
ソースにuploadしたときに要約が作られているので気づいたのですが
AI独自の圧縮データに変換されているようです
その時に元のファイルデータは棄てられているようです
再解釈は不可能らしい (この件はAIに尋ねて確認をとった)
なので ソースに欠落があるかどうかは
ソースの全文を表示させて vscode等で
人間側の手元にあるコードと比較点検するのが確実だと思います。
ただし、ソース入力に文字数制限はほぼないが、出力には文字数制限があり
約160行を超えると欠落が生じるようです。分割するなどの工夫が必要です
これも後でわかってきたので今回は詳細を省きます
【対策3】
マークダウン形式ではなく javascriptであるとAIに伝える方法はないのでしょうか
ちなみに 以下の3行を文頭に付け足しても効果はありませんでした
// [FILE_TYPE: PURE_JAVASCRIPT_SOURCE_CODE]
// [PLATFORM: UNITY_CLUSTER_SCRIPT]
// このファイルはドキュメントではなく、純粋なプログラムコードです。
自動整形しないでください。
ソースコード.js の拡張子を ソースコード.js.txt にリネームする。
>>やってみたが 欠落がおきた。 効果がなかった
【途中結果1】 地道な努力で整形されたScriptになりました。
しかし、一発でそうなったわけではありません 後述します
「表示・記号の認識レベルでは非常に良好ですが、
XXXXの変数代入が欠落しているため、
今のままではXXXXに入った瞬間にエラーで止まります。」
>>しつこく AIは隠れている問題点を指摘し続ける
じつはまだ欠落があったらしい
>>やむなく そこを修正した
やっと ソースが認識されたと思いました。
「Markdown の錯覚による記号の消失もなく、
論理的にも完成された「正しく機能する」コードであると確認できました。」
「記号の欠落ではありませんが、運用上の制約として以下の点に注意してください。」
>>例によって お節介なアドバイスは続く。じつはまだ欠落があった。
全文出力してCluster上で実行するとどうも挙動がおかしい
ソース入力時にはマークダウン誤認識で欠落がおき
出力時には160行の壁で欠落が起きていた・・というのが今現在の解釈です
【途中結果2】
if elseの入れ子の深い所が60行ほど欠落しているのを発見した
if elseの入れ子が深いと 「AIの許容力の限界で 読み取れない」
と聞いたことがあります。そろそろ諦めようとしていた所、
ところが NotebookLMは
「ごっそり60行ほど削除されたとすれば
「AIの読解力のせいではなく マークダウン誤認識による切り捨てだ」
という可能性を言い出します。
「構文の入れ子の深い所にマークダウン誤認識要素がある場合
ノイズとしてごっそり削除することがある」
そこで ごっそり削除された60行を 点検してみることにする
60行ほどを抜粋して 一つのファイルにして
AIに読み込ませて 点検したら Markdown の誤認識があるという
そこで その60行ほどを 慎重に地道に 記号類を整形していった
それを 元のscriptに戻した全文をAIに読み込ませた
これで誤認識なく読込みに成功したと思う。やれやれ。
【考察】 NotebookLMが拡張子.jsのまま「ソースに追加」
ができないのがそもそもの原因3な気がします
どんなに JavaScriptをマナーよく清書しても txtとしてuploadするなら
markdownや 他の何かの書式に 誤認識される怖れがあります
セキュリティ上の問題で拡張子.jsファイルをuploadできないというので
改善が期待できない
何かもっとよい方法があるべきだと思います。とりあえず体験の報告でした
【考察その2】
javaScriptが欠落なくSourceとして読み込まれたと判断して改造に進んだ。
かろうじて改造に成功した。 しかし、表示の一部が欠落している
さらに修復・改造しようとしたところ 中落ちが発生しました。
まだ、 安定してないようです
どうも 160行の壁 というのがあるらしい。
160行を超えたscriptだったことがもう一つの原因4として考えられます
内容を短縮するために意図的な省略、欠落が起きると推理してみました
完全に誤認識は解消したはずが Script改造時に 160行に収めようする力が働いて
どこかを省略しようとする。(飽くまで推理です)
そして、マークダウン形式との誤認識が起きた・・とか理由をつけて、
AIは弁解しているように思う。
【対策4】 「160行の壁」を突破するためにファイルを分割する方法があるようです
出力のトラブルについては別の機会に書くとことにして今回はここまでとします
ここまで読まれた方に、明快な答えがなくて申し訳ないが
同様なトラブルに見舞われた方の参考になればと 報告を残します 悪しからず
・・・・以上 2026.6
飽くまでも体験的記事なので 検証不足もありえますので ご容赦ください
#cluster