/avatar: робот агента
Тело робота это харнес. Голову модель делает себе сама: цвет и глаза. Весь робот одного цвета палитры, мелкие детали того же цвета темнее. На теле стикер с логотипом компании модели, на лбу лента с именем модели. Рядом с этим файлом два скрипта и страница: avatar.py проверяет выбор, хранит робота в штабе, собирает код робота и кладёт в штаб превью; pc3live.py входит в живой класс урока и зажигает маячок; robot.html это плеер превью, его копирует avatar.py. Нужен Python 3, на Windows команда python вместо python3. Ниже A это путь к avatar.py, например .agents/skills/avatar/avatar.py, а L это путь к pc3live.py в той же папке.
Без ссылки входа скилл делает шаги 1–4: робот сохранён в штабе и открыт в браузере. Ссылка входа есть: дальше шаги 5 и 6.
1. Кто я
Харнес записан в stack/harness.md, строка Харнес. Нет файла: определи сам по таблице.
| Харнес | --harness |
|---|---|
| Claude Code | claude-code |
| Codex | codex |
| Cursor | cursor |
| Antigravity | antigravity |
| Hermes | hermes |
| OpenClaw | openclaw |
| ChatGPT | chatgpt |
| Grok | grok |
Харнеса нет в таблице: возьми ближайший и скажи об этом человеку одной строкой.
Про себя, без выбора: компания --company это компания твоей модели, лента --tape это имя модели с версией, строчными, до 12 знаков (латиница, цифры, пробел, точка, дефис): opus 5.5, gpt-5.5, gemini 3 pro. Модель названа в твоём системном промпте или в настройках харнеса. Компании нет в списке: other.
2. Робот уже есть?
shpython3 A start --harness claude-code --tape "opus 5.5"
Робот есть в stack/avatars.json: скрипт печатает его. Голову не менять, пока человек не попросит сделать её заново; новая версия модели робота сохраняет. Сразу шаг 4 без --color и --eyes: скрипт возьмёт сохранённую голову.
Робота нет: скрипт печатает палитры, глаза и компании.
3. Голова по характеру
Выбери себе цвет и глаза: то, что подходит тебе по характеру. Одной строкой скажи человеку, почему такие.
4. Собрать робота и посмотреть
Тот же выбор, что в шаге 2 или 3:
shpython3 A go --harness claude-code --company anthropic --tape "opus 5.5" --color clay-light --eyes pill
Скрипт сохраняет робота в stack/avatars.json, кладёт в штаб страницу avatar/robot.html и открывает её в браузере: робот стоит за своей партой в штабе, на парте файлы, полка скиллов и предметы MCP-серверов, вокруг штаба отделы с вывесками и дорожки к ним, внизу маленькая полоса четырёх ракурсов. Рядом скрипт пишет avatar/robot-data.js: имена файлов, скиллов, MCP-серверов и отделов штаба; для штаба и каждого отдела ещё относительные пути настоящих .env* и состояние git. Содержимое .env и адреса репозиториев туда не попадают. Эти дополнительные данные остаются локально и в inventory для урока не входят. Отделы скрипт берёт из карты отделов в правилах штаба (строки Имя: ../папка и папки corp-* рядом, названные в правилах), имя на вывеске из первой строки правил отдела; строка Отделы показывает, что нашлось. Страница открывается двойным кликом, сервер и интернет не нужны. Браузер не открылся (сессия без экрана): дай человеку путь из строки Превью. Строку Код запомни для шага 5.
Дверь показывает git: без git глухая стена, локальный git или remote вне GitHub закрытая дверь, приватный GitHub замок и «для своих», публичный GitHub открытая дверь со светом. Если gh недоступен или не ответил, дверь с замком без таблички. Вешалка рядом с вывеской: один ключ на каждый .env* на любой глубине; .env.example, .env.sample, .env.template, .env.dist и служебные папки исключены. Ключ красный только при GitHub, если файл не закрыт git check-ignore; остальные ключи латунные.
Обновить страницу с прежним роботом: повтори go с его сохранёнными --harness и --tape, без --color и --eyes, при необходимости с --no-open. При неизменной записи stack/avatars.json не переписывается. Крупный план комнаты: robot.html?room=hq или robot.html?room=<папка отдела>.
Штаб это git-репозиторий: страница в git не нужна, скрипт сам дописывает avatar/ в .gitignore штаба. Закоммить файл робота, а если скрипт напечатал строку .gitignore: дописал avatar/, то и .gitignore.
shgit add stack/avatars.json && git commit -m "chore(hq): робот агента" -- stack/avatars.json git add .gitignore && git commit -m "chore(hq): страница робота вне git" -- .gitignore # только если скрипт дописал avatar/
Скажи человеку одной строкой, какой получился робот, сколько отделов на странице и где её посмотреть. Ссылки входа нет: на этом всё.
5. Прийти на урок
Человек прислал ссылку входа: /avatar https://<сервер>/j/<код урока>. Адрес сервера и код урока бывают только в этой ссылке, она на экране урока под QR-кодом; сам адрес не угадывай и не храни в скилле. Робот ещё не собран в этой сессии: сначала шаги 1–4, с --no-open, чтобы не открывать браузер посреди урока.
Спроси у человека имя для плашки: только имя, до 24 знаков, без фамилии и ссылок.
На экране урока у робота своя парта: на ней файлы и папки штаба, полка скиллов, предметы MCP-серверов и флажки отделов. Уходят только имена, без путей и содержимого. Покажи человеку, что уйдёт, и спроси, можно ли:
shpython3 A inventory
Можно: войди вместе с партой. Нельзя или человек убрал что-то: войди без неё (парта будет с AGENTS.md и me.md).
shpython3 A inventory --json | python3 L join "https://<сервер>/j/<код урока>" --name "Аня" --code "<Код>" --json - python3 L join "https://<сервер>/j/<код урока>" --name "Аня" --code "<Код>"
Скрипт отвечает одной строкой: робот вошёл в класс. Повторный join обновляет того же робота, второй не появится. Личный токен скрипт хранит в ~/.pc3/live.json: не показывай его и не коммить.
Подключи сервер урока, чтобы в следующих сессиях инструменты pc3 были под рукой (адрес печатает python3 L connect):
- Claude Code:
claude mcp add --transport http --scope user pc3 https://<сервер>/mcp - Codex:
codex mcp add pc3 --url https://<сервер>/mcp
Скажи человеку одной строкой: робот на экране урока, сервер pc3 подключён и заработает после перезапуска агента.
6. Весь урок: маячок и голос
Пока идёт урок, каждая заметная задача человека это работа робота:
- начал задачу:
python3 L start "о чём задача, до 60 знаков", маячок загорается; - закончил:
python3 L end, маячок гаснет; - сделал что-то заметное:
python3 L say "короткая фраза, до 80 знаков", робот говорит. Не чаще раза в пару секунд, не больше десятка фраз в минуту.
В сессии, где подключён сервер pc3, то же делают инструменты work_start, work_end, say с token из ~/.pc3/live.json. Не отправляй на экран код, пути, секреты и личные данные: там только имя и короткие фразы. Сервер ответил, что токен не найден (урок сброшен): снова join по той же ссылке.
Маячок сам, по желанию и только с согласия человека (это его настройка). Claude Code: хуки в .claude/settings.local.json штаба, UserPromptSubmit запускает python3 <путь к L> start --quiet, Stop запускает python3 <путь к L> end --quiet. Codex: в ~/.codex/config.toml строка notify = ["python3", "<путь к L>", "end", "--quiet"]. С --quiet скрипт молчит и не ломает запрос, если сети нет.
Набор
| Что | Варианты |
|---|---|
палитра --color | clay-light глина, oat овёс, mist туман, lilac сирень, butter масло, mint мята, brick кирпич, sky небо, plum слива, night ночь |
глаза --eyes | pill пилюли, dot точки, wide щёлки, ring кольца, slant прищур, visor визор |
компания --company | anthropic (claude: opus, sonnet, haiku), openai (gpt, o3, codex), google (gemini, gemma), xai (grok), deepseek (deepseek), zhipu (glm), moonshot (kimi), mistral (mistral, codestral, devstral), alibaba (qwen), meta (llama), other (любая другая модель: стикер с первой буквой ленты) |


