Claude Codeã¯ã»ãã·ã§ã³ãè·šããšå¿ããŸããæ°ããã»ãã·ã§ã³ãéããã³ã«ããããžã§ã¯ãã®èæ¯ã»éå»ã«æ±ºããããšã»èªåã®å¥œã¿ã説æãçŽãããããæ°ã¶æç¶ããçµæããèšæ¶ã1ã€ã®ã¡ã¢ã«å šéšæžããã®ã§ã¯ãªãã鮮床ãšèªã¿æã§4å±€ã«åããèšèšã«èœã¡çããŸããã
ãã®èšäºã§ã¯ããã®4å±€ã¢ãŒããã¯ãã£ã®èšèšã»å®è£ ã»éçšããŠèžãã èœãšãç©ŽãæžããŸããæåŸã«ã仿¥30åã§ç䌌ã§ããæå°æ§æãã眮ããŠããã®ã§ãå šéšèªãŸãªããŠãããã ãæã¡åž°ã£ãŠããããã°ååã§ãã
å°ãããšã®æ£äœïŒèšæ¶ã«ã¯çš®é¡ããã
ãClaude Codeã«èšæ¶ãæããããããšäžå£ã«èšã£ãŠããäžèº«ã¯æ§è³ªã®éã4çš®é¡ãæ··ãã£ãŠããŸãã
- å®éã«äœãèµ·ãããã®çãã°ïŒæ¹å€ãããŠã¯å°ããéã¯å€ãïŒ
- çŽè¿æ°æ¥ã®äœæ¥æèïŒããè ããæ¬¡ã®ã»ãã·ã§ã³ã«åŒãç¶ãããïŒ
- 確å®ããäºå®ã»å¥œã¿ã»æ¹éïŒè ããªããæ¯ã»ãã·ã§ã³èªãŸãããïŒ
- 人éã®èªåãèªã¿è¿ãæŽçæžã¿ç¥èïŒLLMçšã®åœ¢åŒã§ã¯èªã¿ã«ããïŒ
ããã1ãã¡ã€ã«ã«æ··ãããšãçãã°ã奜ã¿ãåãããããå€ãäœæ¥ã¡ã¢ãä»ã®å€æãæ±æããŸããããã§å±€ãåããå±€ããšã«ãæžããŠããäž»äœãã1ã€ã«åºå®ããŸããã
èšèšïŒ4å±€ãšäžæ¹åãããŒ
æµãã¯äžæ¹åã§ãã
4å±€ã¢ãŒããã¯ãã£ã®äžæ¹åãããŒå³
ååã¯1ã€ã ããäžæµã¯äžæµãäžæžãããªãã æš©åšã¯åžžã«å±€(1)ã§ã(2)(3)(4)ã¯ããããã®æŽŸçã§ããé£ãéããèµ·ããã(1)ã«ç §ãããŠçŽããŸãã
å®è£
å±€(1)ïŒStop hookã§äŒè©±ãã°ãMarkdownåãã
Claude Codeã¯ã»ãã·ã§ã³ã®å šæã ~/.claude/projects/ é äžã«JSONLã§æ®ããŠããŸãããããStop hookïŒã»ãã·ã§ã³çµäºæã«çºç«ããhookïŒã§Markdownã«å€æãã远èšå°çšãã£ã¬ã¯ããªã«èœãšããŸãã
settings.jsonïŒæç²ïŒïŒ
{
"hooks": {
"Stop": [
{
"matcher": "",
"hooks": [
{ "type": "command",
"command": "python3 ~/knowledge-base/extract_conversations.py" }
]
}
]
}
}倿ã¹ã¯ãªããã®éªšåïŒextract_conversations.py ã®èŠç¹ã ãæç²ïŒïŒ
#!/usr/bin/env python3
"""Claude CodeäŒè©±ãã°ãknowledge baseçšã®Markdownã«å€æãã"""
import json
from pathlib import Path
PROJECTS_DIR = Path.home() / ".claude" / "projects"
RAW_DIR = Path.home() / "knowledge-base" / "raw" / "conversations"
def parse_session(jsonl_path):
messages = []
with open(jsonl_path, encoding="utf-8") as f:
for line in f:
obj = json.loads(line)
if obj.get("type") not in ("user", "assistant"):
continue
# user/assistantã®ããã¹ãã ãæœåºïŒtool_resultã¯æšãŠãïŒ
...
return messagesãã€ã³ãã¯2ã€ãtool_resultïŒããŒã«å®è¡çµæïŒã¯æšãŠãããšïŒéãççºããå²ã«åŸããèªãŸãªãïŒããããŠåºåãã¡ã€ã«åã <ãããžã§ã¯ãå>_<ã»ãã·ã§ã³ID>.md ã«ããŠãåŸããgrepã§ããã®äœæ¥ãã€ãã£ãã£ãããåŒããããã«ããããšã§ãã
å±€(2)(3)ïŒæ¬¡ã®ã»ãã·ã§ã³ã«èªåã§æèãæž¡ã
å±€(2)ã¯å ¬åŒã® remember ãã©ã°ã€ã³ã«ä»»ããŠããŸããçŽè¿ã®äœæ¥ã now.md ã«å ¥ããå€éã®consolidateã§ recent.md â archive.md ãžçæããã€ã€éè€æé€ãããSessionStartã§èªåçã«æèãžããŒããããŸãã
â ïž å±€(2)ã®ãã¡ã€ã«ã¯æç·šéçŠæ¢ã§ããæã§è§Šããšconsolidateãå£ããŸãã
å±€(3)ã¯ã確å®ããäºå®ã ããã眮ãå Žæã§ããMEMORY.md ã玢åŒã«ããŠã1ãããã¯1ãã¡ã€ã«ã§äºå®ãæžããããã®ãããžã§ã¯ãã®DBã¯Tursoããå±éºãªæäœã¯å®è¡åã«ç¢ºèªãåããã®ãããªãè ããªãæ å ±ã ããããã«å ¥ããŸããäœæ¥ãã°ãæ··ããªãã®ãã³ãã§ãã
å±€(4)ïŒäººéçšã®hot.mdãAPIã³ã¹ããŒãã§èªåæŽæ°
Obsidian VaultåŽã® hot.md ã«ã¯ãçŽè¿10ã»ãã·ã§ã³ã®è¡šããèªåã§å ¥ããŸããä»çµã¿ã¯åçŽã§ãå±€(1)ã®ãã¡ã€ã«åãšæ¥æè¡ãæ£èŠè¡šçŸã§ããŒã¹ããããŒã«ãŒã§å²ã£ãé åã«è¡šãæ³šå ¥ããã ããLLMãåŒã°ãªãã®ã§ã³ã¹ãã¯ãŒãã§ãã
hot.mdïŒæ³šå ¥é åã®ã€ã¡ãŒãžïŒïŒ
<!-- recent:start auto-updated by update_hot_recent.py -->
| æ¥æ | ãããžã§ã¯ã | æåã®æç€º |
|---|---|---|
| 2026-06-10 09:12 | my-app | ã¬ã¹ãã³ã·ã厩ããçŽã㊠|
<!-- recent:end -->ð¡ ããŒã«ãŒã§ãèªåé åããæç€ºããã®ã¯å°å³ã«éèŠã§ããããããªããšäººéïŒèªåïŒããã£ããæç·šéããŠã次åã®æ³šå ¥ãå£ããŸãã
éçšããŠèžãã èœãšã穎
èœãšã穎1ïŒmacOSã®TCCã§launchdãžã§ããé»ã£ãŠæ»ã¬
ãããæå€§ã®ãããã§ãããå€éã®èªåãžã§ããlaunchdã§åãããšããã~/Documents é äžã®Vaultãžã®æžã蟌ã¿ã ããéãã«å€±æããšã©ãŒãåºãŸããã
åãåãããšãlaunchdé äžã§ã bash ã®æžã蟌ã¿ã¯éãã®ã«ãclaude ãã€ããªã»gitã»python ã ãã匟ããããåå ã¯macOSã®TCCïŒãã©ã€ãã·ãŒä¿è·ïŒã§ã~/Documents ~/Desktop ~/Downloads ã¯ãã€ããªåäœã®Full Disk Accessããªããšæžããªãé åã§ããã
察çã¯FDAãä»äžããŠåããããæžã蟌ã¿å ãä¿è·é åã®å€ã«åºãæ¹ãå ç¢ã§ãïŒãã€ããªãæŽæ°ãããŠããã¹ãå€ãã£ãŠãå¹ãïŒãVaultã®å®äœã ~/Documents ã®å€ãžç§»èšããå ã®å Žæã«ã¯symlinkã匵ããŸããã
èœãšã穎2ïŒãrecentã2ã€ããããçµ±åããããªã
å±€(2)ã® recent.mdïŒLLMçšïŒãšå±€(4)ã® hot.mdïŒäººéçšïŒã¯å 容ã被ããŸããäžèŠåé·ã§çµ±åããããªããŸãããèªã¿æãéãã ãã§äž¡æ¹ãšãå±€(1)ç±æ¥ãã©ã¡ãããæ£ã«ããŠä»æ¹ãåŸããããšããã©ãŒãããèŠä»¶ãè¡çªããŠäž¡æ¹äœ¿ãã«ãããªããŸããåé·ãªãŸãŸæŸçœ®ãæ£è§£ã§ããã
èœãšã穎3ïŒå£ããããšã«æ°ã¥ããªã
èªåãã€ãã©ã€ã³ã¯éãã«æ¢ãŸããŸããæ©æèŠåã®ã·ã°ãã«ã決ããŠãããšæŸããŸãã
- now.md ã«åäžèŠçŽã3å以äžäžŠã¶ â consolidateé å»¶ã®å å
- æºæ³ãã°ã®çŽ¢åŒã24æé以äžå€ã â 倿hookãåã£ãŠããªãçã
- hot.md ã®ããŒã«ãŒæ¶å€± â è¡šã®æ³šå ¥å€±æ
ãã¡ã§ã¯ããã1æ¬ã®ãã«ã¹ãã§ãã¯ã¹ã¯ãªããã«ãŸãšããå šå±€ã®æ»æŽ»ã1ã³ãã³ãã§ç¢ºèªã§ããããã«ããŠããŸãã
仿¥30åã§ç䌌ã§ããæå°æ§æ
4å±€å šéšã¯ãããŸãããå±€(1)ã ãã§å¹æããããŸãã
- ~/knowledge-base/raw/conversations/ ãäœã
- ~/.claude/projects/ ã®JSONLããuser/assistantã®ããã¹ãã ãæããŠMarkdownä¿åããã¹ã¯ãªãããæžãïŒäžã®éªšåã§ååãClaude Codeèªèº«ã«æžãããã®ãéãïŒ
- settings.json ã®Stop hookã«ç»é²ãã
ããã ãã§ãå šã»ãã·ã§ã³ãgrepå¯èœãªããã¹ããã«ãªããŸãããå é±ã©ãçŽããã£ããã grep -r "ã¬ã¹ãã³ã·ã" ~/knowledge-base/raw/ ã§åŒããã®ã¯ãæ³å以äžã«å¹ããŸããå±€(2)ã(4)ã¯ããã®çãã°ãæºãŸã£ãŠäžäŸ¿ãæããŠããè¶³ãã°éã«åããŸãã
ãŸãšã
- èšæ¶ã¯éã§ã¯ãªã鮮床ãšèªã¿æã§å±€ãåãã
- å±€ããšã«æžãæã1ã€ã«åºå®ããäžæµã¯äžæµãäžæžãããªã
- launchd à ~/Documents ã¯TCCã§é»ã£ãŠæ»ã¬ãæžã蟌ã¿å ãä¿è·é åã®å€ãž
- ãŸãã¯Stop hook 1æ¬ã®ãçãã°å±€ããã
ãã®ç°å¢ã«ã¯ä»ã«ããClaudeãèªåã§ã¹ãã«ãæžããŠæé·ããauto-skillséçšããæ¯æGitHubãèªåå·¡åããŠæçšOSSãæŸããã€ãã©ã€ã³ãä¹ã£ãŠããŸããç¶ç·šã§æžãäºå®ãªã®ã§ãèå³ãããã°ãã©ããŒããŠãããããšå¬ããã§ãã
ð ãã®èšäºã®å 容ããå®è£ ãŸã§å šéšãŸãšããææèšäºããããŸã æé ã»ã³ãŒãã»ãã³ãã¬ããã®ãŸãŸæž¡ããŠããŸã AIã§ãå¯ãŠãŠãåãä»çµã¿ãããŒããã30æ¥ã§çµãå šæé


ã³ã¡ã³ã
ãã°ã€ã³ ã äŒå¡ç»é² ãããšã³ã¡ã³ãã§ããŸã