Обучение функциям версии Cursor 3.11: боковой чат не прерывает основное окно, Cmd+K — пролистывание старых диалогов

Эта статья поможет вам сразу освоить три новых функции Cursor 3.11: как задавать вопросы в боковом чате, не прерывая основного Agent, как с помощью Cmd+K просматривать на локальном устройстве несколько тысяч старых диалогов, и как использовать Hooks, чтобы вмешиваться в ключевых точках и контролировать дочерние sub Agent. В конце — пример полностью рабочего hooks.json и один «миноносец» (типичная ошибка) для cloud-варианта.
(предыстория: SpaceXAI Маска официально выпустила самую сильную модель «Grok 4.5»! В партнёрстве с Cursor — мощная атака на AI-кодирующих агентов, идеальная интеграция офисных приложений)
(дополнение к фону: Cursor Mobile вышел — отдельное приложение, чтобы вам было удобнее управлять AI-программированием с телефона и контролировать результаты)

Содержание

Toggle

  • План статьи
  • Боковой чат, чтобы основной Agent не останавливался: отдельный чат, который наследует context
  • Поиск в диалогах на компьютере: Cmd+K по нескольким тысячам старых диалогов, Cmd+F — по текущему диалогу
    • Найти все старые диалоги: в Agents Window нажмите Cmd+K
    • Найти текущий диалог: нажмите Cmd+F
  • Cloud Agent Hooks: вмешивайтесь в ключевых точках, чтобы отслеживать и контролировать sub Agent
    • Как писать hooks.json и где его размещать
    • Чтобы заблокировать действие — существуют только два «узла», которые это понимают
    • Ошибки, на которые можно наступить в Cloud Agent
  • Как связать три функции
  • Приложение: дополнительные ресурсы
  • Частые вопросы

Основной Agent сейчас проходит крупный рефакторинг, и вам внезапно нужно проверить: вызывается ли какая-то функция где-то ещё. Раньше это означало только одно: остановить его, переключиться, прервать задачу, которая уже выполняется. Три функции, добавленные в Cursor 3.11 (выпуск от 10 июля 2026): боковой чат, поиск по диалогам и cloud Agent Hooks — как раз решают задачу «не хочу прерывать основной процесс».

Эта статья предполагает, что вы уже используете Agent в Cursor: она покажет, как с нуля сразу освоить три новых функции. Будет приложен пример hooks.json и «мина», которую можно наступить в cloud-сценариях.

План статьи

  • Боковой чат: основной Agent не останавливается, вы открываете отдельный чат для уточняющих вопросов с наследованием context
  • Поиск по диалогам: Cmd+K — по нескольким тысячам старых диалогов на локальном устройстве, Cmd+F — по текущему диалогу
  • Cloud Agent Hooks: вмешательство в узлах вроде отправки prompt, ответов, старта sub Agent
  • Как связать три функции, и где у cloud Hooks «мины»

Боковой чат: основной Agent не останавливается, отдельный чат, который наследует context

Боковой чат (side chat) решает очень конкретную ситуацию: пока основной Agent выполняет долгую задачу, вам хочется «ответвиться» и задать вопрос, но не прерывать его.

Есть три способа открыть боковой чат — выберите самый удобный:

  1. Команда: в поле чата введите /side или /btw
  2. Кнопка: нажмите на кнопку + вверху панели чата

Открытый боковой чат напрямую наследует context главного диалога (контекст), поэтому вам не нужно заново перепечатывать фон — он уже понимает, что вы делаете вместе.

Самое частое недоразумение здесь: по умолчанию боковой чат рассчитан только на чтение, поиск и ответы — он не меняет ваш код. Его назначение — дать возможность уточнить, поискать информацию, исследовать другой путь или сначала сделать sanity-check (быструю проверку) решения — при этом основной Agent продолжает идти дальше и не страдает. Если вы хотите, чтобы он реально что-то изменил, нужно явно прописать это в диалоге.

Каждый боковой чат — это полноценный и долгоживущий Agent-диалог, а не «спросили и выбросили». Позже вы можете вернуться, продолжить уточнения. Если найдете полезный вывод — верните его в основной диалог через @, и context снова «подцепится» к основной линии.

По моему опыту, в боковом чате лучше всего работает не «что это?», а «основной Agent собирается изменить X, но я подозреваю, что это повлияет на зависимости — проверь, пожалуйста, используется ли X где-то ещё». Основная линия продолжает двигаться, а вы параллельно подтверждаете — две ветки не мешают друг другу.

