This commit is contained in:
+34
-1
@@ -8,10 +8,12 @@ URL を HTTP GET してレスポンス本文を取得するツール。静的ペ
|
||||
WebFetch({ url: "https://example.com/article", timeout: 30 })
|
||||
```
|
||||
|
||||
- HTML はテキスト化されて返る(タグ等は除去)
|
||||
- HTML は **readability 抽出**でクリーンな Markdown に変換されて返る(ナビ・広告・ヘッダー・フッターを除去し、見出し・リスト・テーブル・リンクは保持)
|
||||
- JSON / XML / プレーンテキストもそのまま取得可能
|
||||
- リダイレクトは自動で追従
|
||||
|
||||
返却テキストは context 節約のため約 10,000 文字で切り詰められる。**スペースタスクでは全文(未切り詰め)が `source/` に保存される**ので、切り詰めが起きると末尾に `... (truncated; full version saved to source/<file>)` という案内が付く。全文を読みたいときは保存された `source/` のファイルを `Read` で開けばよい。
|
||||
|
||||
## いつ使うか
|
||||
|
||||
| 状況 | 使うツール |
|
||||
@@ -24,6 +26,27 @@ WebFetch({ url: "https://example.com/article", timeout: 30 })
|
||||
|
||||
WebFetch は軽量で速い。BrowseWeb はブラウザ起動コストがかかるので、できる限り WebFetch を優先する。
|
||||
|
||||
## クリーン本文抽出(readability)
|
||||
|
||||
取得した生 HTML は、記事本文だけを取り出す readability エンジンで処理してから返す。
|
||||
内部パイプラインは `HTML → linkedom で DOM 化 → @mozilla/readability で記事抽出 → turndown(+gfm) で Markdown 化`。
|
||||
|
||||
- **除去されるもの**: ナビゲーション、広告バナー、ヘッダー、フッター、サイドバー等のボイラープレート
|
||||
- **保持されるもの**: 見出し(`#` 記法)、箇条書き、番号付きリスト、テーブル(GFM 記法)、リンク、コードブロック
|
||||
- 相対リンクは取得 URL を基準に絶対 URL へ変換される
|
||||
- `selector` を指定すると、その CSS セレクタにマッチする要素のサブツリーだけをクリーン抽出する(見つからなければページ全体の抽出にフォールバック)
|
||||
|
||||
抽出に失敗するページ(記事構造のない LP、JS で本文を生成する SPA、空ページ等)では、
|
||||
従来の素朴なタグ除去にフォールバックするので WebFetch が失敗扱いになることはない。
|
||||
本文がほぼ空のときは SPA の可能性が高いので `BrowseWeb` に切り替える。
|
||||
|
||||
### 全文は source へ、切り詰め版は agent へ
|
||||
|
||||
- agent のコンテキストに返るのは約 10,000 文字に切り詰めた版(context 膨張を防ぐため)
|
||||
- **スペースタスクでは、切り詰める前の全文クリーン Markdown が `source/` に保存される**
|
||||
- 切り詰めが起きた場合、返却テキスト末尾に `... (truncated; full version saved to source/<file>)` が付く
|
||||
- 病的に巨大なページ対策として、`source/` 保存も 2MB で打ち切る(その旨ノートを付す)
|
||||
|
||||
## レスポンス履歴
|
||||
|
||||
各 WebFetch 呼び出しは `logs/webfetch-history.jsonl` に記録される。後から「どの URL を取得したか」を振り返れる。
|
||||
@@ -75,3 +98,13 @@ WebFetch は取得 body の先頭 8KB を sniff し(magic byte / NUL / 不正
|
||||
(例: `.xls` を `text/plain`)していても実バイトで検出する。バイナリを処理したい場合は
|
||||
`DownloadFile` で `input/` に保存し、`ReadExcel` / `ReadPdf` 等を使う。テキスト body は
|
||||
5MB で打ち切られる(末尾に `[truncated: body exceeded 5MB]`)。
|
||||
|
||||
## ソースライブラリへの蓄積(スペースタスク)
|
||||
|
||||
スペースのタスクで WebFetch がページ本文を取得すると、**クリーン抽出した全文 Markdown**(agent への
|
||||
返却で切り詰める前のもの)が `source/` に保存され、出典メタ(URL・タイトル・取得日時・サイズ)が
|
||||
`source/index.jsonl` に追記される。
|
||||
これにより「そのスペースのソース(資料)」が自動で溜まり、後から追加調査やグラウンディングに使える。
|
||||
同一 URL は重複保存しない(既に index にあればスキップ)。スペース文脈でないタスク
|
||||
(ephemeral / gitea issue 等)では従来どおり蓄積しない。`logs/raw/` への生データ保存は従来どおり。
|
||||
BrowseWeb(ブラウザ閲覧)や DownloadFile(`section: "source"`)も同じ `source/index.jsonl` に合流する。
|
||||
|
||||
Reference in New Issue
Block a user