Об этом проекте

skillstate-proxy — это локальный HTTP-прокси, предназначенный для агентных рабочих процессов, которые могут выражать свой прогресс в виде явного структурированного состояния. Он располагается между клиентом и настроенным поставщиком модели, формирует контекст из спецификации задачи, JSON-состояния сессии и последнего наблюдения, а затем извлекает state_patch из ответа модели. В README сокращение токенов описывается как зависящее от рабочей нагрузки и прямо указано, что экономия, задержка, точность и совместимость с поставщиками не гарантируются. Установка выполняется через npm (Node.js 20 или новее). Исполняемый файл — skillstate, также доступен как skillstate-proxy. Настройка осуществляется через переменные окружения, такие как SKILLSTATE_UPSTREAM, SKILLSTATE_API_KEY, SKILLSTATE_PORT (по умолчанию 127.0.0.1:8789), SKILLSTATE_SCHEMA, SKILLSTATE_INITIAL_STATE, SKILLSTATE_CONFIG и SKILLSTATE_VERBOSE, а также через CLI-флаги --config, --upstream, --port, --schema и --verbose. Приоритет: CLI-флаги, переменные окружения, файл конфигурации, затем значения по умолчанию. Совместимый чат-клиент указывает на http://127.0.0.1:8789/v1. Контракт состояния объединяет патчи, заменяя массивы, рекурсивно объединяя объекты и удаляя ключ, когда значение его патча равно null. В README подчёркивается, что это не архив транскриптов без потерь: факты, не сохранённые в состоянии, могут быть недоступны позже, и при важности дословных свидетельств рекомендуется отдельная запись аудита. Списки разрешённых ключей не ограничивают размер значений или наблюдений. HTTP-поверхность включает POST /v1/chat/completions, POST /v1/messages (трансляция формата Anthropic), GET /v1/models, GET /health, GET /state (с ?session=ID), DELETE /state?session=ID и GET /cost. В README предупреждают, что реализованный маршрут не является доказательством работы всех функций SDK, и рекомендуют тестировать потоковую передачу, корреляцию вызовов инструментов, параллельные сессии, повторные попытки и отмену на конкретном клиенте, поставщике и модели. Необязательные настройки rpm/tpm для каждого upstream используют локальное скользящее окно в одну минуту и не являются квотами на стороне поставщика или распределёнными ограничителями. Проверка из исходного кода использует npm ci, npm run build и npm test с зафиксированным package-lock.json; CI проверяет Node.js 20, 22 и 24. Необязательные проверки макета статической документации используют Python Playwright. Бенчмарки (conversation и tool-loop) требуют явной настройки поставщика и могут стоить денег; в README советуют сохранять вместе с любым результатом ревизию, рабочую нагрузку, модель, схему, необработанные данные об использовании, повторные попытки, оценки качества и сбои, а также сравнивать общие выставленные счета за входные/выходные данные. Проект ссылается на статью SKILL.state (arXiv:2608.26263) и отмечает, что результаты исследований не подтверждают точность этой реализации или универсальную совместимость. Он распространяется под лицензией MIT, не связан с OpenAI или Anthropic, и лицензия не покрывает upstream-инференс или хостинг. Состояние сохраняется локально и может содержать конфиденциальную информацию о задачах; upstream получает переписанный контекст, поэтому слушатель следует держать приватным. В README указано, что проект не является границей безопасности для многопользовательской среды только потому, что в нём есть идентификаторы сессий.