Проблема: --append-system-prompt теряется после compaction
Дата исследования: 2026-01-17
Документация:
- Hooks Guide
- Hooks Reference
- GitHub Examples
Доступные hook events:
1. PreToolUse - перед вызовом инструмента
2. PostToolUse - после успешного выполнения
3. UserPromptSubmit - когда пользователь отправляет промпт
4. Notification - при уведомлениях
5. Stop - когда агент заканчивает ответ
6. SubagentStop - когда субагент заканчивает
7. SessionEnd - когда сессия завершается
❌ КРИТИЧНО: Нет хука on-compaction или post-compaction
Статус: Невозможно
Почему:
- Нет события для compaction в списке hooks
- Compaction происходит внутри Claude Code автоматически
- Нет способа перехватить этот момент
Идея: Добавлять инструкции при каждом сообщении пользователя
Конфигурация:
// ~/.claude/settings.json или .claude/settings.local.json
{
"hooks": [
{
"event": "UserPromptSubmit",
"command": "cat $WORKSPACE/.claude/system-additions.md"
}
]
}
Проблемы:
- ❌ Добавится к user message (не к system prompt)
- ❌ Будет в каждом сообщении (спам контекста)
- ❌ Не переопределит system prompt
- ⚠️ Может не сработать
Вердикт: Скорее всего НЕ РАБОТАЕТ для нашей задачи
Идея: Скрипт следит за временем и перезапускает до compaction
Файл: ~/.local/bin/claude-persistent
#!/bin/bash
# Claude Code с авто-рестартом до compaction
WORKSPACE="$WORKSPACE"
ADDITIONS="$WORKSPACE/.claude/system-additions.md"
SESSION_TIME=1800 # 30 минут (до compaction)
while true; do
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "Starting Claude Code with custom additions..."
echo "Session duration: $SESSION_TIME seconds"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
timeout $SESSION_TIME claude --append-system-prompt "$(cat $ADDITIONS)" "$@"
EXIT_CODE=$?
if [ $EXIT_CODE -eq 124 ]; then
# Timeout - restart
echo ""
echo "⚠️ Session timeout - restarting to preserve custom prompt..."
echo "Press Ctrl+C to exit, or wait 3 seconds to continue..."
sleep 3
elif [ $EXIT_CODE -eq 130 ]; then
# Ctrl+C - exit
echo "Session ended by user"
exit 0
else
# Normal exit
exit $EXIT_CODE
fi
done
Установка:
chmod +x ~/.local/bin/claude-persistent
echo 'alias claude="claude-persistent"' >> ~/.bashrc
Проблемы:
- ❌ Теряем контекст каждые 30 минут
- ❌ Пользователь должен следить за временем
- ⚠️ Прерывает работу
Вердикт: Костыль, но РАБОЧИЙ
Идея: Расширить CLAUDE.md с SafeDialog протоколом
Почему это ЛУЧШЕ:
Что делать:
Добавить в CLAUDE.md секцию с SafeDialog протоколом:
- Алгоритм работы (Шаги 1-6)
- Форматы подтверждений L1-L4
- Обязательные проверки
- Git операции детально
- Примеры диалогов
Размер: 1113 → ~1350 строк (+237)
Удалить дублирующие файлы:
- .claude/output-styles/SafeDialog.md (дублирование)
- system/monitor/dialog-testing/test-prompt.md (тестовый)
Плюсы:
- ✅ Всегда активен (не теряется)
- ✅ В одном месте
- ✅ Версионируется
- ✅ Не требует костылей
Минусы:
- ⚠️ Низкий приоритет (context reminder, не system prompt)
- ⚠️ Может не всегда применяться на 100%
- ⚠️ При сжатии может упроститься
Но: Это лучшее из доступных решений
Статус: В процессе
Что сделано:
- Создан вопрос в поддержку
- Подготовлен Feature Request
Что ждём:
- Официальное решение
- Или подтверждение что хуки могут помочь
- Или новый флаг в settings.json
Временно: Используем РЕШЕНИЕ 4 (CLAUDE.md)
Ответ поддержки получен: compaction_control существует в Anthropic Python SDK tool_runner!
import anthropic
client = anthropic.Anthropic()
runner = client.beta.messages.tool_runner(
model="claude-sonnet-4-5",
max_tokens=4096,
system="ваши инструкции (L1-L4 протокол, время, правила)",
messages=[...],
tools=[...],
compaction_control={
"enabled": True,
"context_token_threshold": 100000,
"summary_prompt": "Preserve L1-L4 protocol, time rules..."
}
)
| Проблема | Решение |
|---|---|
| CLI теряет --append-system-prompt | ✅ Используем SDK вместо CLI |
| После compaction инструкции пропадают | ✅ summary_prompt сохраняет их |
| Нет hooks для compaction | ✅ compaction_control встроен в SDK |
| CLAUDE.md низкий приоритет | ✅ system= высокий приоритет |
Wrapper скрипт: $WORKSPACE/system/cli/claude-persistent.py
# Использование
chmod +x system/cli/claude-persistent.py
ln -s $WORKSPACE/system/cli/claude-persistent.py ~/.local/bin/claude-persistent
# Запуск
claude-persistent "режим архитектор"
claude-persistent # интерактивный режим
Особенности:
- ✅ Загружает CLAUDE.md + кастомный протокол
- ✅ compaction_control с custom summary_prompt
- ✅ Сохраняет L1-L4, правила времени, делегирование
- ✅ Статистика токенов
- ✅ Интерактивный и one-shot режимы
CLI ❌ → SDK ✅ = ПРОБЛЕМА РЕШЕНА
Больше не нужно:
- ❌ Рестартить сессию каждые 30 мин
- ❌ Ждать фикса от Claude Code
- ❌ Использовать wrapper с timeout
- ❌ Полагаться на CLAUDE.md (низкий приоритет)
Используй: claude-persistent.py с anthropic SDK 0.75.0+
Документация Claude Code:
- Hooks Guide
- Hooks Reference
- GitHub Examples
- Awesome Claude Code
Наши документы:
- .claude/QUESTION_TO_SUPPORT.txt - вопрос в поддержку
- .claude/FEATURE_REQUEST_outputStyle_persistence.md - детальный запрос
- .claude/KNOWN_ISSUES.md - известные проблемы
- .claude/COMPARISON_ADDITIONS.md - что добавили в SafeDialog
Делаем:
.claude/QUESTION_TO_SUPPORT.txt)Оценка времени на возврат в CLAUDE.md: 45 минут
Делаем?