diff --git a/README.md b/README.md index 91070c3..691ad33 100644 --- a/README.md +++ b/README.md @@ -121,6 +121,7 @@ an explicit `adapted-from` marker in its frontmatter. | `command-index` | `author: ours` — just/Makefile command-index convention (standard targets, auto-doc; idea 3/18) | | `code-review` | `adapted-from: mattpocock/skills @ 84fdeffd` (MIT) — two-axis + Fowler baseline; output: caveman-review format | | `writing-skills` | `adapted-from: obra/superpowers @ 6.2.0` (MIT) — TDD-for-skills core + ideya 8 self-skill-authoring | +| `web-search` | `author: ours` — search_web tool (pi-extension) + policy: when to search, «без поиска» session-off | | all other `skills/*` | `author: ours` | Adaptation policy: a clone is rewritten to our conventions (`.tasks/` boards, diff --git a/skills/web-search/SKILL.md b/skills/web-search/SKILL.md new file mode 100644 index 0000000..6d118ee --- /dev/null +++ b/skills/web-search/SKILL.md @@ -0,0 +1,80 @@ +--- +name: web-search +author: ours +version: 0.1.0 +description: > + Use when the user asks for fresh or external information — news, prices, + versions, dates, current facts — or says «поищи», «найди актуальное», + "search for", "look up". Search the web via the `search_web` tool (a + search-capable model from llm-web-proxy with live citations) instead of + guessing from training data, refusing, or scraping by hand. Search is ON by + default — the agent decides when to call it; the user can turn it OFF for + the rest of the session by saying «без поиска» / "no search". +--- + +# Web Search + +Твоя основная модель не имеет веб-поиска. `search_web` — тул, который +отправляет запрос search-модели (веб-поиск DeepSeek с цитатами) на чистом +контексте и возвращает ответ с [1][2]-источниками. **Поиск включён по +умолчанию** — не отказывайся и не выдумывай, когда нужны свежие данные. + +## Когда вызывать search_web + +- Юзер просит «поищи X», «найди актуальное про Y», "search for", "look up". +- Вопрос про свежие/внешние данные: новости, цены, версии, даты релизов, + «что сейчас актуально про X», подтверждение факта, где обучение могло устареть. +- Нужна проверка внешнего факта или ссылки, которой нет в контексте сессии. + +## Когда НЕ вызывать + +- Вопросы по коду/проекту, дизайн, рефакторинг — ответ в репо и контексте. +- Уже загруженные доки/файлы сессии — не ищи то, что уже прочитано. +- **Юзер сказал «без поиска» в этой сессии** — тул не вызывать до конца сессии. + +## Как вызывать + +``` +search_web: + query: "последняя версия Rust — что нового в релизе" +``` + +Один запрос = **один вызов** тула. Не спамить серией поисков — если ответа +не хватило, уточни запрос один раз. + +## Правила ответа + +1. Ответ с [1][2] — сохраняй нумерацию, в конце дай список источников. +2. `sources` пустой — так и скажи: «без источников», **не выдумывай URL**. +3. Пустой/неудачный поиск — честно: «поиск не дал результата», не галлюцинируй. +4. Если поиск вернул ответ на другом языке — переведи, источники оставь. + +## Механизм «без поиска» + +- **Default**: поиск включён — сам решаешь, когда нужны свежие данные. +- Юзер: «без поиска» / "no search" → **перестань вызывать search_web до конца + сессии**. Подтверди одной строкой. Не искать даже если запрос «поисковый». +- Юзер снова: «поищи» → верни поиск (повторный грант, до конца сессии). +- Следующая сессия — снова поиск включён (грант не переживает сессии). + +## Ошибки тула + +`search_web failed: ...` — честно скажи юзеру, что поиск недоступен +(модель не настроена: `/search-status`, или сервер llm-web-proxy не запущен: +`lwp serve`), и предложи путь дальше. + +## Настройка + +Search-модель (default `lwp/deepseek-pro-search-web`, pro-search): +1. env `PI_SEARCH_MODEL` — например `lwp/deepseek-flash-search-web` +2. файл `~/.pi/search-model.json` — `{ "model": "..." }` + +Тул `search_web` — pi-расширение `~/projects/pi-extensions/extensions/search-web.ts` +(репо `OpeItcLoc03/pi-extensions`). Правки — commit + push → `just install` → `/reload`. + +## Out of scope + +- НЕ автоматический поиск в каждом сообщении — тул зовётся, когда запрос + реально требует внешних данных. +- НЕ скрейпинг страниц (это browser-cdp): search_web ищет и отвечает с цитатами, + а не открывает конкретные URL.