★ DEVICE 本籍 ★ AI 適用 チュートリアル

SlimeTree-RLM チュートリアル ― 入門から高度利用まで

SlimeTree-RLM の本質は SharedArrayBuffer (SAB) + WASM (Rust port) の組合せにあります。「npm install して呼ぶだけ」の rapper engineering では到達できない領域 ― cross-origin isolation / shared linear memory / WebWorker pool / 永続化と監査連鎖 ― を、ソースコード付きで 3 章に分けて解説します。

対象: 製品エンジニア、Web/SaaS でハルシネーション抑制レイヤを組込みたい AI プロバイダ、規制業務に audit chain を埋め込む 業界 SI

なぜ rapper engineering では使いこなせないのか

SlimeTree-RLM のパフォーマンスと監査特性は、以下 4 つの要素の同時成立を前提とします。これらは「ライブラリを呼ぶ」ことでは満たせません。

Q1. なぜ SharedArrayBuffer (SAB) が必要なのか

SlimeTree-RLM の linear memory を メインスレッド + LLM 推論 Worker + 監査 Worker 等で共有するため。WASM の linear memory は既定で per-Worker 隔離 ― SAB を使わなければ Worker 間のデータコピーが発生し、RLM 設計の中核である「単一の意味記録体を多視点から同時に書込/読出/監査」が成立しません。

Q2. なぜ COOP/COEP の HTTP headers 設定が必要なのか

SAB は Spectre 等のサイドチャネル攻撃対策から、ブラウザが cross-origin isolation を要求します。Cross-Origin-Opener-Policy: same-origin + Cross-Origin-Embedder-Policy: require-corp の両方を返さないと SharedArrayBuffer はコンストラクタすら呼べません (ReferenceError または undefined)。SaaS / 静的ホスティング既定では無効です。

Q3. なぜ Rust → WASM のビルドフラグが必要なのか

Shared linear memory を使う WASM は、Rust 側のビルドで RUSTFLAGS=-C target-feature=+atomics,+bulk-memory,+mutable-globals + --target wasm32-unknown-unknown + nightly Rust の build-std が必要です。wasm-pack build の既定では shared memory 版は出力されません。

Q4. なぜ WebWorker pool 設計が必要なのか

SAB を生かすには、各 Worker が同じ WASM モジュールを 共有メモリ参照で インスタンス化する必要があります。postMessage で WASM Module + Memory を移譲し、各 Worker が独立に同じ linear memory を操作する設計 ― これは「単に Worker を起動する」とは別の問題です。

本チュートリアルの方針: 各章ごとに 「動く最小コード」+ 「なぜそうなるか」+ 「ハマる点と回避策」 を提示します。Stack Overflow を切り貼りして動かなかった現場が、本書のソースをそのまま組込めば動く水準を目標。

3 章構成

Chapter 1 / 入門編

最小組込 ― WASM ロードと最初の write/read

SlimeTree-RLM の WASM モジュールを静的ホストから読込み、 write() / read() / verify_audit_chain() を 1 つの HTML ファイルで動かす。SAB なし・single-thread。なぜこれだけでは応用にならないかも明示。

  • 配布形態 (npm / static / esm)
  • HTML 1 ファイル動作確認
  • API 3 つの最小例
  • single-thread / no-SAB の限界
Chapter 1 を読む →
Chapter 2 / 中級編

SAB + COOP/COEP + Rust→WASM ビルド

cross-origin isolation を有効化し、Rust ソースから shared-memory 版 WASM を自分でビルド。WebWorker から SAB 経由で同一 linear memory に同時アクセス。

  • COOP/COEP の nginx / Apache / Express 設定
  • Rust → wasm32 ビルド (atomics+bulk-memory)
  • wasm-pack カスタムテンプレ
  • Worker から SAB 参照
Chapter 2 を読む →
Chapter 3 / 高度編

WebWorker pool + 永続化 + 実例 2 件

Worker pool で並列 write/read、OPFS / IndexedDB / Node.js fs での audit chain 永続化、(1) LLM ハルシネーション抑制ループ (2) Enterprise audit pipeline の 2 実例。

  • WebWorker pool (3〜N 並列)
  • OPFS / IndexedDB / Node fs 永続化
  • 実例 1: LLM ハルシネーション抑制
  • 実例 2: 業務 audit pipeline
Chapter 3 を読む →

前提知識

JavaScriptES2022、async/await、ES modules (import)、WebWorker
Rust (任意・Ch2 以降)1.75 以上 (nightly チャンネル推奨、build-std のため)、cargowasm-pack
HTTP serverHTTPS 必須 (SAB の secureContext 要件)、レスポンスヘッダ自由に設定可能なこと
ブラウザChrome 92+ / Firefox 79+ / Safari 15.2+ (cross-origin isolation 対応版)
OS / ToolingWSL2 / Linux / macOS、curlgitnode 18+ (任意)