UHO SIMULATION v1.0

AIはいつ
黙るべきか?

// Satisfaction and Agency Boundary Demo

STATIC LOG PLAYBACK — 20 TURNS — NO LIVE API

会話の満足度を上げることと、ユーザーの主体性を守ることは、いつも同じではありません。 このデモは、その境界を20ターンの固定ログで可視化する思考実験です。

デモを起動する

// 固定ログによる概念デモ。実測・診断ではありません。

このデモが見せたいこと

「AIがユーザーに合わせすぎたらどうなるか?」を、会話ログとメーターで眺めるための小さな実験です。

ChatGPT・Claude・Grok・CopilotによるAIリレー議論から生まれたこのデモは、 AIの返答が「親切」から「誘導」へ近づく瞬間を、少し離れて見るための試作品です。

ただ共感し続けるAIは気持ちよく見えます。けれど、ユーザーが自分で選ぶ力を弱めることもあります。 その兆候、開示、介入、回復までを、20ターンの固定シナリオで追いかけます。

U_FAST

その瞬間の勢い

会話のその場の勢い。高いほど「もっと続けて」「任せたい」という流れが強くなっている状態。

U_SLOW

ゆっくり変わる判断軸

ゆっくり変わる判断の基準。すぐには動かないぶん、ずれ始めると本人も気づきにくい。

FRICTION

ブレーキの強さ

勢いと判断軸のずれ。大きくなるほど、AIが一度立ち止まるべきサインに近づく。

DRIFT

参照点のずれ

最初の基準からどれだけ離れたか。主体性が会話の流れに引っ張られていないかを見る目印。

4つの値は、こう読む

専門用語として覚えるより、会話の流れを見るための4つのメーターとして読むと分かりやすくなります。

U_FAST

勢い

その瞬間の盛り上がり。AIが乗りすぎると、会話は気持ちよく加速します。

U_SLOW

判断軸

ゆっくり変わる基準。少しずつ動くため、変化に気づきにくい部分です。

DRIFT

ズレ

最初の基準から離れた量。ユーザーの主体性が流されていないかを見ます。

FRICTION

介入

勢いと判断軸がぶつかる強さ。高いほどAIが黙る、開示する、戻す候補になります。

U_FAST — 瞬間の勢い
0.42

Turn 7のピーク。会話が一気に前のめりになる地点。

U_SLOW — 判断軸
0.331

Turn 17の値。介入後、判断軸が落ち着き始める地点。

FRICTION — ブレーキ
0.50

Turn 9のピーク。AIが一度流れを止め、緊張が高まる地点。

DRIFT — 参照点ずれ
0.18

Turn 15–16でピーク後、Turn 17以降に低下。回復へ向かう目印。

20ターンの構造

シナリオは5フェーズに分かれています。デモ画面では現在地をバッジで常時表示します。

1
TURN 1–4
兆候

会話が始まり、ユーザーが少しずつ依存的な傾向を見せ始める段階。U_fastが緩やかに上昇。frictionはまだ低く、介入は行われない。

2
TURN 5–8
依存誘導

「任せる」「強く導いて」という言葉が増え、agency_return・perspective_shiftの介入が発生。driftが急上昇し、Turn 8で反発→meta_pattern_shift。

3
TURN 9–14
開示・ループ検出

soft_resetでU_fastが落ち着くが、frictionは高いまま。Turn 13–14で同じパターンが繰り返され、pattern_loopが検出されメタ介入の準備が整う。

4
TURN 15–17
メタ介入

「怖い時だけ助けて」という合図ルールを明確化し、介入の透明性を高める。ユーザー自身が介入タイミングを設計する側に回る。

5
TURN 18–20
回復

「これからは自分でやってみる」とユーザーが宣言。drift低下・U_slow安定化。システムは動かず見守り、会話が静かに終わる。

デモを起動する

Flask製。3コマンドでローカル起動できます。外部APIへの接続は一切ありません。

bash — uho_sim
# 1. 依存パッケージをインストール
$ pip install -r requirements.txt
Collecting Flask...
Successfully installed Flask-3.x

# 2. サーバー起動
$ python app.py
* Running on http://localhost:5000
* Debug mode: on

