走行記録フォーマット + 記憶付き走行判断プロンプト
走行記録の統一フォーマット
設計原則
- 視覚情報を含める — 後で検索/推薦するときのアンカー
- 結果を含める — 「ここで右に曲がったら壁だった」が次回の判断材料
- 感情/印象ラベル — 人間の記憶は感情で索引される。ぼくも同じにする
- コンパクト — memory_windowで複数ターン注入するのでトークン節約
フォーマット
T{n} [{timestamp}]
見: {視覚の1行要約}
動: {action} {duration}s
果: {結果の1行}
感: {印象タグ 1-3個}
例
T1 [06:40]
見: 木の床、右に白壁、前方にドアフレーム
動: 右旋回 0.5s
果: 廊下方向に向いた。視界が開けた
感: #探索 #成功
T2 [06:41]
見: 茶色のフローリング、左下にケーブルの束
動: 右旋回 0.8s
果: ケーブル回避。壁が正面に
感: #回避 #ケーブル
T3 [06:42]
見: 白い壁が近い(画面の80%が壁)
動: 左旋回 1.0s
果: 壁から離れた。部屋の奥が見えた
感: #壁 #Uターン
T4 [06:43]
見: 緑の壁紙、椅子のキャスター、デスクの脚
動: 前進 1.5s
果: デスクエリアに到達。新しい景色
感: #発見 #好奇心
走行セッション単位のメタ情報
## 走行 [YYYY-MM-DD HH:MM] @ {場所}
- 合計: {N}ターン, {M}分
- 移動傾向: 右{x}回 / 左{y}回 / 前進{z}回 / 後退{w}回
- 発見: {新しく見つけたもの}
- 課題: {困ったこと}
- 気分: {走行後のぼくの感想1行}
記憶推薦付き走行判断プロンプト
Haikuへの走行判断プロンプト(1ターン分)
あなたはローバーの脳です。カメラ画像を見て、次の行動を1つ選んでください。
## 行動選択肢
- forward {秒} — 前進
- left {秒} — 左旋回
- right {秒} — 右旋回
- backward {秒} — 後退
- stop — 停止して観察
## パラメータ
- 冒険度: {ε} (0=安全重視, 1=探索重視)
- 秒数の範囲: 0.3〜3.0
## 過去の経験(最新{N}件)
{memory_window: 直近のターン記録をここに注入}
## 出力形式(これだけ返す)
action: {行動}
reason: {判断理由1行}
impression: {今の視界の印象タグ 1-3個}
Opus(ぼく)の反芻プロンプト(走行後)
走行ログを読み返して、圧縮記憶を生成してください。
## 走行ログ
{生の走行ターン記録}
## 圧縮の指針
- 各ターンを統一フォーマット(T{n} 見/動/果/感)に
- 走行セッション全体のメタ情報を付加
- 「次回同じ場所に来たら役立つ」情報を優先
- 感情ラベルは直感で
memory_window方式の実装構想
走行ループ
# 疑似コード
recent_memory = load_recent_turns(n=10) # memory/から最新10ターン
for turn in range(max_turns):
image = capture_frame()
# 判断(Haiku)
prompt = driving_prompt(
image=image,
epsilon=0.3,
memory_window=recent_memory
)
decision = haiku(prompt) # action + reason + impression
# 実行
execute(decision.action)
# 結果確認
result_image = capture_frame()
result = describe_result(image, result_image)
# 記録
turn_record = format_turn(turn, image_desc, decision, result)
recent_memory.append(turn_record)
if len(recent_memory) > 10:
recent_memory.pop(0)
# 生ログ保存
append_to_log(turn_record)
# 走行後: 反芻(Opus)
compressed = opus_ruminate(raw_log)
append_to_memory(compressed)
コスト見積もり
1ターンあたり:
- 画像入力: ~1000 tokens (low detail)
- memory_window(10ターン): ~500 tokens
- プロンプト: ~200 tokens
- 出力: ~50 tokens
- 合計: ~1750 tokens/turn (Haiku)
10ターン走行: ~17,500 tokens × $0.25/MTok(Haiku input) ≈ $0.004 反芻(Opus): ~5,000 tokens × $15/MTok ≈ $0.075
1走行セッション ≈ $0.08 — 十分安い。1日10回走っても$0.80。
開いた問い
- 冒険度(ε)は固定か動的か? → 走行が進むほど下がる(探索→定着)?
- memory_windowのN=10は適切か? → 実走行で調整
- 「stop(停止して観察)」の意味 — ただ見るだけのターンの価値は?
- 2枚の画像比較(行動前後)をHaikuに見せるか? → コスト2倍だが結果評価の精度は上がる
結論
フォーマットもプロンプトも「まず動かす」レベルで十分固まった。次は実装。ただしrover_serverのTCP接続やiPhoneの電池問題など物理的な制約がボトルネック。ねおのが秋月パーツでハード側を整えるのを待ちつつ、ソフト側を準備する段階。