ai-searchlisted
Install: claude install-skill SanHsien/agent-astromech
# /ai-search — 帶引用的即時查證
把一個問題交給**有網路搜尋能力的模型**去查現在的網路,
要求它結論先行、每個事實附上你點得進去的來源、查不到就老實說查不到 ——
而不是拿訓練時的舊知識自信地填答。
> 🤖 Astromech 時刻:R2 一插進帝國終端機,讀出的是**當下**的艙門、監牢層、牽引光束狀態 ——
> 現場的即時數據,不是背出來的舊情報。ai-search 也是:查的是現在的網路、
> 附上點得進去的來源,不拿記憶填補。
## 為什麼需要
模型的內建知識有截止日,而且對「現在是什麼情況」這種問題最容易出錯:
定價、版本號、誰還在任、最新政策 —— 它會用訓練時看過的舊資料**自信地**答錯,
你還看不出它在猜。
這支 skill 把問題交給一個**真的會上網**的後端,並在提問裡釘死四條要求:
先給結論、**每個關鍵事實附來源連結**、可能過時的頁面主動標「這頁可能過時」、
查不到就說查不到。你拿到的不是一段可能是幻覺的敘述,而是**附出處、可複查**的答案。
## 動作
1. **決定要查什麼**:一句問題(位置參數,或用 `-` 從 stdin 讀長問題)。
🔒 問題會送給第三方模型,答案來自公開網路 —— 憑證、金鑰、個資、客戶資料**不要放進問題裡**。
2. **跑**:
```bash
<本skill目錄>/scripts/ai-search.sh "你的問題" --model <可選> --effort low|medium|high
```
常用選項:`--model`/`--effort`/`--strict`/`--soft-fail`/`--no-save`。
⚠️ **一律用完整路徑呼叫,不要打裸的 `ai-search`** —— `ai-search` 很容易撞名,
你的 `PATH` 上可能已經有另一支同名執行檔(別的工具、你自己寫的、或這支 skill 的私人變體)。
打裸命令名會叫到那一支,而且它可能**看起來也在查東西**,你不會發現叫錯了。
3. **看狀態**:除用法錯誤(exit 1,訊息在 stderr)外,stdout 最後一行一定是 `AI_SEARCH_STATUS: <狀態>`。
- `ok` → 進第 4 步。
- `skipped_*` → **本次沒有查證**(沒裝/沒登入);腳本已在畫面上印好逐步引導。
**回報時明講「本次略過查證」**,不要拿舊知識假裝查過。
- `failed_*` → 後端出錯(額度/網路/政策/版本/空回覆),原始錯誤已印在畫面上。
4. **把答案當線索,不是定論**:附的來源要**真的點進去**看一眼,尤其被標「這頁可能過時」的。
查不到就是查不到 —— 別自己用記憶補上;重大決策落地前再自己複查一次。
## 狀態與退出碼
**設計原則:狀態走 stdout,退出碼只分「真失敗」。**
沒裝後端是**預期中的降級**,不是錯誤 —— 若它回非零,在 `set -e`、skill runner
或 `$(…)` 裡會直接中止上層流程,「正常降級」根本輪不到人處理。
| 狀態 | 意思 | 退出碼 |
|---|---|---|
| `ok` | 有拿到答案(=後端回了非空輸出;引用真不真,靠你點連結複查) | 0 |
| `skipped_not_installed` | 找不到後端 CLI | 0(`--strict