---
document_type: "spec"
service: "MOMENTRY_CORE"
title: "5W1H+ Agent v1.0.0"
date: "2026-05-07"
version: "V1.0"
status: "active"
owner: "Warren"
tags:
  - "momentry"
  - "agent"
  - "5w1h"
  - "llm"
  - "summary"
related_documents:
  - "../../TRACE/TRACE_API_REFERENCE_V1.0.0.md"
  - "../CHUNK_DEFINITION_V1.0.0.md"
  - "../VECTOR_SPEC_V1.0.0.md"
---

# 5W1H+ Agent v1.0.0

## 概述

對每個 cut scene 產生 5W1H+ 摘要（parent summary + child enhanced text）。

## 遞迴 Context（Story So Far）

採用方案 B：每段 scene 的 LLM call 帶入前面所有 scene 的摘要。

```
Scene 1 → LLM(context="")                  → summary_1
Scene 2 → LLM(context=summary_1)           → summary_2
Scene 3 → LLM(context=summary_1+summary_2) → summary_3
```

Context truncation：保留最近 ~500 tokens 的前情，避免超過模型 limit。

## Prompt 結構

每個 scene 的 LLM call 包含以下資訊：

| Prompt 區塊 | 來源 | 說明 |
|------------|------|------|
| Scene time | chunk metadata | 目前 scene 的時間區間 |
| Dialogue | sentences in scene | 該 scene 內的對話行 |
| Actors present | face_detections JOIN identity_bindings JOIN identities | 場景中出現的演員 |
| Objects detected | pre_chunks WHERE processor_type='yolo' | YOLO 偵測到的物體 |
| Face traces | face_detections JOIN identity_bindings JOIN identities | trace 與對應的演員名稱 |
| Active speakers | pre_chunks WHERE processor_type='asrx' JOIN identity_bindings | 說話者與對應的演員 |
| Story so far | 前 N 個 scene 的 parent_summary | 前情摘要 |

## LLM 模型

| 項目 | 值 |
|------|-----|
| 模型 | Gemma4 26B MoE (Q5_K_M, 18GB) |
| 部署 | llama-server（Metal GPU, port 8082） |
| 環境變數 | `MOMENTRY_LLM_SUMMARY_URL=http://localhost:8082/v1/chat/completions` |
| 溫度 | 0.1 |
| max_tokens | 4096 |

## 產出

| 輸出 | 儲存位置 | 說明 |
|------|---------|------|
| parent_summary | `cut.summary_text` | 5 句 scene_summary（5W1H 流暢段落） |
| parent_5w1h | `cut.metadata -> 5w1h` | 結構化 who/what/where/when/why/how |
| child_enhanced | `sentence.text_content` | 自包含的 enhanced sentence（供 embedding + search） |
| child_5w1h | `sentence.content -> 5w1h` | 逐句的 5w1h 結構 |
| embedding | `sentence.embedding` | EmbeddingGemma 300M 768D（產出 summary 後自動 vectorize） |

## API

```
POST /api/v1/agents/5w1h/analyze
POST /api/v1/agents/5w1h/batch
GET  /api/v1/agents/5w1h/status
```

## Pipeline 觸發

Job Worker 中的 P4 trigger：

```rust
// all_completed + has_cut + has_asr → run_5w1h_agent(db, uuid)
```

## 選型文件

詳細方案比較：`M5_workspace/2026-05-07_5w1h_recursive_summary_design.md`
