diff --git a/docs/prompt-composition.ja.md b/docs/prompt-composition.ja.md index c1f07a0..77394cf 100644 --- a/docs/prompt-composition.ja.md +++ b/docs/prompt-composition.ja.md @@ -49,15 +49,17 @@ System Prompt: User Message: ┌─────────────────────────────────────────────┐ - │ Policy — 守るべきルール・禁止事項・品質基準 │ │ Knowledge — 判断の前提となる参照資料 │ │ Instruction — このステップでやるべき手順 │ │ Output Contract — 出力の構造定義 │ + │ Policy — 守るべきルール・禁止事項・品質基準 │ └─────────────────────────────────────────────┘ ``` Personaはエージェントの**identity**であり、タスクによって変わらない。system promptに置くことでLLMの応答全体を方向付ける。残りの4つはステップごとに変わるため、user messageに合成する。 +Policyをuser messageの末尾に配置するのは意図的な設計判断である。LLMは直前に読んだ内容に強く影響される(recency効果)。禁止事項やREJECT基準といった制約は、出力生成の直前にあることで遵守されやすくなる。Knowledge → Instruction → Policyという流れは「文脈を理解 → 作業を理解 → 制約を確認」という自然な認知順序にもなっている。 + 以下に各ファセットの典型的なファイル例を示す。 #### Persona — `personas/architecture-reviewer.md` @@ -213,24 +215,6 @@ system promptに配置される。役割の定義、境界、行動姿勢のみ **User Message:** ```markdown -## Policy - -### 原則 - -| 原則 | 基準 | -|------|------| -| DRY | 3回以上の重複はREJECT | -| Fail Fast | 不正状態は早期にエラー | -| 最小権限 | 必要最小限のスコープ | - -### 禁止事項 - -- **未使用コード** - 「念のため」のメソッド、将来用フィールド -- **オブジェクトの直接変更** - スプレッド演算子で新規作成 -- **フォールバックの濫用** - `?? 'default'` で不確実性を隠さない - ---- - ## Knowledge ### レイヤー構造 @@ -298,6 +282,24 @@ system promptに配置される。役割の定義、境界、行動姿勢のみ |---|------|------|--------| | 1 | `src/file.ts:42` | 問題の説明 | 修正方法 | \``` + +--- + +## Policy + +### 原則 + +| 原則 | 基準 | +|------|------| +| DRY | 3回以上の重複はREJECT | +| Fail Fast | 不正状態は早期にエラー | +| 最小権限 | 必要最小限のスコープ | + +### 禁止事項 + +- **未使用コード** - 「念のため」のメソッド、将来用フィールド +- **オブジェクトの直接変更** - スプレッド演算子で新規作成 +- **フォールバックの濫用** - `?? 'default'` で不確実性を隠さない ``` このように、独立したファイルがランタイムで1つのプロンプトに組み立てられる。ファイルの内容を変えればプロンプトが変わり、別のファイルを指せば別の組み合わせになる。