コンテンツにスキップ

AI Des2WF — 抽象化アーキテクチャ

Des2WF は 1 つのデザインフレームを編集可能なワイヤーフレームへ変換します。文言と元のレイアウトを保ちながら、 表現を簡略化します。backend は PostgreSQL と入力取得、ワーカーは解析・分類・組み立て・成果物、 プラグインはキャンバスへの構築を担当します。

モデル: 1 → 多の分解

デザインコンポーネントは複数のプリミティブ、または採用されたキットバリアントで表現されます。 spec の 5 ケース(layout_frame、instance、compose、text、unmatched)は変わりません。 元のジオメトリとグラフィックの出典は追加フィールドであり、新しいノードケースではありません。

mode=primitives が省略するのはキット選択であり、グラフィック分類ではありません。バージョンが一致する 元画像 PNG があれば、両 mode で文脈を使う画像分類を行います。mode=kit はさらに、サンプリングの多数決と 決定的ガードによって登録済みキットバリアントを選択します。キットやモデルの失敗時もプリミティブへ フォールバックし、ワイヤーフレーム生成を継続できます。

flowchart LR
    A["スナップショット + 任意の元画像 PNG"] --> B["決定的な parse"]
    B --> C["任意のキット選択"]
    C --> D["出現箇所ごとの分類 + スコープ付き override"]
    D --> E["census → apply_kit"]
    E --> F["描画方針の記録 → emit → score"]
    F --> G["成果物 + 結果 → プラグイン構築"]

判断層: census

レイアウト出力前に、元ノードが何を表現するかをフラットな census に記録します。 行種別は text、box、region、rule、ink、ornament、instance、glyph です。

  • glyph は元の図形を保持し、インスタンスの実際の override も保持します。
  • ink は画像プレースホルダーになります。大きい領域では対角線付きの箱、小さい領域では塗りつぶしのスロットです。
  • ornament は装飾と確認された要素を記録しますが、描画しません。削除すると auto layout が変わる場合は 透明なフロースロットを残します。空の絶対配置装飾は省略できます。
  • apply_kit は採用バリアントで表現できる行だけを置換します。文言と独立して描画される子孫も表現が必要です。
  • 描画対象の各行は出力 lineage に対応しなければなりません。ornament の意図的な非描画は明示的な例外であり、 任意の行を黙って削除してよいという意味ではありません。

グラフィック方針: アイコン名の一覧ではなく文脈

候補は構造から発見します。テキストの子孫を持たない、可視のグラフィック所有ノードが対象です。 サイズ、レイヤー名、ビットマップかベクターかという形式だけで意味を決めません。

strong model は出現箇所ごとに、画面全体、元グラフィックの切り抜き、所属コントロールの切り抜き、 祖先、名前、バリアント、境界、ローカルラベルを参照します。ラベルは所属コントロール内のものに限定し、 単に近いテキストを使いません。同じコンポーネントでも文脈により扱いが変わり得るため、 AI の判断をコンポーネント・バリアント・ファイル・利用箇所をまたいで自動キャッシュしません。

role 適用する基本方針
direction、action、state、identity、list_marker 元の形を保持。矢印、単独のハンバーガーメニュー操作、SNS/ブランド識別、状態表示は情報を持つ
unknown または不確かな根拠 保持
content_image、redundant_artwork 高信頼で simplify を提案し、情報を持たないと判定した場合だけ簡略化
decoration 同じガードを満たした場合、対角線付きプレースホルダーではなく描画を抑止

redundant_artwork は、候補のローカルラベルに実在する label_node_id も必要です。 既存ラベルの横にある装飾的なメニュー絵は対象になり得ますが、「メニューアイコンなら置換」という一律の規則ではありません。 装飾と分類されたボタンの飾りやフッター背景を画像プレースホルダーにしてはいけません。 confidence はモデルの判断であり、校正された確率ではありません。

根拠画像、制限、フォールバック

backend は JSON スナップショットと同じ Figma バージョンの PNG を、absolute bounds と 要求ユーザーの資格情報で取得します。不変の元画像キーにはフレームのサブツリーハッシュとレンダーハッシュを含めます。 バージョン情報がなければ、バージョン未固定の画像を取得しません。

ワーカーは PNG 形式、最大 32,000,000 ピクセル、正の元境界、アスペクト比の一致 (設定された 2px/0.5% の許容差)を検証します。白背景へ合成し、1280px の全体像、 最大 512px のグラフィック切り抜き、最大 1024px のコントロール切り抜きを用意します。

分類は 1 バッチ 6 件、最大 3 並列、分類処理全体で 180 秒です。全候補を対象にし、セクションとコントロールを 再帰的に交互配置して、密な枝が先頭バッチを独占しないようにします。先頭 120 件で打ち切る制限はありません。 切り抜きのバッファは画面全体ではなく、処理中のバッチ単位で作ります。

