Files
knowledge-base/scripts/kb-audit-propose.sh
dttb 6368738ade scripts: kb-audit + propose — еженедельный drift-детектор для inventory
- kb-audit.py: сравнивает живой pct list/qm list с proxmox-inventory.md
  → audit/YYYY-MM-DD-drift.md (только факты, без LLM)
- kb-audit-propose.sh: прогоняет drift через Opus (Max OAuth на code-server)
  → audit/YYYY-MM-DD-proposed.md (patch на ревью)
- scripts/README.md: архитектура и cron-конфиг

Рекомендуемый cron на code-server: 0 6 * * 0 (воскр 06:00)
Правки не применяются автоматом — только ревью + ручной git apply.
2026-04-18 00:23:07 +03:00

72 lines
2.7 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# kb-audit-propose — прогоняет последний drift-отчёт через Claude Opus,
# получает предложенные правки в inventory-файл.
# Запускать ПОСЛЕ kb-audit.py.
# Работает на code-server (где есть claude CLI с Max подпиской).
set -u
VAULT="$(cd "$(dirname "$0")/.." && pwd)"
DATE=$(date +%Y-%m-%d)
DRIFT="$VAULT/audit/${DATE}-drift.md"
OUT="$VAULT/audit/${DATE}-proposed.md"
if [ ! -f "$DRIFT" ]; then
echo "drift-отчёт не найден: $DRIFT. Запусти сначала kb-audit.py" >&2
exit 1
fi
# если уже есть сегодняшний proposed — skip (не дёргаем Opus попусту)
if [ -f "$OUT" ] && [ "$OUT" -nt "$DRIFT" ]; then
echo "proposed уже свежее drift: $OUT" >&2
exit 0
fi
cd "$VAULT" || exit 1
PROMPT="Ниже: а) отчёт drift-аудита инфраструктуры Proxmox, б) актуальный файл inventory.
Задача: предложи конкретные правки в projects/dttb/proxmox-inventory.md чтобы устранить drift.
НЕ правь файл сам. Выдай:
1. Краткое резюме (1-3 предложения) что изменилось
2. Список конкретных блоков для добавления/удаления/изменения (формат markdown diff блоков с пояснением)
3. Предупреждения если что-то неоднозначное
Не выдумывай данных которых нет в drift-отчёте. Используй factual IP/hostname только из отчёта."
{
echo "$PROMPT"
echo ""
echo "---"
echo "## DRIFT-ОТЧЁТ"
echo ""
cat "$DRIFT"
echo ""
echo "---"
echo "## ТЕКУЩИЙ INVENTORY"
echo ""
cat "$VAULT/projects/dttb/proxmox-inventory.md"
} | claude -p --permission-mode plan > "$OUT.tmp" 2>&1
if [ -s "$OUT.tmp" ]; then
{
echo "---"
echo "date: $DATE"
echo "type: audit-proposed"
echo "source: kb-audit-propose.sh (Opus 4.7)"
echo "tags: [audit, proposed, inventory]"
echo "---"
echo ""
echo "# Предложенные правки inventory — $DATE"
echo ""
echo "Сгенерировано Claude Opus на основе [[${DATE}-drift|drift-отчёта]]."
echo "**Правки НЕ применены.** Ревью — ты. Apply — вручную."
echo ""
cat "$OUT.tmp"
} > "$OUT"
rm "$OUT.tmp"
echo "proposed saved: $OUT"
else
echo "Claude вернул пустой ответ" >&2
rm -f "$OUT.tmp"
exit 2
fi