🗺 PROJECT MAP — 2026-07-09

🏢 AI Office 進捗マップ

Macで動く全 Claude Code セッションを「ドット絵オフィスのAI社員」として見える化し、
画面・スマホ・他のAIから指示を届けられるようにするプロダクトの全体図と現在地

場所: works/AI Office/・検証: bash "AI Office/verify.sh"(全10章 green 維持中)

✨ AI Office とは

👀全セッションが見える

Mac上の Claude Code 全員が「AI社員」としてドット絵オフィスに出社。いま何をしているか・承認待ちが誰かが一目で分かる

📨指示が届く

画面の指示ポストに書くと、実際のセッションへ自動配達(Stop hook が起こす)。クリックでRPG風会話・✅承認/🛑停止も1タップ

🌍どこからでも・常駐で

外出先のiPhone(PWA+HMAC署名)からも指示OK。Mac再起動でも自動で立ち上がる常駐化まで実装済み

📊 フェーズ進捗 — 実装は P0〜P4 完了・P5 は仕様確定済み

P0 独立化
P1 ➕入社
P2 中継
P3 スマホ
P4 常駐
P5 MCP
P6 磨き

🟢=完了 🟡=実装完了・あなたの操作待ち ▫=仕様確定済み(実装はこれから)

フェーズ状態できるようになったこと品質(敵対的レビュー)
P0 独立化+ハーネス✅ 完了 works直下へ移設・verify.sh検証網・フィクスチャテストハーネス先行で構築
P1 ➕新プロジェクト✅ 完了 画面の➕からフォルダ選択→専用キャラ自動生成→Terminalでclaude起動24体 → 16所見修正
P2 Cloudflare中継✅ 完了 Worker+Durable Objectのキュー中継。配達は at-least-once(指示が消えない)26体 → 9所見修正
P3 スマホPWA🟡 deploy待ち iPhoneからペアリング→✅承認/🛑停止/自由指示。HMAC署名でMac側が検証=トークン漏洩でも偽造不可設計5体+22体 → 15所見修正
P4 Mac常駐🟡 load待ち ログイン時自動起動(LaunchAgent)。TCC問題を配置で構造回避・データは単一正本で分岐しない設計4体+36体 → 30所見修正
P5 MCP連携📐 仕様確定 他のClaude Codeセッションが office_status / office_instruct ツールでオフィスを操作(+OpenClaw用トークン)設計4体で仕様書完成・実装待ち
P6 磨き⬜ 未着手 QR画像・Web Push通知・スマホ版オフィス絵 など

🎨 本日の成果 — オフィスの見た目を全面刷新(ズレ解消)

❌ Before: 家具が背景に焼き込み

  • 机・椅子・会議テーブルがAI生成の1枚絵の中
  • 生成のゆらぎで椅子が机に食い込む/浮く
  • キャラの座標と画像内の家具が構造的に揃わない

✅ After: 家具を個別スプライトでDOM配置

  • 背景は「空の部屋」に差し替え(同スタイルで再生成)
  • 机ユニット・椅子・会議セット・ソファを透過スプライト化 → 全デスクが同一部品の複製=ズレが原理的に消滅
  • 1つのアンカー座標から机/椅子/立ち位置/モニタ光を全導出(座標の二重管理なし)
  • 名札を頭上に移動・ビネット追加などの雰囲気強化

🧭 全体アーキテクチャ — 3つの入口が同じ配達路に合流

🖥 MAC の中(完全ローカル・標準ライブラリのみ)
Claude Code セッション達~/.claude/projects/*.jsonl(読取専用) office_server.py:4780・状態推定・P4でLaunchAgent常駐 🏢 ドット絵オフィスUIスプライト家具・RPG会話・➕入社
📨 指示ポスト(UI/API/MCP) office_inbox/<session>.json グローバル Stop hookセッションを起こして指示を届ける
☁️ クラウド中継(Cloudflare・月¥0運用)
📱 iPhone PWAペアリング済み端末がHMAC署名で投函 Worker + Durable Objectキュー(署名は預かるだけ・検証しない) relay_agent.pyMacが取りに行く(ポート開放なし)・署名検証・配達後にack 📨 office_inbox へ合流
安全設計: 秘密鍵はMacとiPhoneにしか無い。中継のトークンが漏れても指示は偽造できない(Mac側でHMAC-SHA256検証・リプレイ防御・30日TTL・失効ワンタップ)
🤖 これから(P5・仕様確定済み)
別の Claude Code / OpenClawMCPツール: office_status / office_instruct mcp_office.pystdio JSON-RPC・ネットワークを開かない 📨 office_inbox へ合流

🛡 品質の仕組み — 「テストが通るまで」ではなく「攻撃に耐えるまで」

10章verify.sh 検証章
66単体テスト(常時)
15中継E2E(実wrangler)
139+敵対レビューAI 累計
93+修正した所見 累計

各フェーズは 設計WF(複数案→敵対→統合仕様)→ 実装 → 敵対的レビューWF(次元別に発見→反証)→ verify全green → コミット の同じ規律で回している。 レビューは「褒める」ためではなく壊しにかかるため(指示が恒久ロストする穴・鍵の漏洩窓・無限クラッシュループ等を実際に修正してきた)。

🙋 あなたの操作待ち — この2つだけ(各5分)

① P3: 中継を本番デプロイ → iPhoneで実機演習

Cloudflareアカウント認証が必要なため代行不可。ローカル検証(wrangler dev)は全green済み。

cd ~/Downloads/works/"AI Office/relay"
npx wrangler login                                   # 初回のみ・ブラウザ認証
TOKEN=$(openssl rand -hex 32)
echo "$TOKEN" | npx wrangler secret put RELAY_TOKEN
npx wrangler deploy
cp office_relay.example.json ~/.claude/office_relay.json && chmod 600 ~/.claude/office_relay.json
# ↑中の url を deploy で出たURLに・token を $TOKEN に書き換え → オフィス画面の「📱スマホ連携」でペアリング
② P4: 常駐を登録 → 再起動テスト

ログイン永続の変更なので最終操作はあなたで。インストーラ・plist生成・検証はすべて準備済み。

bash "$HOME/Downloads/works/AI Office/macapp/install.sh"
launchctl enable   gui/$(id -u)/com.senao.aioffice
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.senao.aioffice.plist
launchctl kickstart -k gui/$(id -u)/com.senao.aioffice
open http://localhost:4780   # 表示確認 → Mac再起動後も自動で上がればOK
# 停止したい時: launchctl bootout gui/$(id -u)/com.senao.aioffice(kill は自動復活するので使わない)

🚀 次の一手