Code Search
MCP routing
- Preferred path: use MCP
unica tools unica.search, unica.view, and and.
unica.check.
- Не зови индекс кода, анализатор или пакетные адаптеры напрямую: они спрятаны
за MCP
unica.
- Имя набора исходников — не константа. Его называет
unica.view {};
"main" в примерах ниже иллюстрация, а не умолчание. В адресе имя стоит до
двоеточия: main:Document.Заказ.
Tool choice
- MCP-first discipline: держись публичных
unica.* до того, как спускаться к
оболочке. К поиску по файлам переходи, только когда вызовы выше не закрыли
пробел, и сообщай what was tried, если это важно для ответа.
- Что искать выбирает свод.
unica.search с corpus: "text" (умолчание)
ищет по тексту модулей BSL и отвечает scope, line, column, snippet.
С corpus: "names" ищет по именам и синонимам метаданных и отвечает at,
kind, title. Физического пути нет ни у одного свода — работа идёт
адресами.
- Чем искать выбирает
role в текстовом своде: lexical совпадает
буквально, symbol идёт по индексу символов, semantic — по смыслу. Без
role Unica ищет литерал сама и провайдеров не поднимает.
scope сужает поиск до одного логического поддерева; limit ограничивает
выдачу.
- Признак
approximate у попадания по имени означает совпадение по близости,
а не точное. Пустая выдача — это ноль, а не отказ.
- Читать узел —
unica.view {at}. У владельца есть ветвь Module, у
модуля — Method, у метода — подпись, контекст компиляции, собственные
строки и ветвь Body парами {line, text}. Это дешевле, чем читать модуль
целиком, и точнее, чем догадываться по совпадению.
- Профиль объекта метаданных — тот же
unica.view {at}: состав, модули, права,
подписки и функциональные опции лежат в его props и ветвях.
- Путь к файлу нужен только когда он пришёл снаружи — из диффа, лога сборки
или трассы. Тогда его переводит в адрес аварийный
unica.resolve. В обычном
ходе работы он не нужен.
Чего на канонической поверхности пока нет
- граф вызовов и impact analysis — ветвей
Caller/Callee у узла метода
ещё нет. Пока доказательством потока служит unica.search с
role: "symbol" по имени метода, и это доказательство неполное: скажи об
этом, а не выдавай его за полный обход вызовов.
Workflow
- Разметь пространство:
unica.view {} называет наборы исходников и их
формат, когда набор или формат неясен.
- Найди предмет по имени:
unica.search {corpus: "names"} с необязательным
kind. Точное имя объекта закрывает вопрос быстрее любого текстового
поиска.
- Прочти узел:
unica.view {at}. Ветвь Module ведёт к модулям владельца,
ветвь Method — к его методам; узел метода даёт подпись и строки.
- Ищи по тексту то, что именем не находится: фрагменты запросов, строковые
литералы, заголовки, нестандартные токены.
role выбирай под вопрос.
- Расширяй только после неудачи точного поиска: синонимы, деловые термины,
префиксы общих модулей, заголовки команд форм.
- К локальному
rg спускайся только за файлами вне индекса Unica или когда
попытки выше не закрыли пробел — и скажи, что было испробовано.
- Разделяй объявление, вызов, обработчик и мёртвое совпадение. Поток по
одному попаданию не выводится.
- Отчитывайся логическими адресами и строками внутри узла, а не путями к
файлам; приводи запрос, которым получено важное попадание.
Common searches
- Object lifecycle:
ОбработкаПроведения, ПередЗаписью, ПриЗаписи, ПриСозданииНаСервере.
- Managed form flow: command handler, server procedure, client wrapper, form attribute name.
- Integrations: HTTP service root URL, method name, header name, endpoint path, exchange plan node.
- BSP entry points: exported common-module procedure plus surrounding callers.
MCP examples
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "unica.view",
"arguments": {}
}
}
Объект по имени:
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "unica.search",
"arguments": {
"query": "Заказ",
"corpus": "names",
"kind": "Document",
"limit": 20
}
}
}
Текст внутри поддерева:
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "unica.search",
"arguments": {
"query": "ОбработкаПроведения",
"scope": "main:Configuration",
"limit": 20
}
}
}
Символ по индексу — ближайшее, чем сегодня заменяется граф вызовов:
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "unica.search",
"arguments": {
"query": "ОбработкаПроведения",
"role": "symbol",
"scope": "main:Configuration",
"limit": 25
}
}
}
Профиль объекта метаданных:
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "unica.view",
"arguments": { "at": "main:Document.Заказ" }
}
}
Метод целиком: подпись в узле, текст в ветви Body:
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "unica.view",
"arguments": { "at": "main:CommonModule.Продажи.Method.ОбработкаПроведения" }
}
}
1---2name: code-search3description: Поиск и исследование BSL-кода и точек входа 1С. Используй когда нужно найти реализацию, вызовы, обработчики, модули, поток выполнения или быстро разобраться в механизме конфигурации.4---56# Code Search78## MCP routing910- Preferred path: use MCP `unica` tools `unica.search`, `unica.view`, and and.11 `unica.check`.12- Не зови индекс кода, анализатор или пакетные адаптеры напрямую: они спрятаны13 за MCP `unica`.14- Имя набора исходников — не константа. Его называет `unica.view {}`;15 `"main"` в примерах ниже иллюстрация, а не умолчание. В адресе имя стоит до16 двоеточия: `main:Document.Заказ`.1718## Tool choice1920- MCP-first discipline: держись публичных `unica.*` до того, как спускаться к21 оболочке. К поиску по файлам переходи, только когда вызовы выше не закрыли22 пробел, и сообщай what was tried, если это важно для ответа.23- **Что искать** выбирает свод. `unica.search` с `corpus: "text"` (умолчание)24 ищет по тексту модулей BSL и отвечает `scope`, `line`, `column`, `snippet`.25 С `corpus: "names"` ищет по именам и синонимам метаданных и отвечает `at`,26 `kind`, `title`. Физического пути нет ни у одного свода — работа идёт27 адресами.28- **Чем искать** выбирает `role` в текстовом своде: `lexical` совпадает29 буквально, `symbol` идёт по индексу символов, `semantic` — по смыслу. Без30 `role` Unica ищет литерал сама и провайдеров не поднимает.31- `scope` сужает поиск до одного логического поддерева; `limit` ограничивает32 выдачу.33- Признак `approximate` у попадания по имени означает совпадение по близости,34 а не точное. Пустая выдача — это ноль, а не отказ.35- **Читать узел** — `unica.view {at}`. У владельца есть ветвь `Module`, у36 модуля — `Method`, у метода — подпись, контекст компиляции, собственные37 строки и ветвь `Body` парами `{line, text}`. Это дешевле, чем читать модуль38 целиком, и точнее, чем догадываться по совпадению.39- Профиль объекта метаданных — тот же `unica.view {at}`: состав, модули, права,40 подписки и функциональные опции лежат в его `props` и ветвях.41- Путь к файлу нужен только когда он пришёл снаружи — из диффа, лога сборки42 или трассы. Тогда его переводит в адрес аварийный `unica.resolve`. В обычном43 ходе работы он не нужен.4445### Чего на канонической поверхности пока нет4647- **граф вызовов и impact analysis** — ветвей `Caller`/`Callee` у узла метода48 ещё нет. Пока доказательством потока служит `unica.search` с49 `role: "symbol"` по имени метода, и это доказательство неполное: скажи об50 этом, а не выдавай его за полный обход вызовов.5152## Workflow53541. Разметь пространство: `unica.view {}` называет наборы исходников и их55 формат, когда набор или формат неясен.562. Найди предмет по имени: `unica.search {corpus: "names"}` с необязательным57 `kind`. Точное имя объекта закрывает вопрос быстрее любого текстового58 поиска.593. Прочти узел: `unica.view {at}`. Ветвь `Module` ведёт к модулям владельца,60 ветвь `Method` — к его методам; узел метода даёт подпись и строки.614. Ищи по тексту то, что именем не находится: фрагменты запросов, строковые62 литералы, заголовки, нестандартные токены. `role` выбирай под вопрос.635. Расширяй только после неудачи точного поиска: синонимы, деловые термины,64 префиксы общих модулей, заголовки команд форм.656. К локальному `rg` спускайся только за файлами вне индекса Unica или когда66 попытки выше не закрыли пробел — и скажи, что было испробовано.677. Разделяй объявление, вызов, обработчик и мёртвое совпадение. Поток по68 одному попаданию не выводится.698. Отчитывайся логическими адресами и строками внутри узла, а не путями к70 файлам; приводи запрос, которым получено важное попадание.7172## Common searches7374- Object lifecycle: `ОбработкаПроведения`, `ПередЗаписью`, `ПриЗаписи`, `ПриСозданииНаСервере`.75- Managed form flow: command handler, server procedure, client wrapper, form attribute name.76- Integrations: HTTP service root URL, method name, header name, endpoint path, exchange plan node.77- BSP entry points: exported common-module procedure plus surrounding callers.7879## MCP examples8081```jsonc82{83 "jsonrpc": "2.0",84 "method": "tools/call",85 "params": {86 "name": "unica.view",87 "arguments": {}88 }89}90```9192Объект по имени:9394```json95{96 "jsonrpc": "2.0",97 "method": "tools/call",98 "params": {99 "name": "unica.search",100 "arguments": {101 "query": "Заказ",102 "corpus": "names",103 "kind": "Document",104 "limit": 20105 }106 }107}108```109110Текст внутри поддерева:111112```json113{114 "jsonrpc": "2.0",115 "method": "tools/call",116 "params": {117 "name": "unica.search",118 "arguments": {119 "query": "ОбработкаПроведения",120 "scope": "main:Configuration",121 "limit": 20122 }123 }124}125```126127Символ по индексу — ближайшее, чем сегодня заменяется граф вызовов:128129```json130{131 "jsonrpc": "2.0",132 "method": "tools/call",133 "params": {134 "name": "unica.search",135 "arguments": {136 "query": "ОбработкаПроведения",137 "role": "symbol",138 "scope": "main:Configuration",139 "limit": 25140 }141 }142}143```144145Профиль объекта метаданных:146147```json148{149 "jsonrpc": "2.0",150 "method": "tools/call",151 "params": {152 "name": "unica.view",153 "arguments": { "at": "main:Document.Заказ" }154 }155}156```157158Метод целиком: подпись в узле, текст в ветви `Body`:159160```json161{162 "jsonrpc": "2.0",163 "method": "tools/call",164 "params": {165 "name": "unica.view",166 "arguments": { "at": "main:CommonModule.Продажи.Method.ОбработкаПроведения" }167 }168}169```