Поиск на локальном устройстве: Cmd+K по тысячам старых диалогов, Cmd+F — по текущему

Раньше, чтобы найти «как в прошлом диалоге Agent чинит тот баг», почти всегда приходилось ползать по названиям диалогов или PR-номерам — мучительно медленно. В 3.11 поиск встроили в продукт, и сделан он в двух уровнях.

Поиск по всем старым диалогам: в Agents Window нажмите Cmd+K

В Agents Window (окно диалогов Agent) нажмите Cmd+K, чтобы вызвать командную панель, и напрямую ищите содержимое Agent-диалогов (transcript), а не только названия и PR-номера. Cursor построит локальный поисковый индекс на вашем устройстве, поэтому даже если у вас накопятся тысячи диалогов, поиск всё равно будет быстрым.

Поскольку индекс строится локально, содержимое не нужно «выкладывать в облако ради поиска» — это спокойнее для тех, кто бережёт приватность.

Поиск в текущем диалоге: нажмите Cmd+F

Если вам нужно найти лишь фрагмент в том длинном диалоге, который вы сейчас читаете, достаточно Cmd+F. Он покажет match counter (счётчик совпадений), даст возможность прыгать между найденными фрагментами, и при прокрутке длинного transcript будет одновременно работать поиск.

Здесь важно учесть: после обновления индексу нужно немного времени на построение. Если вы обнаружили, что старые диалоги внезапно «не находятся», либо chat history выглядит пустым — подождите завершения индексации; обычно данные никуда не делись.

Cloud Agent Hooks: вмешивайтесь в ключевых узлах, отслеживайте и контролируйте sub Agent

Hooks (хуки/«крючки») — самое весомое обновление для разработчиков. Оно позволяет повесить на ключевые узлы Agent-диалога свои скрипты: когда Agent доходит до этого узла, автоматически запускается ваш код.

Добавленные в 3.11 узлы покрывают несколько критических моментов в цикле диалога Agent:

  • beforeSubmitPrompt: вы отправляете prompt, но запрос ещё не ушёл в backend
  • afterAgentResponse: после того как Agent выдал ответ
  • afterAgentThought: после завершения фазы thinking (размышления)
  • subagentStart: до того как будет создан дочерний sub Agent (Task инструментарий)
  • subagentStop: после того как дочерний Agent отработал
  • stop: завершение всего цикла Agent и остановка задачи

С этими узлами вы можете сделать три вещи: мониторить весь процесс, контролировать дочерний Agent до/после его запуска и собрать автоматический цикл self-correcting. Например: Agent завершил ответ — автоматически запускается тест; тест провалился — ошибка возвращается обратно в Agent, чтобы он исправился сам.

Как писать hooks.json и где его размещать

Настройки Hooks задаются в hooks.json, поле version нужно фиксированно заполнить 1. Места размещения — три, и если файл присутствует в нескольких местах, то выполнятся все:

  • Уровень проекта: <корень проекта>/.cursor/hooks.json
  • Глобально для пользователя: ~/.cursor/hooks.json
  • Уровень компании: /etc/cursor/hooks.json

Ниже минимальный пример, который делает две вещи: каждый раз, когда Agent правит файл, запускает скрипт аудита; когда задача останавливается — записывает об этом:

{
  "version": 1,
  "hooks": {
    "afterFileEdit": [
      { "command": "./hooks/audit.sh" }
    ],
    "stop": [
      { "command": "./hooks/on-stop.sh" }
    ]
  }
}

Путь в command считается относительно местоположения hooks.json. Ваш скрипт получит через stdin (стандартный ввод) JSON: там есть базовые поля — conversation_id, generation_id, model, hook_event_name — и плюс поля, относящиеся к конкретному узлу. Например, beforeSubmitPrompt будет содержать prompt, а afterAgentResponse — текст ответа.

Пример скрипта, который ничего не делает и просто подтверждает, что данные доходят:

#!/bin/bash
cat &gt; /dev/null   # прочитать stdin
exit 0            # сообщить об успешном завершении

Как заблокировать действие: понимают только два узла

Здесь есть очень простой «подводный камень»: не каждый hook умеет перехватывать действия. Заблокировать можно только в beforeShellExecution (перед выполнением shell-команды) и beforeMCPExecution (перед вызовом MCP-инструмента). Именно они смотрят JSON, возвращаемый в stdout (стандартный вывод), и решают: пропускать или нет.

