Матрица поддерживаемых Connections в Kavor
Connection — не просто линия на Canvas. Она объявляет, что два Nodes участвуют в одном графе, и определяет возможности, которые эта пара добавляет к работе.
Не все сочетания допустимы. У каждой поддерживаемой пары есть точный контракт: одни Connections делают контекст достижимым, другие разрешают операции через Kavor, а две передают канонические пути в Terminal с помощью переменных окружения.
Эта страница — публичный справочник по таким контрактам.
Как читать Connection
У Connection есть три разных обязанности:
- Существование: она соединяет Nodes в один достижимый компонент графа.
- Параметры: она хранит обязательную настройку, если она нужна этой паре.
- Guardrails: она отнимает возможности у поведения, которое обычно разрешено между двумя Nodes.
Connections — двусторонние отношения. Kavor хранит два endpoints в каноническом порядке, но этот порядок не означает поток, управление или приоритет. У сообщения по-прежнему есть отправитель и получатель, а у Trigger — цель. Эти направления относятся к выполняемой операции, а не к сохранённой Connection.
Поддерживаемые сочетания
| Пара Nodes | Что позволяет Connection | Параметры | Доступный Guardrail | Основной пример |
|---|---|---|---|---|
| CodingAgent+Specification | Читать метаданные и канонический Markdown, работать с lifecycle и регистрировать долговечные outputs, когда это разрешено. | Нет | specification_read_only | Spec Writer, Builder и Reviewer используют общий контракт. |
| CodingAgent+Sticky Note | Читать и писать неформальную память в Markdown с контролем версий; при каждой записи выбирается append или replace. | Нет | sticky_note_read_only | Открытые решения, прогресс, наблюдения и видимые handoffs. |
| CodingAgent+Terminal | Читать output, выполнять команды, отслеживать или прерывать связанный запуск и взаимодействовать с foreground-процессом, когда это разрешено. | Нет | terminal_read_only | Диагностика, тесты, логи или помощь в контролируемой SSH-сессии. |
| CodingAgent+File | Сделать канонический источник в filesystem явным в графе для чтения, проверки или изменения, когда это разрешено. | Нет | file_read_only | Ограничить область модулем, PDF, изображением, отчётом или конфигурацией. |
| CodingAgent+CodingAgent | Сформировать достижимый граф для асинхронных сообщений, ответов, независимой проверки и параллельной работы. | Нет | Нет | Builder запрашивает проверку у Reviewer. |
| Specification+Terminal | Экспортировать канонический абсолютный путь Specification в сессию Terminal. | Обязательное имя переменной окружения | Нет | Проверить, изучить или сравнить Markdown в Specification. |
| File+Terminal | Экспортировать канонический абсолютный путь File в сессию Terminal. | Обязательное имя переменной окружения | Нет | Запустить script или использовать SQL-файл, не копируя его путь между окнами. |
| Trigger+CodingAgent | Доставить в заданное время prompt в CodingAgent с активной сессией. | Нет | Нет | Разбудить Maintainer для анализа сбоев, подготовки отчёта и запроса проверки. |
| Trigger+Terminal | Доставить в заданное время команду в активную сессию Terminal. | Нет | Нет | Запустить тесты, проверку базы данных или script обслуживания. |
Guardrails ограничивают, а не предоставляют доступ
Connection изначально предоставляет возможности, реализованные для этой пары. Guardrail хранит выбранное пользователем ограничение для такой базовой модели:
| Guardrail | Connection | Эффект |
|---|---|---|
specification_read_only | CodingAgent+Specification | Сохраняет чтение и запрещает через Kavor изменения lifecycle и outputs. Прямое редактирование Markdown становится явным контрактом «только для чтения». |
sticky_note_read_only | CodingAgent+Sticky Note | Сохраняет чтение и блокирует append или replace содержимого. |
terminal_read_only | CodingAgent+Terminal | Сохраняет просмотр Terminal и блокирует операции, которые изменили бы сессию, процесс или его ввод. |
file_read_only | CodingAgent+File | Объявляет, что agent не должен изменять канонический источник. |
Guardrails принадлежат прямой Connection между CodingAgent и ресурсом. Альтернативный маршрут в графе не снимает ограничение, существующее для этой прямой пары.
Если Guardrail блокирует операцию через Kavor, она отклоняется до появления побочных эффектов. Files и содержимое Specifications также могут быть доступны через собственные filesystem-инструменты harness. В таких случаях Guardrail — видимый и контролируемый контракт, а не sandbox операционной системы.
Guardrail не создаёт Connection, не делает Node достижимым и не повышает разрешения. Если ресурс не должен участвовать в графе, не создавайте Connection.
Connections с переменными окружения
Сохранённые параметры есть только у двух пар:
- File + Terminal;
- Specification + Terminal.
В обоих случаях вы выбираете имя переменной окружения. Значение, предоставленное Terminal, — канонический абсолютный путь к источнику, а не содержимое файла.
Например, File, подключённый как CHECK_SQL, можно использовать в shell так:
sqlite3 app.db < "$CHECK_SQL"
Kavor применяет значение при запуске сессии Terminal. Если Connection или её параметр изменятся, пока shell открыт,
интерфейс покажет, что для применения переменной требуется перезапуск сессии. TERM и COLORTERM — зарезервированные
имена, которые нельзя использовать для этих параметров.
Особое ограничение Trigger
У Trigger может быть не более одной прямой цели: CodingAgent или Terminal. Он не соединяется напрямую со Specification, File или Sticky Note и не распределяет одно срабатывание между несколькими целями.
Остальная часть графа может расширить возможности цели, не расширяя её разрешения. Разбуженный Trigger CodingAgent может работать с уже достижимыми Nodes при тех же Guardrails и ограничениях сессии.
Для доставки Kavor должен быть запущен, а сессия цели — активна. Trigger не запускает оставленную вами выключенной сессию, не определяет цель работы и не превращает внешние эффекты в exactly-once операции. Каждый TriggerFiring хранит долговечный результат для последующей проверки.
Несуществующие сочетания
Kavor отклоняет любую пару, которой нет в матрице. В частности:
- Trigger + Specification;
- Trigger + File;
- Trigger + Sticky Note;
- Specification + File;
- Specification + Sticky Note;
- File + Sticky Note;
- File + File;
- Sticky Note + Terminal;
- Sticky Note + Sticky Note;
- Terminal + Terminal.
Node также нельзя соединить с самим собой. Перестановка двух одинаковых endpoints не создаёт другую Connection, поскольку у отношения нет сохранённого направления.
Близость на Canvas, упоминание в сообщении или участие в одном Workspace не заменяют Connection. Если сочетание отсутствует на этой странице, оно не предоставляет возможностей только потому, что визуально находится рядом с другим Node.
Выбирайте минимальную Connection, которая решает задачу
Прежде чем соединить два Nodes, спросите, какой конкретной возможности не хватает:
- agent нужен долговечный замысел? Подключите Specification;
- человеку и agent нужна общая рабочая память? Подключите Sticky Note;
- agent должен выполнить или наблюдать процесс? Подключите Terminal;
- нужно явно обозначить канонический источник? Подключите File;
- другая точка зрения улучшит реализацию или проверку? Подключите ещё один CodingAgent;
- время действительно должно запускать активность? Добавьте Trigger в последнюю очередь.
Хорошая Connection делает работу более явной. Если вы не можете назвать возможность, которую она добавляет, скорее всего, графу она не нужна.
Что дальше
- Прочитайте центральное руководство по Nodes, чтобы понять ответственность каждого участника.
- Изучите отдельные руководства по CodingAgent, Specification и Terminal.
- Замкните первый цикл с замыслом, реализацией, проверкой и решением человека.
- Узнайте, как выбирать CodingAgents и роли, прежде чем расширять граф.