根拠画像の欠落・破損・過大サイズ・境界不一致、プロバイダー障害、不正/不完全な返答、 未知/重複 ID、タイムアウトでは元の図形を保持します。未完了候補にはフォールバック理由を残します。 この制限下で、毎回すべての候補が分類される保証はありません。

明示的な人手 override と監査

運用者は organization・project・file に限定した graphic_override_v1 を設定できます。 ノード指定は、マスターコンポーネント ID とバリアントが完全一致する指定より優先され、 重複レコードが競合した場合は保持を優先します。明示的な simplify override は ink であり、 ornament ではありません。生成は override を読みますが、AI 判断を override として自動保存しません。 旧 metadata-only verdict は生成で使いません。ストア を参照してください。

結果成果物と結果ドキュメントの両方に graphic_classification を保存します。内容は prompt/model、 元画像・根拠のハッシュ、提案、適用判断、フォールバック理由です。 record_rendered_policy はキット適用後に実行されます。親の元グラフィックやキットインスタンスが子を覆う場合、 子の simplify 提案は独立した見た目の変更ではありません。提案だけでなく rendered_kind、rendered_reason、covered_by を確認します。

出力: mode と独立した 2 つの layout

API とワーカーの既定値は互換性のため layout=absolute のままです。 現在のプラグインは layout=auto を明示送信し、レイアウト選択 UI はありません。

layout 契約
absolute 描画対象を root 直下に元座標で配置。再フローせず、深さが 2 を超えると平坦性ゲートが失敗
auto 子が 1 つのラッパーも含めて元の所有階層を保持。新しい兄弟間隔の実測ではなく、元の itemSpacing、padding、alignment、baseline、wrap を保持

source_layout は軸ごとの FIXED/HUG/FILL、最小/最大寸法、絶対配置、 stroke のレイアウト参加、非表示のフロー状態を運びます。絶対配置オーバーレイはフローの外に置きます。 SPACE_BETWEEN の子が 1 つの場合、元の境界から中央配置が確認できるときだけ中央へ配置します。 これらは opt-in のジオメトリ情報であり、フィールドを持たない旧 spec の構築動作は維持します。

text_geometry は font family、元の weight、行高、文字間隔、自動リサイズ、leading trim、縦揃え、 段落のジオメトリを保持します。同じファイル内の元テキストを clone することで、PALT のような読み取り専用の OpenType 設定も維持できます。文言はそのまま、文字色は中立色のリテラルで、デザインの style binding は持ちません。 フォント代替や必要な再フローで改行は変わり得るため、診断が必要です。完全なピクセル一致の保証ではありません。

Materializer の責務

元グラフィックの検索は source_file_key で限定します。プラグインは既定マスターを作り直すのではなく、 実際の元インスタンスと override を clone します。clone に失敗した場合は実際の元ノードの PNG を使えます。 元ノードがない、またはファイルが異なる場合は、可視のフォールバックと診断を出します。

図形は縦横比を保って拡縮し、両軸で中央に配置します。既に正しい寸法なら不要なリサイズをしません。 ラッパーは元の意図的なはみ出しを許可し、auto-layout 親内でも clone した子は絶対配置します。

通常の面は中立色の境界へ脱スタイル化し、罫線は元の辺、選択状態は塗りつぶしの印を保持できます。 保持対象の元グラフィックは塗り直さないため、識別用図形の元の色が残る場合があります。 中立化は「すべてのフォントと塗りを削除する」ことではありません。

キャンバスの既定名は des2wf · {source_name}、元の名前が空なら spec version を使います。 明示的な spec.name が優先され、上流 CODE2WF の出力名も保持します。

組み立ての判断

キットはプロジェクト単位のデータであり、コード内の名前対応表ではありません。選択単位は component set ではなく variant です。多数決の提案を unreachable、copy_truncated、slot_overflow、 imagery_heavy、size_implausible、unknown_atom で検証します。 同じ layer path は同じ書き込み先なので、スロット容量は一意の path 数で数えます。 提案を拒否した場合はプリミティブ表現を維持します。

スコア

ds@1.0 は出力可能性ゲート × 文言保持率で、文字列を多重集合として比較します。 unmatched、文言の創作/位置ずれ、文字上の対角線、境界重複、absolute の過剰な深さでゲートが失敗します。 欠落文字列は別のゲートではなく保持率を下げます。integrity、flatness、ink_covered、 boundary_fidelity は weight 0 の診断値です。

キット選択または画像分類によって llm_assisted が設定された場合、band の margin は 0.07、 それ以外は 0.0 です。mode だけでは band や再現性は決まりません。画像分類の再実行で同じ判断になる保証はありません。

1.0 はアイコン精度や視覚品質の合格判定ではありません。固定 JSON コーパスには元画像 PNG がなく、 保守的フォールバックとレイアウトの不変条件を確認します。モデルを mock したテストは方針の安全性を確認するものです。 視覚品質には実プロバイダーでの実行と、再生成したプラグイン出力の画像確認が必要です。 完了後のレンダーレビューは findings を追加し、生成の完了状態は変えません。