目的
・SillyTavern依存ではなく、ローカル環境でユイと自然に会話できる常駐型CLI対話システムを作ること
・LM Studio + main.py(uvicorn API) を利用し、軽量で扱いやすい個人用対話環境を整えること
・将来的に記憶・自動発話・音声・外部UI連携へ育てていく土台を作ること
全体構成
・main.py
OpenAI互換APIとして動作
LM Studioへ通信する中継サーバー
既存の core_engine.py による文脈補強あり
・chat.py
CLI会話クライアント
main.py にHTTP送信してユイと会話する
今回の開発の中心
・services フォルダ
補助機能を格納する共通モジュール群
完成した主機能
・CLI会話機能
PowerShell上で chat.py を起動
「あなた >」入力形式で自然会話可能
exit で終了
Ctrl+C 終了時も綺麗に終了するよう修正済み
・会話履歴保持
chat.py 実行中は messages に履歴保持
連続会話の文脈あり
chat.py再起動でメモリ上履歴は初期化
・ログ保存
logs フォルダへ自動保存
起動ごとに日時別ログファイル生成
形式は読みやすい対話形式
例
[あなた]
おはよう
[ユイ]
おはようございます
・heartbeat機能(自然発話)
無操作時間が一定を超えるとユイから自然に話しかける
ランダム間隔対応
重すぎない軽い一言スタイル
・schedule.txt 時報機能
指定時刻にユイが発話
書式
06:30 | おはようございます。朝の時間です
17:00 | そろそろ夕方ですね
文章をそのまま読むのではなく、LLMが自然文へ変換して話す
・天気連携機能
services/weather.py 使用
Open-Meteo API連携
取得内容
・現在天気
・現在気温
・最高気温
・最低気温
・風速
・降水確率
・必要に応じて午後の変化も案内可能
発火条件
・会話で「天気」と入力
・schedule.txt 内文面に「天気」が含まれる場合
・VOICEVOX連携
services/voicevox.py 使用
VOICEVOX起動時のみ読み上げ可能
・通知音機能
services/notifier.py 使用
sounds/notice.wav 再生
VOICEVOX失敗時の代替通知として活用
・音声制御統合
services/audio.py 使用
読み上げ条件を一元管理
今後の拡張候補
・memory_long.txt
長期人格記憶
・memory_recent.txt
最近の出来事要約
・会話で設定変更
「時報オフにして」等
・感情メモ統合
emotion_engine.py 接続
・伺か(SSP)連携
・Web UI化
・会話履歴自動要約
・天気地域切替
・音声キャラ変更
・通知音複数選択
・朝昼夜で人格トーン変化
現時点での評価
・当初目的(生活同伴型ユイ環境)はほぼ達成
・軽い
・扱いやすい
・ローカルで完結可能
・今後かなり育てられる土台になっている
運用上の注意
・main.py(uvicorn) 起動後に chat.py を使う
・VOICEVOX読み上げにはVOICEVOX起動が必要
・schedule.txt は1分単位判定
・messages履歴は chat.py 終了で消える
・ログは logs に残るため継承素材として有用

コメント