Linked Intelligence Network Orchestrator
記憶が注入上限(既定4,096文字)を超えている場合、保存されているのに AI に渡っていない部分がありました。切り捨てられるのは、プロンプトが「常に参照」と指示している層からでした。
補足:「長期記憶」→「記憶を確認・修正」で「保存◯◯文字 / 応答時は最大◯◯文字まで参照」と出ている場合、保存のほうが大きければ今回の修正の対象です。
v1.26.1 で長期記憶(あなたについての記憶)の停止は直りましたが、AI自身の記憶だけが別の原因で止まるケースが残っていました。アップデートで自動的に復旧します。
補足:「🧠 記憶を整理」は「あなたについての記憶」のみを更新します。AI自身の記憶は日記と同時に更新されるため、急ぐ場合は「📔 日記を生成」を実行してください。
いずれも利用者からのご報告をもとに修正しました。ありがとうございます。
長期記憶が育つと、ある日から統合が止まったまま気づけなくなる不具合がありました。会話は普段どおり続きエラーも出ないため、記憶が古いまま固定されていることに気づく手段がほぼありませんでした。アップデートするだけで自動的に復旧します(設定の変更は不要です)。
すでに記憶が止まっていた場合:アップデート後、設定画面の「困った」→「🧠 記憶を整理」を一度実行すると、その場で復旧します。
debug_logsに記録するよう修正(対処はユーザーの設定引き上げに委ねる方針。上限を上げても課金は増えません)speechConfigをgenerationConfigの外に置いていたためAPIに拒否されていた。声を未設定のときだけ偶然動いていた状態audio/L16)を常にmp3と偽って返していたため再生できないケースがあった。実際の形式を見てWAVに包むよう修正dailyResetに補助トリガーの自己修復を追加 — アップデートしてもsetup()を実行しないと、後から追加された機能のトリガー(週次アーカイブ等)が永久に作られないままだった。1日1回、不足していれば自動で作成する(既存トリガーは削除せず・重複も作らない)webui_access_token_enableを既定ON — トークン未設定だとv1.25.11で塞いだゲート自体が作動せず、/execを知っている全員にWebUIが開いてしまうため。既存ユーザーは既定OFFのままで挙動は変わりませんapp_urlがトークン付きURLで保存されるよう修正 — 初回セットアップではトークン生成より先にapp_urlが同期されるため、トークン無しURLが保存されていた。設定画面のapp_urlが常に「そのまま開けるURL」になるgoogle.script.runのブリッジが載るため、「Access Denied」画面からでもloadAllConfig()等を呼んで設定内の全APIキーが読み出せた。拒否をContentServiceに変更して経路を閉鎖。該当する方はAPIキーの再発行を検討してください_付きに変更し外部から呼べないようにした(公開関数 224 → 215)?a=1&b=2形式のURLが&の位置で切れていたsendLineTextAndImage()を新設。従来のPush×2から削減max_event_queue_rows(既定3000)超過時にdone/failed行のみDrive上へアーカイブ。queued/processing行には触れない安全設計webhook_access_token_enable/webui_access_token_enable等の真偽値トグルまでマスクされ、実際の値が保存されていても常にOFFに見えていたSUB_SAKURA_MODEL(コード特化モデル)が長い創作文の日記プロンプトに稀に空応答を返し生成が丸ごと失敗していた。空応答/エラー時にGeminiへ1回だけ自動フォールバック再試行するようにTOKENを含むかどうかだけで判定していたため、webhook_access_token_enable/webui_access_token_enableのような真偽値トグルまで(set:Nchars)にマスクされ、チェックボックスが常にOFF表示になっていた(実際の値はv1.25.3で正しく保存されていたが表示だけ壊れていた)。type:'toggle'のキーはマスク対象から除外webui_access_token_enable/webhook_access_token_enableのような後から追加した設定項目が、既存ユーザーのconfigシートでは保存できず「勝手にOFFへ戻る」ように見えていたwebhookAccessTokenと推奨Webhook URLを確認できるようにwebhookAccessTokenの値と推奨Webhook URLを確認できるようにwebui_access_token_enable/webhook_access_token_enable等)は、トグルをONにして保存しても書き込み先の行が無く何も保存されず、次回読み込み時に「勝手にOFFへ戻る」ように見えていた。スキーマ定義済みだがシートに行が無いキーを自動で追記するよう修正setup()がWebhookアクセストークンを無条件で新規発行し、対応するWebhook URLの更新を忘れると全メッセージが無条件拒否されること。設定画面「システム」タブの「Webhookにアクセストークンを必須化」をONにした場合のみ発行されるように変更(既定OFF)。すでに返信が来なくなっている場合は、このトグルをONにして「セットアップ実行」→表示されるURLでLINE Developers ConsoleのWebhook URLを更新してくださいuser_stateのlastInteraction列(プッシュのクールダウン用)を参照していたため、プッシュ自身の送信時刻をユーザーの発言時刻と誤認していた。conversation_logsの実際のユーザー発言のみを見るよう修正?page=diag&target=time-checkでスクリプト/スプレッドシートのタイムゾーン設定の食い違いを確認できるようにsetup()がWEBHOOK_ACCESS_TOKENを無条件で新規発行し、対応するWebhook URLの更新を忘れると全メッセージが無条件でunauthorized拒否され、しかもdebug_logsには一切記録されなかった。WEBUI_ACCESS_TOKENと同じ既定OFFのオプトイントグル(webhook_access_token_enable)にし、新規発行時はWebUIにURLをポップアップ表示するように変更WEBHOOK_ACCESS_TOKEN(Webhook URL に ?token= で埋め込み)で認証するよう変更。setup() が自動生成し、getWebhookTokenInfo() で確認可能WEBUI_ACCESS_TOKEN 設定時、設定保存リクエストにトークン検証を必須化= 等で始まる場合に無害化して記録getDiagToken() の戻り値で行う形式に変更?page=diag / ?page=custom / ?page=test のトークン検証を _safeTokenEqual()(定数時間比較)に変更し、タイミング攻撃の余地を除去?page=simulator 依存から独立した公開URLに変更。匿名アクセス不可の環境でも開けるようになり、CONFIG["simulator_url"] で独自URLに上書き可能SUB_LLM_ENGINE(Kimi-K2.7-Code)が使われ空テキストを返していた問題を修正。IMAGE_LLM_ENGINE を使用preview/Kimi-K2.7-Code, preview/Qwen3.6-35B-A3B, preview/gemma-4-31b-it を追加Qwen3-Coder-480B, Qwen3-Coder-30B を削除(2026-07-21 で提供終了)state変数が未定義だった問題を修正。userIdから直接user_stateシートを参照して経過時間を計算{userName}が最後に送信してからXXX分経過していますをtimeBlockに注入。AIが「長時間無視された」と誤認識する問題を改善gpt-image-* / gpt-realtime-* / gpt-audio-* で溢れるのを修正。gpt-4o, gpt-5, gpt-5.6-* 等のテキストモデルのみ表示custom.gs に定義した関数を名前で呼べる汎用エントリ。LINORIN.js をバージョンアップで上書きしても、呼ばれる関数は custom.gs に残りカスタマイズが消えない?page=custom&name=FUNC&args=JSON&token=DIAG_TOKEN)。ブックマーク/curl/IFTTT 等の外部連携にstorage イベントで全タブに配信dailyReset トリガー時刻が atHour(17) ハードコード(setup() 再実行で手動変更が消える問題あり)だったのを config daily_reset_hour(デフォ17)参照に変更。設定UIから変更可能にdaily_reset_hour 未設定(空文字)時に Number("")===0 で0時トリガーが作られる問題を修正。空文字/未設定/範囲外は17時にフォールバックscheduledCheck() が ScriptLock を保持した状態で updateUserState() が同じロックを取得しようとして10秒タイムアウト後に何も更新せずリターン。lastInteraction が更新されずプッシュが連続発火していた問題を修正lastInteraction が now-silenceMin に設定されており即再プッシュ可能な状態だった。retention=0 のとき lastInteraction=now とすることで silence_threshold_min 分間のクールダウンを確保channel_merge=ON のユーザーで LINE Push が一切届かない不具合を修正。getCONFIG() が統合時に webui_user_id を先頭の LINE userId で上書きするため、scheduledCheck の WebUI スキップ判定が LINE ユーザーを WebUI ユーザーと誤認して Push をブロックしていた。WebUI スキップ guard を channel_merge=OFF 専用に変更(統合時は getAllUserStates が localuser 行を除外するため二重 Push の懸念なし)LINE_CHANNEL_ACCESS_TOKEN)だったため、正しく入力しても「未設定」と表示されていた。送信関数と同じ LINE_ACCESS_TOKEN に統一/v2/oauth/verify を使っていたため Messaging API の Channel Access Token を検証できず「NG(unknown)」になっていた。/v2/bot/info(Bearer 認証)に変更し、成功時は bot の @ID を表示LINE_USER_ID を参照しており常に静かにスキップされていた(「LINE: OK」はトークン確認の結果で実送信ではなかった)。getAllUserStates() で user_state の LINE ユーザーを取得し、各ユーザーへ実際に Push して結果を表示するよう変更user_state の localuser 行と外部チャネル(Slack/LINE等)行の両方が「必ず話しかける時間」到達時に push 発火していた。「ほぼ同時刻に2通」「数十分ずれて2通」両方の症状の根本原因。WebUIはプル型なので localuser 行からの外部 Push を常にスキップするよう修正user_state シートに同一userIdの行が複数あった場合に同時刻に Push が2通届くケースに対する防御策。重複行を自動で排除scheduledEveryMinute のハートビートをチェックして HEALTHY / SLOW / BROKEN / MISSING を判定。権限切れによるサイレント停止を一発で検知gemini-2.5-pro-preview-* など preview / latest 接尾辞付きのproモデルも正しく有料扱いにGEMINI_FREE_TIER_ONLY トグルがページリロードだけで即反映(モデル再取得不要)getLinorinSS() ヘルパー追加shouldPush() 未定義変数(boostMin/boostMax/curvePower/lonelyFactor/probDivisor)修正callSubLLM の不適切レスポンスフィルタリング + フォールバック追加secret_spice Base64文字化け → 生UTF-8テキスト化(Claude NG判定問題対応):predict エンドポイント + レスポンス形式修正linorin_src/ 二重定義 — .claspignore 追加 + GASから10ファイル削除.env + clasp push 方式に変更clasp deployments fallback追加add_emotion — 「いのちの電話禁止」指示削除(Claude NG判定問題対応)linorin_wizard/ 追加 — Python標準ライブラリのみで動くセットアップウィザード(python -m linorin_wizard wizard)status コマンド — 全コンポーネントの健康状態をチェック.linorin_deploy.json に保存し、追記デプロイ時に -i オプションを案内shouldPush() 未定義変数(boostMin/boostMax/curvePower)修正callSubLLM の不適切レスポンスフィルタリング + フォールバック追加secret_spice Base64文字化け → 生UTF-8テキスト化(Claude NG判定問題対応):predict エンドポイント + レスポンス形式修正uploadLineImageToDrive の関数名修正(getWorkspaceFolder() → getLinorinWorkspace())LINE_IMAGE_FOLDER_ID 設定不要に(LINORIN_Workspace/images を自動作成)sendTelegramImage 関数追加、画像生成トリガー/push-testでTelegram画像送信対応files.getUploadURLExternal → upload → files.completeUploadExternal のv2フローに正式移行LINE_IMAGE_FOLDER_ID にフォルダIDを設定)/^gemini.*tts/ に変更し、TTS対応モデルのみ抽出_callGeminiTTS_ にデバッグログ追加files.getUploadURLExternal → upload → files.completeUploadExternal のv2フローに正式移行checkVersion で内部バージョン変更も検出)IMAGE_GENERATION_TRIGGER_WORD、正規表現対応)IMAGE_GENERATION_DEFAULT_MESSAGE)LINE_IMAGE_FOLDER_ID にフォルダIDを設定)force_next_push フラグが残留して深夜Pushする問題を修正scheduledCheck()/processQueue() の user_state 読み書き競合を LockService で保護_autoUpdateDeployedUrl が app_url を自動上書きする問題を修正 — 設定済みのURLを保護?page=config 直接アクセスと buildConfigHTML() で {{SIMULATOR_URL}} テンプレート置換漏れを修正_callOpenAICompatImage_ が送信する size パラメータをGrok APIには送らないように修正TTS_ENGINE で選択、TTS_MODEL、TTS_VOICE で設定files.upload APIで画像アップロード、WebUIはbase64画像データを会話ログに埋めてインライン表示llm_reply が [object Object] になる問題を修正.claspignore 追加でpush対象ファイルを限定(docs/, debug_tools.js, changelog.html 等を除外)target="_blank" で新ページ開くに変更?page=config 直接アクセスと buildConfigHTML() で {{SIMULATOR_URL}} テンプレート置換漏れを修正_autoUpdateDeployedUrl が app_url を自動上書きする問題を修正 — 設定済みのURLを保護.claspignore 追加でpush対象ファイルを限定(docs/, debug_tools.js, changelog.html 等を除外)?page=simulator で寂しさゲージの確率カーブをリアルタイム可視化lonely_probability_divisor 追加(デフォルト1、範囲1-20)force_next_push フラグが時間帯重みチェックをバイパスしていたため、夕方に確率が当たると深夜にPushが発火する問題を解消loadAllConfig で数値0が空文字列に変換される問題を修正 — String(v || "") で v=0 のとき "" になっていたため、weight_night などの数値設定が空文字列として保存されていた問題を解消_migrateUserStateHeaders_ が undefined.length でクラッシュする問題を解消role: "system" に変更し会話履歴から除外thinking: enabled + reasoning_effort: high に対応/models API からモデル一覧を自動取得。到達不能時はフォールバックapplyShadowToggle() → applyShadowIntensity()getAllUserStates() に変更getDiaryFolder() の実行チェックに変更var(--accent) に変更processQueue() を即実行doGet ルーティングに diag ターゲットを追加processQueue() 内の userStateMap 構築で undefined.length エラーが発生する問題を修正silence_threshold_min を超えたキュー滞留メッセージは force_next_push を自動セットし、次の processQueue() で処理されるように修正LLM_ENGINE=grokなどを選択中に「APIキー: 未設定」と誤表示される問題を修正doGet のルーティングに diag ターゲットを追加 — ?page=diag&target=no-reply などが runDiag()/runTool() を呼ぶように修正getSheet('user_state') の直接読み込みを getAllUserStates() に変更し、空シート時のエラーを解消applyShadowToggle() を applyShadowIntensity() に変更し、ページ読み込みエラーを解消CONFIG['diary_folder_id'] の直接チェックを getDiaryFolder() の実行チェックに変更reply_loneliness_mode=TRUE 時、寂しさゲージ落選はランダム遅延を設定せずキューに残留し、次ループで再判定。これで「寂しさゲージで当選するまで待機」する挙動にscheduledCheck() が EventQueue の scheduledAt=0(寂しさゲージ待機中)も検知し、Push を抑制processQueue() 内の getSheet("user_state") → getUserStateSheet() 修正。_migrateUserStateHeaders_() で undefined.length エラーを修正force_next_push を自動セットし、次の processQueue() で処理されるように修正runDiag() と runDiagFromUI() に user_state (アンダースコア) ルーティングを追加openrouter/auto(自動選択)と openrouter/free(無料モデル自動選択)をモデル選択に追加。有料ユーザーでも自動ルーティングが使えるようになった_seedLongTermMemoryFromProfile_() を追加。mergeLongTermMemory() で oldMemory 空時に自動的に意味記憶・手続き記憶・<以前>エピソードを先行生成_postTerrariumMessage() で thread_ts を小数点以下6桁へゼロパディング(Sheets 数値変換で末尾ゼロ脱落→スレッド不一致を解消)thread_ts デバッグ情報を追加 — Slack 応答の ts/thread_ts を記録しスレッド追跡を容易にbackup_enabled を ON にすると毎日自動でスプレッドシート全体(会話ログ・設定含む)を LINORIN_Workspace/backups/ フォルダにバックアップ。古いバックアップの削除は手動で行う仕様。setup() 実行時に localuser や過去の webui_user_id を現在の webui_user_id に自動統合。WebUI で「AIの回答が消えた」ように見える問題を解決。event_queue の userId も統合対象に追加し、大量ログ対応のため2000行ずつ分割処理。clear503State や updateUserState が一時的な SpreadsheetApp エラーで例外を投げると handleMessage が終了し、メッセージ未送信のままキューに戻っていた。両関数を try-catch で保護し、エラーが発生してもメッセージ送信(sendByPlatform)は必ず実行されるよう変更。processQueue で handleMessage 成功後にクリーンアップ例外が発生するとキューエントリが queued に戻り再処理されていた。成功/失敗の判定を独立した try-catch に分離し、成功時は必ず done にマークするよう変更。webui_user_id を設定済みの場合、旧 localuser エントリを push 対象からスキップするよう変更。channel_merge が OFF→ON に変化した場合、または ON のまま webui_user_id が変更された場合、conversation_logs と user_state の既存エントリを新しい ID に自動マイグレーション。メッセージアプリを変更しても会話履歴・記憶が引き継がれるように。auto(AIが判断)/ ja(常に日本語)/ en(Always reply in English)から選択可能。英語圏ユーザー向け。daily_push_limit チェックで ReferenceError が発生する問題を修正: _healthCheck_ 内で conf が未定義のまま参照していた。CONFIG["daily_push_limit"] に修正。scheduledCheck() 内にあったため常に閾値超えになっていた。1分間隔の scheduledEveryMinute() の先頭に移動。MESSAGING_PLATFORM で使用していないプラットフォームのトークンが未設定でも overallOk に影響していた。アクティブなプラットフォームのみに限定。line_quota チェックが overall に影響する問題を修正: activePlatform === "line" のときのみ overallOk に影響するよう変更。channel_merge 時にポモドーロ終了通知がメッセージアプリに届かない問題を修正: webui_user_id にメッセージアプリのユーザーIDを設定すると isWebuiUser が true になり通知がブラウザチャット側にのみ飛んでいた。platform !== "webui" を使うよう変更。user_state から最近会話した上位5件のユーザーIDを候補チップで表示。クリックで許可ユーザー欄に追記(重複なし)。channel_merge ON時も正しく動作。queue-clear — 滞留キューのクリア: ?page=diag&target=queue-clear で10分以上滞留している queued/processing 行を failed に更新。詰まったキューを即座に解消できる。push-test — 全プラットフォーム疎通確認: ?page=diag&target=push-test でLLMを使ったテストメッセージを LINE/Slack/Telegram/WebUI に送信し、各APIのレスポンスを確認。会話ログ・lastInteraction に影響なし。health(計12項目): キュー詰まり・トリガーハートビート・LLM API疎通・プラットフォーム接続・必須シート・必須configキー・LockService・push_enable・LINE月間quota・トリガー設定・モデルキャッシュ・日次push上限超過 を一括チェック。lonely_ceiling_min 到達後も確率抽選が走っており、条件次第で長時間発火しなかった。ceiling 到達時は抽選をスキップして強制発火するよう変更(timeWeight=0 深夜ミュートは尊重)。pushMessage の呼び出しが漏れていた。MESSAGING_PLATFORM=slack 環境でシステム通知がSlackに届かない問題を修正: webui_user_id に Slack ユーザーIDと同じ値を設定していると、さみしさpush・ポモドーロ終了通知・日記生成通知・記憶生成エラー通知がすべて webui 扱いになって Slack に届かなかった(4箇所修正)。reply_delay_max_min 設定時、返信待ち中に scheduledCheck が孤独pushを送ってしまっていた。char_temp_bias(感情の振れ幅)は temperature に乗算するだけの冗長な設定だったため削除。temperature のラベルを「感情の振れ幅」に変更し、1つのスライダーで完結するよう整理。8/5 ⚠️上限超 形式に変更: 日次push上限の消費状況が一目でわかるように。active_mode を廃止し messaging_mode / webui_mode に分割: メッセージアプリとブラウザチャットそれぞれで「遠距離/近距離」の振る舞いを独立して設定可能に。チャネル統合(旧 unified)はデフォルト動作になり設定不要。callLLM/callSubLLMの3箇所重複if-elseを統一)、EQ_COLS/EMPTY_USER_MSG_FALLBACK 定数化、_getWebUIUserId_/_webuiResponse_/_logWebUIQueue_/_getMaxTokens_/_tsFull_ 等ヘルパー関数化。(1.12.0.7)daily_push_limit チェックの ReferenceError を修正: _healthCheck_ 内で conf が未定義のまま参照していたバグを修正。CONFIG["daily_push_limit"] に変更。(1.12.0.8)scheduledCheck()(10分間隔)から scheduledEveryMinute()(1分間隔)の先頭に移動。(1.12.0.9)_processLineSingleEvent)への移行時に pushMessage の呼び出しが漏れていた。MESSAGING_PLATFORM=slack 環境でシステム通知がSlackに届かない問題を修正: webui_user_id に Slack ユーザーIDと同じ値を設定していると、さみしさpush・ポモドーロ終了通知・日記生成通知・記憶生成エラー通知がすべて webui 扱いになって Slack に届かなかった(4箇所修正)。reply_delay_max_min 設定時、ユーザーのメッセージへの返信を待っている間に scheduledCheck が孤独pushを送ってしまっていた。キュー待ち中のユーザーをスキップするよう変更。char_temp_bias(感情の振れ幅)は temperature に乗算するだけの冗長な設定だったため削除。temperature のラベルを「感情の振れ幅」に変更し、1つのスライダーで完結するよう整理。lonely_ceiling_min に達した後も確率抽選(Math.random())が走っており、設定条件によっては長時間発火しないことがあった。ceiling 到達時は抽選をスキップして強制発火するよう変更(timeWeight=0 の深夜ミュートは引き続き尊重)。gemini_503_retry 設定は廃止。queue-clear — 滞留キューのクリア: ?page=diag&target=queue-clear で10分以上滞留している queued/processing 行を failed に更新。詰まったキューを即座に解消できる。push-test — 全プラットフォーム疎通確認: ?page=diag&target=push-test でLLMを使ったテストメッセージを LINE/Slack/Telegram/WebUI に送信し、各APIのレスポンスを確認。会話ログ・lastInteraction に影響なし。health の強化(計11項目): 従来の7項目に加えて以下を追加。①push_enable オフ検出(メッセが来ない原因)、②LINE月間push上限の残量確認(/v2/bot/message/quota で quota/consumed を比較、上限超過でerror、80%超でwarn)、③dailyReset トリガーの存在確認(日記でない原因)、④モデルキャッシュ(MODEL_OPTS_* ScriptProperty)の陳腐化検出(現在のエンジン設定と一致しない古いキャッシュを検出、モデル更新されない原因)。getLocalLLMModelList is not defined エラーが発生する問題を修正: local_llm.js を持たない環境(Drive SOURCE から手動セットアップした場合など)やローカルLLMが無効な環境でボタンを押すとクラッシュしていた。typeof ガードと LOCAL_LLM_ENABLED チェックを追加してスキップするように修正。_processLineSingleEvent)への移行時に pushMessage の呼び出しが漏れていた。MESSAGING_PLATFORM=slack 環境でシステム通知がSlackに届かない問題を修正: webui_user_id に Slack ユーザーIDと同じ値を設定していると、さみしさpush・ポモドーロ終了通知・日記生成通知・記憶生成エラー通知がすべて webui 扱いになって Slack に届かなかった。isWebuiUser(userId 判定)ではなく platform === "webui" で送信先を決定するよう修正(scheduledCheck / pomodoroTimerCheck / generateLongTermMemoryForAllUsers / generateDailyDiaryForAllUsers の4箇所)。reply_delay_max_min(返信遅延)設定時、ユーザーがメッセージを送ってから bot が実際に返信するまでの間に scheduledCheck が「長時間無音」と判定して別途 push を送ってしまうことがあった。scheduledCheck 冒頭で event_queue を一括チェックし、queued/processing 状態のユーザーをスキップするよう修正。古いスタック行による誤ブロックを防ぐため createdAt で遅延ウィンドウ内の行のみを対象とし、返信遅延設定がない場合はチェック自体をスキップするよう改善。Files.insert)を使っていたため PDF が読み取れなかった。Files.create / pageSize / files に更新して v3 に対応。LINE・WebUI 両方で修正。?page=test エンドポイントで自動チェック。_diag_dopost_ デバッグログが ScriptProperties に蓄積し 500KB 上限に達していた根本原因を除去。Slack でメッセージを大量送信すると返答が来なくなる問題が解消。_cleanupDedupKeys_ の閾値を 500→200・保持件数を 300→100 に引き下げ。_dailyReset_ran_YYYYMMDD キーを実行時に当日分以外すべて削除するよう変更。rss_cache を ScriptProperties(9KB/値上限)から CacheService(TTL 2時間・100KB上限)に移行。MODEL_OPTS_* キーを一律先頭100件に制限。OpenRouter など数百件のリストが9KB上限を超える問題を修正。getConversationForMemory / generateLongTermMemory を複数ID対応に変更。_diag_dopost_ デバッグログが ScriptProperties に蓄積し続け 500KB 上限に達していた根本原因を除去。_cleanupDedupKeys_ の閾値を 500→200・保持件数を 300→100 に引き下げ。_dailyReset_ran_YYYYMMDD キーを実行時に当日分以外すべて削除するよう変更。rss_cache を ScriptProperties から CacheService(TTL 2時間)に移行。9KB/値上限を回避。MODEL_OPTS_* キーを updateModelDropdown で一律先頭100件に制限。OpenRouter など数百件のリストが9KB上限を超える問題を修正。getConversationForDiary を導入。最大50件に制限してプロンプト肥大化を防止。hasConfig の1引数バグを修正し、Sakura が正しくルーティングされるように。ACCESS_TOKEN:SECRET 連結形式から ACCESS_TOKEN 単体 Bearer に修正。diary_max_tokens 設定が日記生成に適用されていなかったバグを修正: callSubLLM の resolvedMaxTokens が各 API 呼び出しに正しく渡されるよう修正。hasConfig("SAKURA_MODEL") が1引数呼び出しのため常に false を返す問題を修正。ACCESS_TOKEN:SECRET 連結形式(401エラー)から ACCESS_TOKEN 単体の Bearer 認証に修正。callLLM の Sakura 分岐を修正: hasConfig 1引数バグを callLLM 側でも修正。generateDailyDiaryForAllUsers に外部ユーザー存在時の WebUI スキップロジックを追加。getAllUserStates が allowed_line_users フィルタで WebUI ユーザーを除外、generateDailyDiaryForAllUsers が LINE platform で通知していた 2 つのバグを修正。scheduledCheck / generateLongTermMemoryForAllUsers に effectivePlatform パターンを適用。SAKURA_MODEL / SUB_SAKURA_MODEL の選択肢をスキーマに直接埋め込み、初回から選択可能に。isDriveApiAvailable() の Drive v2 フィールド名誤り(files→items)を修正。"TRUE" を boolean true に自動変換するため is_bot 判定が全 bot メッセージで false になり、hourly limit を使い切ってからユーザーに無反応になっていた。SAKURA_MODEL / SUB_SAKURA_MODEL の選択肢をスキーマに直接埋め込み、初回から選択可能に。isDriveApiAvailable() の Drive v2 フィールド名誤り(files→items)を修正。extractTextViaDrive() を Drive.Files.insert() 直接変換方式に簡略化。"TRUE" を boolean true に自動変換するため is_bot 判定が全 bot メッセージで false になり、bot 同士の連鎖で hourly limit を消費してからユーザーに無反応になっていた。LOCAL_LLM_ENABLED=FALSE でサーバー接続をスキップしてフォールバックへ即切替。buildSystemText を MESSAGE BUILD 直前・エントリーポイントをまとめ・デバッグ関数を debug_tools.js へ集約。getAllUserStates が allowed_line_users フィルタで WebUI ユーザーを除外、generateDailyDiaryForAllUsers が LINE platform で通知していた 2 つのバグを修正。scheduledCheck / generateLongTermMemoryForAllUsers に effectivePlatform パターンを適用。LOCAL_LLM_ENABLED をOFFにするとサーバーへの接続をスキップし、フォールバックエンジンに即切替。設定UI「API設定」タブから切替可能。SAKURA_MODEL / SUB_SAKURA_MODEL の選択肢をスキーマに直接埋め込み、「全エンジン・モデルを更新」未実行の環境でも初回から選択可能に。buildSystemText を MESSAGE BUILD 直前・doGet/doPost をエントリーポイントとしてまとめ・デバッグ関数を debug_tools.js へ集約。isDriveApiAvailable() が Drive v2 の正しいフィールド名(items)を参照するよう修正。extractTextViaDrive() を Drive.Files.insert() 直接変換方式に簡略化。"TRUE" 文字列を boolean true に自動変換するため is_bot 判定が全 bot メッセージで false になり、bot 同士の連鎖で hourly limit を消費してからユーザーに無反応になっていた。add_emotion)機能を追加: 設定UI「キャラクター設定」タブからON/OFF切替可能。以下4つの機能が有効化されます。
?page=diag にトークン認証を追加: setup()でDIAG_TOKENを自動生成、未認証リクエストは拒否callWithRetry ラッパーを適用(429/503で最大2回、1秒待機)add_emotion スイッチ実装: CONFIG key "add_emotion" = TRUE で4機能が有効化 / Plan1: 内省メモ(REFLECTION)を日記生成時に保存→翌日引継ぎ / Plan2: システムプロンプトへ内省メモ注入+共感強化ルール / Plan3: ユーザー発言長に応じた返答長ミラーリング / Plan4: Push時に過去日記からランダムスニペットを注入(不意打ち記憶)loadChatGoogleFont の変数宣言ホイスティングによる TypeError を解消/exec で直接新しいタブ型UIが開くように。旧URLのブックマークも新UIにリダイレクトscheduledEveryMinute を常に1分間隔に。LINEが5分間隔だったためポモドーロ・孤独プッシュが最大5分遅延していた問題を解消scheduledCheck の30分独立トリガーを廃止し、scheduledEveryMinute 内の制御に統合photo_reaction_timeout_minutes で設定)[画像] プレフィックスを追加。次のターンでAIが画像のやりとりを参照できるように_fetchImageBase64_() ヘルパーに統一LanguageApp)で日本語化。LLMコスト不要?page=config なしで開いていた問題を修正buildFieldHtml のセレクト描画で item.l(日本語ラベル)が無視されていた根本バグを修正。会話モード・通知タイミングなど全フィールドが正しく表示されるようにcalculateAccentTextColor をアクセント輝度基準→背景色輝度基準に変更。ワインなど暗背景+明アクセントで文字が黒くなる問題を解消.act-btn の背景を透明→テーマカラー薄掛けに変更。ライトテーマで枠だけに見える問題を修正applyFontSize の全 CSS ルールに !important を追加。inline style による上書きを防止var(--muted)→var(--text) に変更、font-weight:600 を追加(読みにくい問題を解消)f_webui_theme_color の null 参照による TypeError を修正getCurrentTimePeriod() を追加。現在時刻に応じた時間帯の指示をシステムプロンプトに自動追記width:192px)、8 段階(11〜25px)に拡張#020f02 / #00ff41)固定デザインに変更。どのテーマでも干渉しないwebui_selected_theme)。ヘッダーの選択と設定フォームを双方向同期runSetup() が呼ばれない問題を修正#fff→ソフトグレー #e0e0ec、text-shadow を追加--fg/--bg2 未定義変数を var(--text)/var(--ibg) に修正finally ブロックで修正window.top.location.href の cross-origin ブロック問題を解消。_refreshAndReload() で DOM をその場で書き換え_refreshAndReload() の 1 本道に統一GEMINI_FREE_TIER_ONLY 設定を追加。Flash / Gemma / Lite 系を無料判定CONFIG["partner_name"] / CONFIG["user_name"] を全箇所で使用