CLAUDE.md ãè¥ããã»ã©é ããªã â context æ³šå ¥ãã€ãã鱿¬¡èšæž¬ããŠå£åãæ©ææ€ç¥ãã
ååãäžæºã¯ãŒããšhookã¹ãã ãèªåæ€ç¥ããè©±ãæžããŸãããä»åã¯ãã®èšæž¬å¯Ÿè±¡ã®ã²ãšã€ãã»ãã·ã§ã³éå§æã«ç¡æ¡ä»¶ã§å šææ³šå ¥ããããã€ãæ°ãæãäžããŸãã
çµè«ããã仿(2026-08-31 08:00)宿ž¬ãã inject_bytes 㯠40,521 ãã€ããéŸå€40,000ã521ãã€ãè¶ éããŠããŸãããååã®èªå·±ä¿®æ£(08-30)ã§39,738ãŸã§åã£ããã®ç¿æ¥ã«ã¯ããèµ€ã§ãããã®èšäºã¯ããã®ãçŽããŠãæ»ããçŸè±¡ãã©ãæ©æ¢°ã§æ€ç¥ããã©ããŸã§èªå·±ä¿®æ£ã§ããŠãã©ãã§äººéå€æã«æããŠãããã®èšé²ã§ãã
å°ãããšïŒã«ãŒã«ã¯è¶³ããã³é»ã£ãŠéããªã
Claude Codeã¯ã»ãã·ã§ã³éå§æã« rules/*.mdã»CLAUDE.mdã»MEMORY.md ãç¡æ¡ä»¶ã§å
šææ³šå
¥ããŸãã䟿å©ãªã«ãŒã«ã1åè¶³ããã³ã«ãã®ãã€ãæ°ã¯å¢ããŸãããå¢åã¯æ°çŸãã€ãåäœãªã®ã§äœæã§ã¯æ°ã¥ããŸããã2026-07-11ã®ããã©ãŒãã³ã¹ç£æ»ã§ãéé¿ããã¯ãã®agentsãèªã¿èŸŒãŸãç¶ããŠããã»æ³šå
¥ãã€ããäœæå£åã®äž»å ãšå€æãã以åŸã¯äººéã宿çã«èŠåŒµãã®ããã㊠cc-self-audit.sh ãšãã鱿¬¡ã®èªå·±ç£æ»ã«ãŒãã«çœ®ãæããŸããã
äœã枬ã£ãŠããã
collect() ãéç2ææšã»åç3ææšãæ¯åJSON1è¡ã«åºããã
inject_bytes=$(( \
$(find "$HOME/.claude/rules" -name '*.md' -print0 | xargs -0 cat | wc -c) + \
$(cat "$HOME/.claude/CLAUDE.md" | wc -c) + \
$(cat "$HOME/CLAUDE.md" | wc -c) + \
$(cat "$HOME/.claude/projects/<session-dir>/memory/MEMORY.md" | wc -c) ))
agents_loaded=$(find "$HOME/.claude/agents" -name '*.md' | wc -l)
åç3ææš(stopspamã»frustrationã»toolerr)ã¯ååå®è¡ä»¥éã®transcriptããæŸããŸããããã¯äžåºŠãçŽ æŽãªgrepã§å£ããŸããã
STOP_MARKER = 'Stop hook feedback:\n[~/.claude/hooks/self_audit_stop.sh]: '
FRUST_RE = re.compile(r'äœåãèš|ããå æžã«ã|åã€|èãããª|ãªãã§æ²»ãã|ææªãã|é æªã')
ã³ã¡ã³ãã«æ®ã£ãŠããéãã§ãã
çŽ æŽãªgrepã¯transcriptå ã§hookã¹ã¯ãªããèªèº«ã®ãœãŒã¹(old_string/new_stringã®åŒçšãcatåºå)ãtool_resultæ¬æãŸã§èª€æ€ç¥ãã(2026-07-12: stopspam 6â40, frustration 4â18 ã«èŠãããå®äœã¯ã»ãŒãã®èª€æ€ç¥ã ã£ã)
stopspamã¯ãããŒãã¹ãå®éã«æ³šå ¥ããStop hook feedbackè¡ãã®å®å šäžèŽã ããfrustrationã¯ã
isMetaã§ãªãtype=userã®äººéã®å®çºèšãã ãã«çµã£ãŠåããŠä¿¡é Œã§ããæ°åã«ãªããŸãããæååããããã£ãœãå Žæãã«åºçŸããŠããã ãã§ã¯ææšãšããŠäœ¿ããŸããã
éŸå€å€å®ãšèªå·±ä¿®æ£ã«ãŒã
TH_INJECT_BYTES="${SELF_AUDIT_TH_INJECT:-40000}"
TH_AGENTS="${SELF_AUDIT_TH_AGENTS:-60}"
TH_STOPSPAM="${SELF_AUDIT_TH_STOPSPAM:-15}"
TH_FRUSTRATION="${SELF_AUDIT_TH_FRUST:-8}"
TH_TOOLERR="${SELF_AUDIT_TH_TOOLERR:-400}"
ãããããè¶
ããã claude -p ãåŒã³ãä¿®æ£ç¯å²ã ~/.claude å
ã ãã«çµã£ãããã³ãããæž¡ããŸãã
OUT=$(cd "$HOME/.claude" && printf '%s' "$PROMPT" | run_capped "$FIX_TIMEOUT" "$CLAUDE" \
--strict-mcp-config --mcp-config '{"mcpServers":{}}' -p \
--model "$MODEL" --output-format text \
--allowedTools "Read,Write,Edit,Bash,Grep,Glob" \
--max-turns 50 2>&1) || true
# ç¬ç«åèšæž¬ïŒèªå·±ç³åã¯ä¿¡ããªãïŒ
AFTER=$(collect)
STILL=$(echo "$AFTER" | breaches)
ããã³ããã«ã¯ããããžã§ã¯ãã³ãŒãã»secretã»pliståé€ã¯çŠæ¢ãã1ä»¶ãã€changelogã«æ¥æ/察象/çç±/æ»ãæ¹ãæžãããèªåã§å®å
šã«çŽããªãé
ç®ã¯ãèŠäººé: çç±ããšèšãããŸã§æèšããŠããŸããä¿®æ£åŸã«åã collect() ãããäžåºŠåŒãã§ç¬ç«ã«åèšæž¬ããã®ãèã§ãclaude -p ã®ãçŽããŸããããšããèªå·±ç³åã¯ããã§ã¯ä¿¡çšããŸãããç·ãªãâ
1è¡ãèµ€ãæ®ãã°ðšã§ #01_alerts ã«é£ã³ãŸãã
launchdé ç·
<key>ProgramArguments</key>
<array>
<string>~/.claude/scripts/claude-quota-guard.py</string>
<string>--job</string><string>com.lily.cc-self-audit</string>
<string>--</string>
<string>/bin/bash</string>
<string>~/.claude/scripts/cc-self-audit.sh</string>
</array>
<key>StartCalendarInterval</key>
<dict><key>Hour</key><integer>8</integer><key>Minute</key><integer>30</integer><key>Weekday</key><integer>0</integer></dict>
æ¯é±æ¥æ8:30èµ·åãçŽæ¥ bash cc-self-audit.sh ãå©ãã®ã§ã¯ãªã claude-quota-guard.py ã§ã©ããããMaxæ ã®ã¯ã©ãŒã¿ãå³ããæã¯èµ·åèªäœãskipãããµãŒããããã¬ãŒã«ãŒãåãŸããŠããŸããLowPriorityIO + Nice 10 ã§ä»ã®ãžã§ããéªéããªãåªå
床ã«èœãšããŠãããŸãã
宿ž¬ãã¬ã³ãïŒçŽããŠãæ»ãããããåãå Žæãã
history.jsonl ã䞊ã¹ããšãçŽã£ãç¿é±ã«ãŸãèµ€ããªãåšæããã®ãŸãŸæ°åã«åºãŸãã
| æ¥æ | inject_bytes | agents_loaded | å€å® |
|---|---|---|---|
| 07-11 | 21,798 | 48 | (å°å ¥æãã¹ã) |
| 07-19 | 23,855 | 48 | GREEN |
| 07-26 | 31,620 | 48 | GREEN |
| 08-02 | 34,872 | 48 | GREEN |
| 08-09 | 38,135 | 38 | GREEN(éŸå€ç®å) |
| 08-16 | 48,958 â 48,958 | 28 | REDâä¿®æ£å€±æãå€åãªã |
| 08-23 | 56,321 â 43,487 | 18 | REDâä¿®æ£(23%æž) |
| 08-30 | 59,555 â 39,738 | 8 | REDâä¿®æ£(33%æž) |
| 08-31 | 40,521 | 8 | (ä»æã®æååèšæž¬ã»ç¿æ¥ã§æ©ããåè¶ é) |
2ã€ãå®ããŒã¿ããããåºãŠããªãçºèŠããããŸããã
1ã€ç®ïŒ08-16ã®ä¿®æ£ã¯å®å
šãªç©ºæ¯ãã§ããããã°ãèŠããš invoking claude -p ã08:30:36ãæ¬¡ã®ãã°ã08:50:37 ââã¡ããã©1201ç§åŸãFIX_TIMEOUT ã®æ¢å®å€ã¯1200ç§(20å)ãªã®ã§ãgtimeout ã«æã¡åãããŠåºåã¯ç©ºãåèšæž¬ããŠã48,958ã®ãŸãŸå€åãªããç¬ç«åèšæž¬ãããŠããªããã°ãå®è¡ãã=çŽã£ãããšèª€èªãããšããã§ãããç¿é±ãŸã§èµ€ããŸãŸæŸçœ®ããã59,555ãŸã§ç©ã¿äžãã£ãŠããŸãã
2ã€ç®ïŒagents_loaded ã¯48â38â28â18â8ãšåèª¿ã«æžãç¶ããŠéŸå€60ã«äžåºŠãè§ŠããŠããªãã®ã«ãinject_bytes ã¯çŽããŠãæ°æ¥ã1é±éã§åã³éŸå€ãå²ããŸããåãã~/.claudeå
ã®æé€ãã§ããäžåºŠçä»ããã°çµãããã®(agentsãã£ã¬ã¯ããªã®éé¿æŒã)ãšãæ¥åžžéçšã®ãã³ã«åãå Žæãžç©ã¿äžãããã®(MEMORY.md)ã¯æåããŸã£ããéããšããããšã§ãã
æ ¹æ¬åå ã¯çæåŽã§ãªãèç©åŽ
ãã®ãåãå Žæããäœãã¯ãchangelogã«æ¬äºº(èªå·±ä¿®æ£ã«ãŒã)ã®èšèã§æ®ã£ãŠããŸãã
[2026-08-23 鱿¬¡èªå·±ç£æ»] inject_bytes=56321 (éŸå€40000è¶
é) 察å¿
察象: ~/.claude/projects/<session-dir>/memory/MEMORY.md
çç±: å人memory index(210è¡/44.8KB)ãèµ·åæåžžææ³šå
¥inject_bytesã®80%ãå ãéŸå€è¶
éã
çµæ: MEMORY.md 44798â31964 bytesãinject_bytesåèš 56321â43487 bytes (23%åæž)
æ®èª²é¡: æ®ã21KBã®å€§åã¯é²è¡äžã®åè«ã»æ¡ä»¶æ
å ±ã§ãæ¥ä»ã»éé¡ã»ã¹ããŒã¿ã¹ãå«ã¿
æ©æ¢°çã«å®å
šã«å€æããŠåããæ ¹æ ããªããèŠäººé倿ã
ãã®MEMORY.mdèªèº«ã«ãã3é±é£ç¶ã§åãç¯ãåå ã ã£ããšããæ³šèšãæ®ã£ãŠããŸãã
MEMORY.mdè¥å€§ãinject_bytes 40KBéŸå€ãå§è¿«ããâ皌åäžãããžã§ã¯ãç¯ã®è¥å€§ãäž»å (3é±é£ç¶)ãæ°èŠã®å奿¡ä»¶ãã°ã¯MEMORY.mdã«æžããNotionãžã
ã€ãŸã cc-self-audit.sh ãæ¯é±ãã£ãŠããã®ã¯ã玢åŒãéé¿ããŠãã€ãæ°ãäžãã察ççæ³ã§ããæžã蟌ãå ŽæèªäœãNotionãžåãæ¿ãã(=èç©ãæ¢ãã)æ ¹æ¬å¯Ÿçã¯å
¥ã£ãŠããŠãããã§ã08-31ã«ã¯ãã40,521ãŸã§æ»ã£ãŠãã ââ 察ççæ³ã®å¹ãç®ã1é±éããçããªã£ãŠãããšããããšã§ãã
èžãã èœãšã穎
- grepã®éšåäžèŽã§stopspam/frustrationãå®äœã®5ã10åã«èª€æ€ç¥(07-12: 40/18âå®äœã¯ã»ãŒ0) â STOP_MARKERå®å
šäžèŽïŒ
isMetaé€å€ãŸã§çµã£ãŠããããä¿¡é Œã§ããæ°åã« - ä¿®æ£ã»ãã·ã§ã³ã
FIX_TIMEOUTã¡ããã©ã§killãããåºå空ã»åèšæž¬å€åãªãã§1é±éæŸçœ®(08-16) â ç¬ç«åèšæž¬ããªããã°ãå®è¡ãã=çŽã£ãããšèª€èªãããšããã ã£ã - ã©ãã«ã§ãªãéŸå€è¶ éã®æ°å€ãã®ãã®ãå€å®ã«äœ¿ã â ããŸã ã®ãªã®ãªå€§äžå€«ãã®äž»èгå€å®ã¯å¢çã§å¿ ãããæãã
- agentsãã£ã¬ã¯ããªã®æé€ãšãMEMORY.mdã®çŽ¢åŒå§çž®ã¯åã
inject_bytesåæžã§ãæ§è³ªãéã â åè ã¯äžåºŠçŽãã°æ»ããªããåŸè ã¯æ¥åžžéçšã®ãã³ã«åãç¯ã倪ããåãéŸå€ã»åãèªå·±ä¿®æ£ã§æ±ããšãçŽããã®ã«ç¿æ¥ãŸãèµ€ããèµ·ãã - èªå·±ä¿®æ£ã®å®è¡ç¯å²ã
~/.claudeã ãã«çµããªããšããããžã§ã¯ãã³ãŒããsecretãŸã§è§Šãã«è¡ããããªã â ããã³ããã«æèšããŠå¢çãæ©æ¢°çã«äœã
ãŸãšã
- Claude Codeã®èµ·åææ³šå ¥ãã€ãã¯ãã«ãŒã«ãè¶³ããã³ã«é»ã£ãŠå¢ãããäœæã§ã¯æ°ã¥ããªãã®ã§æ°å€ã§é±æ¬¡èšæž¬ãã
- å€å®ã¯ã©ãã«ã§ãªãéŸå€è¶ éãã®ãã®ãä¿®æ£ã¯èªå·±ç³åãä¿¡ããç¬ç«åèšæž¬ã§æ€èšŒãã
- äžåºŠçŽãã°æ»ããªãå£å(agentsãã£ã¬ã¯ããªã®éé¿æŒã)ãšãæ¥åžžéçšã®ãã³ã«åãå Žæã倪ãå£å(MEMORY.mdã®çŽ¢åŒ)ã¯æ§è³ªãéããåè ã¯èªå·±ä¿®æ£ã«ãŒãã§ååã ããåŸè ã¯æžã蟌ã¿å ãå€ããæ ¹æ¬å¯ŸçãããŠã察ççæ³ã®åšæãçž®ã¿ç¶ãã
- ã¿ã€ã ã¢ãŠãã§èªå·±ä¿®æ£ã空æ¯ãããŠããç¬ç«åèšæž¬ãããŠããªããã°æ°ã¥ããªã
ãã®ã³ãŒãã¯ä»æ¥ ~/.claude ã«ã³ããããŠãã®ãŸãŸåããŸããæ¬¡ã¯å¥ã®éçšé åã§ãåãã宿ž¬ããŠå€å®ãããåãæžãäºå®ã§ãã
LilyïŒ@bokuwalilyïŒâ å人éçºè ãClaude Code ã§èªåååºç€ãçµã¿ãªãããiOSã¢ããªãWebãµãŒãã¹ãéç£ããŠããŸã
- AIã§ãå¯ãŠãŠãåãä»çµã¿ããäœã£ãŠæ120äžã«ãã話㯠noteã®ææèšäº ã«ð°
- OSS: github.com/bokuwalily ð
- ææ°æ å ±ã»ãåãåãã㯠X @bokuwalily ãžð
- AIå°å ¥ã»èªååã®çžè«ãšå®è£ ãã³ãã¬7æ¬ã®é åžã¯ å ¬åŒLINE ããð¬
çããã® â€ïž ãã·ã§ã¢ãå±ã¿ã«ãªããŸãïŒ