Настройка, расширение, параметры платформы и справочник API для Pi.

Сочетания клавиш

Все сочетания клавиш можно настроить с помощью ~/.pi/agent/keybindings.json. Каждое действие может быть привязано к одной или нескольким клавишам.

В файле конфигурации используются те же идентификаторы привязки клавиш в пространстве имен, которые pi использует внутри себя и которые авторы расширений используют в менеджерах keyHint() и внедренных keybindings.

Старые конфигурации, использующие идентификаторы с предварительно заданным пространством имен, такие как cursorUp или expandTools, автоматически переносятся в идентификаторы с заданным пространством имен при запуске.

После редактирования keybindings.json запустите /reload в pi, чтобы применить изменения без перезапуска сеанса.

Ключевой формат

modifier+key, где модификаторы — ctrl, shift, alt, super (комбинируемые), а ключи:

  • Буквы: a-z
  • Цифры: 0-9
  • Специальные клавиши: escape, esc, enter, return, tab, space, backspace, delete, insert, clear, home, end, pageUp, pageDown, up, down, left, right
  • Функциональные клавиши: f1-f12
  • Символы: `, -, =, [, ], \, ;, ', ,, ., /, !, @, #, $, %, ^, &, *, (, ), _, +, |, ~, {, }, :, <, >, ?

Комбинации модификаторов: ctrl+shift+x, alt+ctrl+x, ctrl+shift+alt+x, super+k, ctrl+super+k, ctrl+1 и т. д.

Для привязок super требуется терминал, который сообщает модификатор отдельно, обычно через протокол клавиатуры Kitty. Без этой поддержки они могут не работать в терминалах.

Все действия

TUI Движение курсора редактора

Идентификатор сочетания клавиш По умолчанию Описание
tui.editor.cursorUp up Переместите курсор вверх, просматривая старую историю вверху.
tui.editor.cursorDown down Переместите курсор вниз, просматривая новую историю внизу.
tui.editor.historyPrevious (никто) Выберите предыдущую запись истории запросов
tui.editor.historyNext (никто) Выберите следующую запись истории подсказок
tui.editor.cursorLeft left, ctrl+b Переместить курсор влево
tui.editor.cursorRight right, ctrl+f Переместить курсор вправо
tui.editor.cursorWordLeft alt+left, ctrl+left, alt+b Переместить курсорное слово влево
tui.editor.cursorWordRight alt+right, ctrl+right, alt+f Переместить курсорное слово вправо
tui.editor.cursorLineStart home, ctrl+home, ctrl+a Перейти к началу строки
tui.editor.cursorLineEnd end, ctrl+end, ctrl+e Перейти к концу строки
tui.editor.jumpForward ctrl+] Перейти вперед к персонажу
tui.editor.jumpBackward ctrl+alt+] Перейти назад к персонажу
tui.editor.pageUp pageUp, ctrl+pageUp Прокручивать вверх по страницам
tui.editor.pageDown pageDown, ctrl+pageDown Пролистнуть вниз по странице

Специальные действия с историей всегда изменяют записи истории, независимо от положения курсора в многострочной подсказке. Явные привязки истории имеют приоритет над действиями приложения, пока основной редактор находится в фокусе, поэтому привязка от tui.editor.historyPrevious до ctrl+p переопределяет цикличность модели в этом контексте без изменения Ctrl+P в селекторах.

TUI Удаление редактора

Идентификатор сочетания клавиш По умолчанию Описание
tui.editor.deleteCharBackward backspace Удалить символ задом наперед
tui.editor.deleteCharForward delete, ctrl+d Удалить символ вперед
tui.editor.deleteWordBackward ctrl+w, alt+backspace Удалить слово задом наперед
tui.editor.deleteWordForward alt+d, alt+delete Удалить слово вперед
tui.editor.deleteToLineStart ctrl+u Удалить в начало строки
tui.editor.deleteToLineEnd ctrl+k Удалить до конца строки

TUI Ввод

Идентификатор сочетания клавиш По умолчанию Описание
tui.input.newLine shift+enter, ctrl+j Вставить новую строку
tui.input.submit enter Отправить данные
tui.input.tab tab Вкладка/автозаполнение

TUI Кольцо убийства

Идентификатор сочетания клавиш По умолчанию Описание
tui.editor.yank ctrl+y Вставить последний удаленный текст
tui.editor.yankPop alt+y Перебирать удаленный текст после извлечения
tui.editor.undo ctrl+- Отменить последнее редактирование

TUI Буфер обмена и выделение

Идентификатор сочетания клавиш По умолчанию Описание
tui.input.copy ctrl+c Копировать выделение
tui.select.up up Переместить выделение вверх
tui.select.down down Переместить выделение вниз
tui.select.pageUp pageUp На страницу вверх в списке
tui.select.pageDown pageDown На страницу вниз в списке
tui.select.confirm enter Подтвердить выбор
tui.select.cancel escape, ctrl+c Отменить выбор

TUI Полноэкранный просмотр

Эти действия применяются, когда интерактивный режим использует --tui-mode fullscreen и нацелен на основную область прокрутки стенограммы. Трекпад двумя пальцами и колесо мыши прокручивают область под указателем, возвращаясь к расшифровке через фиксированную док-станцию ​​редактора/статуса/нижнего колонтитула. Щелчок по гиперссылке OSC 8 открывает ее в обработчике по умолчанию. Перетаскивание основной кнопкой мыши выделяет текст и копирует его в буфер обмена; удерживание верхнего или нижнего края расшифровки автоматически прокручивает содержимое за кадром.

Привязки полноэкранной расшифровки имеют приоритет над привязками редактора. Таким образом, немодифицированные навигационные клавиши по умолчанию управляют расшифровкой в ​​полноэкранном режиме, а их варианты ctrl продолжают управлять редактором. Вне полноэкранного режима оба варианта управляют редактором.

Ключ Режим по умолчанию Полноэкранный режим
home, end Редактор Стенограмма
ctrl+home, ctrl+end Редактор Редактор
pageUp, pageDown Редактор Стенограмма
ctrl+pageUp, ctrl+pageDown Редактор Редактор

Эту маршрутизацию можно настроить с помощью обычных привязок действий. Например, "tui.altScreen.pageUp": "ctrl+pageUp" позволяет pageUp управлять редактором, а ctrl+pageUp управлять расшифровкой в ​​полноэкранном режиме. Свяжите tui.altScreen.halfPageUp и tui.altScreen.halfPageDown для небольших шагов транскрипции, сохраняя при этом полностраничные привязки. Настройка "tui.altScreen.pageUp": [] полностью отключает этот ярлык расшифровки. Привязки пользователя заменяют значения по умолчанию для этого действия.

Идентификатор сочетания клавиш По умолчанию Описание
tui.altScreen.pageUp pageUp Прокрутить транскрипт вверх на одну страницу
tui.altScreen.pageDown pageDown Прокрутите транскрипт вниз на одну страницу
tui.altScreen.halfPageUp (никто) Прокрутить транскрипт вверх на полстраницы
tui.altScreen.halfPageDown (никто) Прокрутите транскрипт вниз на полстраницы.
tui.altScreen.previousPrompt ctrl+shift+up Перейти к предыдущему отмеченному сообщению
tui.altScreen.nextPrompt ctrl+shift+down Перейти к следующему отмеченному сообщению
tui.altScreen.top home Прокрутите до начала стенограммы
tui.altScreen.bottom end Прокрутите до конца стенограммы и следуйте новым выводам.

Приложение

Идентификатор сочетания клавиш По умолчанию Описание
app.interrupt escape Отмена/прерывание
app.clear ctrl+c Очистить редактор (первый) / выйти (второй)
app.exit ctrl+d Выход (когда редактор пуст)
app.suspend ctrl+z (нет в Windows) Приостановить в фоновом режиме
app.editor.external ctrl+g Открыть во внешнем редакторе (externalEditor, $VISUAL, $EDITOR, «Блокнот» в Windows или nano в другом месте)
app.clipboard.pasteImage ctrl+v (alt+v в Windows) Вставить изображение или текст из буфера обмена

Сессии

Идентификатор сочетания клавиш По умолчанию Описание
app.session.new (никто) Начать новый сеанс (/new)
app.session.tree (никто) Открыть навигатор session tree (/tree)
app.session.fork (никто) Форкнуть текущую сессию (/fork)
app.session.resume (никто) Открыть окно выбора резюме сеанса (/resume)
app.session.togglePath ctrl+p Переключить отображение пути
app.session.toggleSort ctrl+s Переключить режим сортировки
app.session.toggleNamedFilter ctrl+n Переключить фильтр только по имени
app.session.rename ctrl+r Переименовать сеанс
app.session.delete ctrl+d Удалить сеанс
app.session.deleteNoninvasive ctrl+backspace Удалить сеанс, когда запрос пуст

Models и мышление

Идентификатор сочетания клавиш По умолчанию Описание
app.model.select ctrl+l Открыть выбор модели
app.model.cycleForward ctrl+p Переход к следующей модели
app.model.cycleBackward shift+ctrl+p Перейти к предыдущей модели
app.thinking.cycle shift+tab Циклический уровень мышления
app.thinking.toggle ctrl+t Свернуть или расширить блоки мышления

Дисплей и очередь сообщений

Идентификатор сочетания клавиш По умолчанию Описание
app.tools.expand ctrl+o Свернуть или развернуть выходные данные инструмента
app.message.copy ctrl+x Скопируйте последнее сообщение помощника или выбранное сообщение в /tree.
app.message.followUp alt+enter Сообщение о последующем сообщении в очереди
app.message.dequeue alt+up Восстановить сообщения в очереди в редакторе

Древовидная навигация

Идентификатор сочетания клавиш По умолчанию Описание
app.tree.foldOrUp ctrl+left, alt+left Свернуть текущий сегмент ветки или перейти к началу предыдущего сегмента.
app.tree.unfoldOrDown ctrl+right, alt+right Разверните текущий сегмент ветки или перейдите к началу или концу следующего сегмента.
app.tree.editLabel shift+l Редактировать метку на выбранном узле дерева
app.tree.toggleLabelTimestamp shift+t Переключить временные метки меток в дереве
app.tree.filter.default ctrl+d Установить фильтр дерева для просмотра по умолчанию
app.tree.filter.noTools ctrl+t Переключить фильтр дерева, который скрывает результаты инструмента
app.tree.filter.userOnly ctrl+u Переключить фильтр дерева, который показывает только сообщения пользователя
app.tree.filter.labeledOnly ctrl+l Переключить фильтр дерева, который показывает только помеченные записи
app.tree.filter.all ctrl+a Переключить фильтр дерева, который показывает все записи
app.tree.filter.cycleForward ctrl+o Циклический фильтр дерева вперед
app.tree.filter.cycleBackward shift+ctrl+o Циклический фильтр дерева назад

Селектор с областью действия Models

Используется внутри селектора моделей с ограниченной областью действия (открывается через /scoped-models).

Идентификатор сочетания клавиш По умолчанию Описание
app.models.save ctrl+s Сохранить текущий выбор модели в настройках
app.models.enableAll ctrl+a Включить все модели (или все, соответствующие текущему поиску)
app.models.clearAll ctrl+x Очистить все модели (или все, соответствующие текущему поиску)
app.models.toggleProvider ctrl+p Переключить все модели текущего поставщика
app.models.reorderUp alt+up Переместить выбранную модель вверх в порядке цикла
app.models.reorderDown alt+down Переместить выбранную модель вниз в порядке цикла

Пользовательская конфигурация

Создайте ~/.pi/agent/keybindings.json:

{
  "tui.editor.historyPrevious": "ctrl+p",
  "tui.editor.historyNext": "ctrl+n",
  "tui.editor.deleteWordBackward": ["ctrl+w", "alt+backspace"]
}

Каждое действие может иметь одну клавишу или массив клавиш. Пользовательская конфигурация переопределяет настройки по умолчанию.

В родной Windows app.suspend не имеет привязки по умолчанию, поскольку терминалы Windows не поддерживают управление заданиями Unix. Если вы привяжете его вручную, pi вместо приостановки отобразит сообщение о состоянии. В WSL по-прежнему применяется обычное поведение Linux ctrl+z/fg.

Пример Emacs

{
  "tui.editor.historyPrevious": "ctrl+p",
  "tui.editor.historyNext": "ctrl+n",
  "tui.editor.cursorLeft": ["left", "ctrl+b"],
  "tui.editor.cursorRight": ["right", "ctrl+f"],
  "tui.editor.cursorWordLeft": ["alt+left", "alt+b"],
  "tui.editor.cursorWordRight": ["alt+right", "alt+f"],
  "tui.editor.deleteCharForward": ["delete", "ctrl+d"],
  "tui.editor.deleteCharBackward": ["backspace", "ctrl+h"],
  "tui.input.newLine": ["shift+enter", "ctrl+j"]
}

Пример Вима

{
  "tui.editor.cursorUp": ["up", "alt+k"],
  "tui.editor.cursorDown": ["down", "alt+j"],
  "tui.editor.cursorLeft": ["left", "alt+h"],
  "tui.editor.cursorRight": ["right", "alt+l"],
  "tui.editor.cursorWordLeft": ["alt+left", "alt+b"],
  "tui.editor.cursorWordRight": ["alt+right", "alt+w"]
}