Maximus — локальная evidence-first система инженерного обучения. Она связывает граф компетенций, учебные циклы, лабораторные, ревью, экзамены, англоязычные интервью, сигналы рынка и read-only поиск open-source задач в один адаптивный процесс. Maximus предлагает, измеряет и проверяет; ученик выполняет работу, подтверждает результат и принимает решения сам.
Требуется Go 1.24 или новее.
make verify
make build
./bin/maximus version
./bin/maximus init --profile learner --name "Learner"
./bin/maximus baseline --profile learner
./bin/maximus plan --profile learner --start 2026-08-03 --weeks 6 --hours 25
./bin/maximus next --profile learner --at 2026-08-03
./bin/maximus profile --profile learnerВсе успешные workflow-команды возвращают JSON; только version печатает
текстовый идентификатор сборки. Ошибка выводится в stderr и завершает процесс с
ненулевым кодом.
Единственный источник истины — SQLite. По умолчанию база находится в
.local/maximus.db; путь можно заменить глобальным --db. Профиль, исходные
тексты CV и вакансий, локальные пути, ответы, оценки, evidence и история планов
приватны. Импорт отклоняет распространённые credential patterns до записи, а
CLI и MCP не возвращают тело импортированного источника или его локальный путь.
Evidence становится доступным публичному экспорту только после явного
public; значение по умолчанию — private. Портфолио и LinkedIn-текст строятся
через public-only границу, остаются локальными и не отправляются в GitHub,
LinkedIn или иной сервис. Maximus не публикует, не подаёт заявки, не пишет
рекрутерам и не выполняет действия за ученика.
Требование evidence-before-completion обеспечивает агентский workflow Maximus:
authoritative policy в .agents/AGENTS.md и role skills разрешает роли
завершать plan item только после принятого evidence. Низкоуровневые typed
интерфейсы complete-plan-item в CLI и complete_plan_item в MCP сейчас
доверяют переданному вызывающей стороной completion metadata и сами не
проверяют наличие отдельной evidence row. Поэтому прямой caller обязан
соблюдать эту policy самостоятельно; успешный ответ raw CLI/MCP не доказывает,
что evidence был прикреплён.
Каждый сценарий ниже отвечает на четыре вопроса: что получится, с чего начать, какие данные останутся в системе и что всё равно должен сделать человек.
- Результат: локальный профиль с фиксированным стартовым значением
weekly_hours = 25и приватная база источников — CV, вакансий, описаний интервью и исследований — с digest, provenance и временем проверки. - Старт:
./bin/maximus init --profile learner --name "Learner", затемsource-importилиimport-vacancy; в агентском режиме —onboarding, а для разбора источника —market-analyst. - Данные: имя профиля, фиксированный default 25 часов, исходное тело источника, метаданные и hash хранятся в SQLite локально; тело и путь не выходят через CLI/MCP.
- Действие человека / предел: ученик выбирает файл, подтверждает его
происхождение и задаёт часы отдельно для каждого плана через
plan --hours. Интерфейса обновления доступности в профиле сейчас нет. Maximus не читает приватные аккаунты и не импортирует данные без явного локального пути.
- Результат: завершённая baseline-сессия, evidence-backed rubric scorecard и производная карта mastery по компетенциям.
- Старт:
./bin/maximus baseline --profile learner; продолжение выполняется командамиassessment-next,assessment-submit,assessment-scorecardиassessment-complete, либо рольюexaminer. - Данные: сессия, каждый ответ, версии blueprint/rubric, оценки и события mastery остаются приватными в SQLite; незавершённые ответы не объявляются достижением.
- Действие человека / предел: ученик отвечает сам, по одному вопросу. Экзаменатор не даёт подсказок, а итог требует полного scorecard с цитируемым evidence; Maximus не может честно оценить отсутствующий ответ.
- Результат: утверждённый шестинедельный план с точными часами, prerequisites, проверками и одним следующим действием; каждые две недели его можно пересобрать по фактическому evidence.
- Старт:
./bin/maximus plan --profile learner --start 2026-08-03 --weeks 6 --hours 25и./bin/maximus next --profile learner; для proposal/approval/replan — одноимённые CLI-команды или рольplanner. - Данные: версии плана, выбранные для конкретного cycle
weekly_hours, входные параметры, причины изменений, approvals, элементы и immutable completion events хранятся локально. Минимальный бюджет — 25 часов: 4 theory, 7 lab, 7 project, 4 open source, 2 assessment, 1 review. - Действие человека / предел: ученик выбирает
plan --hoursдля каждого generated cycle и явно утверждает proposal. Это значение не обновляет фиксированные 25 часов в profile: availability-update interface пока нет. Рыночный сигнал меняет приоритет, но не обходит prerequisites и не создаёт mastery без evidence.
- Результат: одна изученная тема или лабораторная с артефактом, фактическим выводом verification-команды и принятым evidence, после чего role workflow может завершить соответствующий plan item.
- Старт:
./bin/maximus next --profile learner; дальше выбрать рольtutorдля объяснения илиlabдля эксперимента. Роли работают через typed MCP toolsget_next_task,attach_evidenceиcomplete_plan_item. - Данные: прикреплённые через role workflow URI/описание evidence, выбранная видимость, immutable learning event и производный mastery snapshot остаются в SQLite; private — значение по умолчанию. Raw completion metadata само по себе не является independently verified evidence row.
- Действие человека / предел: ученик пишет код, запускает команду и показывает попытку. Агентская role policy требует evidence до completion, но direct CLI/MCP caller должен обеспечить эту последовательность сам. До попытки роль не раскрывает решение; Maximus не придумывает результат запуска и не редактирует лабораторную за ученика.
- Результат: bounded review конкретного diff/ADR/benchmark с приоритетными замечаниями, очередь spaced reviews и строгая topic assessment без подсказок.
- Старт: роль
reviewerпосле появления попытки; очередь —./bin/maximus review-queue --profile learner --at 2026-08-10T09:00:00Z; экзамен —assessment-start --profile learner --blueprint IDилиexaminer. - Данные: learner-owned artifacts и verification evidence приватны; review events, следующая дата повторения, ответы, rubric scores и mastery сохраняются локально.
- Действие человека / предел: ученик исправляет замечания, принимает остаточный риск и отвечает на экзамене сам. Reviewer не реализует fix, а examiner не даёт hints и не завершает assessment без полного evidence.
- Результат: hard staff-level simulation на английском и полный evidence-backed отчёт по rubric dimensions; после сессии разбор обучения может быть на русском.
- Старт:
./bin/maximus interview --profile learner, затем assessment commands, либо рольinterviewer. - Данные: prompts идентифицируются blueprint/item ID, а ответы, scorecard, оценки и дата завершения хранятся приватно; скрытые rubric/solutions не раскрываются кандидату.
- Действие человека / предел: кандидат отвечает на английском, по одному вопросу. Maximus не даёт leading follow-ups, не имитирует решение работодателя и не заявляет о найме.
- Результат: подтверждённое отображение рыночного требования на competency, явно одобренный приоритет, ranked shortlist из primary/backup OSS issue и локально отслеживаемый contribution lifecycle.
- Старт:
source-import,market-map,market-priority-approveили рольmarket-analyst; для OSS —oss-search,oss-classify,oss-shortlist-approve,oss-selectи ролиoss-scout/oss-mentor. - Данные: рыночные source bodies и mappings приватны. Публичные issue metadata, classification, contributor-guidance evidence, approvals, выбранная задача и learner-evidenced lifecycle сохраняются локально.
- Действие человека / предел: ученик одобряет mapping/shortlist, сам создаёт branch/PR, пишет комментарии и общается с maintainer. GitHub discovery только read-only; Maximus не мутирует сеть и не выдаёт внешний milestone без learner-owned evidence.
- Результат: детерминированные English drafts для progress Markdown и LinkedIn, построенные только из явно публичных доказательств.
- Старт:
./bin/maximus export --profile learnerили рольportfolio-editorчерезcreate_public_progress. - Данные: генератор читает public-only mastery/evidence и возвращает drafts локально; private source body, private evidence и локальные пути в результат не попадают.
- Действие человека / предел: ученик проверяет утверждения, сохраняет нужный текст и публикует его сам. Maximus не добавляет неподтверждённые claims и не вызывает publishing API.
- Результат: диагностика окружения и целостности, консистентный backup, проверенный restore и атомарная пересборка derived projections из immutable истории.
- Старт:
./bin/maximus doctor,verify,audit,backup --to FILE,restore --from FILEиrebuild --profile learner; для read-only проверки прогресса — рольprogress-auditor. - Данные: backup содержит всю приватную SQLite-базу и требует такой же защиты. Rebuild не переписывает историю, а восстанавливает mastery, review schedules и OSS lifecycle projections.
- Действие человека / предел: владелец выбирает защищённый путь backup, закрывает конфликтующие процессы перед restore и устраняет findings аудита. Maximus не может подтвердить внешний human review или восстановить данные, которых нет в ledger/backup.
Глобальные options ставятся перед командой:
./bin/maximus --db /absolute/path/maximus.db doctor
./bin/maximus --content-root /absolute/path/to/checkout doctorAuthored content выбирается в порядке: явный --content-root, затем
MAXIMUS_CONTENT_ROOT, затем embedded defaults. Development root должен быть
родителем полного content/; невалидный явный или environment override
завершает запуск с ошибкой. Опциональный live network check для doctor
включается через MAXIMUS_NETWORK_CHECK=1.
| Command | Назначение |
|---|---|
init --profile ID [--name NAME] |
Создать профиль и идемпотентно загрузить competency seed. |
source-import --kind KIND --path FILE --provenance TEXT [...] |
Приватно импортировать content-addressed CV, vacancy, interview process или research. |
import-vacancy --path FILE --company NAME --role TITLE |
Импортировать локальную вакансию как dated market source. |
market-map ... / market-priority-approve ... |
Предложить validated requirement mapping и записать явное approval. |
baseline --profile ID / interview --profile ID |
Запустить authored baseline или hard staff interview. |
assessment-start, assessment-next, assessment-submit |
Вести generic baseline/exam/interview с одним immutable ответом за шаг. |
assessment-scorecard, assessment-complete |
Получить scorer-safe rubric и атомарно записать полный evidence-backed результат. |
plan --profile ID --start DATE [--weeks 6] [--hours 25] |
Создать и утвердить начальный deterministic plan revision. |
plan-propose, plan-approve, plan-replan |
Предложить, явно утвердить или пересмотреть план после evidence review. |
next --profile ID [--at DATE] |
Вернуть следующий scheduled task. |
complete-plan-item --profile ID --item ID --at TIME [--metadata JSON] |
Добавить immutable completion с caller-provided metadata; raw command сам не проверяет evidence row. |
review-record / review-queue |
Записать competency review и получить due queue. |
profile --profile ID |
Получить приватный профиль и derived mastery. |
oss-search, oss-classify, oss-shortlist-approve |
Read-only найти issue, записать classification и утвердить shortlist. |
oss-select, oss-deselect, oss-lifecycle |
Связать approved issue с планом и вести learner-owned lifecycle. |
export --profile ID |
Создать локальные public-only progress и LinkedIn drafts. |
doctor / verify / audit |
Проверить prerequisites, окружение, graph, privacy и integrity invariants. |
backup --to FILE / restore --from FILE |
Создать или восстановить validated SQLite snapshot. |
rebuild --profile ID |
Атомарно пересобрать event-derived projections. |
mcp |
Запустить stdio MCP server. |
Сначала соберите бинарник, затем укажите абсолютный путь в MCP client:
{
"mcpServers": {
"maximus": {
"command": "/absolute/path/to/maximus/bin/maximus",
"args": ["mcp"]
}
}
}Server identity — maximus. MCP предоставляет только typed domain tools для
profile, imports/mappings, plans, assessments, evidence, reviews, projection
rebuild, read-only OSS discovery, local OSS decisions/lifecycle и public
drafts. record_interview_score остаётся compatibility alias для
complete_assessment. Универсального SQL tool, publishing tool и unrestricted
network mutation нет.
Перед ролью прочитайте .agents/AGENTS.md: там закреплена identity «Максимум»,
общие language/privacy/evidence rules и точный список разрешённых MCP tools.
Каждая роль наследует identity, но не получает дополнительных permissions.
| Role | Что делает | Жёсткая граница |
|---|---|---|
onboarding |
Создаёт или возобновляет профиль, объясняет следующий шаг. | Не придумывает достижения; один вопрос за раз. |
planner |
Выбирает работу на шесть недель и один следующий task. | Изменение плана требует evidence и явного approval. |
tutor |
Объясняет тему по-русски и принимает проверяемую практику. | Не записывает progress без artifact/command output. |
lab |
Ведёт один learner-owned эксперимент. | До попытки не даёт hint/solution; не подделывает запуск. |
reviewer |
Проверяет один diff, ADR, benchmark или explanation. | Не реализует fix и не ослабляет evidence contract. |
examiner |
Проводит baseline/topic exam без подсказок. | Не раскрывает hidden rubric/solution. |
interviewer |
Проводит hard staff interview на английском. | Не даёт hints и не заявляет hiring outcome. |
oss-scout |
Read-only ранжирует подходящие public issues. | Не создаёт issue/comment/branch/PR. |
oss-mentor |
Ревьюит learner-owned OSS attempt. | Не действует в community за ученика. |
market-analyst |
Приватно mapping-ит требования рынка. | Не публикует source и требует approval для priority. |
progress-auditor |
Read-only проверяет evidence, gaps и readiness. | Не мутирует ledger или plan. |
portfolio-editor |
Делает English drafts из public-only evidence. | Не читает private evidence и не публикует. |
Объяснение, teaching, feedback и plans — на русском. Interview questions и candidate answers — на английском. Code, shell commands, official source titles, GitHub queries, PR/comments, portfolio/LinkedIn drafts и любое community-facing содержимое — на английском. Все роли задают не более одного вопроса за раз и останавливаются на своём explicit stop condition.
content/— version-controlled competency graph, восемь adaptive strategic cycles, six-week curriculum, baseline и hard interview blueprints.internal/app/— единый application facade для CLI и MCP.internal/store/— embedded migrations, immutable learning ledger, evidence, plans, assessments и projections.internal/ops/— doctor, audit, SQLite-consistent backup/restore и replay.internal/mcpserver/— strict typed domain tools без SQL..agents/— authoritative identity, routing и role-specific workflows.
Authored JSON встроен в бинарник через go:embed, поэтому абсолютный путь к
бинарнику работает из любого current directory. Lifecycle locking базы
поддерживается на macOS и Linux; другие OS компилируются с явной unsupported
platform ошибкой вместо запуска без корректного cross-process lock.
Каждый learning unit обязан содержать две-три HTTPS-ссылки, evidence requirements и verification command. Двенадцатимесячная карта задаёт направление, а не календарное обещание: переход разрешён только после принятого exit evidence, а следующий six-week plan меняется по mastery, reviews, market signals и реальным ограничениям ученика.
./bin/maximus backup --to "$HOME/maximus-2026-07-25.db"
./bin/maximus restore --from "$HOME/maximus-2026-07-25.db"
./bin/maximus verify
./bin/maximus rebuild --profile learnerRestore сначала проверяет SQLite integrity и migrations, затем под exclusive
adjacent DB_PATH.lock атомарно заменяет target. Перед pending migrations
существующая база получает private, fsynced snapshot вида
maximus.db.pre-upgrade-v023-to-v024.db. Если upgrade частично завершился и
упал, startup закрывает SQLite, восстанавливает исходную базу из snapshot и
возвращает путь и результат recovery. Новая пустая база не создаёт бессмысленный
pre-upgrade snapshot.
make verify
make build
./bin/maximus --db /tmp/maximus-check.db verifymake verify запускает race tests, go vet, content checks и validation всех
12 repo-local skills без обязательной сети. При изменении поведения сначала
добавьте focused failing test; не добавляйте private learner data, secrets или
скопированный live issue content в repository.
Текущий MVP — local-first CLI + stdio MCP. В нём намеренно нет web UI, account sync, browser automation, voice listener, speech synthesis и автоматической публикации. Будущий web/voice interview UI может использовать тот же typed MCP facade и SQLite privacy boundary, но сейчас это roadmap, а не доступная возможность. Реальный project review, maintainer feedback, employer interview и другие human milestones остаются внешним evidence: Maximus может записать предоставленное доказательство, но не может связаться с человеком или автоматически подтвердить, что событие произошло.