Формат такой:

{
  "continue": true,
  "permission": "allow",
  "userMessage": "сообщение, которое вы увидите",
  "agentMessage": "сообщение, которое увидит AI"
}

permission: allow — разрешить, deny — заблокировать, ask — показать запрос и спросить у вас. Для остальных узлов, например afterAgentResponse, даже если вы вернете permission, это игнорируется: они только наблюдают, логируют и триггерят другие действия — но не способны блокировать.

Ошибка в Cloud Agent

Если использовать Hooks в cloud Agent, есть узел, который напрямую перестает работать: beforeSubmitPrompt. Причина практическая: этот hook привязан к жизненному циклу session с самого начала, но виртуальная машина (VM) в облаке поднимается только после старта session. В момент самого старта машины ещё нет — значит, нечему запускать ваш hook.

Из личного опыта: для cloud лучше выбирать узлы, привязанные к «выполнению инструментов до/после», например beforeShellExecution, afterFileEdit, subagentStart, subagentStop, stop. Узлы на самом старте session лучше не рассчитывать.

Три функции вместе

Три функции объясняются отдельно и довольно ясно, но вам стоит попробовать их «в связке». Пример из реальной жизни:

Основной Agent делает рефакторинг, затрагивающий много файлов. Вы открываете боковой чат (/side), чтобы выяснить: «сколько мест используют этот интерфейс» — при этом основной процесс не останавливается. Когда проверка завершится и вы почувствуете риск, вы возвращаете вывод из бокового чата обратно в основной диалог через @, чтобы основной Agent обработал эти места. Параллельно в hooks.json у вас есть stop-узел: когда рефакторинг заканчивается — автоматически запускаются тесты. Затем вы возвращаетесь к этому длинному диалогу и с помощью Cmd+F находите, какие именно функции Agent сообщил, что поменял.

Один проход — и вас никто не прерывал, все нужные действия выполнены.

Приложение: дополнительные ресурсы

  • Официальный Changelog Cursor: полные заметки по обновлениям для каждой версии — там есть и боковой чат, и поиск диалогов для 3.11
  • Официальная документация Cursor Hooks: полный справочник по всем hook-узлам, stdin/stdout-полям и формату настроек
  • Файлы Cursor Subagents: при использовании subagentStart/subagentStop узлов можно сначала посмотреть эту статью

Частые вопросы

Q1. Боковой чат изменит мой код?
A:По умолчанию — нет. Он делает только чтение, поиск и ответы; его роль — помочь вам подтвердить и задать вопросы. Чтобы заставить его что-то менять, нужно явно написать это в диалоге.

Q2. Если выключить боковой чат, он пропадёт?
A:Нет. Каждый боковой чат хранится долго как полный Agent-диалог: вы можете позже вернуться, продолжить уточнения, а также вернуть его в основной диалог через @.

Q3. Поиск по Cmd+K ищет в облаке или локально?
A:Локально. Cursor строит поисковый индекс на вашем компьютере, и содержимое не нужно отправлять на сервер ради поиска — так можно уверенно тянуть даже до нескольких тысяч диалогов, и скорость остаётся высокой.

Q4. После обновления старые диалоги не находятся или chat history пустой?
A:Чаще всего индекс всё ещё строится локально — дождитесь завершения, обычно это не «потеря данных».

Q5. В чём разница Hooks в Cloud Agent и на локальном устройстве?
A:Главная разница — beforeSubmitPrompt не работает в облаке, потому что в момент начала session облачная VM ещё не построена. Лучше привязываться к узлам «до/после инструментов», вроде beforeShellExecution, afterFileEdit, subagentStart — в cloud это стабильнее.

Q6. Куда именно нужно положить hooks.json, чтобы оно заработало?
A:В .cursor/hooks.json проекта, ~/.cursor/hooks.json пользователя и /etc/cursor/hooks.json компании. Во всех трёх местах — файл срабатывает при наличии.

Q7. Хочу, чтобы hook прямо блокировал опасную команду — это возможно?
A:Да, но только эти два узла понимают ваше решение по stdout: beforeShellExecution и beforeMCPExecution. Заполните permission как deny — и будет блок. Остальные узлы только наблюдают и триггерят действия — они не умеют блокировать.

Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
  • Награда
  • комментарий
  • Репост
  • Поделиться
комментарий
Добавить комментарий
Добавить комментарий
Нет комментариев
  • Закреплено