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
6 changes: 3 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ jobs:
- uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python }}
- run: python -X utf8 -m unittest discover -s template/tests
- run: python -X utf8 -m unittest discover -s tests
- run: python -X utf8 -m unittest discover -s tests/template
- run: python -X utf8 -m unittest discover -s tests/kit

harness-contract:
runs-on: ubuntu-latest
Expand All @@ -35,4 +35,4 @@ jobs:
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: node template/tests/harness_runtime.mjs "$RUNNER_TEMP/research-dsh/node_modules"
- run: node tests/template/harness_runtime.mjs "$RUNNER_TEMP/research-dsh/node_modules"
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
__pycache__/
.pytest_cache/
*.pyc
97 changes: 45 additions & 52 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
# Шаблон исследовательского проекта: математика, источники, Lean
# Шаблон проекта: математика, источники, Lean

Заготовка проекта, который ведут агенты DeepSeek Harness или Claude Code: постановка, источники, идеи с
независимой критикой, доказательства с рецензией, формализация в Lean 4 с проверкой
соответствия, статья. От темы шаблон не зависит: всё тематическое лежит в двух файлах
нового проекта, `question.md` и `PROJECT.md`.
Набор для исследовательского проекта, который ведут агенты Claude Code или DeepSeek
Harness: постановка, источники, идеи с независимой критикой, доказательства с рецензией,
формализация в Lean 4 с проверкой соответствия, статья. От темы шаблон не зависит: всё
тематическое живёт в двух файлах нового проекта, `question.md` и `PROJECT.md`.

Порядок работы и возможности проекта для нового пользователя описаны в
[GUIDE.md](GUIDE.md).
Порядок работы и возможности для нового пользователя — в [docs/guide.md](docs/guide.md).
Как устроен сам набор — в [docs/architecture.md](docs/architecture.md).

## Новый проект

```
python create.py ..\Spectra --lib Spectra --title "Название темы"
python tools/create.py ..\Spectra --lib Spectra --title "Название темы"
cd ..\Spectra
lake exe cache get
lake build
Expand All @@ -21,49 +21,63 @@ python scripts/harness.py run web
```

`--lib` — имя библиотеки Lean и пространства имён. Версии Lean и Mathlib берутся из
шаблона; ключ `--pins-from ПРОЕКТ` берёт их из работающего проекта. Дальнейшие шаги
описаны в `README.md` созданного проекта.
шаблона; ключ `--pins-from ПРОЕКТ` берёт их из работающего проекта. Дальнейшие шаги —
в `README.md` созданного проекта.

Для DeepSeek Harness нужны Node.js 22.19+ (ветка 22) или 24+ и npm. Команда запуска
подготовит нативные skills, роли и MCP, затем откроет Harness закреплённой версии.
Модель и ключ настраиваются в Harness. Подробности, headless-запуск и проверки —
[DEEPSEEK.md](template/DEEPSEEK.md). Поддержка Claude Code сохраняется.
подготовит нативные skills, роли и MCP, затем откроет Harness закреплённой версии. Модель
и ключ настраиваются в Harness. Подробности, headless-запуск и проверки —
[template/DEEPSEEK.md](template/DEEPSEEK.md). Поддержка Claude Code сохраняется.

## Обновление инструментов в проекте

```
python create.py --update ..\Spectra --dry-run
python create.py --update ..\Spectra
python tools/create.py --update ..\Spectra --dry-run
python tools/create.py --update ..\Spectra
```

Обновление переписывает только то, чем владеет шаблон: `AGENTS.md`, `CLAUDE.md`,
`scripts/`, `tests/`, `.claude/agents/`, `.claude/commands/`, `.claude/skills/`,
`DEEPSEEK.md`, `sources/README.md`, `experiments/README.md`, CI. Постановка, записи, идеи, источники,
библиотека Lean, статья, `.mcp.json` и `.claude/settings.json` не трогаются. Файлы,
которых в шаблоне больше нет, команда перечисляет, но не удаляет.
`DEEPSEEK.md`, `sources/README.md`, `experiments/README.md`, CI. Постановка, записи, идеи,
источники, библиотека Lean, статья, `.mcp.json` и `.claude/settings.json` не трогаются.
Файлы, которых в шаблоне больше нет, команда перечисляет, но не удаляет.

