From 11531ceb160c2216057dd2aa0745d5d370e0da9b Mon Sep 17 00:00:00 2001 From: gilfanovr Date: Tue, 8 Sep 2026 17:04:08 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A3=D0=BA=D0=B0=D0=B7=D0=B0=D1=82=D0=B5?= =?UTF-8?q?=D0=BB=D0=B8=20=D0=BD=D0=B0=20=D0=BA=D0=BE=D0=BD=D1=82=D1=80?= =?UTF-8?q?=D0=B0=D0=BA=D1=82=20=E2=80=94=20=D0=BD=D0=B0=20=D1=81=D0=B0?= =?UTF-8?q?=D0=BC=D0=BE=D0=BC=20=D1=81=D0=B5=D1=80=D0=B2=D0=B5=D1=80=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Контракт в репозитории достаёт только агентов, у которых этот репозиторий есть. 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) --- servers/fr1.md | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/servers/fr1.md b/servers/fr1.md index c44fe31..6c287eb 100644 --- a/servers/fr1.md +++ b/servers/fr1.md @@ -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"`, чтобы знать эффективные значения, а не собранные из файлов вручную. - ⚠️ Описания **других** серверов не сверялись: `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.