| name | continuous-learning-v2 |
| description | Instinct-based learning system that observes sessions via hooks, creates atomic instincts with confidence scoring, and evolves them into skills/commands/agents. v2.1 adds project-scoped instincts to prevent cross-project contamination. |
| origin | ECC |
| version | 2.1.0 |
ç¶ç¶çåŠç¿ v2.1 - ã€ã³ã¹ãã£ã³ã¯ãããŒã¹ã¢ãŒããã¯ãã£
Claude Code ã»ãã·ã§ã³ãåå©çšå¯èœãªç¥èã«å€æããé«åºŠãªåŠç¿ã·ã¹ãã ã§ããä¿¡é ŒåºŠã¹ã³ã¢ãªã³ã°ä»ãã®ã¢ãããã¯ãªãã€ã³ã¹ãã£ã³ã¯ããïŒå°ããªåŠç¿ãããè¡åïŒãéããŠå®çŸããŸãã
v2.1 ã§ã¯ãããžã§ã¯ãã¹ã³ãŒãã®ã€ã³ã¹ãã£ã³ã¯ãã远å -- React ã®ãã¿ãŒã³ã¯ React ãããžã§ã¯ãã«ãPython ã®èŠçŽã¯ Python ãããžã§ã¯ãã«çãŸãããŠãããŒãµã«ãªãã¿ãŒã³ïŒãåžžã«å
¥åãããªããŒã·ã§ã³ããããªã©ïŒã¯ã°ããŒãã«ã«å
±æãããŸãã
èµ·åæ¡ä»¶
- Claude Code ã»ãã·ã§ã³ããã®èªååŠç¿ã®ã»ããã¢ãã
- ããã¯çµç±ã®ã€ã³ã¹ãã£ã³ã¯ãããŒã¹è¡åæœåºã®èšå®
- åŠç¿ãããè¡åã®ä¿¡é ŒåºŠéŸå€ã®ãã¥ãŒãã³ã°
- ã€ã³ã¹ãã£ã³ã¯ãã©ã€ãã©ãªã®ã¬ãã¥ãŒããšã¯ã¹ããŒããã€ã³ããŒã
- ã€ã³ã¹ãã£ã³ã¯ãããã«ã¹ãã«ãã³ãã³ãããšãŒãžã§ã³ãã«çºå±ããã
- ãããžã§ã¯ãã¹ã³ãŒã vs ã°ããŒãã«ã€ã³ã¹ãã£ã³ã¯ãã®ç®¡ç
- ãããžã§ã¯ãããã°ããŒãã«ã¹ã³ãŒããžã®ã€ã³ã¹ãã£ã³ã¯ãã®ããã¢ãŒã
v2.1 ã®æ°æ©èœ
| ç¹åŸŽ | v2.0 | v2.1 |
|---|
| ã¹ãã¬ãŒãž | ã°ããŒãã« (~/.claude/homunculus/) | ãããžã§ã¯ãã¹ã³ãŒã (projects//) |
| ã¹ã³ãŒã | ãã¹ãŠã®ã€ã³ã¹ãã£ã³ã¯ããã©ãã§ãé©çš | ãããžã§ã¯ãã¹ã³ãŒã + ã°ããŒãã« |
| æ€åº | ãªã | git remote URL / ãªããžããªãã¹ |
| ããã¢ãŒã·ã§ã³ | N/A | 2+ ãããžã§ã¯ãã§èŠãããå Žåã«ãããžã§ã¯ã â ã°ããŒãã« |
| ã³ãã³ã | 4 (status/evolve/export/import) | 6 (+promote/projects) |
| ã¯ãã¹ãããžã§ã¯ã | æ±æãªã¹ã¯ | ããã©ã«ãã§åé¢ |
v2 ã®æ°æ©èœïŒv1 æ¯èŒïŒ
| ç¹åŸŽ | v1 | v2 |
|---|
| èŠ³å¯ | Stop ããã¯ïŒã»ãã·ã§ã³çµäºæïŒ | PreToolUse/PostToolUseïŒ100% 確å®ïŒ |
| åæ | ã¡ã€ã³ã³ã³ããã¹ã | ããã¯ã°ã©ãŠã³ããšãŒãžã§ã³ãïŒHaikuïŒ |
| ç²åºŠ | å®å
šãªã¹ãã« | ã¢ãããã¯ãªãã€ã³ã¹ãã£ã³ã¯ãã |
| ä¿¡é ŒåºŠ | ãªã | 0.3-0.9 ã®éã¿ä»ã |
| é²å | çŽæ¥ã¹ãã«ãž | ã€ã³ã¹ãã£ã³ã¯ã -> ã¯ã©ã¹ã¿ãŒ -> ã¹ãã«/ã³ãã³ã/ãšãŒãžã§ã³ã |
| å
±æ | ãªã | ã€ã³ã¹ãã£ã³ã¯ãã®ãšã¯ã¹ããŒã/ã€ã³ããŒã |
ã€ã³ã¹ãã£ã³ã¯ãã¢ãã«
ã€ã³ã¹ãã£ã³ã¯ãã¯å°ããªåŠç¿ãããè¡åã§ãïŒ
---
id: prefer-functional-style
trigger: "when writing new functions"
confidence: 0.7
domain: "code-style"
source: "session-observation"
scope: project
project_id: "a1b2c3d4e5f6"
project_name: "my-react-app"
---
é©åãªå Žåã«ã¯ã©ã¹ãã颿°åãã¿ãŒã³ã䜿çšããŸãã
- 颿°åãã¿ãŒã³åªå
ã® 5 ã€ã®ã€ã³ã¹ã¿ã³ã¹ã芳å¯
- 2025-01-15 ã«ãŠãŒã¶ãŒãã¯ã©ã¹ããŒã¹ã¢ãããŒãã颿°åã«ä¿®æ£
ããããã£:
- ã¢ããã㯠-- 1 ã€ã®ããªã¬ãŒã1 ã€ã®ã¢ã¯ã·ã§ã³
- ä¿¡é ŒåºŠå é -- 0.3 = æ«å®çã0.9 = ã»ãŒç¢ºå®
- ãã¡ã€ã³ã¿ã°ä»ã -- code-styleãtestingãgitãdebuggingãworkflow ãªã©
- æ ¹æ ä»ã -- äœæãã芳å¯ã远跡
- ã¹ã³ãŒãå¯Ÿå¿ --
projectïŒããã©ã«ãïŒãŸã㯠global
ä»çµã¿
ã»ãã·ã§ã³ã¢ã¯ãã£ããã£ïŒgit ãªããžããªå
ïŒ
|
| ããã¯ãããã³ãã + ããŒã«äœ¿çšããã£ããã£ïŒ100% 確å®ïŒ
| + ãããžã§ã¯ãã³ã³ããã¹ããæ€åºïŒgit remote / ãªããžããªãã¹ïŒ
v
+---------------------------------------------+
| projects/<project-hash>/observations.jsonl |
| ïŒããã³ãããããŒã«ã³ãŒã«ãçµæããããžã§ã¯ãïŒ|
+---------------------------------------------+
|
| ãªãã¶ãŒããŒãšãŒãžã§ã³ããèªã¿åãïŒããã¯ã°ã©ãŠã³ããHaikuïŒ
v
+---------------------------------------------+
| ãã¿ãŒã³æ€åº |
| * ãŠãŒã¶ãŒä¿®æ£ -> ã€ã³ã¹ãã£ã³ã¯ã |
| * ãšã©ãŒè§£æ±º -> ã€ã³ã¹ãã£ã³ã¯ã |
| * ç¹°ãè¿ãã¯ãŒã¯ãã㌠-> ã€ã³ã¹ãã£ã³ã¯ã |
| * ã¹ã³ãŒãå€å®: ãããžã§ã¯ã or ã°ããŒãã«ïŒ |
+---------------------------------------------+
|
| äœæ/æŽæ°
v
+---------------------------------------------+
| projects/<project-hash>/instincts/personal/ |
| * prefer-functional.yaml (0.7) [project] |
| * use-react-hooks.yaml (0.9) [project] |
+---------------------------------------------+
| instincts/personal/ (GLOBAL) |
| * always-validate-input.yaml (0.85) [global]|
| * grep-before-edit.yaml (0.6) [global] |
+---------------------------------------------+
|
| /evolve ãã¯ã©ã¹ã¿ãªã³ã° + /promote
v
+---------------------------------------------+
| projects/<hash>/evolved/ (ãããžã§ã¯ãã¹ã³ãŒã)|
| evolved/ (ã°ããŒãã«) |
| * commands/new-feature.md |
| * skills/testing-workflow.md |
| * agents/refactor-specialist.md |
+---------------------------------------------+
ãããžã§ã¯ãæ€åº
ã·ã¹ãã ã¯èªåçã«çŸåšã®ãããžã§ã¯ããæ€åºããŸãïŒ
CLAUDE_PROJECT_DIR ç°å¢å€æ°ïŒæé«åªå
床ïŒ
git remote get-url origin -- ããŒã¿ãã«ãªãããžã§ã¯ã ID ãäœæããããã«ããã·ã¥åïŒç°ãªããã·ã³ã®åããªããžããªã¯åã ID ãååŸïŒ
git rev-parse --show-toplevel -- ãªããžããªãã¹ã䜿çšãããã©ãŒã«ããã¯ïŒãã·ã³åºæïŒ
- ã°ããŒãã«ãã©ãŒã«ãã㯠-- ãããžã§ã¯ããæ€åºãããªãå Žåãã€ã³ã¹ãã£ã³ã¯ãã¯ã°ããŒãã«ã¹ã³ãŒããž
åãããžã§ã¯ã㯠12 æåã®ããã·ã¥ ID ãååŸããŸãïŒäŸ: a1b2c3d4e5f6ïŒã~/.claude/homunculus/projects.json ã®ã¬ãžã¹ããªãã¡ã€ã«ã ID ã人éãèªããååã«ãããã³ã°ããŸãã
ã¯ã€ãã¯ã¹ã¿ãŒã
1. 芳å¯ããã¯ãæå¹å
~/.claude/settings.json ã«è¿œå ããŸãã
ãã©ã°ã€ã³ãšããŠã€ã³ã¹ããŒã«ããå ŽåïŒæšå¥šïŒïŒ
{
"hooks": {
"PreToolUse": [{
"matcher": "*",
"hooks": [{
"type": "command",
"command": "${CLAUDE_PLUGIN_ROOT}/skills/continuous-learning-v2/hooks/observe.sh"
}]
}],
"PostToolUse": [{
"matcher": "*",
"hooks": [{
"type": "command",
"command": "${CLAUDE_PLUGIN_ROOT}/skills/continuous-learning-v2/hooks/observe.sh"
}]
}]
}
}
æåã§ ~/.claude/skills ã«ã€ã³ã¹ããŒã«ããå ŽåïŒ
{
"hooks": {
"PreToolUse": [{
"matcher": "*",
"hooks": [{
"type": "command",
"command": "~/.claude/skills/continuous-learning-v2/hooks/observe.sh"
}]
}],
"PostToolUse": [{
"matcher": "*",
"hooks": [{
"type": "command",
"command": "~/.claude/skills/continuous-learning-v2/hooks/observe.sh"
}]
}]
}
}
2. ãã£ã¬ã¯ããªæ§é ãåæå
ã·ã¹ãã ã¯ååäœ¿çšæã«èªåçã«ãã£ã¬ã¯ããªãäœæããŸãããæåã§äœæããããšãå¯èœã§ãïŒ
mkdir -p ~/.claude/homunculus/{instincts/{personal,inherited},evolved/{agents,skills,commands},projects}
3. ã€ã³ã¹ãã£ã³ã¯ãã³ãã³ãã䜿çš
/instinct-status
/evolve
/instinct-export
/instinct-import
/promote
/projects
ã³ãã³ã
| ã³ãã³ã | 説æ |
|---|
/instinct-status | ãã¹ãŠã®ã€ã³ã¹ãã£ã³ã¯ãïŒãããžã§ã¯ãã¹ã³ãŒã + ã°ããŒãã«ïŒãä¿¡é ŒåºŠä»ãã§è¡šç€º |
/evolve | é¢é£ã€ã³ã¹ãã£ã³ã¯ããã¹ãã«/ã³ãã³ãã«ã¯ã©ã¹ã¿ãªã³ã°ãããã¢ãŒã·ã§ã³åè£ãææ¡ |
/instinct-export | ã€ã³ã¹ãã£ã³ã¯ãããšã¯ã¹ããŒãïŒã¹ã³ãŒã/ãã¡ã€ã³ã§ãã£ã«ã¿å¯èœïŒ |
/instinct-import <file> | ã¹ã³ãŒãå¶åŸ¡ä»ãã§ã€ã³ã¹ãã£ã³ã¯ããã€ã³ããŒã |
/promote [id] | ãããžã§ã¯ãã€ã³ã¹ãã£ã³ã¯ããã°ããŒãã«ã¹ã³ãŒãã«ããã¢ãŒã |
/projects | æ¢ç¥ã®ãã¹ãŠã®ãããžã§ã¯ããšã€ã³ã¹ãã£ã³ã¯ãæ°ãäžèŠ§è¡šç€º |
èšå®
config.json ãç·šéããŠããã¯ã°ã©ãŠã³ããªãã¶ãŒããŒãå¶åŸ¡ããŸãïŒ
{
"version": "2.1",
"observer": {
"enabled": false,
"run_interval_minutes": 5,
"min_observations_to_analyze": 20
}
}
| ã㌠| ããã©ã«ã | 説æ |
|---|
observer.enabled | false | ããã¯ã°ã©ãŠã³ããªãã¶ãŒããŒãšãŒãžã§ã³ããæå¹ã«ãã |
observer.run_interval_minutes | 5 | ãªãã¶ãŒããŒã芳å¯ãåæããé »åºŠ |
observer.min_observations_to_analyze | 20 | åæå®è¡åã®æå°èг坿° |
ãã®ä»ã®åäœïŒèгå¯ãã£ããã£ãã€ã³ã¹ãã£ã³ã¯ãéŸå€ããããžã§ã¯ãã¹ã³ãŒãã³ã°ãããã¢ãŒã·ã§ã³åºæºïŒã¯ instinct-cli.py ãš observe.sh ã®ã³ãŒãããã©ã«ãã§èšå®ãããŸãã
ãã¡ã€ã«æ§é
~/.claude/homunculus/
+-- identity.json # ãããã¡ã€ã«ãæè¡ã¬ãã«
+-- projects.json # ã¬ãžã¹ããª: ãããžã§ã¯ãããã·ã¥ -> åå/ãã¹/ãªã¢ãŒã
+-- observations.jsonl # ã°ããŒãã«èгå¯ïŒãã©ãŒã«ããã¯ïŒ
+-- instincts/
| +-- personal/ # ã°ããŒãã«èªååŠç¿ã€ã³ã¹ãã£ã³ã¯ã
| +-- inherited/ # ã°ããŒãã«ã€ã³ããŒãã€ã³ã¹ãã£ã³ã¯ã
+-- evolved/
| +-- agents/ # ã°ããŒãã«çæãšãŒãžã§ã³ã
| +-- skills/ # ã°ããŒãã«çæã¹ãã«
| +-- commands/ # ã°ããŒãã«çæã³ãã³ã
+-- projects/
+-- a1b2c3d4e5f6/ # ãããžã§ã¯ãããã·ã¥ïŒgit remote URL ããïŒ
| +-- project.json # ãããžã§ã¯ãããšã®ã¡ã¿ããŒã¿ãã©ãŒ (id/name/root/remote)
| +-- observations.jsonl
| +-- observations.archive/
| +-- instincts/
| | +-- personal/ # ãããžã§ã¯ãåºæã®èªååŠç¿
| | +-- inherited/ # ãããžã§ã¯ãåºæã®ã€ã³ããŒã
| +-- evolved/
| +-- skills/
| +-- commands/
| +-- agents/
+-- f6e5d4c3b2a1/ # å¥ã®ãããžã§ã¯ã
+-- ...
ã¹ã³ãŒãå€å®ã¬ã€ã
| ãã¿ãŒã³ã¿ã€ã | ã¹ã³ãŒã | äŸ |
|---|
| èšèª/ãã¬ãŒã ã¯ãŒã¯èŠçŽ | project | ãReact hooks ã䜿çšãããDjango REST ãã¿ãŒã³ã«åŸãã |
| ãã¡ã€ã«æ§é ã®å¥œã¿ | project | ããã¹ã㯠__tests__/ ã«ãããã³ã³ããŒãã³ã㯠src/components/ ã«ã |
| ã³ãŒãã¹ã¿ã€ã« | project | ã颿°åã¹ã¿ã€ã«ã䜿çšãããdataclasses ãåªå
ã |
| ãšã©ãŒãã³ããªã³ã°æŠç¥ | project | ããšã©ãŒã«ã¯ Result åã䜿çšã |
| ã»ãã¥ãªãã£ãã©ã¯ãã£ã¹ | global | ããŠãŒã¶ãŒå
¥åãããªããŒã·ã§ã³ãããSQL ããµãã¿ã€ãºã |
| äžè¬çãªãã¹ããã©ã¯ãã£ã¹ | global | ããã¹ããå
ã«æžããããåžžã«ãšã©ãŒããã³ããªã³ã°ã |
| ããŒã«ã¯ãŒã¯ãããŒã®å¥œã¿ | global | ãEdit åã« GrepãããWrite åã« Readã |
| Git ãã©ã¯ãã£ã¹ | global | ãConventional commitsãããå°ããçŠç¹ã®åã£ãã³ãããã |
ã€ã³ã¹ãã£ã³ã¯ãã®ããã¢ãŒã·ã§ã³ïŒãããžã§ã¯ã -> ã°ããŒãã«ïŒ
åãã€ã³ã¹ãã£ã³ã¯ããé«ãä¿¡é ŒåºŠã§è€æ°ã®ãããžã§ã¯ãã«åºçŸããå Žåãã°ããŒãã«ã¹ã³ãŒããžã®ããã¢ãŒã·ã§ã³åè£ãšãªããŸãã
èªåããã¢ãŒã·ã§ã³åºæº:
- 2+ ãããžã§ã¯ãã§åãã€ã³ã¹ãã£ã³ã¯ã ID
- å¹³åä¿¡é ŒåºŠ >= 0.8
ããã¢ãŒã·ã§ã³æ¹æ³:
python3 instinct-cli.py promote prefer-explicit-errors
python3 instinct-cli.py promote
python3 instinct-cli.py promote --dry-run
/evolve ã³ãã³ããããã¢ãŒã·ã§ã³åè£ãææ¡ããŸãã
ä¿¡é ŒåºŠã¹ã³ã¢ãªã³ã°
ä¿¡é ŒåºŠã¯æéãšãšãã«å€åããŸãïŒ
| ã¹ã³ã¢ | æå³ | åäœ |
|---|
| 0.3 | æ«å®ç | ææ¡ãããã匷å¶ãããªã |
| 0.5 | äžçšåºŠ | é¢é£ããæã«é©çš |
| 0.7 | 匷ã | é©çšãèªåæ¿èª |
| 0.9 | ã»ãŒç¢ºå® | ã³ã¢åäœ |
ä¿¡é ŒåºŠãäžããå ŽåïŒ
- ãã¿ãŒã³ãç¹°ãè¿ã芳å¯ããã
- ãŠãŒã¶ãŒãææ¡ãããåäœãä¿®æ£ããªã
- ä»ã®ãœãŒã¹ããã®é¡äŒŒã€ã³ã¹ãã£ã³ã¯ããäžèŽ
ä¿¡é ŒåºŠãäžããå ŽåïŒ
- ãŠãŒã¶ãŒãæç€ºçã«åäœãä¿®æ£
- ãã¿ãŒã³ãé·æé芳å¯ãããªã
- ççŸããæ ¹æ ãçŸãã
芳å¯ã«ã¹ãã«ã§ã¯ãªãããã¯ã䜿ãçç±
ãv1 ã¯èгå¯ã«ã¹ãã«ã䜿çšããŠãããã¹ãã«ã¯ç¢ºççã§ãClaude ã®å€æã«åºã¥ã㊠~50-80% ã®ç¢ºçã§çºç«ãããã
ããã¯ã¯100% ã®ç¢ºçã§ã決å®è«çã«çºç«ããŸããããã«ããïŒ
- ãã¹ãŠã®ããŒã«ã³ãŒã«ã芳å¯ããã
- ãã¿ãŒã³ãèŠéãããªã
- åŠç¿ãå
æ¬ç
åŸæ¹äºææ§
v2.1 㯠v2.0 ããã³ v1 ãšå®å
šã«äºæã§ãïŒ
~/.claude/homunculus/instincts/ ã®æ¢åã°ããŒãã«ã€ã³ã¹ãã£ã³ã¯ãã¯åŒãç¶ãã°ããŒãã«ã€ã³ã¹ãã£ã³ã¯ããšããŠåäœ
- v1 ã®æ¢å
~/.claude/skills/learned/ ã¹ãã«ã¯åŒãç¶ãåäœ
- Stop ããã¯ã¯åŒãç¶ãå®è¡ïŒãã ã v2 ã«ããã£ãŒãïŒ
- 段éçç§»è¡: äž¡æ¹ã䞊è¡å®è¡
ãã©ã€ãã·ãŒ
- 芳å¯ã¯ãã·ã³äžã«ããŒã«ã«ã§ä¿å
- ãããžã§ã¯ãã¹ã³ãŒãã®ã€ã³ã¹ãã£ã³ã¯ãã¯ãããžã§ã¯ãããšã«åé¢
- ã€ã³ã¹ãã£ã³ã¯ãïŒãã¿ãŒã³ïŒã®ã¿ãšã¯ã¹ããŒãå¯èœ -- çã®èгå¯ã§ã¯ãªã
- å®éã®ã³ãŒããäŒè©±å
容ã¯å
±æãããªã
- ãšã¯ã¹ããŒãããã³ããã¢ãŒããããã®ã¯èªåã§å¶åŸ¡
é¢é£
- ECC-Tools GitHub App - ãªããžããªå±¥æŽããã€ã³ã¹ãã£ã³ã¯ããçæ
- Homunculus - v2 ã€ã³ã¹ãã£ã³ã¯ãããŒã¹ã¢ãŒããã¯ãã£ã«ã€ã³ã¹ãã¬ãŒã·ã§ã³ãäžããã³ãã¥ããã£ãããžã§ã¯ãïŒã¢ãããã¯èгå¯ãä¿¡é ŒåºŠã¹ã³ã¢ãªã³ã°ãã€ã³ã¹ãã£ã³ã¯ãé²åãã€ãã©ã€ã³ïŒ
- The Longform Guide - ç¶ç¶çåŠç¿ã»ã¯ã·ã§ã³
ã€ã³ã¹ãã£ã³ã¯ãããŒã¹åŠç¿: Claude ã«ããªãã®ãã¿ãŒã³ãæãããäžã€ã®ãããžã§ã¯ããã€ã