Promptr CLI
Promptr отправляет текстовое задание модели OpenAI и сразу записывает предложенные правки в файлы проекта прямо из терминала
- 950 ★ репозитория
- Последний коммит
- MIT
Широкий доступ
Почему такой уровень
- Записывает, перезаписывает и удаляет файлы, в том числе каталоги, по ответу модели и без подтверждения
- Отправляет в OpenAI содержимое указанных файлов и файлов, чьи пути встретились в тексте задания
- Подставляет в запрос текст по адресу http или https, если задание передано ссылкой
Установка
В терминале, через SkillFoxx CLI
npx skillfoxx add cli/promptrОпределит агенты на машине, покажет уровень доступа и зафиксирует версию.
Другие способы установки
Доступ и проверки
Как мы проверяемШирокий доступИнструмент может менять данные, выполнять команды или работать с секретами.
- Записывает, перезаписывает и удаляет файлы, в том числе каталоги, по ответу модели и без подтверждения
- Отправляет в OpenAI содержимое указанных файлов и файлов, чьи пути встретились в тексте задания
- Подставляет в запрос текст по адресу http или https, если задание передано ссылкой
Это чужой код. Посмотрите файлы в репозитории перед установкой.
Что делает
Promptr ставится из npm как пакет `@ifnotnowwhen/promptr` и запускается командой `promptr -p "задание" файл1 файл2`. Задание передают строкой, путем к файлу или адресом по http и https: во втором случае Promptr скачивает текст сам. Файлы из аргументов попадают в запрос как контекст. Пути, которые встретились в тексте задания, он находит регулярным выражением и добавляет тоже, а ключ `-dac` это отключает. Текст задания проходит через шаблон liquidjs. Встроены шаблоны `empty`, `refactor`, `swe` и `test-first`, по умолчанию работает `refactor`, свой шаблон задают ключом `-t` путем или адресом. Общие правила проекта выносят в отдельный файл и подключают к заданиям через `render`, чтобы не повторять их в каждом промпте. Готовый запрос уходит в OpenAI Chat Completions: модель по умолчанию `gpt-4o`, ключ берется из `OPENAI_API_KEY`, а адрес API код читает из `OPENAI_API_BASE`. Модель обязана ответить вызовом функции со списком операций над файлами, и Promptr применяет их сразу: создает и перезаписывает файлы, удаляет файлы и каталоги, а обработчик умеет и переносить файлы. Один запрос и один ответ, цикла правок с проверкой тестами нет. Ключ `-d` печатает запрос и число токенов, диск при этом не меняется. Ключ `-i` включает интерактивный режим.
Для кого. Для разработчиков на Node.js, которые готовы платить за API OpenAI и хотят вносить правки в код по текстовому заданию одной командой в терминале.
Подходит, если
- Нужно внести одно изменение сразу в несколько файлов: переименование, перенос логики, приведение кода к стандарту проекта
- Правила проекта хочется держать в общем файле `_project.liquid` и подключать к каждому заданию через `render`
- Перед запуском нужно увидеть, что уйдет модели: `promptr -d` печатает запрос и число токенов без записи на диск
- Задание лежит в файле или по адресу в репозитории, и его удобно запускать повторно ключом `-p`
- Нужен ответ модели в файл, а не правка кода: ключ `-o` вместе со своим шаблоном пишет вывод по указанному пути
Не подходит, если
- У вас нет ключа OpenAI или нужен другой поставщик моделей: API OpenAI из России недоступен, а Promptr обращается только к API в формате OpenAI
- Нужен диалог с картой репозитория, автокоммитами git и проверкой тестами после правок: этим занимается Aider
- Проект не под git и нет резервной копии: Promptr записывает и удаляет файлы без подтверждения
- Нужен готовый бинарник под Linux или Windows: он заявлен только для macOS, на остальных системах нужны Node 18 и установка из npm
Пример запроса к агенту
Переименуй класс Order в Invoice в файлах src/order.js и src/invoice.js через Promptr, но сначала покажи, какой запрос уйдет моделиОграничения
- Promptr применяет ответ модели без подтверждения. Автор советует перед запуском зафиксировать изменения в git и проверять результат в git-интерфейсе.
- Нужны Node 18, ключ в `OPENAI_API_KEY` и настроенная оплата в OpenAI. API OpenAI из России недоступен.
- Готовые бинарники заявлены только для macOS. Последняя отметка релиза на GitHub v6.0.7 стоит за маем 2024 года, а в `package.json` указана версия 6.1.0.
- Автоконтекст берет из задания любые строки, похожие на пути к файлам, поэтому лишний файл тоже может уйти модели. Отключает это ключ `-dac`.
- Ключ `-o` не работает со встроенным шаблоном `refactor`. Лицензия MIT.
Как отключить. Удалите пакет командой `npm uninstall -g @ifnotnowwhen/promptr` (для yarn `yarn global remove @ifnotnowwhen/promptr`) и уберите `OPENAI_API_KEY` из окружения. Файл `~/.promptr.json`, если вы его создавали, удалите вручную.
Частые вопросы
Как Promptr выбирает файлы, которые отправит модели?
В запрос идут файлы, перечисленные в аргументах, и файлы, пути которых нашлись в тексте задания по регулярному выражению. Ключ `-dac` отключает вторую часть, тогда модели уйдут только перечисленные файлы.
Как проверить, что уйдет в OpenAI, до отправки?
Запустите команду с ключом `-d`: Promptr напечатает готовый запрос и число токенов и ничего не изменит на диске. Так же работает проверка шаблона перед первым боевым запуском.
Какая модель используется по умолчанию и как ее поменять?
По умолчанию `gpt-4o`. Ключ `-m` задает другую модель, значение `gpt3` включает `gpt-3.5-turbo`. Адрес API код берет из переменной `OPENAI_API_BASE`, по умолчанию это `https://api.openai.com/v1`.
Можно ли держать общие правила проекта в одном файле?
Да. Положите правила в файл вроде `_project.liquid` и подключайте его в начале задания строкой `{% render '_project.liquid' %}`. Так версия Node, менеджер зависимостей и стиль кода не повторяются в каждом промпте.
Что произойдет, если модель вернет битый JSON?
Promptr пробует починить кавычки и переводы строк, а затем вытащить объект регулярным выражением. Если разобрать ответ не удалось, он печатает сообщение об ошибке разбора и сам ответ модели.
Как запустить задание из файла или с адреса?
Передайте путь или ссылку в ключ `-p`: команда `promptr -p my_prompt.txt` прочитает файл, а значение с http или https Promptr скачает и использует текст как задание.
Обсуждение
Вопросов и отзывов пока нет.
Похожие
CLI-инструментыОднофайловый скрипт на Python, который запускает .prompt-файлы из оболочки: шаблоны, JSON-вывод, инструменты, чат и конвейеры между промптами
29 готовых промптов на китайском: разработка в пять шагов, код-ревью, диаграммы Draw.io, отчеты, статьи для WeChat и главы диплома
Консольный чат с ChatGPT, Claude, Gemini и Cohere: свои ассистенты в YAML, разовые запросы из скриптов и команды оболочки с правкой перед запуском
Терминальный кодовый агент, который сам выбирает модель под каждый запрос и показывает расход в реальном времени
Терминальный кодинг-агент на Python в манере Claude Code: читает репозиторий, правит файлы, запускает команды, с памятью, подагентами и MCP
MCP-сервер на вашей машине, через который ChatGPT и Claude правят код, запускают тесты и смотрят Git в локальном репозитории
Коротко о README
В репозитории лежат исходники на JavaScript в папке `src`, точка входа `bin/index.js`, сборка через webpack и pkg для бинарников и тест шаблонов на mocha. Документация состоит из одного файла: порядок работы, таблица ключей, раздел о шаблонах liquidjs с примером общего файла правил, требования и способы установки. Там же ссылки на два запроса на слияние, в описаниях которых приведены промпты, давшие готовые коммиты.