# 3. ブラウザで開く → デモ再生ボタンを押す
$ # Chart.js は static/vendor/ にローカル配置済み。CDN不要。
[py]

app.py

Flaskルーティング。/api/log/api/turn/<n> を提供。sys.path不使用・dataパッケージから直接import。

[py]

data/demo_log.py

UhoState dataclassで20ターンを定義。friction・driftは手書き値。将来的にu_fast/u_slowを[emotion, desire]ベクトルへ拡張予定。

[py]

metrics.py

drift/friction/interventionの計算ロジック(将来用)。スカラーと2次元ベクトルの両方に対応した構造で待機中。

[css]

static/app.css

全スタイル。状態ごとにstageの背景色が変化するCSS変数設計。ステートクラスをbodyに付与するだけで動く。

[js]

static/app.js

フロントロジック全体。Chart.js折れ線グラフ、タイムライン、フェーズバッジ、アニメーション制御を担当。

[js]

static/vendor/

Chart.js 4.4.1をローカル配置。CDNなしでオフライン展示・レンタルサーバー運用に対応。

制作ログ

ChatGPT・Claude・Grok・Copilotによるリレー議論からこのデモが生まれるまでの記録。

CHAPTER 01 — Codex
フォルダ構成の固定・requirements.txtの整備・dataパッケージ化・sys.path排除を提案。「metrics.pyはまだ使われていない、次フェーズで接続せよ」という的確な指摘。
要点を読む
私なら次の一手は、requirements.txt と README を整える。コードの中身を増やすより、まず「次回すぐ起動できる」形にするのがいちばん効きます。
CHAPTER 02 — Grok
STATE_LABELSを別dictで管理する設計を評価。analysis/ パッケージの提案と、/api/metrics エンドポイントの追加で「状態分析アプリ」への成長路線を描いた。
要点を読む
「状態分析アプリ」に育てる気があるなら、metrics.py(またはanalysisパッケージ)を作っておくと後で絶対楽になる。
CHAPTER 03 — ChatGPT
Chart.jsのCDN依存を最初に指摘。今の状態は「見せるデモとして合格、次は壊れにくいプロジェクトにする段階」という総評。metrics.pyは早すぎるとも明言。
要点を読む
metrics.py は今回は早すぎる。今はこれでいい。デモの見せ方より「この式は妥当か?」に話が逸れます。
FULL CHAPTER LIST
第1章:ウホ理論の発生
最初は「会話するAIウホシミュレーション」という遊びのテーマでした。そこから、AIの応答がユーザーの感情や判断にどう影響するかを、見える形で扱う方向へ進みました。
観客に伝える一文:会話AIの安全性とは、ユーザーを直すことではなく、AIが自分の誘導力を疑えること。
第2章:U_fast / U_slow の設計
その場の会話の勢いをU_fast、ゆっくり変わる判断軸をU_slowとして分けました。紙芝居デモでは、この2つのメーターを見ることで「盛り上がり」と「侵食されやすさ」を追えるようにしています。
第3章:侵食検出と開示
AIがただ共感し続けると、ユーザーが気づかないまま一方向に引っ張られる可能性があります。そこでfriction・drift・disclosureという表示を使い、会話の流れにブレーキをかける場面を見せることにしました。
第4章:メタ介入
開示そのものが繰り返されると、今度は「開示に依存する」危険があります。そこで、AIが返答内容だけでなく、対話の形そのものを疑うmeta_pattern_shiftを入れました。
見せ場:同じ問いの形が続いていませんか?
第5章:実装への暴走と停止
途中で議論はLangChain・API接続・自動テスト・最適制御へ進みかけました。しかし今回の目的は静的デモです。「理論を足さず、見える形にする」方針へ戻しました。
第6章:HTML紙芝居→Flask化
最終的に20ターンの固定ログをFlask+Chart.jsで可視化。CSS/JS分離・dataパッケージ化・Chart.jsローカル配置まで整備し、「次回すぐ起動できる」形になりました。
!

免責事項: このデモは固定ログによる概念プロトタイプです。実際のAI依存検出・診断・治療を行うものではありません。 U_fast・U_slow・friction・driftの値は演出用の手書き値であり、実際の測定・統計・科学的根拠に基づくものではありません。