Указатели на контракт — на самом сервере
Контракт в репозитории достаёт только агентов, у которых этот репозиторий есть. Astra работает на fr1 как tgclaude и infra у неё не склонирован, так что до неё не дошло бы ничего. Заведено на сервере: ~rus/CLAUDE.md и ~tgclaude/CLAUDE.md — указатель на репо, правило и пять граблей, стоивших больше всего; AGENTS.md рядом симлинком, для агентов с другой конвенцией. Claude Code читает CLAUDE.md вверх по дереву, поэтому файл в хоме работает и при работе в ~tgclaude/imgbot. ~rus/MyVault/TOOLS.md, раздел SSH — то же для Astra. Файл смонтирован в claude-channels как /vault, изменение видно агенту сразу, в Gitea уезжает кроном каждые 5 минут. MOTD и .bashrc сознательно не использованы: .bashrc выходит на строке 6 для неинтерактивных шеллов, MOTD показывается только при интерактивном входе, а агенты обычно дёргают `ssh host 'команда'` и не увидят ни того, ни другого. Ограничения механизма и причина, по которой детектор дрейфа не заведён, описаны в servers/fr1.md. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
b56c137b5c
commit
11531ceb16
@@ -241,5 +241,36 @@ backend=systemd banaction=ufw
|
|||||||
- ⏳ Дроп-ин `/etc/ssh/sshd_config.d/50-cloud-init.conf` не читается из-под `rus` — под root проверить `sshd -T | grep -iE "permitrootlogin|passwordauth"`, чтобы знать эффективные значения, а не собранные из файлов вручную.
|
- ⏳ Дроп-ин `/etc/ssh/sshd_config.d/50-cloud-init.conf` не читается из-под `rus` — под root проверить `sshd -T | grep -iE "permitrootlogin|passwordauth"`, чтобы знать эффективные значения, а не собранные из файлов вручную.
|
||||||
- ⚠️ Описания **других** серверов не сверялись: `servers/de1.md` и `servers/ru1.md` датируются временем до вывода de1, так что могут врать.
|
- ⚠️ Описания **других** серверов не сверялись: `servers/de1.md` и `servers/ru1.md` датируются временем до вывода de1, так что могут врать.
|
||||||
|
|
||||||
|
## Как это описание поддерживается
|
||||||
|
Механизм заведён 2026-09-08, после того как сверка нашла десяток расхождений.
|
||||||
|
|
||||||
|
**В репозитории:** `CLAUDE.md` — контракт «тронул сервер, обнови описание в
|
||||||
|
том же прогоне» и правила оформления; `.claude/skills/server-audit/` — метод
|
||||||
|
сверки и накопленные грабли; `scripts/snapshot.sh` — инвентаризация живого
|
||||||
|
состояния за один проход (только чтение, без sudo, секретов не печатает).
|
||||||
|
|
||||||
|
**На самом сервере**, для агентов, у которых репозитория нет:
|
||||||
|
- `~rus/CLAUDE.md` и `~tgclaude/CLAUDE.md` — указатель на репо, правило и
|
||||||
|
пять граблей, которые дороже всего стоили (ufw не видит docker-портов;
|
||||||
|
группа docker равна root; процесс из SSH не переживёт ребут; абсолютные
|
||||||
|
пути в чужих базах; мигающий IPv6). Рядом `AGENTS.md` — симлинк на тот же
|
||||||
|
файл, для агентов, читающих эту конвенцию. Claude Code подхватывает
|
||||||
|
`CLAUDE.md` вверх по дереву каталогов, поэтому файл в хоме виден и при
|
||||||
|
работе в подкаталогах вроде `~tgclaude/imgbot`.
|
||||||
|
- `~rus/MyVault/TOOLS.md`, раздел SSH — та же обязанность для агента Astra.
|
||||||
|
Файл смонтирован в контейнер `claude-channels` как `/vault`, так что
|
||||||
|
изменение видно ему сразу, и синкается в Gitea кроном каждые 5 минут.
|
||||||
|
|
||||||
|
⚠️ **Чего этот механизм не гарантирует.** MOTD и `.bashrc` не помогут:
|
||||||
|
`.bashrc` выходит на строке 6 для неинтерактивных шеллов, а MOTD
|
||||||
|
показывается только при интерактивном входе — то есть агент, дёргающий
|
||||||
|
`ssh fr1 'команда'`, не увидит ничего. Файлы в хомах достанут только тех,
|
||||||
|
кто читает `CLAUDE.md`/`AGENTS.md` и чей рабочий каталог оказался внутри
|
||||||
|
хома. Серверного хука «агент закончил работу» не существует.
|
||||||
|
Детектор дрейфа (таймер, сравнивающий отпечаток состояния с прошлым и
|
||||||
|
пишущий в Telegram) обсуждался и **сознательно не заводился** — если
|
||||||
|
незадокументированные изменения снова начнут накапливаться, начинать
|
||||||
|
стоит с него.
|
||||||
|
|
||||||
## Установленные пакеты (сверх базы)
|
## Установленные пакеты (сверх базы)
|
||||||
htop, mtr-tiny, tmux, vim, curl, wget, git, unzip, net-tools, dnsutils, ncdu, rsync, fail2ban, unattended-upgrades, sysstat.
|
htop, mtr-tiny, tmux, vim, curl, wget, git, unzip, net-tools, dnsutils, ncdu, rsync, fail2ban, unattended-upgrades, sysstat.
|
||||||
|
|||||||
Reference in New Issue
Block a user