Word Compiler:長編小説のためのコンテキストコンパイラ
← 全記事問題
LLMで小説を書くことは、フラストレーションとの戦いです。いつの間にかプロンプトエンジニアになっています。システムメッセージを手作りし、コンテキストをコピー&ペーストし、セッションをまたいでキャラクターの詳細を管理し、モデルが「何を知っているか」を追いきれなくなり、物語がコンテキストウィンドウを超えるにつれて文章の質が落ちていく様子を眺めることになります。既存のツールはLLMをオートコンプリートのように扱っており、クリエイティブなルールに縛られたコラボレーターとしては見ていません。
著者の本当の貢献——声、世界観、物語の意図——は、場当たり的なプロンプトに散らばり、セッションの間に消え去り、次の生成パスに何も引き継がれません。
コンパイラという比喩
Word Compilerはそのアーキテクチャをソフトウェアコンパイラから借用しています。コンパイラはソースコードを読み込み、中間表現を構築し、制約の中で最適化を行い、機械語を出力します。Word Compilerは同じことを散文に対して行います。
| コンパイラの概念 | Word Compilerの対応物 |
|---|---|
| ソースコード | Bible。キャラクタードシエ、スタイルガイド、場所、物語のルール、禁止フレーズのキルリストを含む構造化ドキュメント |
| 中間表現 | Narrative IR。シーンごとのイベント、キャラクターの変化、認識論的状態の抽出 |
| 最適化 | バジェットエンフォーサー。プロンプトがコンテキストウィンドウに収まることを保証する優先度ベースの圧縮 |
| 静的解析 | リンター(生成前)とオーディター(生成後) |
| リンカー | クロスシーンのブリッジング。Narrative IRのキャラクター状態と未解決のテンションによる継続性 |
| コード生成 | LLM呼び出しそのもの。唯一の非同期かつコストのかかるステップ |
ユーザーはプロンプトを書きません。構造化フィールド(キャラクタードシエ、感情的なビートを持つシーン契約、アンカーライン、サブテキスト契約)を埋めると、コンパイラがコンテキストのペイロードを組み立てます。
実際に何を解決するのか
長編作品のコンテキストウィンドウ問題を解決します。
私たちはLLMに適切なスコープで適切なコンテキストを与える、三リング構造のアーキテクチャを構築しました。
Ring 1(システムメッセージ)はプロジェクトレベルのアイデンティティを担います。声のルール、POVポリシー、文章の構造、語彙の好み、キルリスト、構造的な禁止事項、ポジティブおよびネガティブな例文です。
Ring 2はチャプターレベルの継続性を担います。チャプターのアーク、読者の認識論的状態、アクティブな伏線、過去のシーンのNarrative IRから導出された累積的なキャラクター状態です。
Ring 3はシーンレベルの詳細を担います。シーン契約、発話キャラクターの声のフィンガープリント、感覚的なパレット、アンカーライン、前のチャンクまたは前のシーンからの継続性ブリッジ、アンチアブレーションガードレールです。
合計がトークンバジェットを超えると、コンパイラは圧縮します。最初にRing 1を削り、次にRing 2、最後の手段としてRing 3を削ります。各リング内では、優先度の高い番号から順に、免疫のないセクションを削除します。免疫セクション(キルリスト、構造的ルール、POVポリシー、シーン契約、声のフィンガープリント、アンカーライン、アンチアブレーション)は決して削除されません。
デフォルト設定ではRing 3に最低60%のシェアを割り当てており、40%を下回るとリンターが警告を出します。
10万語の小説は、原稿全体をチャットウィンドウに貼り付けた場合のように第20章で劣化しません。コンパイラは各チャンクが必要とするコンテキストを正確に組み立てます。
プロンプトエンジニアリングなしにクリエイティブコントロールを実現します。
Bibleはスタイルの唯一の真実の源泉であり、バージョン管理されています。すべての編集が新しいバージョンを作成し、古いバージョンに対して生成することをゲートが防ぎます。声の決定、キャラクターの口癖、構造的な禁止事項、キルリストのすべての言葉。すべてが一つのドキュメントに。著者は指示ではなく意図を指定します。
シーン計画も同様に精密です。それぞれが物語の目標、感情的なビート、望む読者への効果、サブテキスト契約(表面的な会話と実際の会話、エンフォースメントルール付き)、アンカーライン(逐語的にマークするか、エネルギーターゲットとして残せる著者が書いた文)、そして避けるべき失敗モードを定義します。コンパイラはそのすべてをプロンプトに変換します。
散文に静的解析と監査を適用します。
生成のたびに、オーディターはBibleに照らして散文をスキャンします。
- キルリスト違反:リスト上のすべての単語とフレーズを大文字小文字を区別せずにスキャンします
- 文章の分散:文の長さの標準偏差が3.0語を下回り、リズム的に単調なパッセージにフラグを立てます
- 段落の長さ:著者が設定した最大文数を超える段落にフラグを立てます
- 認識論的リーク検出:キャラクターの知識を過去のシーンのNarrative IRと照合します。キャラクターが学んだことが一度も示されていないことに言及した場合、フラグが立てられます
- 伏線/回収の追跡:シーン計画で埋め込まれるまたは回収されると言われていたことと、IRが実際に起きたと言っていることを比較します。原稿完成時に、一度も解決されなかった伏線にフラグが立てられます
- サブテキストコンプライアンス:散文とシーンのサブテキスト契約をモデルに送り、いずれかのキャラクターが言外の意味を明示的に口にしていないかチェックします
これらはリンティング、型チェック、インテグレーションテストの散文版です。未解決の重大な監査フラグは、ワークフローゲートを通じてシーンが進むのをブロックします。警告と情報レベルのフラグは進行をブロックしませんが、著者が解決または却下するまで表示され続けます。
構造化された制約を通じて声を構築します。
Word Compilerにおける声とは、すべてのプロンプトにコンパイルされる重層的な制約です。Bibleはキャラクターレベルの声のフィンガープリント(語彙のメモ、口癖、比喩的なレジスター、禁止言語、対話のサンプル)とプロジェクトレベルのスタイルルール(ポジティブおよびネガティブな例文、文章の構造、比喩的な領域、語彙の好み)を持ちます。Ring 1はこれらをシステムメッセージに組み立てます。Ring 3はシーン内の発話キャラクターすべてのキャラクターレベルの声のフィンガープリントを注入します。
著者がコントロールを保ち続ける方法
すべてのステージで決定権は著者の手にあります。
あらすじを貼り付ければ、システムがドラフトのBible(キャラクター、場所、トーン、キルリスト)を生成します。あるいはすべてをゼロから構築することもできます。すべてのフィールドは編集可能です。Bibleはあなたのものです。
シーン計画には、人間のストーリーテラーだけがうまく埋められるフィールドが含まれています。サブテキストフィールドは、キャラクターが表面上何を話しているかと実際に何を伝えているかを、エンフォースメントルール付きでキャプチャします。アンカーラインは著者が書いた特定の文で、逐語的に表示されなければなりません。失敗モードは何を避けるべきかを述べます(「どんでん返しを電信するな」「メロドラマ的な台詞はなし」)。
生成はチャンクごとに進みます。各シーンの目標語数(著者が設定可能で、デフォルトは800〜1200語)は、一定数のチャンクに分割されます。著者はそれぞれを確認し、承認、編集、または却下とマークします。編集こそが本当の著者活動が起きる場所です。学習器は監視しており、AIが書いたものと著者が残したものの差分を分析し、編集のタイプを分類しています:フィラーの削除、トーンの変化、「見せろ、言うな」への置換、感覚的な追加。
著者はすべての監査フラグを、対応可能または却下としてマークすることで解決します。解決データはカテゴリ別に監査の品質を経時追跡するシグナル対ノイズ指標に供給されます。自動修正は何もありません。
シーンが完成すると、システムは起きたことの構造化された表現を抽出します:イベント、導入された事実、読者に明かされた事実、隠された事実、キャラクターの変化、植え込まれた伏線、実行された回収、キャラクターの位置、未解決のテンション。記録は未検証の状態から始まります。著者はそれがクロスシーンの継続性に供給される前にレビューして確認します。
リビジョン学習器からのBible提案とパラメータアナライザーからのチューニング提案は、著者が承認または却下するまで保留状態で届きます。システムが提案し、著者が決定します。
AIアシストコーディングから借りたアイデア
私たちはコードについて考えるのと同じ方法でこれを構築しました。
コードコンパイラはソースを最適化された機械語に変換します。コンテキストコンパイラは構造化されたクリエイティブな意図(キャラクター、声のルール、シーン契約)をLLMプロンプトに変換します。著者は高レベルの抽象化を扱い、コンパイラが翻訳を担当します。
生成前のリンティングは、構造的な問題(声のサンプルの欠如、Ring 3の枯渇、BibleにないPOVキャラクター)が散文になる前に捕まえます。生成後の監査は、著者がチャンクを承認する前に散文の問題(キルリスト違反、文章の分散、サブテキストの崩壊)を捕まえます。二つのシステム、パイプラインの二つの瞬間。欠陥を早期に捉えます。
ワークフローゲートは、CIがマージの規律を強制するのと同じように品質の規律を強制します。未解決の重大な監査フラグが残っている場合、CIの失敗したチェックがあるのにPRをマージできないのと同様に、シーンを完了としてマークできません。
Bibleはバージョン管理されています。各バージョンは個別に保存されるため、特定のチャンクが生成されたときに有効だったルールを正確に取得できます。
コンパイラのIRがクロスモジュールの最適化を可能にするのと同様に、Narrative IRはストーリーコンテンツを機械可読にします:明かされた事実、隠された事実、キャラクターの知識の差分、植え込まれた伏線、実行された回収。そのデータはクロスシーン分析と読者状態シミュレーションに供給されます。
バジェットエンフォーサーはレジスタアロケータのように機能します。ハードな制約(コンテキストウィンドウから予約出力トークンを引いたもの)の中で動作し、どのリングセクションをどの順序で削除するかのトレードオフを行います。Ring 1が最初に圧縮され、次にRing 2、そしてRing 3です。免疫セクション(キルリスト、シーン契約、声のフィンガープリント)は決して削除されません。
リビジョン学習器は編集から好みを推論します。生成されたテキストと承認されたバージョンを文レベルで差分し、各変更を分類し、繰り返しパターンをグループ化し、信頼度が閾値を超えるとBibleの更新を提案します。設定は不要です。何をしているかを見て、変更を提案します。
監査システムは自身の精度を追跡します。すべての解決されたフラグは対応可能または却下としてマークされ、その比率(決定されたもの全体に占める対応可能なものの割合)が、オーディターが助けになっているか誤報を出しているかを著者に伝えます。
AIアシストコーディングをコイントスではなくコラボレーションのように感じさせた同じフィードバックループ、品質ゲート、そしてコンパイルの規律が、散文でも機能するという賭けです。著者はクリエイティブな権限を保持します。機械が組み立て、制約、パターン検出を担当します。
試してみる
Word Compilerはオープンソースでローカルで動作します。リポジトリをクローンし、pnpm dev:allを実行すれば準備完了です。生成にはAnthropic APIを使用するため、APIキーが必要です。
まだ初期段階です。荒削りな部分や未解決の問題があります——それがこのプロジェクトの意義でもあります。しかしコアループは機能しています:Bibleを入力し、コンパイルされたコンテキストを出力し、各パスの後に監査と学習を伴いながら散文をチャンクごとに生成します。AIで小説を書いていて、コンテキストウィンドウとの戦いに疲れているなら、ぜひご意見をお聞かせください。


