Удалённое управление позволяет управлять Pastukhov Code программно через простой HTTP API. Создавайте чаты, отправляйте промпты и получайте ответы ИИ — всё без открытия браузера. Это делает его идеальным для CI/CD-пайплайнов, автоматизированных рабочих процессов и интеграции возможностей ИИ в ваши существующие системы.
API идеально подходит для добавления кнопок «Редактировать с ИИ» в любое приложение. Вместо создания сложной интеграции с OpenAI API или агентного фреймворка с нуля вы просто отправляете HTTP-запрос в Pastukhov Code — который уже имеет навыки, валидацию, хуки, окружения и всю мощь Claude Code, встроенную в него. Ваша система получает редактирование кода с помощью ИИ с нулевой дополнительной сложностью.
В сочетании с Навыками и Валидацией, Удалённое управление может быть значительно эффективнее, чем интеграция OpenAI API или любого агентного фреймворка с нуля. Навыки предоставляют контекст и рабочие процессы для конкретных доменов, а валидация гарантирует, что каждое изменение проверено и исправлено либо автоматически через функцию AutoFix, либо хотя бы вручную проверено.
Настройка
Удалённое управление требует одной переменной окружения: PASTUKHOV_CODE_API_KEY. Эта переменная хранит хеш SHA256 вашего API-ключа — сам ключ в открытом виде никогда не сохраняется на сервере.
Шаг 1: Сгенерируйте хеш API-ключа
Выберите API-ключ (любую строку, которую хотите) и вычислите его хеш SHA256. Сервер будет сравнивать входящие ключи, хешируя их и сопоставляя с этим значением:
# Linux / macOS
echo -n "my-secret-api-key" | sha256sum | awk '{print $1}'
# Вывод: a1b2c3d4e5f6... (64-символьная шестнадцатеричная строка)
Вы также можете использовать генератор SHA256 на странице входа — нажмите «SHA256 generator» под кнопкой «Sign In».
Шаг 2: Установите переменную окружения
Установите хеш как PASTUKHOV_CODE_API_KEY в вашем экземпляре Pastukhov Code:
# Docker (docker-compose.yml)
services:
code:
environment:
- PASTUKHOV_CODE_API_KEY=a1b2c3d4e5f6...
# Linux / macOS
export PASTUKHOV_CODE_API_KEY=a1b2c3d4e5f6...
# Windows PowerShell
$env:PASTUKHOV_CODE_API_KEY="a1b2c3d4e5f6..."
Если переменная не установлена, API возвращает 503 Service Unavailable — по умолчанию он отключён для безопасности.
Аутентификация
Все запросы к удалённому API должны включать заголовок X-API-Key с вашим API-ключом в открытом виде. Сервер автоматически хеширует его и сравнивает с сохранённым значением. Это означает, что сам ключ никогда не касается диска — только его хеш.
X-API-Key: my-secret-api-key
- 401 Unauthorized — отсутствующий или недействительный API-ключ
- 503 Service Unavailable — API отключён (переменная
PASTUKHOV_CODE_API_KEYне установлена)
Создание чата
POST /api/remote/chats
Создаёт новый чат и опционально отправляет начальный промпт. Промпт помещается в очередь и обрабатывается автоматически очередью сообщений.
Тело запроса
prompt(строка, опционально) — начальное сообщение пользователя для отправкиtitle(строка, опционально) — название чата (по умолчанию «Remote API Chat»)environment(строка, опционально) — имя окружения для использования в этом чате (см. Окружения)
Ответ (201 Created)
{
"chatId": 123,
"url": "/123",
"status": "queued",
"createdAt": "2026-06-07T17:50:00Z"
}
status равен "queued", когда предоставлен промпт (сообщение ожидает в очереди), или "created", когда промпт не предоставлен.
Пример
curl -X POST http://localhost:5173/api/remote/chats \
-H "X-API-Key: my-secret-api-key" \
-H "Content-Type: application/json" \
-d '{"prompt": "Fix the null reference in UserService.cs", "title": "Bug Fix"}'
Статус чата
GET /api/remote/chats/{chatId}/status
Возвращает текущий статус обработки, количество сообщений, общую стоимость и подробности об ошибке, если что-то пошло не так.
Ответ (200 OK)
{
"chatId": 123,
"status": "processing",
"title": "Bug Fix",
"createdAt": "2026-06-07T17:50:00Z",
"updatedAt": "2026-06-07T17:52:30Z",
"messageCount": 4,
"totalCost": 0.035,
"error": null
}
Значения статуса:
created— чат существует, сообщения ещё не отправленыqueued— сообщения ожидают в очередиprocessing— Claude Code активно работаетcompleted— все сообщения обработаны, чат бездействуетerror— произошла ошибка (подробности в полеerror)
Пример
curl http://localhost:5173/api/remote/chats/123/status \
-H "X-API-Key: my-secret-api-key"
Сообщения чата
GET /api/remote/chats/{chatId}/messages?since={timestamp}
Извлекает все сообщения в чате. Используйте опциональный параметр запроса since (метка времени ISO 8601) для инкрементальных обновлений — возвращаются только сообщения, созданные в или после этого времени.
Ответ (200 OK)
{
"chatId": 123,
"messages": [
{
"id": 456,
"role": "user",
"content": "Fix the null reference in UserService.cs",
"createdAt": "2026-06-07T17:50:00Z",
"tokens": { "input": 250, "output": 0 },
"cost": 0.0001
},
{
"id": 457,
"role": "assistant",
"content": "I found the null reference issue...",
"createdAt": "2026-06-07T17:50:15Z",
"tokens": { "input": 1800, "output": 420 },
"cost": 0.0320
}
],
"since": "2026-06-07T17:50:00Z"
}
Каждое сообщение включает роль (user, assistant или system), содержимое, метки времени, количество токенов и стоимость. Параметр since возвращается в ответе для удобства.
Пример
# Получить все сообщения
curl http://localhost:5173/api/remote/chats/123/messages \
-H "X-API-Key: my-secret-api-key"
# Получить только новые сообщения с определённой метки времени
curl "http://localhost:5173/api/remote/chats/123/messages?since=2026-06-07T17:51:00Z" \
-H "X-API-Key: my-secret-api-key"
Как это работает внутри
Когда вы создаёте чат с промптом, внутри Pastukhov Code происходит следующее:
- Чат создан — новая запись чата сохраняется в базе данных с названием, окружением и меткой времени
- Сообщение помещено в очередь — промпт помещается в очередь сообщений (поддерживаемая базой данных очередь, обрабатываемая каждую 1 секунду)
- Запущен экземпляр Claude Code — процессор очереди сообщений подбирает сообщение и создаёт экземпляр Claude Code для проекта
- Обработка — Claude Code читает промпт, применяет активный навык и хуки, использует инструменты для чтения/редактирования файлов и генерирует ответ
- Валидация — если настроена Валидация, результаты сборки и проверки автоматически оцениваются
- Завершение — ответ сохраняется как сообщение помощника, статус изменяется на
completed
Параметр environment выбирает модель ИИ и конфигурацию из ваших настроек Окружений. Это означает, что вы можете использовать разные модели или настройки для разных вызывающих API — например, быструю модель для быстрых правок и мощную модель для сложных рефакторингов.
Шаблон опроса
Рекомендуемый способ использования API — простой цикл опроса: создать чат, опрашивать статус до завершения, затем получить сообщения.
import time, requests
API_KEY = "my-secret-api-key"
BASE = "http://localhost:5173/api/remote"
# 1. Создать чат с промптом
resp = requests.post(f"{BASE}/chats",
headers={"X-API-Key": API_KEY},
json={"prompt": "Add error handling to the login endpoint",
"title": "Error Handling", "environment": "production"})
chat_id = resp.json()["chatId"]
# 2. Опрашивать до завершения
while True:
status = requests.get(f"{BASE}/chats/{chat_id}/status",
headers={"X-API-Key": API_KEY}).json()
if status["status"] == "completed":
break
elif status["status"] == "error":
raise Exception(status["error"])
time.sleep(2)
# 3. Получить ответ помощника
messages = requests.get(f"{BASE}/chats/{chat_id}/messages",
headers={"X-API-Key": API_KEY}).json()["messages"]
for msg in messages:
if msg["role"] == "assistant":
print(msg["content"])
Для долгих задач используйте параметр since, чтобы получать только новые сообщения инкрементально вместо повторной загрузки всей истории каждый раз.
Интеграция с существующими системами
Удалённое управление — это самый простой путь добавления редактирования кода с помощью ИИ в любое приложение. По сравнению с интеграцией OpenAI API или созданием агентного фреймворка с нуля, Pastukhov Code даёт вам:
- Не требуется промпт-инжиниринг — Навыки предоставляют предварительно созданный контекст домена, инструкции и рабочие процессы. Попросите модель загрузить навык, и ИИ уже знает, что делать.
- Автоматическая валидация — Валидация запускает сборки, линтинг и пользовательские проверки после каждого изменения. Вашей интеграции не нужно проверять результаты — Pastukhov Code делает это за вас.
- Полные возможности Claude Code — чтение файлов, редактирование, git-операции, терминальные команды, веб-поиск и доступ к MCP-серверам. Всё, что может делать Claude Code, доступно через API.
- Ограждения безопасности — Хуки предотвращают опасные команды и автоматически применяют политики.
- Три HTTP-вызова — создать чат, опросить статус, получить сообщения. Это вся поверхность интеграции.
Типичная кнопка «Редактировать с ИИ» в вашем приложении будет отправлять POST на /api/remote/chats с описательным промптом, опрашивать /api/remote/chats/{id}/status до завершения, затем отображать результат. ИИ обрабатывает чтение файлов, понимание контекста, внесение изменений и запуск валидации — ваше приложение только обрабатывает HTTP-вызовы.
Ответы с ошибками
Все ошибки следуют согласованному формату JSON:
{
"error": "ErrorType",
"message": "Человекочитаемое описание",
"details": "Дополнительный контекст (опционально)"
}
Unauthorized— недействительный или отсутствующий API-ключ (401)NotFound— ID чата не существует (404)Remote API is disabled—PASTUKHOV_CODE_API_KEYне установлена (503)InternalServerError— неожиданная ошибка сервера (500)