Технологии извлечения и анализа данных

Удалённое управление

Удалённое управление позволяет управлять 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. Чат создан — новая запись чата сохраняется в базе данных с названием, окружением и меткой времени
  2. Сообщение помещено в очередь — промпт помещается в очередь сообщений (поддерживаемая базой данных очередь, обрабатываемая каждую 1 секунду)
  3. Запущен экземпляр Claude Code — процессор очереди сообщений подбирает сообщение и создаёт экземпляр Claude Code для проекта
  4. Обработка — Claude Code читает промпт, применяет активный навык и хуки, использует инструменты для чтения/редактирования файлов и генерирует ответ
  5. Валидация — если настроена Валидация, результаты сборки и проверки автоматически оцениваются
  6. Завершение — ответ сохраняется как сообщение помощника, статус изменяется на 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 disabledPASTUKHOV_CODE_API_KEY не установлена (503)
  • InternalServerError — неожиданная ошибка сервера (500)