Перейти к содержимому
FRGEPLAN

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.
ИмяТипОбязательныйОписание
querystringyesПоисковый запрос (поиск по ключевым словам BM25 + опциональный семантический поиск, без учета регистра).
kindstringnoФильтр по типу артефакта (например, prd, rfc).
statusstringnoФильтр по статусу (например, active, draft).
depthstringnoФильтр по глубине (tactical, standard, deep, critical).
with_evidenceboolno (по умолчанию: false)Включать только артефакты со связанными доказательствами (R_eff > 0).
no_evidenceboolno (по умолчанию: false)Включать только артефакты без доказательств (R_eff == 0).
sincestringnoФильтр по дате created_at (ГГГГ-ММ-ДД).
no_expandboolno (по умолчанию: false)Отключить расширение графа на 1 переход для лучших результатов.
limitintegerno (по умолчанию: 20)Максимальное количество возвращаемых результатов.
modestringnoРежим поиска: 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 для предотвращения дублирования.