После обновления пересобираются производные `.dsh/skills/` и Cordis patch для Harness
из актуальных инструкций и локальной `.mcp.json`. `--dry-run` ничего не пишет.
После обновления пересобираются производные `.dsh/skills/` и Cordis patch для Harness из
актуальных инструкций и локальной `.mcp.json`. `--dry-run` ничего не пишет.

## Изменение воркфлоу

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

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

Таблица соответствия и три случая, когда адаптер всё же правится (поле шапки без правила,
новый встроенный инструмент Claude Code, новая версия Harness), — в разделе «Как
переносится воркфлоу Claude Code» файла [DEEPSEEK.md](template/DEEPSEEK.md). Таблицы
агентов и команд в `template/AGENTS.md`, `template/README.md` и `GUIDE.md` общие для двух
сред и обновляются вместе с воркфлоу.
Таблица соответствия и три случая, когда адаптер всё же правится (поле шапки без
правила, новый встроенный инструмент Claude Code, новая версия Harness), — в разделе «Как
переносится воркфлоу Claude Code» файла [template/DEEPSEEK.md](template/DEEPSEEK.md).
Состав воркфлоу описан в `template/AGENTS.md`; он же попадает в созданный проект, поэтому
его не дублируют ни здесь, ни в руководстве.

## Устройство набора

| Слой | Где | Что это |
| --- | --- | --- |
| Продукт | `template/` | проект-заготовка; создание копирует его целиком, подставляя имя библиотеки и название |
| Набор | `tools/` | `create.py` — создание и обновление проекта; `tests/kit/` проверяет его без сети и Lean |
| Проверки продукта | `tests/template/` | инструменты проекта, адаптер Harness, согласованность документации |
| Описание | `docs/`, `README.md` | руководство пользователя, архитектура, эта страница |

Такое деление — по назначению, а не по типу файла: всё, что копируется в проект, лежит
целиком в `template/`, а всё, что описывает и проверяет копирование, — вне него. Поэтому
`PROJECT.md`, `question.md` и остальные файлы заготовки не встречаются в двух местах.
Полный разбор с обоснованием — в [docs/architecture.md](docs/architecture.md).

## Требования

Expand All @@ -77,34 +91,13 @@ Python 3.11 или новее, `uv`, `elan` с `lake`, `git`; `pdflatex` — д
| --- | --- |
| `template/AGENTS.md` | общие правила: карта проекта, статусы, роли агентов, проверки |
| `template/scripts/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/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/tests/` | тесты инструментов без сети и без Lean; `harness_runtime.mjs` сверяет patch со схемами Harness |
| `tests/` | тесты создания и обновления проекта |

## Устройство

- Статус утверждения стоит в шапке его записи `results/R*.md`. `blueprint.md` и индекс
идей собирает `proj.py sync`.
- `proj.py check` находит объявления записей в библиотеке, запускает Lean, разбирает
аксиомы и ищет в исходниках `sorry`, `axiom`, `native_decide` и отключённые линтеры.
- Соответствие формулировки Lean утверждению записи проверяет отдельный агент. Отпечаток
формулировки и её определений показывает, что проверка устарела.
- Идею проверяет критик, доказательство — рецензент, карточку источника — сверяющий по
PDF. Каждому передают только написанный текст.
- На запись и на идею — по файлу.
- Тема лежит в `PROJECT.md`, `question.md` и `project.toml`; инструменты обновляются из
шаблона.
- Скрипты написаны на Python и печатают в UTF-8. У каждого действия есть инструмент MCP,
которому строки передаются без оболочки.
- Опыт — папка `experiments/E*/` с кодом и одной командой запуска; она входит в Git.
- В `output/` лежит только восстановимое.
- У транскрипции есть печатные номера страниц и утверждений. Карточку теоремы сверяют с
PDF вместе с условиями раздела, стоящими вне текста теоремы.
- Обозначения не пересекаются: `R` — запись, `I` — идея, `S` — источник, `E` — опыт,
`Q` — открытый вопрос.
| `tests/template/` | тесты инструментов без сети и без Lean; `harness_runtime.mjs` сверяет patch со схемами Harness |
| `tests/kit/` | тесты создания и обновления проекта |
Loading
Loading