forgeplan_search
Полнотекстовый поиск по всем артефактам в рабочем пространстве. v0.18.0 использует производственный BM25 (bm25 crate) с русской морфологией (Snowball stemmer), удалением шума из шаблонов и пакетным поиском O(N). Это основной инструмент агента для вопросов типа «найти что-либо о X» - он гораздо функциональнее, чем forgeplan_list (который работает только с метаданными), и значительно дешевле, чем цикл forgeplan_get.
Категория: Чтение артефактов
Когда агент вызывает эту функцию
Заголовок раздела «Когда агент вызывает эту функцию»- Пользователь спрашивает: «У нас уже есть решение о повторных попытках?» - агент выполняет поиск, прежде чем создать новый ADR.
- Проверка на дубликаты перед
forgeplan_new: убедиться, что ни один существующий PRD уже не охватывает эту тему. - Сбор контекста для
forgeplan_reason: извлечь 3-5 связанных артефактов для инициализации запроса ADI.
Входные параметры
Заголовок раздела «Входные параметры»| Имя | Тип | Обязательный | Описание |
|---|---|---|---|
query | string | yes | Поисковый запрос (поиск по ключевым словам BM25 + опциональный семантический поиск, без учета регистра). |
kind | string | no | Фильтр по типу артефакта (например, prd, rfc). |
status | string | no | Фильтр по статусу (например, active, draft). |
depth | string | no | Фильтр по глубине (tactical, standard, deep, critical). |
with_evidence | bool | no (по умолчанию: false) | Включать только артефакты со связанными доказательствами (R_eff > 0). |
no_evidence | bool | no (по умолчанию: false) | Включать только артефакты без доказательств (R_eff == 0). |
since | string | no | Фильтр по дате created_at (ГГГГ-ММ-ДД). |
no_expand | bool | no (по умолчанию: false) | Отключить расширение графа на 1 переход для лучших результатов. |
limit | integer | no (по умолчанию: 20) | Максимальное количество возвращаемых результатов. |
mode | string | no | Режим поиска: keyword, semantic или smart (по умолчанию). |
Источник схемы: crates/forgeplan-mcp/src/server.rs::SearchParams
Возвращает
Заголовок раздела «Возвращает»Ранжированный массив совпадений. Каждое совпадение содержит ID артефакта, тип, статус, заголовок, фрагмент (соответствующий раздел) и оценку BM25. Когда expand_graph: true, связанные соседи также включаются с полем via, объясняющим тип связи.
Пример структуры ответа:
{ "query": "authentication flow", "hits": [ { "id": "PRD-042", "kind": "prd", "status": "active", "score": 12.4, "snippet": "...OAuth2 authentication flow with refresh tokens..." }, { "id": "RFC-018", "kind": "rfc", "status": "active", "score": 9.8, "snippet": "...implements the auth flow defined in PRD-042..." } ]}Пример вызова
Заголовок раздела «Пример вызова»{ "query": "authentication flow", "limit": 5 }В типичном контексте агента:
Прежде чем предложить новую стратегию повторных попыток, агент ищет любое существующее решение по этой теме.
{ "query": "retry backoff strategy", "kind": "adr", "limit": 10 }Типичная последовательность
Заголовок раздела «Типичная последовательность»forgeplan_search → агент выбирает лучший результат → forgeplan_get для чтения полного содержимого → принимает решение об изменении, замещении или создании нового. В протоколе сессии Forgeplan search является обязательной предварительной проверкой перед любым new для предотвращения дублирования.
Эквивалент в CLI
Заголовок раздела «Эквивалент в CLI»forgeplan search- тот же движок, вывод в терминал
См. также
Заголовок раздела «См. также»- Обзор MCP
- Руководство по поиску BM25 в v0.18.0
forgeplan_fpf_search- семантический поиск FPF KBforgeplan_discover_start- исследовательский поиск