Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,6 @@ jobs:
- uses: actions/setup-node@v4
with:
node-version: '24'
- run: python template/scripts/harness.py prepare
- run: npm install --prefix "$RUNNER_TEMP/research-dsh" "$(python template/scripts/harness.py package)"
- run: python template/scripts/host/harness.py prepare
- run: npm install --prefix "$RUNNER_TEMP/research-dsh" "$(python template/scripts/host/harness.py package)"
- run: node tests/template/harness_runtime.mjs "$RUNNER_TEMP/research-dsh/node_modules"
28 changes: 15 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@ python tools/create.py ..\Spectra --lib Spectra --title "Название тем
cd ..\Spectra
lake exe cache get
lake build
python scripts/proj.py doctor
python scripts/proj.py check
python scripts/harness.py run web
python scripts/state/proj.py doctor
python scripts/state/proj.py check
python scripts/host/harness.py run web
```

`--lib` — имя библиотеки Lean и пространства имён. Версии Lean и Mathlib берутся из
Expand All @@ -40,7 +40,9 @@ python tools/create.py --update ..\Spectra
`scripts/`, `tests/`, `.claude/agents/`, `.claude/commands/`, `.claude/skills/`,
`DEEPSEEK.md`, `sources/README.md`, `experiments/README.md`, CI. Постановка, записи, идеи,
источники, библиотека Lean, статья, `.mcp.json` и `.claude/settings.json` не трогаются.
Файлы, которых в шаблоне больше нет, команда перечисляет, но не удаляет.
Файлы, которых в шаблоне больше нет, команда перечисляет, но не удаляет. Если в проекте
лежит навык с именем команды шаблона, обновление останавливается и называет папку
`.claude/skills/ИМЯ/`, которую нужно удалить: команды и навыки делят одно пространство имён.

После обновления пересобираются производные `.dsh/skills/` и Cordis patch для Harness из
актуальных инструкций и локальной `.mcp.json`. `--dry-run` ничего не пишет.
Expand All @@ -49,14 +51,14 @@ python tools/create.py --update ..\Spectra

Команды, роли и навыки правятся в одном месте — `template/.claude/`; MCP-серверы — в
`template/.mcp.json`. Поддержка DeepSeek Harness строится из этих файлов:
`template/scripts/harness.py` не содержит имён команд и ролей, тесты берут ожидаемый
состав из тех же каталогов, документация ссылается на `python scripts/harness.py list`.
`template/scripts/host/harness.py` не содержит имён команд и ролей, тесты берут ожидаемый
состав из тех же каталогов, документация ссылается на `python scripts/host/harness.py list`.
После правки воркфлоу достаточно прогнать проверки:

```
python -m unittest discover -s tests/template
python -m unittest discover -s tests/kit
python template/scripts/harness.py --root template list
python template/scripts/host/harness.py --root template list
```

Таблица соответствия и три случая, когда адаптер всё же правится (поле шапки без
Expand Down Expand Up @@ -90,14 +92,14 @@ Python 3.11 или новее, `uv`, `elan` с `lake`, `git`; `pdflatex` — д
| Часть | Содержание |
| --- | --- |
| `template/AGENTS.md` | общие правила: карта проекта, статусы, роли агентов, проверки |
| `template/scripts/proj.py` | заготовки записей, поля шапок, сводки, проверки, аудит аксиом, отпечатки формулировок, сборка статьи, пакеты Aristotle |
| `template/scripts/state/proj.py` | заготовки записей, поля шапок, сводки, проверки, аудит аксиом, отпечатки формулировок, сборка статьи, пакеты Aristotle |
| `template/scripts/records.py` | один разбор записей с шапкой для `proj.py` и `lit.py`: чтение, запись, номера, заготовки |
| `template/scripts/lit.py` | источники: zbMATH, arXiv, MathNet, DOI; транскрипции; гибридный поиск по полным текстам |
| `template/scripts/*_mcp.py` | те же действия как инструменты MCP-серверов `proj` и `lit` |
| `template/scripts/harness.py` | DeepSeek Harness: skills, роли и MCP из `.claude/` и `.mcp.json`, Cordis patch, запуск Web/Headless |
| `template/scripts/sources/lit.py` | источники: zbMATH, arXiv, MathNet, DOI; транскрипции; гибридный поиск по полным текстам |
| `template/scripts/state/mcp.py и scripts/sources/mcp.py` | те же действия как инструменты MCP-серверов `proj` и `lit` |
| `template/scripts/host/harness.py` | DeepSeek Harness: skills, роли и MCP из `.claude/` и `.mcp.json`, Cordis patch, запуск Web/Headless |
| `template/DEEPSEEK.md` | запуск Harness, перенос воркфлоу Claude Code, проверки |
| `template/.claude/agents/` | генератор идей, критик, экспериментатор, рецензент, формализатор, проверяющий соответствие, поиск по Mathlib, поиск литературы, транскрипция PDF, сверка карточек |
| `template/.claude/commands/` | `/day`, `/ideas`, `/referee`, `/formalize`, `/fidelity`, `/sources`, `/transcribe` |
| `template/.claude/skills/` | оформление текста: `paper-canvas`, `shkalikov-style`, `paper-de-ai`, `exposition`; набор и типографика LaTeX: `math-rigor` |
| `template/.claude/commands/` | `/day`, `/ideas`, `/referee`, `/formalize`, `/fidelity`, `/sources`, `/transcribe`, `/exposition` |
| `template/.claude/skills/` | слои математического текста: содержание — `math-rigor`, композиция — `paper-canvas`, стиль автора — `shkalikov-style`, язык — `paper-de-ai`, набор — `math-typeset` |
| `tests/template/` | тесты инструментов без сети и без Lean; `harness_runtime.mjs` сверяет patch со схемами Harness |
| `tests/kit/` | тесты создания и обновления проекта |
2 changes: 1 addition & 1 deletion docs/architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@
продублированы. Копии могли разойтись при правке формата. Общая часть вынесена в
`scripts/records.py`; `proj.py` и `lit.py` вызывают её.

**Обратная зависимость.** `proj.py sync` запускал `scripts/lit.py catalog` подпроцессом по
**Обратная зависимость.** `proj.py sync` запускал `scripts/sources/lit.py catalog` подпроцессом по
жёсткому пути, то есть инструмент записей знал о внутреннем устройстве инструмента
источников, а смена рабочей папки ломала вызов. Теперь путь строится от расположения
самого модуля, а корень передаётся явно ключом `--root`.
Expand Down
51 changes: 29 additions & 22 deletions docs/guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,19 +33,19 @@ python tools/create.py ..\Spectra --lib Spectra --title "Название тем
cd ..\Spectra
lake exe cache get
lake build
python scripts/proj.py doctor
python scripts/proj.py check
python scripts/state/proj.py doctor
python scripts/state/proj.py check
```

`--lib` — имя библиотеки Lean и пространства имён: латиница, с заглавной буквы, без
пробелов. `lake exe cache get` скачивает готовую сборку Mathlib, иначе `lake build`
займёт часы. `doctor` проверяет окружение, `check` — сам проект; в свежем проекте `check`
выдаёт одно замечание о записи-примере.

Один раз выполните `uv run scripts/lit.py list`: команда поставит зависимости поиска по
Один раз выполните `uv run scripts/sources/lit.py list`: команда поставит зависимости поиска по
литературе, и редактору не придётся ждать этого при первом запуске.

Для DeepSeek Harness запустите `python scripts/harness.py run web`, выберите папку
Для DeepSeek Harness запустите `python scripts/host/harness.py run web`, выберите папку
проекта и preset Standard, настройте модель и ключ в интерфейсе Harness. Создание
проекта уже подготовило skills, роли и MCP; запуск обновит их при необходимости.
Полная инструкция — [DEEPSEEK.md](../template/DEEPSEEK.md), она также лежит в созданном проекте.
Expand All @@ -67,7 +67,7 @@ python scripts/proj.py check
сначала пуст: его пополняют агенты критик и рецензент, когда находят вывод, который в этой теме выглядит интуитивно верным, но неверен.

После этого удалите примеры: файл `results/R01.md` и теорему `sq_add` из `Basic.lean` в
папке библиотеки, затем выполните `python scripts/proj.py sync`.
папке библиотеки, затем выполните `python scripts/state/proj.py sync`.

## Шаг 3. Работать командами

Expand All @@ -93,7 +93,7 @@ python scripts/proj.py check
авторский LaTeX, с MathNet — PDF, по одному DOI — только описание.

Статью, которой нет в открытом доступе, вы добавляете сами:
`python scripts/lit.py attach S31 путь\к\файлу.pdf`.
`python scripts/sources/lit.py attach S31 путь\к\файлу.pdf`.

Теорему источника нельзя использовать как посылку, пока у неё нет карточки в
`sources/cards/`. Карточка содержит номер теоремы, страницу, все гипотезы вместе с
Expand Down Expand Up @@ -129,7 +129,7 @@ python scripts/proj.py check

Доказательство пишется в запись `results/R*.md` — на утверждение свой файл с разделами
«Утверждение», «Доказательство», «Границы». Запись создаёт команда
`python scripts/proj.py new result "Название"`; текст можете написать вы или попросить об
`python scripts/state/proj.py new result "Название"`; текст можете написать вы или попросить об
этом Claude обычным сообщением.

`/referee R07` отдаёт запись рецензенту. Вердикты:
Expand Down Expand Up @@ -167,15 +167,22 @@ Lean то же, что утверждение записи. Он не видит

### Статья: `/exposition`

`/exposition` читает `paper/main.tex`, сравнивает его со списком результатов и вносит то,
что меняет ответ на вопрос статьи: новый класс данных, усиление вывода, ослабление
гипотезы, пример или контрпример. Технические леммы в статью не идут. Вносится только
запись с принятой рецензией либо с доказательством в Lean и проверенным соответствием.
Lean, агенты и номера записей в тексте статьи не упоминаются.
`/exposition` без аргумента читает `paper/main.tex`, сравнивает его с записями и вносит то,
после чего аннотация или анонс статьи должны измениться: новый класс данных, усиление
вывода, ослабление гипотезы, закрытый вопрос, пример или контрпример. Лемма входит как
ступень доказательства вносимого результата. Вносится только запись с принятой рецензией
либо с доказательством в Lean и проверенным соответствием; результаты, которые уже стоят в
статье без такой проверки, команда не трогает и перечисляет в отчёте. Lean, агенты и номера
записей в тексте статьи не упоминаются.

Статью оформляют четыре скилла из проекта: `paper-canvas` следит за линией изложения,
`shkalikov-style` задаёт стиль, `math-rigor` отвечает за набор и типографику LaTeX,
`paper-de-ai` убирает обороты, по которым узнаётся машинный текст. Другой стиль указывается в `PROJECT.md`.
С аргументом команда делает то, что названо: `/exposition внеси R07` — полный проход,
`/exposition поправь ссылку в лемме 3` — правка по месту и сборка.

Текст ведут пять скиллов проекта, по одному на слой: `math-rigor` отвечает за содержание
(верно ли утверждение и можно ли его проверить), `paper-canvas` — за композицию (что
сказано и что главное), `shkalikov-style` — за стиль автора, `paper-de-ai` — за язык (слова
без содержания), `math-typeset` — за набор формул и окружений. Другой стиль указывается в
`PROJECT.md`.

### Ежедневный цикл: `/day`

Expand All @@ -197,7 +204,7 @@ Lean, агенты и номера записей в тексте статьи
| `sources/catalog.md` | источники со ссылками и статусами |
| `question.md`, раздел «Ответ на …» | короткий ответ на вопрос со ссылками на записи |

Первые три файла собирает `python scripts/proj.py sync` из шапок записей; руками они не
Первые три файла собирает `python scripts/state/proj.py sync` из шапок записей; руками они не
правятся.

Шапка записи показывает, насколько утверждению можно верить:
Expand Down Expand Up @@ -233,7 +240,7 @@ Lean, агенты и номера записей в тексте статьи

Всё, что делают команды, доступно и из терминала.

Проект — `python scripts/proj.py …`:
Проект — `python scripts/state/proj.py …`:

| Команда | Действие |
| --- | --- |
Expand All @@ -246,7 +253,7 @@ Lean, агенты и номера записей в тексте статьи
| `tex paper/main.tex` | собрать статью |
| `doctor` | проверить окружение |

Литература — `python scripts/lit.py …`:
Литература — `python scripts/sources/lit.py …`:

| Команда | Действие |
| --- | --- |
Expand Down Expand Up @@ -276,8 +283,8 @@ python tools/create.py --update ..\Spectra

Для DeepSeek Harness отдельного обновления нет: его skills и роли собираются из тех же
агентов, команд и скиллов. `tools/create.py --update` пересобирает их сам, а после своей правки
в `.claude/` или `.mcp.json` это делает `python scripts/harness.py prepare` или следующий
`run`. Что получит Harness, показывает `python scripts/harness.py list`.
в `.claude/` или `.mcp.json` это делает `python scripts/host/harness.py prepare` или следующий
`run`. Что получит Harness, показывает `python scripts/host/harness.py list`.

## Если что-то не работает

Expand All @@ -292,7 +299,7 @@ python tools/create.py --update ..\Spectra
`mathlib-scout`.
- Инструменты ведут себя странно после правки `scripts/` —
`python -m unittest discover tests`.
- В Harness нет команды, роли или инструмента MCP. `python scripts/harness.py list`
показывает, что адаптер собрал; `python scripts/harness.py check` — устарели ли
- В Harness нет команды, роли или инструмента MCP. `python scripts/host/harness.py list`
показывает, что адаптер собрал; `python scripts/host/harness.py check` — устарели ли
производные файлы. Запуск идёт только через `harness.py run` или с ключом `--patch`,
после пересборки Harness перезапускается. Остальное — в `DEEPSEEK.md`.
2 changes: 1 addition & 1 deletion template/.claude/agents/experimenter.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ tools: Read, Grep, Glob, Bash, Write, Edit, mcp__proj

1. Прочитай идею или вопрос, контрольные случаи в `question.md`, правила в
`experiments/README.md`.
2. Создай опыт: `python scripts/proj.py new experiment "Название" --idea I07`. До расчёта
2. Создай опыт: `python scripts/state/proj.py new experiment "Название" --idea I07`. До расчёта
запиши в его `README.md` вопрос и исход, опровергающий гипотезу.
3. Напиши `run.py`: зависимости — в заголовке PEP 723, параметры и зерно случайных чисел
— в коде, результат — таблица в stdout. Запуск: `uv run experiments/E01/run.py`.
Expand Down
Loading
Loading