開発者の秘密の庭:空間オントロジーがプロンプトエンジニアリングなしでLLMをどのように調整するか
公開日: 30 April 2026
プロンプトエンジニアリングは脆いです。80,000トークンになると、あなたのアラインメントルールはノイズの中に埋もれ、LLMは会話の最初にあなたが求めたことを忘れます。私の解決策は? テキストによるアラインメントではなく、スペース. 私は開発ワークスペースを、内密な秘密の庭から公開の鍛冶場まで、4つの同心円状の信頼圏に構造化しました。各圏はファイルシステムの物理的な領域です。LLMはルールを思い出させる必要はありません;ファイルのパスがそれらを含みます。これがどのように機能するか、そしてなぜこの空間によるアラインメントアーキテクチャが、よりレジリエントであるかという話です。`system prompt`500行の。
これは長い記事です。
ゆっくりとお座りください。
- トック
-
[]
観察:プロンプトエンジニアリングは砂の城だ
3週間、Opencodeを使ってGradleプラグインを開発しました。3つの異なるLLM、Kimi K2.6、GLM-5.1、DeepSeek-V4-Proを使用して(唯一の生存者ですが、これは別の話既にここで説明済み。)。私のエージェントガバナンス手法以前の記事で詳しく説明しました。はAsciiDocファイルに基づいています —AGENT.adoc, INDEX.adoc, PROMPT_REPRISE.adoc— 約30,000トークンのルール、バックログ、履歴を毎セッションの開始時に読み込む。
それにもかかわらず、このドキュメントインフラストラクチャにもかかわらず、二つのことが私を驚かせました:
-
LLMは忘れる。 EAGERファイルの先頭に絶対的なルールがあるにもかかわらず、累積トークン数が60,000を超えると(初期コンテキスト+会話)、Kimi K2.6は提案し始めた`Write`エラーは構成ファイルに対して圧倒的だった。 GLM-5.1はFirebaseのトークンと置換すべきプレースホルダーを混同した。 ルールは書かれていた — LLMはそれらを*見なくなった*。
-
ガバナンスそのものが問題となる。 Hot/Warm/ColdArticle sur la rotation de backup. コンテキストの爆発を避けるために、しかし EAGERファイルはまだ1414行だったJ’ai documenté cet audit ici. ガバナンス — LLMの飽和から保護するために設計された — は、LLMを飽和させていた。
プロンプトのトークン数に依存しないアラインメント機構が必要でした。
答え:テキストによって揃えるのをやめ、テキストによって揃え始めるスペース。
四つの信頼の円 : 空間的オントロジー
私のフォルダー`workspace/(中に~/workspace/`) は pas Git リポジトリではありません。 これは 私の仕事全体のルートです — コード、ドキュメント、トレーニング、インフラストラクチャ。 そしてこれは 4 つのゾーンに構造化されており、これらは単なる整理ルールではなく、しかしこれらは同心円状の信頼の円:
レベル |
ラベル |
物理的なゾーン |
CVS |
可視性 |
0 |
秘密の庭 |
`workspace/`根 |
何も |
親密 — 考えは自由、コミットも公開もしない |
1 |
金庫 |
|
プライベートGit (ソロ) |
秘密、トークン、ビジョンアーカイブ。一人だけ。 |
2 |
図書館 |
|
Git プライベート (拡張) |
教育データ, SPG/SPD, JSONスキーマ. 信頼の輪が識別されました。 |
4 |
公共の鍛冶場 |
|
Git 公開 (Apache 2.0) |
ソースコード、プラグイン、テスト、技術ドキュメント。 |
| テーブルにレベル 3 はありません。レベル 3 は一時的なレベル transitoire です:これはコンテンツの`office/`匿名化され、オープンデータとして公開する準備ができている。 物理的に固有の領域はなく — データの状態であり、場所ではない。 |
各レベルは特定の質問に答えています:
-
どこにアイデアを置けばいいのか、まだ共有する準備ができていない、たとえ小さな圈でも? → 秘密の庭。Gitなし。プレッシャーなし。
-
APIトークンをどこに保存すれば漏洩しませんか? → 金庫`configuration/`) 物理的に隔離されています。他のリポジトリが誤って参照することはありません。
-
コ・構築する研修カタログをパイロットのOFと共にどこで作るか? → 図書館`office/`). バージョン管理され、コラボレーションが可能だが、プライベートな。
-
オープンソースのGradleプラグインを産業化する場所は? → 鍛冶場`foundry/`). 公開、フォーク可能、CIでテスト済み。
このオントロジーはLLMで消費可能. ファイルを読み込むときに`foundry/plantuml-gradle/src/`, 彼は暗黙的に知っている:「私はサークル4にいる — パブリックコード、必須テスト、秘密はなく、教育データもない」。 彼はそれを思い出させるプロンプトを必要としない。
秘密の庭 : CVS外の空間
これは最も重要な概念 — そして最も反直感的な概念です。
根`workspace/ない.git/. そこに住んでいるドキュメント (`WORKSPACE_VISION.adoc, WORKSPACE_AS_PRODUCT.adoc, WORKSPACE_ORGANIZATION.adoc— そして今あなたが読んでいるそれ(それに由来するものは)バージョン管理されたり、共有されたり、まして私以外によって読み返されたりすることを意図していません。これらは発芽中の思考。
|
秘密の庭は自然に out-of-CVS です。バージョン管理の欠如が思考の自由の条件です。そこで書くのは読まれるため — 自分の考えを明確にするため。 |
しかし、この自由には代償がある:一つ`rm`あれは偶然のことで、戦略的思考の何ヶ月分が消えてしまう。解決策は庭をバージョン管理することではない(それはそれを消すことになる)―それはそれを映す最も制限された円の中で。
.gitignore` をガバナンス設定として
の根底に`workspace/, 1つのファイル.gitignore`最小が宣言する履歴管理ポリシー秘密の庭のファイル:
.goosehints
.goose
Ce .gitignore`クラシックなGit関数はありません(.git/`根元で). それは~のように振る舞うガバナンス設定ファイル正確な質問に答えるもの: 秘密の庭の人工物で歴史化される価値があるものはどれか、そして純粋に一時的なものはどれか?
-
リストされたファイルの`.gitignore`—
.goosehints,.goose— エージェントによって生成される一時的なアーティファクト。戦略的価値はない。歴史化されない。 -
ファイル`.adoc`根の—
WORKSPACE_VISION.adoc,WORKSPACE_ORGANIZATION.adoc,WORKSPACE_AS_PRODUCT.adoc,WHAT_THE_GAMES_BEEN_MISSING.adoc,depots_implementes_strategie.adoc,synthese-LLMs-long-contexte.adoc— ではないないの中`.gitignore`これらは歴史化すべき遺物です。
Le `.gitignore`はガバナンススキーマ: そこにリストされていないものはすべてスナップショットの候補となる。そしてLLMはこのファイルを読むことで、アーカイブすべきものと無視できるものを正確に知っている——プロンプトで思い出させる必要がない。
スナップショットのメカニズム
作成しました`configuration/vision-archive/: すべての日付付きスナップショット.adoc`ルートの、プライベートリポジトリにコミットされた`configuration/`. 各ブレインストーミングセッションはスナップショットを生成します:
DATE=$(date +%Y-%m-%d)
mkdir -p /home/cheroliv/workspace/configuration/vision-archive/$DATE
cp /home/cheroliv/workspace/*.adoc /home/cheroliv/workspace/configuration/vision-archive/$DATE/
cd /home/cheroliv/workspace/configuration && git add vision-archive/ && \
git commit -m "vision-archive: snapshot $DATE"
この手順は、セッションの終わりに、LLM自身によってトリガーされ、この全体的なルーティングタスクが実行されます。各スナップショットは、時刻Tにおける戦略的思考の完全な状態を捉えます。
Gitの履歴の`configuration/`になる私の戦略的思考の伝記. 私は一つを作ることができます`git log — vision-archive/`そして私のビジョンの進化を、セッションごとに、日付ごとに見る。
作業日の後の履歴の実例:
$ git -C configuration log --oneline -- vision-archive/
1089d1b vision-archive: fin de session finale 2026-05-03
6b21eaf vision-archive: fin de session 2026-05-03-1300
1690f82 vision-archive: post-article 2026-05-03
28e6593 vision-archive: post-migration 2026-05-03
3707b78 vision-archive: snapshot 2026-05-03 — jardin secret initial
1日で5つのスナップショット。それぞれが復元ポイント。それぞれが戦略の起源におけるマイルストーン。
フォルダー`configuration/vision-archive/latest/`常に含んでいる作業コピー最後のスナップショット、素早い参照として、Gitの履歴をナビゲートする必要なく。
そしてLLMにとって、それは整合性のオラクル: 彼が現在の実装と過去にアーカイブされたビジョンの間に矛盾を観測したとき、それを報告することができます。
金庫 : configuration/ Spring Cloud Configのように
`configuration/`それは視覚のアーカイブだけを含んでいるわけではない。その第一の(および将来の)機能は、~であることだ。スプリングクラウドコンフィグサーバー. すべてのシークレット、トークン、認証情報、およびインフラストラクチャの記述子は、ここに存在します。プライベートなGitリポジトリにあり、所有者だけがアクセスできます。
なぜファイルではなく、別個のリポジトリを使うのか`.env`各プロジェクトで?
-
意図しないシークレットのプッシュ :不可能です。シークレットは、公開プロジェクトが誤って参照できない非公開リポジトリにあります。
-
監査 : Gitの履歴は、設定の各変更の痕跡を示します。誰が何を、いつ変更したか、どのSHAハッシュを使用したか。
-
ロールバック :`git revert`� 壊れた構成上で。 スナップショット、手動バックアップなし。
図書館 : office/ としてデータ消費可能
`office/`それは開発作業のドキュメンテーションの対応である。それはブログ記事、技術仕様、トレーニング教材(FPA、SPG/SPD の 38 のコースディレクトリ、JSON スキーマ、Bloom/Harrow/Krathwohl のタクソノミー)を含んでいる — それが構成するものすべてである。教育教材。
しかし`office/`単なるドキュメントの引き出しではない。それは構造化データのソースGradle プラグインの`foundry/`消費しています。ブログ記事の中に`office/`は、プラグインによってHTMLに変換されるエントリです。AsciiDocのSPGは`office/metiers/FPA/`これは、オーケストレーターがパースしてスライド、クイズ、およびビデオカプセルを生成するアーティファクトです。
Et le `build.gradle.kts`根本に`office/`ビジネスコードではありません — それはプラグインエコシステムの消費スクリプト. 彼は言う: 「私が使っているGradleプラグインはこちらです、ワークスペースのコンテキストはこちらです」
�鍛冶場: foundry/ としての実装
foundry/`を含む工業化されたコード. 54 Git リポジトリ, そのうち 7 は現在、によって管理されている.agents/`. ここがビジョンが実行可能になる場所 — Gradleプラグイン、CI/CD、JUnit5 + Cucumberのテスト。
との関係`office/`は双方向です:
-
office/→foundry/: 教育データはプラグインが消費する原材料です。 -
foundry/→office/:プラグインは豊かにするデータを生成する`office/` — le `graph.json`graphify-gradleのコンパイル済みスライダーデッキ、ビルドレポート
長所/短所 : 空間アラインメント 対 プロンプトアラインメント
2つのアプローチを比較しましょう。
クラシックアプローチ:プレプロンプトによるアラインメント
�✅ プロ |
❌ 反対 |
実装が簡単です。 システムプロンプト内のテキストブロック。 |
長いコンテキストでは脆弱 : ルールは80Kトークン以降で見失われる。 |
一般的な規則(トーン、フォーマット)に機能します。 |
検証不可能 : LLMがルールを破るのを妨げるものは何もない。 |
プロジェクトのアーキテクチャを考え直す必要はありません。 |
�譲渡不能 : 各リポジトリはルールを再宣言する。 |
純粋に宣言的 : LLMはそれがすべきだと知っているが、何もそれを妨げない。 |
このアプローチ : 空間オントロジーによるアラインメント
�✅ プロ |
❌ 反対 |
長文コンテキストに対してレジリエント : ルールはファイルパスにあり、遠いプロンプトにはない。 |
初期インフラストラクチャコスト : ワークスペースを円形に構成するには時間がかかります。 |
機械的に検証可能 : 秘密の中`foundry/ |
規律が必要 : 新しい貢献者は円を理解する必要がある。 |
Transférable : 一つ`AGENT.adoc`標準は、すべての新しいプロジェクトにサークルを公開します。 |
空間的制約のみをカバー — コードスタイルはプロンプトに残る。 |
設計によるセキュリティ : 一つ`git push`以来`foundry/ |
|
LLM以外のエージェントによって消費可能 : Gradleオーケストレーターはサークルに従ってルーティングできます。 |
主な利益は守備的(セキュリティ、可視性)ではなく — それはクリエイティブ. LLMがオントロジーによって構造化された空間で作業しているとき、それはどのプロンプトでも許されないことをすることができる:デルタを観察する
関係代数のワークスペースとデルタObservable
LLMが巡回するとき`foundry/, それはあるを持っている構造化データの格子ノード (プラグイン、ファイル、テスト、依存関係)、型付きエッジ (`import, depends_on, generates, tests), 構成関係と順序関係 (`training-gradle`リポジトリを抽出→`slider-gradle`スライドを生成します →`capsule-gradle`動画を編集して
この代数はどこにも平文で書かれていない — しかし、それは*観測可能*である。それぞれ`build.gradle.kts`依存関係を公開します。それぞれ`INDEX.adoc`相互参照を表示します。
LLMはこの代数を観察し、それを検出するデルタシステムがすでに生産できるものと、ビジョンが描写するものの間のギャップ
このデルタから、彼は(または、それは)いくつかの業務エキスパートの地図— CDA (アプリケーション設計開発者、Kotlin/Gradle/JHipster) と FPA (成人向けプロフェッショナル講師、教育法/Qualiopi/Bloom) — 各専門家に不足しているものを特定する。
Expert CDA (Kotlin/Gradle/JHipster)
├── Plugins : jhipster-gradle-plugins, plantuml-gradle,
│ codebase-gradle
├── Delta : pas encore de SPG CDA formalisé,
│ pas de fine-tuning expert CDA
Expert FPA (Pédagogie/Qualiopi/Bloom)
├── Plugins : training-gradle, slider-gradle,
│ school-backoffice/forms, capsule-gradle
├── Matériel : 38 modules cours, SPG/SPD, taxonomies
└── Delta : parser AsciiDoc→JSON à créer,
orchestrateur à coder
LLMに何をすべきかを教える必要はない。デルタは構造から現れる。
コンテキスト複合ベクトル : RAG + pgvector + Graphify
リレーショナル代数は理論的な構築ではありません。それは*具体化された*三つのコンポーネントによって一つのコンテキストの合成ベクトルLLMのために
コンポーネント 1 — RAG LangChain4j + PostgreSQL pgvector
私はすでにLangChain4jを2つのプラグインで本番環境で使用しています:slider-gradle(4 providers LLM) と`plantuml-gradle`(7 プロバイダー). ONNX の埋め込み (AllMiniLmL6V2) データのインデックスを`office/`そしてソースコードの`foundry/`PostgreSQL + pgvector の中で。
このRAGは2つの次元で機能します:
-
Dimension data : ドキュメント`office/`(SPG, 記事, 形成, JSONスキーマ)
-
ディメンションコード:コードベース`foundry/`(Kotlinのソース, Cucumberのテスト, AGENT.adoc)
交差は、何(業務ドメイン)と*方法*(実装)の両方をカバーします。
コンポーネント 2 — Knowledge Graph Graphify
Graphifyは組み込まれています`plantuml-gradle`(109 tests, 380/380 PASS)と生成する`graph.json`— ノード、エッジ、および自動検出されたコミュニティを持つ構造化されたナレッジグラフ
RAGがベクトル類似性(ぼやけた)によって動作するのに対し、知識グラフは…で動作する正確な関係(決定的) :`graphify query`意味的なクエリについて (約50トークン),`graphify path`ナビゲートする,`graphify explain`説明するために。
コンポーネント 3 — Graphify インクリメンタル : 疎, 集約可能, 消費可能
これが建築上の重要な決定です。
Graphify は単一のリポジトリに存在してはなりません。それはある方法で生きなければならない。散らばった各プラグインで :
-
各プラグイン は Gradle タスクを含む`updateKnowledgeGraph`Graphifyを呼び出す自身のスコープでと生成する一つ`graph.json`ローカル。
-
* ビルドスクリプトの`office/
* 消費する`graphify-gradle`と`rootDir = /home/cheroliv/workspace`そして生成する`graph.jsonグローバルローカルグラフを集約する -
*各プラグインのRAG*を注入する`graph.json`グローバルのようにコンテキストフィルターLLMのクエリに対して
TÂCHE GRADLE (dans chaque plugin)
↓
graphify → graph.json (scope local)
↓
office/build.gradle.kts → graph.json (scope global)
↓
RAG pgvector (dans slider, plantuml, codebase...)
↓ ← injection du graph.json comme filtre
LLM (deepseek-v4-pro)
↓ ← observation algèbre relationnelle
↓ ← détection delta vs cartographies experts
PRIORISATION → prochaine tâche
結果:LLMは虚空を探さず、ナレッジグラフによって構造化された空間をナビゲートします。 「génère un diagramme」というクエリは、グラフの関連ノードに到達できます。
自動GDPR分類:LLMをルータとして
空間オントロジーはLLMを単に整列させるだけで満足せず — それに___を与えるGDPRの分類グリッド各データをその正当なゾーンにルーティングするために。
基準 |
LLM検出 |
アクション |
最大レベル |
個人データ (名前、メール、IP) |
パターン`@`, IP, 固有名詞 |
�匿名化 →`[OF_PILOTE]`またはレベル2のルーター |
2 |
トークン / シークレット / クレデンシャル |
パターン`sk-… |
ルーター → |
1 |
内部URL |
含む`localhost`, プライベートIP |
匿名化 → |
2 |
教育データ (SPG, コース) |
構造 Bloom/Qualiopi |
ルーター → |
3 |
ソースコード / テスト |
拡張`.kt`, |
ルーター → |
4 |
セッションの最後に、LLMは実行するグローバルタスク:
-
の読み込み`.gitignore`スナップショットから除外する一時的なアーティファクトと、履歴化する戦略的なアーティファクトを識別するためのルート
-
すべてのファイルのインベントリ`.adoc`根の`workspace/`
-
フィルタリング:リストされたファイルの除外`.gitignore`, すべての他を含む
-
中にコピー`configuration/vision-archive/$DATE/
とシンボリックリンクの更新`latest/ -
リポジトリへのコミット`configuration/`構造化されたメッセージと共に
-
各変更ファイルの自動GDPR分類(すべての円)
-
ルーティング : データ`office/
→ プライベートコミット, コード`foundry/→./gradlew check, 構成 → コミット -
構造化されたレポートとRGPDアラートおよびアーカイブの確認
Le `.gitignore`ルートはGitの設定ファイルではありません — それは履歴管理のガバナンスファイル. それはLLMが消費するスキーマを定義し、どの秘密の庭のファイルが戦略的伝記に入り、どれが捨てられるかを決定します。
LLMはもはや単なるテキスト生成器ではなくなった。それは情報管理者エコシステムの — 生産者、分類器、ルーター。
ロードマップ : AsciiDoc から LangGraph4j へ
今日、このガバナンスは 決定論的 です : LLM は AsciiDoc ファイルに記述された手順を適用します。これはフェーズ 1— LLMメモリを用いたプロンプトエンジニアリング。
La フェーズ 2それぞれの手順をあるものの中に抽出する型付き Gradle タスク :
./gradlew endSessionWorkspace → snapshot vision-archive
./gradlew endSessionProject → archive .agents/
./gradlew endSessionReport → rapport multi-zones
La フェーズ 3セッション終了プロセスをあるもののようにモデル化する状態グラフとhttps://github.com/langgraph4j/langgraph4j[LangGraph4j]:
[Start] → [Inventaire fichiers modifiés]
→ [Classification RGPD] (nœud ONNX)
→ [Branchement par cercle]
├→ cercle 0 → snapshot → commit
├→ cercle 2 → anonymisation → commit
├→ cercle 4 → archive → commit
└→ cercle 1 → commit configuration/
→ [Rapport] → [End]
このグラフは CI/CD でバージョン管理され、Gradle で実行され、プラグインの GitHub Secrets を介して設定されます。LLM はルーティングを決定する必要がなくなり — グラフがそれを行います。
このアーキテクチャが解決すること(とそれが解決しないこと)
|
空間オントロジーはすべてをカバーしない。 コードスタイルの規約、命名、アーキテクチャ設計の選択 — これらはすべてプロンプトに残る。 空間オントロジーが解決するのは、セキュリティ・可視性レイヤー各バイトが存在すべき場所と、それを見ることができる者。 |
これは彼女が具体的に提供するものです:
-
ない`git push`偶発的な秘密 : 秘密は`configuration/
(サークル 1). 公共プロジェクトは`foundry/(円4)。両方を横切る道はない。 -
業務コードはデータに含まれません :`office/
含む.adoc`, YAML, JSON スキーマ — ただし`.kt`. Le `build.gradle.kts`そこで暮らしているのは消費スクリプト、 ビジネスコードではありません。 -
戦略的思考が明らかにされていない : ビジョンのドキュメントは秘密の庭に生きています(CVS外のルート)。スナップショットは`configuration/`(私的な金庫)。信頼の輪を広げても、誰も戦略の創成を読まない。
-
自動優先化 : LLM は、関係代数(存在するもの)とエキスパートマッピング(必要なもの)の間のデルタを観測します。次の開発タスクはこのデルタから生じます。
結論:建築はディスコースとして
私はサイトのフッターに政治的マニフェストを掲載しません。 私はプロンプトに倫理的なルールを入れません。 アライメントはテキストの中にない——それは中にあるファイルシステム。
LLM がこの空間で作業しているとき、秘密を漏らすことはできません(経路がそれを防ぐため)。教育データとソースコードを混同することはできません(物理的な領域が異なるため)。80,000 トークンのセキュリティ ルールを忘れることはできません——なぜなら、そのルールはプロンプトの中ではなく、そこにあるからです。workspace/→configuration/ → office/→`foundry/`それぞれのファイルの読み込みは反応性がある。
これは、*secure by design*の原則をエージェントのアラインメントに適用したものです:LLMにルールを覚えさせないようにする。アーキテクチャによってエラーが構造的に不可能となるようにする。
そして、これはLLMに与えるもので、どのプロンプトにも与えることができないもの:能力を感じ取る彼がどこにいるか、何が存在し、何が欠けているか — そしてそれらから何をすべきかを導き出す。
参考文献
-
エージェントのEager/Lazyガバナンスに関する記事:AsciiDocを使ってAIエージェントを管理する
-
Hot/Warm/Coldメカニズムに関する記事 :スライドウィンドウと寒波
-
コンテキスト監査に関する記事:自分のガバナンスが問題になるとき
-
3つのLLMの比較に関する記事:DeepSeek-V4-Pro, Kimi K2.6, GLM-5.1
関連記事
31 May 2026
14 May 2026