dsh-tool-bridge
v0.3.5
Published
Мост инструментов платформы на движковый маршрут: делает инструменты плагинов платформы видимыми модели, которую ведёт сторонний движок
Readme
dsh-tool-bridge — инструменты платформы на движковом маршруте
Плагин для DeepSeek Harness. Делает инструменты платформенных плагинов видимыми модели, которую ведёт не собственный цикл платформы, а движок стороннего поставщика. Плюс механизм самопробуждения: агент продолжает работу без человека рядом и не может делать это бесконечно.
Содержимое и пояснения — на русском. Это осознанный выбор владельца, а не недоделка: текст пишет и читает человек, а перевод машиной сегодня стоит дешевле, чем поддержка двух расходящихся версий.
Что делает
Платформа выставляет инструменты своим плагинам. Если модель ведёт сторонний движок, эти инструменты ей не видны: у движка свой протокол. Мост поднимает локальный сервер MCP и показывает через него набор платформенных инструментов — цели, задания, расписание — тому движку, который ведёт модель.
Второе назначение — пределы самопробуждения. Подробное описание механизма,
всех настроек и границ: SAMOPROBUZHDENIE.md рядом с этим файлом.
🔴 Переход с частной сборки
У публикуемого пакета имя сервера по умолчанию — bridge. Частная сборка могла
работать без закреплённого serverName (журнал подъёма в этом случае печатает
«имя сервера … (умолчание)»).
ДО смены пакета закрепите serverName в слое профиля — ключ есть в схеме.
Иначе имена инструментов у модели сменятся МОЛЧА:
mcp__<старое>__* -> mcp__bridge__*и модель перестанет узнавать свои инструменты.
Проверяется одной строкой в журнале подъёма: рядом с именем стоит пометка
(настройка) или (умолчание). Пометка (умолчание) означает, что имя ничем
не закреплено и переедет вместе с пакетом.
Установка
dsh plugin add dsh-tool-bridgeФайл cordis.patch.yml в пакете описывает, что именно вносится в профиль.
Все поля выписаны явно, включая равные умолчаниям кода, — и это не избыточность:
пропущенное поле проверяющий конфигурацию молча выбрасывает вместо отказа, и
механизм работает на числах, которых никто не выбирал.
Отличить «моя настройка доехала» от «поле потерялось при правке» позволяет строка подъёма: рядом с каждым значением она печатает его источник.
Проверка после установки
node test/stend-rezhimov.mjs режимы интервала, потолок темпа
node test/stend-heartbeat.mjs счёт полосы и суток
node test/stend-ostanovki.mjs действие остановки
node test/stend-predelov-iz-fajla.mjs чтение настроек и источники
node test/stend-cel-mosta.mjs цельность: файлы, схемы, строки подъёма
node test/stend-publikacii.mjs состав пакета и отсутствие чужих имёнКоды: 0 сошлось, 1 расхождение, 2 «проверить не удалось». Третий важен отдельно: стенд, который не смог проверить, обязан отличаться от стенда, который проверил и не нашёл беды.
В каких раскладках стенды проверены
Измерено 03.09.2026, тремя прогонами из распакованного пакета:
| раскладка | сошлось | слепот | расхождений |
|---|---|---|---|
| распакован, npm install НЕ выполнялся | 4 | 3 | 0 |
| после npm install | 5 | 2 | 0 |
| после npm install --omit=dev (обычный потребитель) | 4 | 3 | 0 |
🔴 Слепота — не отказ, а третий исход: «проверить не удалось». Каждая называет причину и команду. Три из них устойчивы и объяснимы:
stend-cel-mosta— нужен корень дерева платформы, задаётсяMOST_APP;stend-predelov-iz-fajla— нуженyaml, а он объявлен зависимостью разработки: самому мосту он не обязателен, стенду обязателен. При обычной установке его нет;stend-publikacii— нужен список частных имён, которого у постороннего быть и не должно.
Раскладок, где предмет может оказаться, больше, чем мы воспроизводим. Не проверялись: другая версия платформы, отсутствие платформы вовсе, каталог только для чтения, чужая локаль. Перечень назван, чтобы «стенды зелёные» не читалось шире, чем измерено.
Порождаемые файлы
src/paritet.json и src/raspisanie.json руками не правятся — они порождаются
из установленных пакетов платформы:
node tools/izvlech-paritet.mjs <корень установки платформы> > src/paritet.json
node tools/izvlech-raspisanie.mjs <корень установки платформы> > src/raspisanie.jsonЗапускать после каждого обновления платформы: описания и схемы инструментов меняются молча, и расхождение ничем себя не выдаст.
Границы
- мост не исполняет инструменты сам, кроме целей и заданий: он показывает то, что выставила платформа, и её отказ остаётся её отказом;
- пределы самопробуждения считают события, а не расход: цена одного хода различается в сотни раз, и предел по числу событий расходом не управляет;
- изоляция пределов поведенческая: тот, кто вправе повышать привилегии, обходит их, и счётчик читается из журнала того же процесса;
- при отсутствии файла настроек берётся самый строгий набор, и об этом говорится вслух — молчаливый переход на строгие значения неотличим от «так и было настроено».
Лицензия
MIT.
