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

145 lines
4.7 KiB
Markdown
Raw Normal View 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
```json
// ログ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
```nyash
// 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
```typescript
// 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分で具体化したもの。実装の現実性と革新性を両立した世界初級ツールの仕様です。