Files
hakorune/docs/ideas/tools/cax/chatgpt-design-spec.md

4.7 KiB
Raw Blame History

CAX Design Specification (ChatGPT Analysis)

Generated by: ChatGPT
Date: 2025-09-21
Context: 30分集中設計セッション

🎯 Core Vision

Nyash C-ABI Explorer (CAX) - GUIでC ABI境界を「ぽいっと付け外し」「視覚化」「録って再生」「スクリプトで自動化」

🏗️ Architecture Design

Core + GUI 分離アーキテクチャ

Core (Rust/Nyash): 既存cabi-debuggerフック + IPCサーバ
  ↕ JSON-RPC/WebSocket
GUI (Tauri/Electron): Svelte/React/TypeScript フロントエンド

データフロー

PluginHost.Invoke → CABIDebugger → IPC → GUI Timeline
C ABI Calls → Real-time Logs → JSON Stream → 可視化

🎨 UX Design

画面レイアウト (5パネル構成)

┌─────────────┬─────────────────┬─────────────┐
│   Explorer  │   Live Timeline │   Inspector │
│ (attach/detach) │ (call flow)   │ (call details)│
├─────────────┴─────────────────┴─────────────┤
│          Record/Replay Controls            │
├─────────────────────────────────────────────┤
│        Console & Macros (Scripts)         │
└─────────────────────────────────────────────┘

操作体験

  1. 1クリック Attach: map.so の行をクリック→即時ログ流れる
  2. 色分け表示: 緑=Ok、黄=by-name、赤=Err/timeout、紫=ownership警告
  3. 録画/再生: ワンボタンでJSONL/TLV保存→プラグイン無しで再現
  4. ホットスワップ: disable→quiesce→reload をGUIウィザードで

🔧 Technical Features

1. Real-time Monitoring

  • Live Timeline: Swimlaneプラグイン別/スレッド別)
  • Call Inspector: 引数/戻り値/実行時間/ソース位置
  • Filter System: outcome:warn plugin:map 形式

2. Record/Replay System

// ログ1行例
{
  "ts": 1737153845.123456,
  "plugin": "map.so", 
  "type_id": 17,
  "method": "get/1",
  "args": [{"str":"key"}],
  "ret": {"str":"value"},
  "outcome": "Ok",
  "elapsed_us": 87,
  "by_name": false,
  "site": {"file":"apps/x.nyash","line":42}
}

3. Hot-Swap Management

安全手順: disable → wait(0 inflight) → fini → dlclose → dlopen → init → re-enable
GUI支援: 進捗表示 + state snapshot/restore任意

4. Macro Automation

// CAX API例
cax.filter({outcome:'warn'})
cax.attach("map.so") 
cax.replay("trace.tlv")
cax.hotswap("map.so", "/tmp/map_new.so")

📋 Implementation Roadmap

Week 1 (MVP Core)

  • IPCサーバsubscribe/attach/detach
  • Explorer + Timeline基本表示
  • Inspector引数/戻り値表示)
  • 記録JSONL形式

Week 2 (Advanced Features)

  • Signature Checkerextern宣言 vs 実装差分)
  • Record/Replayファイル形式
  • 簡易マクロ(フィルタ・基本操作)
  • Hot-swap wizarddry-run

🎨 GUI Implementation

Technology Stack

  • Frontend: Tauri + Svelte/React + TypeScript
  • IPC: JSON-RPC over WebSocket
  • Styling: TailwindCSS + 可視化ライブラリ

Key Components

// IPC API例
interface CaxApi {
  subscribe(params: {plugins: string[], level: string}): void
  attach(params: {plugin: string}): void
  hotswap(params: {plugin: string, path: string}): void
  record: {
    start(params: {file: string}): void
    stop(): void
  }
  replay(params: {file: string, mode: string}): void
}

🚧 Risk Mitigation

Performance

  • オーバーヘッド: 既定軽量log sampling、構造化は遅延ダンプ
  • 再入防止: スレッドローカルで抑止

Safety

  • クラッシュ隔離: detach≠dlclose最初は"ロード専用"
  • 権限管理: プロセス境界越えはエージェント方式

💡 Competitive Advantages

vs 既存デバッガ

  • 境界特化: C↔Nyash境界に最適化された可視化
  • 型安全: TypeBox境界での実時間検証
  • 構造化: ライフサイクル・所有権の一元観測

Innovation Points

  • Record/Replay: ABIコール完全再現回帰テスト革命
  • GUI Integration: コマンドライン→GUI操作の体験革新
  • Hot-Swap: 無停止デバッグ・プラグイン更新

Note: この設計は、C ABI動的呼び出しからの1分発想を30分で具体化したもの。実装の現実性と革新性を両立した世界初級ツールの仕様です。