111 lines
4.0 KiB
Markdown
111 lines
4.0 KiB
Markdown
|
|
# ChatGPT5先生のANCP実装アドバイス - 2025-09-03
|
|||
|
|
|
|||
|
|
## 🎯 総評:全面支持 + 事故防止のガードレール
|
|||
|
|
|
|||
|
|
> 「めっちゃ良い計画。やる価値デカいにゃ。」
|
|||
|
|
> 「Phase 12のABI安定+MIR最適化の上に載る"上物"で、下層を壊さない。」
|
|||
|
|
|
|||
|
|
## 📋 Go/No-Go評価
|
|||
|
|
|
|||
|
|
- **Go(強)**: 即座にAI効率が出る、下層を壊さない
|
|||
|
|
- **注意**: 文法改革と圧縮を**混ぜない**。段階導入必須
|
|||
|
|
|
|||
|
|
## ✅ 成功条件(出荷時に断言できるライン)
|
|||
|
|
|
|||
|
|
1. **完全可逆**: `P → C → P` & `P → C → F → C → P` が常に一致
|
|||
|
|
2. **コンパイラ等価**: `compile(P)` と `compile(F)` の MIRハッシュ一致
|
|||
|
|
3. **曖昧性ゼロ**: 字句規則を形式化(最大貪欲+必要箇所のみセミコロン自動挿入)
|
|||
|
|
4. **ソースマップ2.0**: トークン単位の双方向マップ + BoxID
|
|||
|
|
5. **測定公開**: 削減率・パース時間・LLMトークン消費を数字で提示
|
|||
|
|
|
|||
|
|
## 📅 4週間実装計画
|
|||
|
|
|
|||
|
|
### Week 1(Phase 12.7-A)— 最小で回す
|
|||
|
|
- P↔C のトークンベース変換(正規表現は使わない)
|
|||
|
|
- 固定辞書20語から開始
|
|||
|
|
- `nyashc --compact/--decompact` + `sourcemap.json`
|
|||
|
|
- CI: 既存サンプル全ファイルで P→C→P 等価テスト
|
|||
|
|
|
|||
|
|
### Week 2(12.7-B)— スマート化
|
|||
|
|
- 文字列/コメント/正規表現リテラル非変換ゾーン認識
|
|||
|
|
- 自動セミコロン挿入の衝突検出
|
|||
|
|
- LLMパック: `--llm-pack` が最小仕様カード生成
|
|||
|
|
|
|||
|
|
### Week 3(12.7-C)— F層(読み込み専用)
|
|||
|
|
- F(Fusion)を入力専用で導入(出力はC)
|
|||
|
|
- MIR直行デコーダ + 等価性検証
|
|||
|
|
- 代表5命令だけ実装して漸進展開
|
|||
|
|
|
|||
|
|
### Week 4(12.7-D)— ツール/拡張
|
|||
|
|
- VSCode拡張(C表示⇄Pホバー)
|
|||
|
|
- `nyash fmt --mode=pretty|compact`
|
|||
|
|
- ベンチ自動化:CSV出力
|
|||
|
|
|
|||
|
|
## 🚨 設計の"赤線"(破ると事故る)
|
|||
|
|
|
|||
|
|
1. **Pは正典** - PR/レビューは常にPで行う
|
|||
|
|
2. **識別子衝突禁止** - 予約語→記号化でも曖昧にならない
|
|||
|
|
3. **Unicode強制しない** - 常にASCIIモード完備
|
|||
|
|
4. **クロージャ/可変長演算** - ASTテンプレで可逆に
|
|||
|
|
|
|||
|
|
## 💡 記号マッピング実務案
|
|||
|
|
|
|||
|
|
### ASCIIモード(デフォルト)
|
|||
|
|
```
|
|||
|
|
box → $ new → ~n me → m
|
|||
|
|
local → ~l return → ~r from → @
|
|||
|
|
init → # if → ? else → :
|
|||
|
|
loop → ~L
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 区切り規則
|
|||
|
|
- 記号トークンの左右に英数が来たら必ず1スペース自動挿入
|
|||
|
|
- `~[A-Za-z]` は将来予約
|
|||
|
|
|
|||
|
|
## 🔧 実装の鍵
|
|||
|
|
|
|||
|
|
### フォーマッタ可逆性
|
|||
|
|
- 変換は**トークン列→トークン列**
|
|||
|
|
- 文字列/テンプレ/正規表現の中身は一切触らない
|
|||
|
|
- 演算子の前置/後置/単項は個別トークン型
|
|||
|
|
- セミコロン自動挿入はスタック機械で判定
|
|||
|
|
|
|||
|
|
### CLI設計
|
|||
|
|
```bash
|
|||
|
|
nyashc --compact --mode=ascii|uni --emit=code,sourcemap
|
|||
|
|
nyashc --fusion --emit=fusion,mir --read-only
|
|||
|
|
nyash fmt --mode=pretty|compact
|
|||
|
|
nyash llm-pack <src-dir>
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 📊 KPI(毎週測定)
|
|||
|
|
|
|||
|
|
- コード削減率(P→C、P→F)
|
|||
|
|
- パース/フォーマット時間(ms/MB)
|
|||
|
|
- MIR生成時間の差(P vs C vs F)
|
|||
|
|
- LLMトークン削減率
|
|||
|
|
- 等価テスト失敗率(%)
|
|||
|
|
|
|||
|
|
## 🔐 互換性とバージョニング
|
|||
|
|
|
|||
|
|
- **ANCP v1**: `ancp://v1?mode=ascii|uni` マジックコメント
|
|||
|
|
- 将来の記法変更は `ver` と `feature_bits` で表明
|
|||
|
|
|
|||
|
|
## ⚠️ リスクと対処
|
|||
|
|
|
|||
|
|
| リスク | 対処 |
|
|||
|
|
|--------|------|
|
|||
|
|
| 読みづらさ | Pを正典・Cは生成物。編集は常にP |
|
|||
|
|
| デバッグ困難 | ソースマップ2.0で例外・ログをPへ逆引き |
|
|||
|
|
| 学習コスト | VSCode拡張のホバー復元とQuick Toggle |
|
|||
|
|
| LLMの誤解 | llm-packに最小仕様カード必須付与 |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 💬 結論
|
|||
|
|
|
|||
|
|
> **Phase 12.7 は"今やるべき"**。
|
|||
|
|
> ただし「常にPを正典」「トークン変換で可逆」「Fはまず入力専用」の三原則を守れば、
|
|||
|
|
> **90%圧縮×AI最適化**の恩恵を"事故ゼロで"取りにいけるにゃ。
|
|||
|
|
|
|||
|
|
**次の一歩**: AncpTranscoderのトークン仕様書(BNF/EBNF)作成!
|