> For the complete documentation index, see [llms.txt](https://getsquish.gitbook.io/squish/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://getsquish.gitbook.io/squish/ja/purimitibu/the-navigation-loop.md).

# ナビゲーションループ

ナビゲーションループとは、エージェントが実際に Squish を使う方法です。概要のコンタクトシートを読み、重要な領域を見つけ、その時間範囲だけをより高密度で Squish し直し、答えが見えるまで繰り返します。最後に、絶対タイムスタンプを引用します。リプレイではなく、取得です。

## 5つの手順

1. **概要。** クリップ全体に対して Squish を実行します — `squish clip.mov --json` （CLI）または `squish_video` ツール（MCP）を使って、ビジョンでシートを読み取ります。セルは時間順に、左→右、上→下で並びます。
2. **ナビゲート。** 重要な領域を見つけます。各セルには絶対タイムコードが含まれます。隣接するセルが似て見えるなら、変化がほとんどなかったことを意味します。2 つのセルの間に明確な視覚的断裂がある場合、そのギャップのどこかでイベントが発生したことを意味します。
3. **ズーム。** で再度呼び出します `開始`/`終了` 見つけたタイムコードを set に指定します — より狭いウィンドウの、より高密度なシートです。未確定な部分だけを対象にします。アドレスは絶対のままです。
4. **繰り返し** 答えが観測可能になるまで繰り返します。1 つの範囲だけが重要な場合に、クリップ全体を高密度で再読み込みしてはいけません。
5. **引用。** 絶対タイムスタンプで回答します（「0:07 でプレスが下りる」）— 誰でも元の動画と照合できます。

## 実際の実行例: 3,088 フレームではなく 34 フレーム

実際のエージェントセッションでは、シーンカットが **0.2 秒** で特定し、 **34 フレームに — クリップの 3,088 フレームではなく** （概要 → ズーム → ズーム）:

1. **概要。** クリップ全体を 1 回走査します。カットは隣接する 2 つのセルの間の明確な視覚的断裂として現れたため、その発生位置はその 2 つのタイムコードの間のどこかですが、セル間のギャップはまだ数秒ありました。
2. **ズーム。** で再実行します `開始`/`終了` set を 2 つの挟み込むタイムコードに設定します。同じイベントは、より狭いウィンドウの、より高密度なシート上で、もっと近い 2 つのアドレスの間に入ります。
3. **もう一度ズームします。** このウィンドウは、セルにサブ秒のタイムコードを付与できるほど短くなっています。カットは 0.2 秒差の 2 つのセルの間にあり、答えは直接観測できます。

3 回の呼び出し、34 フレームの取得、そしてソースに対して 0.2 秒精度で検証できる最終回答です。クリップを線形に追っていたら、この質問のように 1 秒未満の一部にしかない事柄のために、3,088 フレームすべてを処理する必要がありました。

## ループを安全にする不変条件

**タイムコードは常に絶対です。** ウィンドウ内のセル `1:00–1:30` スタンプします `1:07`、決して `0:07` — あらゆるズーム深度において、アドレスは元の動画の座標系に属します。ウィンドウ相対のタイムコードでは、次のズームでオフセット誤差がさらに増幅してしまいます。絶対タイムコードなら、どの深さで読み取ったアドレスでも回答で引用でき、次の呼び出しにそのまま渡せます。

**精度はウィンドウに合わせて変化します。** 1 秒以上離れたセルはスタンプします `m:ss`。より短いウィンドウでは、より細かいタイムコードが自動的にスタンプされます — `m:ss.d` セル間隔が 1 秒未満なら `m:ss.dd` 0.1 秒未満なら `m:ss.ddd` 0.01 秒未満なら — そのため、どれだけズームしても隣接するセルは常に異なるアドレスに解決されます。JSON 出力のタイムコードは、常にシート上にスタンプされたピクセルと一致します。

**アドレス可能な下限は 1 セルあたり 2 ms です。** 次より狭いウィンドウは *セル数 × 2 ms* では、エンジンが個別にシークできない瞬間を無理にアドレス指定するのではなく、どう進めるべきか（ズームアウトする、または密度を下げるか）を示すエラーで拒否されます。

{% hint style="info" %}
2 ms の下限とソース動画自体のフレーム間隔の間では、異なるアドレスでも同じ *フレーム*が表示される場合があります。それは、ウィンドウ内にそれ以上フレームがないという正直な最大ズーム時の答えであり、アドレス指定の失敗ではありません。
{% endhint %}

**シートに表示されたものは、すべて有効な入力です。** ループは往復処理です: シートから読み取り `1:07.3` 、そのまま渡し返します `開始`。どちらも `開始` と `終了` プレーンな秒数（`90`, `67.4`）とタイムコード文字列（`1:30`, `01:02:03`, `0:02.5`）。読み取ったものが、そのまま引用し、そのまま指定する対象です。

## あらゆる面でも同じループ

このループは、エンジンの 2 つのローカルな入口を通じても同一に動作します:

* **CLI** — `squish clip.mov --start 1:00 --end 1:15 --density 5x5`。ウィンドウ指定ありの実行では `"window": { "start": …, "end": … }` という JSON を返します。ウィンドウ指定なしの実行では出力は変わりません。 [CLI リファレンス](/squish/ja/rifarensu/cli.md).
* **MCP** — その `squish_video` ツールは任意の `開始`/`終了` パラメータ（秒数またはシートのタイムコード）を受け取り、 `timecodes[][]` スタンプされたピクセルに一致するものを返します。 [MCP リファレンス](/squish/ja/rifarensu/mcp.md).

その [ホスト型 API](/squish/ja/rifarensu/http-api.md) は、リクエストごとにクリップ全体を処理し、 `開始`/`終了` — ループはローカルツールで実行してください。

このループをエージェント全体に教えるには、 [エージェントスキル](/squish/ja/reshipi/agent-skill.md)をインストールしてください。シート上で尋ねるべき質問パターンについては、 [プロンプトライブラリ](/squish/ja/reshipi/prompt-library.md).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://getsquish.gitbook.io/squish/ja/purimitibu/the-navigation-loop.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
