Files
hakorune/docs/development/proposals/ideas/tools/cax/technical-roadmap.md

5.0 KiB
Raw Blame History

CAX Technical Roadmap - PostBootstrap Implementation Plan

Target: Mini-VM完成後の即実装
Duration: 2-3週間でMVP完成
Dependency: Mini-VM安定化 + 既存PluginHost基盤

🏗️ Implementation Phases

Phase 0: Foundation (Mini-VM安定化待ち)

Duration: Mini-VM完成まで
Tasks:

  • 設計文書化(完了)
  • Gemini実装コード保存完了
  • ChatGPT設計仕様保存完了
  • 既存PluginHost.Invoke調査
  • IPC実装方式決定WebSocket/Unix Socket

Phase 1: Core Implementation (Week 1)

Duration: 5日間
Deliverables: 基本IPC + 最小GUI

Backend (3日)

// src/tools/cax_server/
├── ipc_server.rs      // IPC通信層
├── cabi_debugger.rs   // フック・ログ・検証
├── plugin_manager.rs  // アタッチ・デタッチ管理
└── main.rs           // サーバー起動

Frontend (2日)

// gui/cax/
├── src/
   ├── components/
      ├── Explorer.svelte    // プラグイン一覧
      ├── Timeline.svelte    // ライブログ表示
      └── Inspector.svelte   // 詳細表示
   ├── api/
      └── cax_client.ts     // IPC通信
   └── App.svelte            // メインアプリ
└── tauri.conf.json

MVP機能

  • プラグイン一覧表示
  • アタッチ/デタッチボタン
  • リアルタイムログ表示JSONL
  • 基本フィルタリング

Phase 2: Advanced Features (Week 2)

Duration: 5日間
Deliverables: Record/Replay + Hot-swap

Record/Replay System

// レコーダー
pub struct CallRecorder {
    output: BufWriter<File>,
    format: RecordFormat, // JSONL | TLV
}

// リプレイヤー  
pub struct CallReplayer {
    calls: Vec<RecordedCall>,
    mock_mode: bool, // プラグイン無しで再生
}

Hot-Swap Management

// ホットスワップ管理
pub struct PluginSwapper {
    state: SwapState, // Attached | Quiescing | Swapping
    pending_calls: AtomicU64,
    swap_queue: VecDeque<SwapRequest>,
}

GUI拡張

  • 録画/再生コントロール
  • ホットスワップウィザード
  • コール詳細インスペクター
  • 簡易スクリプト実行

Phase 3: Polish & Advanced (Week 3)

Duration: 5日間
Deliverables: 本格運用可能版

Analytics & Visualization

// ヒートマップ・統計表示
interface CallStats {
  plugin: string
  method: string  
  call_count: number
  avg_time_us: number
  error_rate: number
  hot_paths: string[]
}

Advanced Scripting

// CAX Macro API
using cax.api as CAX

CAX.enable({profile: true, assert: "warn"})
CAX.attach("map.so")

// 自動化スクリプト例
local errorCount = CAX.filter({outcome: "error"}).count()
if errorCount > 10 {
    CAX.hotswap("map.so", "/backup/map_stable.so")
}

Production Features

  • 詳細設定・永続化
  • エクスポートHTML/PDF レポート)
  • プラグイン署名検証
  • 権限・セキュリティ管理

🎯 Success Criteria

MVP Success (Phase 1)

  • プラグインアタッチ→ログ表示まで1クリック
  • リアルタイム表示でパフォーマンス影響<5%
  • 基本的なABIバグ型ミスマッチを検出

Advanced Success (Phase 2)

  • Record→Replay でCI回帰テスト実現
  • ホットスワップでサービス無停止更新
  • 複雑なABIバグを根本特定

Production Success (Phase 3)

  • 日常開発ワークフローに統合
  • 他言語Python/C++)開発者も使用開始
  • 学術発表・OSS公開で注目獲得

🔧 Technical Implementation Notes

IPC選択基準

WebSocket: ブラウザベースGUI用開発容易
Unix Socket: ネイティブGUI用性能優先  
→ 両対応、設定で選択可能

フック実装位置

// PluginHost::invoke の入口・出口
impl PluginHost {
    pub fn invoke(&self, call: &PluginCall) -> Result<Value> {
        CAX_TRACER.pre_call(call); // 🎯 フック点1
        let result = self.invoke_impl(call);
        CAX_TRACER.post_call(call, &result); // 🎯 フック点2  
        result
    }
}

パフォーマンス最適化

// 条件付きトレース(オーバーヘッド最小化)
if CAX_ENABLED.load(Ordering::Relaxed) {
    tracer.log_call(call_info);
}

// 非同期ログ書き込み
async fn log_writer(mut receiver: Receiver<LogEntry>) {
    while let Some(entry) = receiver.recv().await {
        // バッファリング→バッチ書き込み
    }
}

📅 Realistic Timeline

Prerequisite: Mini-VM安定化推定2-3週間
Implementation: CAX開発3週間
Total: 約6週間でプロダクション品質版完成


Note: この実装計画は、Geminiの172行実装とChatGPTの設計仕様を基に、現実的なタイムラインで作成。Mini-VM完成後、即座に実装開始可能。