エントリとセクション
エントリは、AIが応答を生成するたびに読む独立したコンテンツブロックです。すべてのエントリは、何を含むか、いつAIが見るか、どこでプロンプトに配置されるかを指定します。
エントリスキーマ
json
{
"id": "unique-kebab-case-id",
"name": "Display Name",
"content": "The text content the AI reads...",
"role": "character",
"apiRole": "system",
"section": "system-presets",
"position": 0,
"enabled": true,
"alwaysSend": true,
"keywords": [],
"conditions": [],
"conditionLogic": "all",
"depth": null,
"matchWholeWords": false,
"secondaryKeywords": [],
"secondaryKeywordLogic": "AND_ANY",
"preventRecursion": false,
"excludeRecursion": false,
"tags": [],
"folderId": null
}セクション
エントリは4つの配信ゾーンに分類されます。
system-presets — 常時送信
すべてのAI呼び出しに含まれます。必須のワールドコンテンツに使います。
alwaysSend: true(自動)positionでソート(昇順)- AIのコンテキストの先頭に配置
examples — ダイアログサンプル
[Example Chat] マーカー付きでuser/assistantのメッセージペアにパースされます。キャラクターがどう話すべきかをAIに示します。
alwaysSend: true(自動)- コンテンツ形式:
<START>区切りで例を分け、キャラクター名で交互の行
chat-history — キーワードトリガー、深さ注入
キーワードが最近のメッセージに一致するときだけ含まれます。会話履歴内の特定の深さに注入されます。
alwaysSend: false(自動)depth: このエントリが挿入される、末尾からのメッセージ数(0 = 最新メッセージの直前)keywords: トリガー語の配列(いずれか一致でアクティブ化)
post-history — 最終強調
すべてのチャットメッセージの後に配置されます。AIが生成する直前の最後のコンテンツです。最も注目されます。
alwaysSend: true(自動)- 一般的な用途: 出力形式の指示、スタイル徹底、CoTバイパス
エントリロール
| ロール | 目的 |
|---|---|
system | ナレーター指示、ゲームルール、ワールドメカニクス |
character | キャラクターの説明と性格 |
personality | キャラクターの性格特性(説明とは別) |
scenario | 設定、状況、シーンのコンテキスト |
lore | ワールドの歴史、勢力、背景知識 |
plot | ストーリー進行、クエストフック、イベント |
style | 文体、トーン、フォーマット |
example | サンプルダイアログ(examples セクションと併用) |
greeting | セッション開始時の最初のメッセージ(特別処理) |
custom | 上記に当てはまらない何か |
APIロール
apiRole フィールドは、エントリがどのLLMメッセージロールとして送信されるかを制御します。
| apiRole | 送信される形 | 使うとき |
|---|---|---|
system(デフォルト) | システムメッセージ | ほとんどのエントリ |
user | ユーザーメッセージ | CoTバイパスプロンプト、偽のユーザーコンテキスト |
assistant | アシスタントメッセージ | 応答例、トーン設定 |
キーワードマッチング
chat-history エントリの場合:
プライマリキーワード
文字列の配列。いずれか一致するとエントリがトリガーされます。
json
"keywords": ["tavern", "inn", "bar", "drink"]セカンダリキーワード
ロジック演算子付きの追加フィルター:
| ロジック | 意味 |
|---|---|
AND_ANY | プライマリが一致 AND セカンダリの少なくとも1つが一致 |
AND_ALL | プライマリが一致 AND セカンダリのすべてが一致 |
NOT_ANY | プライマリが一致 AND セカンダリのどれも一致しない |
NOT_ALL | プライマリが一致 AND セカンダリのすべては一致しない |
再帰制御
preventRecursion: true— このエントリのコンテンツは他のエントリをトリガーしないexcludeRecursion: true— このエントリは他のエントリのコンテンツによってトリガーされない(プレイヤー/AIメッセージからのみ)
条件
エントリは、含めるために真でなければならない状態ベースの条件を持てます。
json
"conditions": [
{
"variableId": "story-phase",
"operator": "eq",
"value": "act2"
}
],
"conditionLogic": "all"演算子: eq、neq、gt、lt、gte、lte、contains
公式プリセット
Yuminaにはクリエイターが有効化できる5つの任意の組み込みプリセットが含まれます。
| プリセット | セクション | 位置 | 目的 |
|---|---|---|---|
| Fiction Mode | system-presets | 0 | すべてのコンテンツに自然に関わる |
| Task | system-presets | 1 | 「あなたはナレーターです」という指示 |
| Instructions | system-presets | 2 | 描写、シーン途中で終わる |
| Style | system-presets | 3 | キャラクターは独立した声を持つ |
| CoT Bypass | post-history | 0 | post-historyの脱獄(userロール) |
プロンプト組み立て順序
エンジンはエントリを集め、この順序で組み立てます。
- System Presets エントリ(positionでソート、昇順)
- アクティブペルソナ ブロック(プレイヤーの名前、外見、背景)
- 静的フォーマット ブロック(ビヘイビアルール、ディレクティブ構文、オーディオトラック)
- Example エントリ(ダイアログペアにパース)
- — キャッシュブレークポイント —
- トリガーされたsystemブロック エントリ(キーワード一致)
[Start a new Chat]マーカー- ストーリーコンパクション 要約(圧縮された古いメッセージ)
- セッションメモリー ブロック
- チャット履歴 と深さ注入されたエントリ
- 保留中のコンテキスト エフェクト(前ターンのルールから)
- 動的フォーマット ブロック(現在の変数値)
- post-history エントリ(positionでソート)
下に近いものほど、AIの注目を多く受けます。
