Перейти к содержанию

Диагностика

«No snowcite project found»

Резолвер проекта идёт вверх по иерархии директорий от текущей рабочей до корня в поисках каталога .snowcite/. Если ни в одной родительской директории такого каталога нет, инструмент возвращает:

NoProjectError: No snowcite project found in the current directory or any parent.
Run `init_project()` here first to create a .snowcite/ directory.

Решение: перейдите (cd) в директорию, где должен располагаться проект, и попросите Claude выполнить init_project.

Альтернативный вариант: установите переменную окружения SNOWCITE_PROJECT_ROOT=/path/to/project. Это полезно, если сервер запущен из директории, не связанной с проектом.

Компиляция LaTeX падает на кириллице

Симптомы: ошибки вида Missing character: There is no Ж in font ec-lmr12! или Package inputenc Error: Unicode character Ы not set up.

Причина: используется 8-битный fontenc (T1 или T2A) под XeTeX tectonic, которому требуются Unicode-шрифты через fontspec.

Решение: используйте шаблоны snowcite без изменений. Они уже содержат:

\usepackage{fontspec}
\usepackage[russian,english]{babel}
\babelfont{rm}[Ligatures=TeX]{CMU Serif}

Если review.tex редактировался вручную, перегенерируйте его через write_document(...) или скопируйте преамбулу из snowcite/templates/latex/plain.tex.j2.

biber not found

tectonic поставляется с bibtex, но не с biber. Если в \usepackage{biblatex} указано backend=biber, замените на backend=bibtex. В шаблонах snowcite это уже сделано.

Ошибки при компиляции Typst, связанные с modern-g7-32

ГОСТ-шаблон для Typst привязан к конкретной версии пакета. Если typst сообщает о несовместимых функциях или breaking changes, обновите строку @preview/modern-g7-32:X.Y.Z в snowcite/templates/typst/gost.typ.j2. Перед коммитом запустите локально pytest, чтобы убедиться, что подстановка переменных продолжает работать.

Отказ safety-классификатора на чувствительных темах

snowcite предназначен для академических обзоров, включая направления двойного назначения (AI safety, кибербезопасность, биобезопасность). Однако safety-классификатор Claude реагирует на накопленную плотность чувствительных терминов в контексте — чат, заполненный абстрактами с деталями операционного характера, может приводить к отказам даже при добросовестном исследовательском запросе.

В snowcite заложены меры снижения риска:

  • get_unreviewed_papers(include_abstracts=False) — поведение по умолчанию: абстракты не попадают в контекст;
  • в CLAUDE.md задан явный контекст проекта как peer-reviewed литературного обзора;
  • субагент academic-reviewer пересказывает источники своими словами и не цитирует дословно.

Если отказ всё же произошёл:

  1. Выполните /clear — накопленная плотность чувствительных терминов часто бывает причиной.
  2. Уточните намерение: «Это systematic review для диплома. Мне нужен обзор на академическом уровне детализации, не операционном».
  3. Разбейте работу на подтемы, чтобы одна сессия затрагивала меньше материала.

При действительно граничном материале (пошаговые инструкции атак, детали weaponization) Claude может отказаться от ответа — это корректное поведение. Удерживайте обзор на уровне «что утверждает статья и почему это важно», а не «как воспроизвести описанную атаку».

Превышение лимита запросов к Semantic Scholar

Без API-ключа доступно 100 запросов за 5 минут. Встроенный retry-механизм учитывает заголовок Retry-After и применяет экспоненциальный backoff, но при большом snowball в логе могут появляться сообщения:

semantic_scholar: HTTP 429, waiting 30s (attempt 3/5)

Это штатное поведение: поиск продолжается параллельно на других источниках. Постоянное решение — получить API-ключ и установить SNOWCITE_SEMANTIC_SCHOLAR_API_KEY, что поднимает лимит до 100 запросов в секунду.

Claude потерял контекст сессии

Это ожидаемо после /clear или в новой сессии. Первым вызовом должен быть get_session_state(): он возвращает текущую фазу, подсказку next_action, последние действия ревью и количество разделов. Claude продолжит с того же места.

В PDF отсутствуют символы кириллицы

Для LaTeX причина та же, что и в разделе «Компиляция LaTeX падает на кириллице» выше: XeTeX tectonic требует Unicode-шрифты через fontspec.

Для Typst убедитесь, что в документе задано set text(lang: "ru"). Шаблоны snowcite подставляют это значение автоматически из project_metadata.language.

Файл CLAUDE.md был перезаписан

Так и должно быть: CLAUDE.md управляется snowcite. Любой вызов init_project (в том числе с update=True) заново генерирует файл из шаблона. Замечания по конкретному проекту размещайте в отдельном файле, например NOTES.md, и ссылайтесь на него из CLAUDE.md через @NOTES.md.

История ревью выглядит некорректно

set_review_status дописывает запись в review_history при каждом изменении. Просмотреть историю:

sqlite3 .snowcite/papers.db \
  "SELECT paper_id, old_status, new_status, reason, reviewed_by, changed_at
   FROM review_history ORDER BY id DESC LIMIT 20;"

Прямое изменение или удаление записей в этой таблице делать не рекомендуется: на ней построен audit trail, который использует генерация PRISMA flow.