ドキュメント: Policy末尾配置の理由と合成例の順序を実装に合わせて修正

This commit is contained in:
nrslib 2026-02-07 21:11:46 +09:00
parent d92f5aa4fe
commit e506c4035f

View File

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