continuous-learning-v2

continuous-learning-v2

熱門

基於本能的學習系統,透過鉤子觀察對話,建立帶有信心評分的原子化本能,並將其演化為技能/指令/代理。v2.1 新增專案範圍的本能,防止跨專案污染。

23萬星標
3.5萬分支
更新於 2026/7/14
SKILL.md
readonlyread-only
name
continuous-learning-v2
description

基於本能的學習系統,透過鉤子觀察對話,建立帶有信心評分的原子化本能,並將其演化為技能/指令/代理。v2.1 新增專案範圍的本能,防止跨專案污染。

version
2.1.0

Continuous Learning v2.1 - 本能架構

一個進階的學習系統,將你的 Claude Code 對話轉化為可重複使用的知識,透過原子化的「本能」——帶有信心評分的小型學習行為。

v2.1 新增了專案範圍的本能——React 模式留在你的 React 專案中,Python 慣例留在你的 Python 專案中,而通用模式(如「始終驗證輸入」)則全域共享。

何時啟用

  • 設定從 Claude Code 對話自動學習
  • 透過鉤子設定基於本能的行為提取
  • 調整學習行為的信心門檻
  • 檢視、匯出或匯入本能庫
  • 將本能演化為完整的技能、指令或代理
  • 管理專案範圍與全域本能
  • 將本能從專案提升至全域範圍

v2.1 新功能

功能 v2.0 v2.1
儲存 全域 (~/.claude/homunculus/) 專案範圍 (${XDG_DATA_HOME:-~/.local/share}/ecc-homunculus/projects/<hash>/)
範圍 所有本能適用於所有地方 專案範圍 + 全域
偵測 git remote URL / 儲存庫路徑
提升 不適用 專案 → 全域(當在 2 個以上專案中出現)
指令 4 個 (status/evolve/export/import) 6 個 (+promote/projects)
跨專案 有污染風險 預設隔離

v2 新功能(相較於 v1)

功能 v1 v2
觀察 停止鉤子(對話結束) 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"
---

# Prefer Functional Style

## Action
Use functional patterns over classes when appropriate.

## Evidence
- Observed 5 instances of functional pattern preference
- User corrected class-based approach to functional on 2025-01-15

屬性:

  • 原子化——一個觸發條件,一個動作
  • 信心加權——0.3 = 暫定,0.9 = 幾乎確定
  • 領域標記——code-style, testing, git, debugging, workflow 等
  • 證據支持——追蹤哪些觀察建立了它
  • 範圍感知——project(預設)或 global

運作方式

對話活動(在 git 儲存庫中)
      |
      | 鉤子捕捉提示 + 工具使用(100% 可靠)
      | + 偵測專案上下文(git remote / 儲存庫路徑)
      v
+---------------------------------------------+
|  projects/<project-hash>/observations.jsonl  |
|   (提示、工具呼叫、結果、專案)               |
+---------------------------------------------+
      |
      | 觀察者代理讀取(背景,Haiku)
      v
+---------------------------------------------+
|          模式偵測                            |
|   * 使用者修正 -> 本能                       |
|   * 錯誤解決 -> 本能                         |
|   * 重複工作流程 -> 本能                     |
|   * 範圍決定:專案或全域?                   |
+---------------------------------------------+
      |
      | 建立/更新
      v
+---------------------------------------------+
|  projects/<project-hash>/instincts/personal/ |
|   * prefer-functional.yaml (0.7) [project]   |
|   * use-react-hooks.yaml (0.9) [project]     |
+---------------------------------------------+
|  instincts/personal/  (全域)                 |
|   * 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            |
+---------------------------------------------+

專案偵測

系統會自動偵測你目前的專案:

  1. CLAUDE_PROJECT_DIR 環境變數(最高優先順序)
  2. git remote get-url origin——雜湊後產生可攜帶的專案 ID(同一儲存庫在不同機器上得到相同 ID)
  3. git rev-parse --show-toplevel——使用儲存庫路徑作為備用(機器特定)
  4. 全域備用——若未偵測到專案,本能歸入全域範圍

每個專案會得到一個 12 字元的雜湊 ID(例如 a1b2c3d4e5f6)。註冊檔位於 ${XDG_DATA_HOME:-~/.local/share}/ecc-homunculus/projects.json,將 ID 對應到人類可讀的名稱。

資料目錄

Continuous-learning-v2 將觀察者資料儲存在 ~/.claude 之外,以避免 Claude Code 的敏感路徑防護阻擋背景本能寫入:

  1. CLV2_HOMUNCULUS_DIR 設為絕對路徑時使用
  2. $XDG_DATA_HOME/ecc-homunculus
  3. $HOME/.local/share/ecc-homunculus

現有用戶若資料在 ~/.claude/homunculus,可遷移一次:

bash skills/continuous-learning-v2/scripts/migrate-homunculus.sh

快速開始

1. 啟用觀察鉤子

若以外掛安裝(建議):

無需額外的 settings.json 鉤子區塊。Claude Code v2.1+ 會自動載入外掛的 hooks/hooks.json,且 observe.sh 已註冊在其中。

若你之前已將 observe.sh 複製到 ~/.claude/settings.json,請移除重複的 PreToolUse / PostToolUse 區塊。重複的外掛鉤子會導致雙重執行,並因 ${CLAUDE_PLUGIN_ROOT} 變數僅在外掛管理的 hooks/hooks.json 項目中可用而產生解析錯誤。

若手動安裝~/.claude/skills,請在 ~/.claude/settings.json 中加入:

{
  "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 "${XDG_DATA_HOME:-$HOME/.local/share}/ecc-homunculus"/{instincts/{personal,inherited},evolved/{agents,skills,commands},projects}

# 專案目錄會在鉤子首次於 git 儲存庫中執行時自動建立

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.pyobserve.sh 中的程式碼預設值設定。

檔案結構

${XDG_DATA_HOME:-~/.local/share}/ecc-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 「先 Grep 再 Edit」、「先 Read 再 Write」
Git 實務 global 「慣例式提交」、「小型聚焦提交」

本能提升(專案 -> 全域)

當同一個本能以高信心值出現在多個專案中時,它就有資格提升至全域範圍。

自動提升條件:

  • 相同本能 ID 出現在 2 個以上專案
  • 平均信心值 >= 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:

  • 現有的全域本能可透過 scripts/migrate-homunculus.sh~/.claude/homunculus/instincts/ 遷移
  • v1 的現有 ~/.claude/skills/learned/ 技能仍可運作
  • 停止鉤子仍會執行(但現在也會饋入 v2)
  • 逐步遷移:兩者並行執行

隱私

  • 觀察結果保留在本機機器上
  • 專案範圍的本能按專案隔離
  • 只有本能(模式)可以匯出——而非原始觀察結果
  • 不會分享任何實際程式碼或對話內容
  • 你可以控制匯出和提升的內容

相關資源

  • ECC-Tools GitHub App - 從儲存庫歷史產生本能
  • Homunculus - 啟發 v2 本能架構的社群專案(原子化觀察、信心評分、本能演化管線)
  • 長篇指南 - 持續學習章節

基於本能的學習:一次一個專案,教會 Claude 你的模式。