mirror of
https://github.com/sweetwisdom/everything-claude-code-zh.git
synced 2026-03-22 06:20:10 +00:00
feat: add strategic-compact hook and update hooks.json with all hooks
This commit is contained in:
@@ -41,6 +41,40 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"description": "Block creation of random .md files - keeps docs consolidated"
|
"description": "Block creation of random .md files - keeps docs consolidated"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"matcher": "tool == \"Edit\" || tool == \"Write\"",
|
||||||
|
"hooks": [
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"command": "~/.claude/hooks/strategic-compact/suggest-compact.sh"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Suggest manual compaction at logical intervals"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"PreCompact": [
|
||||||
|
{
|
||||||
|
"matcher": "*",
|
||||||
|
"hooks": [
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"command": "~/.claude/hooks/memory-persistence/pre-compact.sh"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Save state before context compaction"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"SessionStart": [
|
||||||
|
{
|
||||||
|
"matcher": "*",
|
||||||
|
"hooks": [
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"command": "~/.claude/hooks/memory-persistence/session-start.sh"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Load previous context on new session"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"PostToolUse": [
|
"PostToolUse": [
|
||||||
@@ -95,6 +129,26 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"description": "Final audit for console.log in modified files before session ends"
|
"description": "Final audit for console.log in modified files before session ends"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"matcher": "*",
|
||||||
|
"hooks": [
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"command": "~/.claude/hooks/memory-persistence/session-end.sh"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Persist session state on end"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"matcher": "*",
|
||||||
|
"hooks": [
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"command": "~/.claude/skills/continuous-learning/evaluate-session.sh"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Evaluate session for extractable patterns"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
52
hooks/strategic-compact/suggest-compact.sh
Executable file
52
hooks/strategic-compact/suggest-compact.sh
Executable file
@@ -0,0 +1,52 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Strategic Compact Suggester
|
||||||
|
# Runs on PreToolUse or periodically to suggest manual compaction at logical intervals
|
||||||
|
#
|
||||||
|
# Why manual over auto-compact:
|
||||||
|
# - Auto-compact happens at arbitrary points, often mid-task
|
||||||
|
# - Strategic compacting preserves context through logical phases
|
||||||
|
# - Compact after exploration, before execution
|
||||||
|
# - Compact after completing a milestone, before starting next
|
||||||
|
#
|
||||||
|
# Hook config (in ~/.claude/settings.json):
|
||||||
|
# {
|
||||||
|
# "hooks": {
|
||||||
|
# "PreToolUse": [{
|
||||||
|
# "matcher": "Edit|Write",
|
||||||
|
# "hooks": [{
|
||||||
|
# "type": "command",
|
||||||
|
# "command": "~/.claude/skills/strategic-compact/suggest-compact.sh"
|
||||||
|
# }]
|
||||||
|
# }]
|
||||||
|
# }
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
# Criteria for suggesting compact:
|
||||||
|
# - Session has been running for extended period
|
||||||
|
# - Large number of tool calls made
|
||||||
|
# - Transitioning from research/exploration to implementation
|
||||||
|
# - Plan has been finalized
|
||||||
|
|
||||||
|
# Track tool call count (increment in a temp file)
|
||||||
|
COUNTER_FILE="/tmp/claude-tool-count-$$"
|
||||||
|
THRESHOLD=${COMPACT_THRESHOLD:-50}
|
||||||
|
|
||||||
|
# Initialize or increment counter
|
||||||
|
if [ -f "$COUNTER_FILE" ]; then
|
||||||
|
count=$(cat "$COUNTER_FILE")
|
||||||
|
count=$((count + 1))
|
||||||
|
echo "$count" > "$COUNTER_FILE"
|
||||||
|
else
|
||||||
|
echo "1" > "$COUNTER_FILE"
|
||||||
|
count=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Suggest compact after threshold tool calls
|
||||||
|
if [ "$count" -eq "$THRESHOLD" ]; then
|
||||||
|
echo "[StrategicCompact] $THRESHOLD tool calls reached - consider /compact if transitioning phases" >&2
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Suggest at regular intervals after threshold
|
||||||
|
if [ "$count" -gt "$THRESHOLD" ] && [ $((count % 25)) -eq 0 ]; then
|
||||||
|
echo "[StrategicCompact] $count tool calls - good checkpoint for /compact if context is stale" >&2
|
||||||
|
fi
|
||||||
Reference in New Issue
Block a user