cluxion-Agentplugin-AutoClearMemory 0.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. cluxion_agentplugin_autoclearmemory-0.2.0/.gitignore +10 -0
  2. cluxion_agentplugin_autoclearmemory-0.2.0/Docs/README.md +52 -0
  3. cluxion_agentplugin_autoclearmemory-0.2.0/Docs/agent-surfaces.md +46 -0
  4. cluxion_agentplugin_autoclearmemory-0.2.0/Docs/architecture.md +53 -0
  5. cluxion_agentplugin_autoclearmemory-0.2.0/Docs/design.md +73 -0
  6. cluxion_agentplugin_autoclearmemory-0.2.0/Docs/installation.md +49 -0
  7. cluxion_agentplugin_autoclearmemory-0.2.0/Docs/rust-architecture.md +34 -0
  8. cluxion_agentplugin_autoclearmemory-0.2.0/PKG-INFO +145 -0
  9. cluxion_agentplugin_autoclearmemory-0.2.0/README.md +117 -0
  10. cluxion_agentplugin_autoclearmemory-0.2.0/adapters/claude/.claude-plugin/plugin.json +6 -0
  11. cluxion_agentplugin_autoclearmemory-0.2.0/adapters/claude/skills/forgetforge/SKILL.md +41 -0
  12. cluxion_agentplugin_autoclearmemory-0.2.0/adapters/codex/mcp-snippet.toml +9 -0
  13. cluxion_agentplugin_autoclearmemory-0.2.0/adapters/cron/forgetforge-prune.cron +3 -0
  14. cluxion_agentplugin_autoclearmemory-0.2.0/adapters/hermes/README.md +22 -0
  15. cluxion_agentplugin_autoclearmemory-0.2.0/adapters/systemd/forgetforge-pruner.service +12 -0
  16. cluxion_agentplugin_autoclearmemory-0.2.0/config.yaml.example +9 -0
  17. cluxion_agentplugin_autoclearmemory-0.2.0/pyproject.toml +85 -0
  18. cluxion_agentplugin_autoclearmemory-0.2.0/rust/forgetforge_engine/Cargo.lock +128 -0
  19. cluxion_agentplugin_autoclearmemory-0.2.0/rust/forgetforge_engine/Cargo.toml +18 -0
  20. cluxion_agentplugin_autoclearmemory-0.2.0/rust/forgetforge_engine/src/lib.rs +5 -0
  21. cluxion_agentplugin_autoclearmemory-0.2.0/rust/forgetforge_engine/src/main.rs +48 -0
  22. cluxion_agentplugin_autoclearmemory-0.2.0/rust/forgetforge_engine/src/scoring.rs +58 -0
  23. cluxion_agentplugin_autoclearmemory-0.2.0/rust/forgetforge_engine/src/tier.rs +90 -0
  24. cluxion_agentplugin_autoclearmemory-0.2.0/src/forgetforge/__init__.py +5 -0
  25. cluxion_agentplugin_autoclearmemory-0.2.0/src/forgetforge/adapters/__init__.py +3 -0
  26. cluxion_agentplugin_autoclearmemory-0.2.0/src/forgetforge/adapters/hermes.py +180 -0
  27. cluxion_agentplugin_autoclearmemory-0.2.0/src/forgetforge/archive.py +47 -0
  28. cluxion_agentplugin_autoclearmemory-0.2.0/src/forgetforge/cli.py +236 -0
  29. cluxion_agentplugin_autoclearmemory-0.2.0/src/forgetforge/config.py +49 -0
  30. cluxion_agentplugin_autoclearmemory-0.2.0/src/forgetforge/contradiction.py +78 -0
  31. cluxion_agentplugin_autoclearmemory-0.2.0/src/forgetforge/db.py +321 -0
  32. cluxion_agentplugin_autoclearmemory-0.2.0/src/forgetforge/hot_inject.py +31 -0
  33. cluxion_agentplugin_autoclearmemory-0.2.0/src/forgetforge/import_brief.py +45 -0
  34. cluxion_agentplugin_autoclearmemory-0.2.0/src/forgetforge/pruner.py +76 -0
  35. cluxion_agentplugin_autoclearmemory-0.2.0/src/forgetforge/recall.py +131 -0
  36. cluxion_agentplugin_autoclearmemory-0.2.0/src/forgetforge/rust_bridge.py +137 -0
  37. cluxion_agentplugin_autoclearmemory-0.2.0/src/forgetforge/schemas.py +79 -0
  38. cluxion_agentplugin_autoclearmemory-0.2.0/src/forgetforge/store.py +89 -0
  39. cluxion_agentplugin_autoclearmemory-0.2.0/tests/test_contradiction.py +22 -0
  40. cluxion_agentplugin_autoclearmemory-0.2.0/tests/test_db_recall.py +28 -0
  41. cluxion_agentplugin_autoclearmemory-0.2.0/tests/test_fts.py +12 -0
  42. cluxion_agentplugin_autoclearmemory-0.2.0/tests/test_hot_inject.py +27 -0
  43. cluxion_agentplugin_autoclearmemory-0.2.0/tests/test_import_brief.py +17 -0
  44. cluxion_agentplugin_autoclearmemory-0.2.0/tests/test_recall_stats.py +15 -0
  45. cluxion_agentplugin_autoclearmemory-0.2.0/tests/test_scoring.py +37 -0
  46. cluxion_agentplugin_autoclearmemory-0.2.0/tests/test_store.py +32 -0
@@ -0,0 +1,10 @@
1
+ .DS_Store
2
+ .ruff_cache/
3
+ .pytest_cache/
4
+ .venv/
5
+ __pycache__/
6
+ *.py[cod]
7
+ build/
8
+ dist/
9
+ *.egg-info/
10
+ rust/**/target/
@@ -0,0 +1,52 @@
1
+ # ForgetForge Documentation
2
+
3
+ ## 처음 읽는 분
4
+
5
+ **ForgetForge**는 에이전트 세션의 메모리가 무한히 쌓이는 문제를 막는 **망각·기억 강화 플러그인**입니다.
6
+
7
+ | 질문 | 답 |
8
+ |------|-----|
9
+ | **무엇을 하나요?** | 기억을 tier(Hot/Warm/Cold)로 나누고, **실제로 회상한 횟수**로 강도를 계산해 오래된 기억을 archive합니다. |
10
+ | **누가 실행하나요?** | **연결된 AI**(Hermes·Claude·Codex·Grok의 모델)가 skill/도구 지시에 따라 `forgetforge_*` 도구나 CLI를 호출합니다. |
11
+ | **플러그인이 모델을 부르나요?** | **아니요.** 점수·tier·DB만 관리합니다. 요약·반영·세션 정리는 **연결된 AI**가 수행합니다. |
12
+ | **왜 Rust인가요?** | retention 계산·tier 판정 hot path를 Rust로 두고, Python은 DB·adapter·CLI만 담당합니다. |
13
+
14
+ ### 연결된 AI 사용 흐름
15
+
16
+ 1. 세션 시작 또는 맥락이 커질 때 → `forgetforge status`로 건강 상태 확인
17
+ 2. 과거 사실이 필요할 때 → `forgetforge recall <topic>` (explicit layer)
18
+ 3. 응답에 기억을 실제로 썼다면 → `forgetforge_recall` with `layer: implicit`
19
+ 4. 세션 마무리 시 사용한 기억을 점검했다면 → `forgetforge_recall` with `layer: reflection`
20
+ 5. 사용자 `#keep_forever` / `#forget_this` → `forgetforge keep` / `forgetforge forget`
21
+ 6. preprocessing/supercoder brief → `forgetforge import-brief` (또는 Hermes `forgetforge_import_brief`)
22
+ 7. store 시 `contradiction_warnings`가 있으면 사용자에게 reconcile 제안
23
+
24
+ **v0.2 추가:** FTS5 recall, brief handoff, hot inject hook, contradiction hints, Parquet cold archive.
25
+
26
+ Skill 지시문: [`adapters/claude/skills/forgetforge/SKILL.md`](../adapters/claude/skills/forgetforge/SKILL.md)
27
+
28
+ ### 사람(개발자)이 할 일
29
+
30
+ ```bash
31
+ pip install cluxion-Agentplugin-AutoClearMemory
32
+ forgetforge init --agents=all
33
+ hermes plugins enable forgetforge # Hermes 예시
34
+ ```
35
+
36
+ ## 목차
37
+
38
+ | 문서 | 내용 |
39
+ |------|------|
40
+ | [architecture.md](architecture.md) | Recall-centric tiers, 데이터 흐름 |
41
+ | [design.md](design.md) | Retention 공식, retrieval layer, pruner |
42
+ | [installation.md](installation.md) | pip 설치, Rust 빌드, adapter |
43
+ | [agent-surfaces.md](agent-surfaces.md) | Hermes / Claude / Codex 연동 |
44
+ | [rust-architecture.md](rust-architecture.md) | Rust 메인 · Python bridge |
45
+
46
+ ## 이 레포에서 다루지 않는 것
47
+
48
+ - API 키·OAuth (호스트 에이전트 소유)
49
+ - 플러그인 내부의 별도 LLM 호출
50
+ - 비공개 운영·배포 비밀
51
+
52
+ 이슈는 GitHub Issues를 이용해 주세요.
@@ -0,0 +1,46 @@
1
+ # Agent Surfaces
2
+
3
+ ForgetForge는 **하나의 pip 패키지**로 Hermes · Claude Code · Codex · Grok Build를 커버합니다.
4
+ 에이전트별 차이는 adapter·skill뿐이고, **core(Rust + SQLite)는 공유**합니다.
5
+
6
+ **공통 원칙:** 연결된 AI가 skill/도구 지시에 따라 recall·status·keep·forget을 호출합니다. 플러그인은 LLM을 호출하지 않습니다.
7
+
8
+ ## Hermes
9
+
10
+ - Entry: `[project.entry-points."hermes_agent.plugins"]`
11
+ - 활성화: `hermes plugins enable forgetforge`
12
+ - Tools: `forgetforge_store`, `forgetforge_recall`, `forgetforge_status`, `forgetforge_keep`, `forgetforge_forget`, `forgetforge_import_brief`, `forgetforge_hot_context`
13
+ - `forgetforge_recall`의 `layer`: `explicit` | `implicit` | `reflection`
14
+ - `pre_llm_call` hook: hot tier 자동 inject
15
+
16
+ ## Claude Code
17
+
18
+ - Skill: `adapters/claude/skills/forgetforge/SKILL.md`
19
+ - 연결된 AI는 skill 규칙에 따라 CLI 또는 동일 semantics의 도구 호출
20
+ - 세션 마무리 reflection도 **Claude 모델**이 skill 지시에 따라 `layer: reflection` recall 기록
21
+
22
+ ## Codex
23
+
24
+ - 가이드: `adapters/codex/mcp-snippet.toml`
25
+ - 연결된 AI는 터미널에서 `forgetforge` CLI를 호출 (recall/status/keep/forget)
26
+ - 규칙은 Claude skill과 동일
27
+
28
+ ## Grok Build
29
+
30
+ - `forgetforge` CLI + 동일 recall 규칙
31
+ - 프로젝트 skill에 `adapters/claude/skills/forgetforge/SKILL.md` 내용을 참고해 연동
32
+
33
+ ## 공통 명령
34
+
35
+ | Command | Description |
36
+ |---------|-------------|
37
+ | `forgetforge init --agents=all` | DB + config 생성 |
38
+ | `forgetforge recall <query>` | Explicit retrieval |
39
+ | `forgetforge keep <id>` | `#keep_forever` |
40
+ | `forgetforge forget <id>` | `#forget_this` |
41
+ | `forgetforge status` | Memory health |
42
+ | `forgetforge store <id> --content "..."` | Store/update memory |
43
+ | `forgetforge import-brief` | Brief handoff |
44
+ | `forgetforge hot-context` | Hot tier block |
45
+ | `forgetforge prune` | Pruner 1회 |
46
+ | `forgetforge pruner-daemon` | Background pruner |
@@ -0,0 +1,53 @@
1
+ # Architecture
2
+
3
+ ## 목표
4
+
5
+ 에이전트 **영구 메모리 bloat**를 **회상(Recall) 중심**으로 해결합니다.
6
+ 저장 횟수가 아니라 **실제 회상 횟수**가 기억 강도를 결정합니다.
7
+
8
+ ## 범용 에이전트 + Rust-First
9
+
10
+ | 계층 | 구현 |
11
+ |------|------|
12
+ | **Rust** (`forgetforge-engine`) | Retention scoring, tier decision |
13
+ | **Python** (`forgetforge`) | SQLite, recall tracker, pruner, CLI |
14
+ | **Agent adapter** | Hermes plugin, Claude skill, Codex CLI 가이드 |
15
+
16
+ ## 데이터 흐름
17
+
18
+ ```mermaid
19
+ graph TD
20
+ subgraph Host["연결된 AI (host model)"]
21
+ Skill[Skill / tool 지시 따름]
22
+ end
23
+
24
+ subgraph Core["ForgetForge Core"]
25
+ DB[SQLite ~/.forgetforge/db.sqlite]
26
+ Engine[Rust Scoring Engine]
27
+ Tracker[Recall Tracker 3-layer]
28
+ Pruner[Background Pruner]
29
+ end
30
+
31
+ Skill -->|forgetforge_recall / CLI| Tracker
32
+ Tracker --> Engine
33
+ Engine --> DB
34
+ DB --> Pruner
35
+ DB -->|recall 결과 JSON| Skill
36
+ ```
37
+
38
+ 연결된 AI는 recall 결과를 읽고 **자신의 응답 맥락에 반영**합니다. 플러그인이 별도 completion을 생성하지 않습니다.
39
+
40
+ ## Tiered Memory
41
+
42
+ | Tier | 조건 | 연결된 AI |
43
+ |------|------|-----------|
44
+ | **Hot** | 최근 7일 + N_r ≥ 1 | recall 결과 우선 반영 |
45
+ | **Warm-Episodic** | R ≥ 0.65 | 필요 시 recall |
46
+ | **Warm-Semantic** | R ≥ 0.80 | 장기 사실 유지 |
47
+ | **Warm-Procedural** | skill + N_r ≥ 3 | 절차·스킬 유지 |
48
+ | **Cold** | R < 0.40 or 180일 무회상 | archive, on-demand recall |
49
+
50
+ ## Host 경계
51
+
52
+ - **Host**: 모델·OAuth·completion·최종 응답
53
+ - **ForgetForge**: 점수·tier·DB·archive·도구 JSON
@@ -0,0 +1,73 @@
1
+ # Design
2
+
3
+ ## Retention formula
4
+
5
+ \[
6
+ R = e^{-t / S} \times \left(1 + 0.45 \cdot N_r + 0.30 \cdot I + 0.25 \cdot F \right)
7
+ \]
8
+
9
+ - \( t \): 마지막 회상 이후 경과일
10
+ - \( S = \ln(1 + N_r) \): Stability (회상 횟수 기반)
11
+ - \( N_r \): Retrieval count (Explicit + Implicit + Reflection)
12
+ - \( I \): Importance (0~1)
13
+ - \( F \): Frequency (secondary)
14
+
15
+ 구현: `rust/forgetforge_engine/src/scoring.rs` (+ Python fallback in `rust_bridge.py`).
16
+
17
+ ## Retrieval 3-layer (연결된 AI가 기록)
18
+
19
+ 플러그인은 별도 LLM을 돌리지 않습니다. **연결된 AI**가 skill·도구 지시에 따라 `forgetforge_recall`을 호출할 때 `layer`로 구분합니다.
20
+
21
+ | Layer | 연결된 AI가 호출하는 시점 | Boost |
22
+ |-------|---------------------------|-------|
23
+ | `explicit` | `/recall`, 주제 검색, `forgetforge recall` | +0.45 |
24
+ | `implicit` | 응답에 해당 기억을 실제로 사용한 직후 | +0.35 |
25
+ | `reflection` | 세션 마무리 시 “이 기억을 썼는가?” 점검 후 | +0.25 |
26
+
27
+ 모든 이벤트는 `retrieval_events` 테이블에 기록됩니다. recall 시 `importance`·`frequency`가 layer별로 소폭 증가합니다 (`db.bump_recall_stats`).
28
+
29
+ ## FTS5 recall
30
+
31
+ - `memories_fts` (FTS5, porter tokenizer) — `search_memories`가 bm25 정렬
32
+ - FTS 실패·무결과 시 `LIKE` fallback
33
+ - upsert/forget 시 FTS 동기화
34
+
35
+ ## Brief handoff
36
+
37
+ `import_brief` — preprocessing/supercoder brief를 episodic memory로 저장:
38
+
39
+ ```bash
40
+ forgetforge import-brief --source supercoder --brief "<json or text>"
41
+ ```
42
+
43
+ Hermes: `forgetforge_import_brief`
44
+
45
+ ## Contradiction hints
46
+
47
+ `store_memory`는 유사 토큰·부정 쌍(`always/never` 등)을 검사해 `contradiction_warnings`를 반환합니다. 연결된 AI가 사용자에게 reconcile을 제안합니다.
48
+
49
+ ## Hot inject
50
+
51
+ - `hot_inject.build_hot_context` — hot tier 미리보기 블록
52
+ - Hermes `pre_llm_call` hook — hot 기억을 LLM 호출 전에 자동 주입
53
+
54
+ ## Pruner (6시간 주기)
55
+
56
+ - Warm → Cold: \( R < 0.40 \)
57
+ - 180일 무회상 → `~/.forgetforge/archive/`에 parquet + jsonl + txt 저장 (`archive.write_cold_archive`)
58
+ - Cold → Warm: recall 발생 시 즉시 승격
59
+
60
+ 주기 실행: `forgetforge prune` (cron/systemd 등).
61
+
62
+ ## User safety tags
63
+
64
+ - `#keep_forever` → `forgetforge keep <id>`
65
+ - `#forget_this` → `forgetforge forget <id>`
66
+
67
+ ## Package layout
68
+
69
+ ```
70
+ src/forgetforge/ # db, recall, pruner, rust_bridge, cli
71
+ rust/forgetforge_engine/ # scoring + tier (Rust)
72
+ adapters/ # Hermes README, Claude skill, Codex snippet
73
+ ```
@@ -0,0 +1,49 @@
1
+ # Installation
2
+
3
+ ## pip (모든 에이전트)
4
+
5
+ ```bash
6
+ pip install cluxion-Agentplugin-AutoClearMemory
7
+ forgetforge init --agents=all
8
+ forgetforge check
9
+ ```
10
+
11
+ 데이터: `~/.forgetforge/` (`db.sqlite`, `config.yaml`, `archive/`).
12
+
13
+ ## Rust engine (권장)
14
+
15
+ ```bash
16
+ cargo build --release --manifest-path rust/forgetforge_engine/Cargo.toml
17
+ export FORGETFORGE_ENGINE_BIN="$(pwd)/rust/forgetforge_engine/target/release/forgetforge-engine"
18
+ forgetforge check
19
+ ```
20
+
21
+ Rust가 없어도 **Python fallback**으로 scoring/tier가 동작합니다.
22
+
23
+ ## Hermes
24
+
25
+ ```bash
26
+ hermes plugins enable forgetforge
27
+ ```
28
+
29
+ 연결된 AI에게 `forgetforge_*` 도구 사용을 skill로 안내합니다.
30
+
31
+ ## Claude Code
32
+
33
+ `adapters/claude/skills/forgetforge/`를 skills 경로에 추가하거나, `adapters/claude/.claude-plugin/` manifest를 사용합니다.
34
+
35
+ ## Codex
36
+
37
+ `adapters/codex/mcp-snippet.toml`을 참고합니다. 연결된 AI는 `forgetforge` CLI를 터미널에서 호출합니다.
38
+
39
+ ```bash
40
+ forgetforge recall docker
41
+ forgetforge status
42
+ ```
43
+
44
+ ## Environment
45
+
46
+ | Variable | Purpose |
47
+ |----------|---------|
48
+ | `FORGETFORGE_HOME` | `~/.forgetforge` override |
49
+ | `FORGETFORGE_ENGINE_BIN` | `forgetforge-engine` 경로 |
@@ -0,0 +1,34 @@
1
+ # Rust Architecture
2
+
3
+ ## 원칙
4
+
5
+ ForgetForge는 **Rust가 메인**, **Python은 연결층**입니다.
6
+
7
+ ```
8
+ 연결된 AI (Hermes / Claude / Codex / Grok)
9
+ ↓ skill / forgetforge_* tools / CLI
10
+ forgetforge (Python: DB, recall, pruner, CLI)
11
+ ↓ subprocess JSON
12
+ forgetforge-engine (Rust: retention, tier)
13
+ ```
14
+
15
+ 플러그인은 **연결된 AI에게 지시·도구·점수**를 제공합니다. 별도 LLM을 호출하지 않습니다.
16
+
17
+ ## Rust: `forgetforge-engine`
18
+
19
+ | 명령 | 역할 |
20
+ |------|------|
21
+ | `score` | RetentionInput → retention, stability, boost |
22
+ | `tier` | TierInput → tier, action, retention |
23
+
24
+ ```bash
25
+ cargo build --release --manifest-path rust/forgetforge_engine/Cargo.toml
26
+ ```
27
+
28
+ ## Python 역할
29
+
30
+ - SQLite schema (`memories`, `retrieval_events`)
31
+ - recall layer 기록 (`explicit` / `implicit` / `reflection`)
32
+ - pruner orchestration
33
+ - Hermes `register()`, CLI
34
+ - Rust 미설치 시 동일 공식 Python fallback
@@ -0,0 +1,145 @@
1
+ Metadata-Version: 2.4
2
+ Name: cluxion-Agentplugin-AutoClearMemory
3
+ Version: 0.2.0
4
+ Summary: Universal agent memory plugin (ForgetForge): recall-centric retention, tiered forgetting, Rust scoring engine for Hermes, Claude Code, and Codex.
5
+ Project-URL: Homepage, https://github.com/cluxion/cluxion-Agentplugin-AutoClearMemory
6
+ Project-URL: Repository, https://github.com/cluxion/cluxion-Agentplugin-AutoClearMemory
7
+ Project-URL: Issues, https://github.com/cluxion/cluxion-Agentplugin-AutoClearMemory/issues
8
+ Author-email: cluxion <algocean1204@users.noreply.github.com>
9
+ License-Expression: Apache-2.0
10
+ Keywords: claude-code,cluxion,codex,forgetforge,hermes-agent,memory,plugin,recall
11
+ Classifier: Development Status :: 3 - Alpha
12
+ Classifier: Environment :: Plugins
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: License :: OSI Approved :: Apache Software License
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
19
+ Requires-Python: >=3.11
20
+ Requires-Dist: pyarrow>=15.0
21
+ Requires-Dist: pyyaml>=6.0
22
+ Provides-Extra: dev
23
+ Requires-Dist: build>=1.2; extra == 'dev'
24
+ Requires-Dist: pytest>=8.0; extra == 'dev'
25
+ Requires-Dist: ruff>=0.8; extra == 'dev'
26
+ Requires-Dist: twine>=6.0; extra == 'dev'
27
+ Description-Content-Type: text/markdown
28
+
29
+ # cluxion-Agentplugin-AutoClearMemory (ForgetForge)
30
+
31
+ 범용 에이전트 **망각·기억 강화 플러그인** — **Hermes, Claude Code, Codex, Grok Build**에서 동일 core로 동작합니다.
32
+
33
+ **Repository:** https://github.com/cluxion/cluxion-Agentplugin-AutoClearMemory
34
+
35
+ ## 한 줄 요약
36
+
37
+ 세션 메모리가 쌓일수록 컨텍스트가 비대해집니다. ForgetForge는 **회상(Recall) 횟수**로 기억 강도를 계산하고, 오래되거나 쓰이지 않은 기억을 자동으로 낮은 tier로 내립니다. **연결된 AI**가 skill·도구 지시에 따라 recall/status/keep/forget을 호출합니다.
38
+
39
+ ## 범용 에이전트 + Rust-First
40
+
41
+ | 계층 | 구현 |
42
+ |------|------|
43
+ | **Rust** (`forgetforge-engine`) | Retention scoring, tier decision |
44
+ | **Python** (`forgetforge`) | SQLite, recall tracker, pruner, CLI |
45
+ | **Agent adapter** | Hermes plugin, Claude skill, Codex CLI 가이드 |
46
+
47
+ 내부 로직은 **Rust 중심**. Python·Skill은 등록·DB·JSON bridge **thin wrapper**입니다.
48
+ Rust 바이너리가 없어도 **Python fallback**으로 동일 공식이 동작합니다.
49
+
50
+ ## 이 플러그인의 역할
51
+
52
+ - **Recall이 reinforcement**: 저장 횟수가 아니라 실제 회상 \(N_r\)가 강도를 결정
53
+ - **Tiered Memory**: Hot / Warm-Episodic / Warm-Semantic / Warm-Procedural / Cold
54
+ - **Decay + Boost**: Ebbinghaus forgetting curve + spaced repetition
55
+ - **FTS5 recall**: SQLite full-text search + LIKE fallback
56
+ - **Brief handoff**: preprocessing/supercoder brief → episodic memory (`import-brief`)
57
+ - **Hot inject**: Hermes `pre_llm_call` hook으로 hot tier 자동 주입
58
+ - **Contradiction hints**: store 시 유사·부정 기억 경고
59
+ - **Parquet archive**: cold tier → `~/.forgetforge/archive/` (parquet + jsonl + txt)
60
+ - **Background pruner**: 6시간 주기 tier migration (`forgetforge prune`)
61
+ - **Safety**: `#keep_forever`, `#forget_this` 사용자 태그
62
+
63
+ ForgetForge는 **모델·OAuth를 소유하지 않습니다.** 연결된 AI가 도구 결과를 읽고 맥락에 반영합니다.
64
+
65
+ ## 연결된 AI가 하는 일
66
+
67
+ | 상황 | 연결된 AI 동작 |
68
+ |------|----------------|
69
+ | 맥락이 커짐 | `forgetforge status` 또는 `forgetforge_status` |
70
+ | 과거 사실 필요 | `forgetforge recall <topic>` (explicit) |
71
+ | 응답에 기억 사용 | `forgetforge_recall` + `layer: implicit` |
72
+ | 세션 마무리 점검 | `forgetforge_recall` + `layer: reflection` |
73
+ | `#keep_forever` | `forgetforge keep <id>` |
74
+ | `#forget_this` | `forgetforge forget <id>` |
75
+
76
+ Hermes는 `forgetforge_*` 도구, Claude/Codex는 skill + CLI를 동일 규칙으로 따릅니다.
77
+
78
+ ## Retention formula
79
+
80
+ \[
81
+ R = e^{-t / S} \times \left(1 + 0.45 \cdot N_r + 0.30 \cdot I + 0.25 \cdot F \right), \quad S = \ln(1 + N_r)
82
+ \]
83
+
84
+ ## Tier 요약
85
+
86
+ | Tier | 조건 | 연결된 AI 동작 |
87
+ |------|------|----------------|
88
+ | **Hot** | 최근 7일 + \(N_r \geq 1\) | recall 결과를 맥락에 우선 반영 |
89
+ | **Warm-Episodic** | \(R \geq 0.65\) | 필요 시 recall |
90
+ | **Warm-Semantic** | \(R \geq 0.80\) | 장기 사실로 유지 |
91
+ | **Warm-Procedural** | skill + \(N_r \geq 3\) | 절차·스킬로 유지 |
92
+ | **Cold** | \(R < 0.40\) or 180일 무회상 | archive, 필요 시에만 recall |
93
+
94
+ ## 빠른 시작
95
+
96
+ ```bash
97
+ pip install cluxion-Agentplugin-AutoClearMemory
98
+ forgetforge init --agents=all
99
+ forgetforge check
100
+ hermes plugins enable forgetforge # Hermes
101
+ ```
102
+
103
+ ```bash
104
+ # Rust 가속 (선택)
105
+ cargo build --release --manifest-path rust/forgetforge_engine/Cargo.toml
106
+ ```
107
+
108
+ ## 공통 명령
109
+
110
+ | Command | Description |
111
+ |---------|-------------|
112
+ | `forgetforge store <id> --content "..."` | Store or update memory |
113
+ | `forgetforge recall <topic>` | Explicit retrieval + tier boost |
114
+ | `forgetforge keep <id>` | `#keep_forever` |
115
+ | `forgetforge forget <id>` | `#forget_this` |
116
+ | `forgetforge status` | Memory health |
117
+ | `forgetforge prune` | Pruner 1회 실행 |
118
+ | `forgetforge pruner-daemon` | Background pruner (interval from config) |
119
+ | `forgetforge import-brief --source supercoder --brief "..."` | Brief → episodic memory |
120
+ | `forgetforge hot-context` | Hot tier context block (CLI) |
121
+
122
+ ## Hermes 도구 (`forgetforge` toolset)
123
+
124
+ | Tool | Description |
125
+ |------|-------------|
126
+ | `forgetforge_store` | Save or update memory (contradiction warnings when similar) |
127
+ | `forgetforge_recall` | FTS search + retrieval event (`layer`: explicit / implicit / reflection) |
128
+ | `forgetforge_status` | Tier counts, engine status |
129
+ | `forgetforge_keep` | Pin memory forever |
130
+ | `forgetforge_forget` | Mark for forgetting |
131
+ | `forgetforge_import_brief` | Import preprocessing/supercoder brief |
132
+ | `forgetforge_hot_context` | Hot tier block (also via `pre_llm_call` hook) |
133
+
134
+ ## 문서
135
+
136
+ - [Docs/README.md](Docs/README.md) — **처음 읽는 분** + 목차
137
+ - [Docs/architecture.md](Docs/architecture.md)
138
+ - [Docs/design.md](Docs/design.md)
139
+ - [Docs/installation.md](Docs/installation.md)
140
+ - [Docs/agent-surfaces.md](Docs/agent-surfaces.md)
141
+ - [Docs/rust-architecture.md](Docs/rust-architecture.md)
142
+
143
+ ## License
144
+
145
+ Apache-2.0
@@ -0,0 +1,117 @@
1
+ # cluxion-Agentplugin-AutoClearMemory (ForgetForge)
2
+
3
+ 범용 에이전트 **망각·기억 강화 플러그인** — **Hermes, Claude Code, Codex, Grok Build**에서 동일 core로 동작합니다.
4
+
5
+ **Repository:** https://github.com/cluxion/cluxion-Agentplugin-AutoClearMemory
6
+
7
+ ## 한 줄 요약
8
+
9
+ 세션 메모리가 쌓일수록 컨텍스트가 비대해집니다. ForgetForge는 **회상(Recall) 횟수**로 기억 강도를 계산하고, 오래되거나 쓰이지 않은 기억을 자동으로 낮은 tier로 내립니다. **연결된 AI**가 skill·도구 지시에 따라 recall/status/keep/forget을 호출합니다.
10
+
11
+ ## 범용 에이전트 + Rust-First
12
+
13
+ | 계층 | 구현 |
14
+ |------|------|
15
+ | **Rust** (`forgetforge-engine`) | Retention scoring, tier decision |
16
+ | **Python** (`forgetforge`) | SQLite, recall tracker, pruner, CLI |
17
+ | **Agent adapter** | Hermes plugin, Claude skill, Codex CLI 가이드 |
18
+
19
+ 내부 로직은 **Rust 중심**. Python·Skill은 등록·DB·JSON bridge **thin wrapper**입니다.
20
+ Rust 바이너리가 없어도 **Python fallback**으로 동일 공식이 동작합니다.
21
+
22
+ ## 이 플러그인의 역할
23
+
24
+ - **Recall이 reinforcement**: 저장 횟수가 아니라 실제 회상 \(N_r\)가 강도를 결정
25
+ - **Tiered Memory**: Hot / Warm-Episodic / Warm-Semantic / Warm-Procedural / Cold
26
+ - **Decay + Boost**: Ebbinghaus forgetting curve + spaced repetition
27
+ - **FTS5 recall**: SQLite full-text search + LIKE fallback
28
+ - **Brief handoff**: preprocessing/supercoder brief → episodic memory (`import-brief`)
29
+ - **Hot inject**: Hermes `pre_llm_call` hook으로 hot tier 자동 주입
30
+ - **Contradiction hints**: store 시 유사·부정 기억 경고
31
+ - **Parquet archive**: cold tier → `~/.forgetforge/archive/` (parquet + jsonl + txt)
32
+ - **Background pruner**: 6시간 주기 tier migration (`forgetforge prune`)
33
+ - **Safety**: `#keep_forever`, `#forget_this` 사용자 태그
34
+
35
+ ForgetForge는 **모델·OAuth를 소유하지 않습니다.** 연결된 AI가 도구 결과를 읽고 맥락에 반영합니다.
36
+
37
+ ## 연결된 AI가 하는 일
38
+
39
+ | 상황 | 연결된 AI 동작 |
40
+ |------|----------------|
41
+ | 맥락이 커짐 | `forgetforge status` 또는 `forgetforge_status` |
42
+ | 과거 사실 필요 | `forgetforge recall <topic>` (explicit) |
43
+ | 응답에 기억 사용 | `forgetforge_recall` + `layer: implicit` |
44
+ | 세션 마무리 점검 | `forgetforge_recall` + `layer: reflection` |
45
+ | `#keep_forever` | `forgetforge keep <id>` |
46
+ | `#forget_this` | `forgetforge forget <id>` |
47
+
48
+ Hermes는 `forgetforge_*` 도구, Claude/Codex는 skill + CLI를 동일 규칙으로 따릅니다.
49
+
50
+ ## Retention formula
51
+
52
+ \[
53
+ R = e^{-t / S} \times \left(1 + 0.45 \cdot N_r + 0.30 \cdot I + 0.25 \cdot F \right), \quad S = \ln(1 + N_r)
54
+ \]
55
+
56
+ ## Tier 요약
57
+
58
+ | Tier | 조건 | 연결된 AI 동작 |
59
+ |------|------|----------------|
60
+ | **Hot** | 최근 7일 + \(N_r \geq 1\) | recall 결과를 맥락에 우선 반영 |
61
+ | **Warm-Episodic** | \(R \geq 0.65\) | 필요 시 recall |
62
+ | **Warm-Semantic** | \(R \geq 0.80\) | 장기 사실로 유지 |
63
+ | **Warm-Procedural** | skill + \(N_r \geq 3\) | 절차·스킬로 유지 |
64
+ | **Cold** | \(R < 0.40\) or 180일 무회상 | archive, 필요 시에만 recall |
65
+
66
+ ## 빠른 시작
67
+
68
+ ```bash
69
+ pip install cluxion-Agentplugin-AutoClearMemory
70
+ forgetforge init --agents=all
71
+ forgetforge check
72
+ hermes plugins enable forgetforge # Hermes
73
+ ```
74
+
75
+ ```bash
76
+ # Rust 가속 (선택)
77
+ cargo build --release --manifest-path rust/forgetforge_engine/Cargo.toml
78
+ ```
79
+
80
+ ## 공통 명령
81
+
82
+ | Command | Description |
83
+ |---------|-------------|
84
+ | `forgetforge store <id> --content "..."` | Store or update memory |
85
+ | `forgetforge recall <topic>` | Explicit retrieval + tier boost |
86
+ | `forgetforge keep <id>` | `#keep_forever` |
87
+ | `forgetforge forget <id>` | `#forget_this` |
88
+ | `forgetforge status` | Memory health |
89
+ | `forgetforge prune` | Pruner 1회 실행 |
90
+ | `forgetforge pruner-daemon` | Background pruner (interval from config) |
91
+ | `forgetforge import-brief --source supercoder --brief "..."` | Brief → episodic memory |
92
+ | `forgetforge hot-context` | Hot tier context block (CLI) |
93
+
94
+ ## Hermes 도구 (`forgetforge` toolset)
95
+
96
+ | Tool | Description |
97
+ |------|-------------|
98
+ | `forgetforge_store` | Save or update memory (contradiction warnings when similar) |
99
+ | `forgetforge_recall` | FTS search + retrieval event (`layer`: explicit / implicit / reflection) |
100
+ | `forgetforge_status` | Tier counts, engine status |
101
+ | `forgetforge_keep` | Pin memory forever |
102
+ | `forgetforge_forget` | Mark for forgetting |
103
+ | `forgetforge_import_brief` | Import preprocessing/supercoder brief |
104
+ | `forgetforge_hot_context` | Hot tier block (also via `pre_llm_call` hook) |
105
+
106
+ ## 문서
107
+
108
+ - [Docs/README.md](Docs/README.md) — **처음 읽는 분** + 목차
109
+ - [Docs/architecture.md](Docs/architecture.md)
110
+ - [Docs/design.md](Docs/design.md)
111
+ - [Docs/installation.md](Docs/installation.md)
112
+ - [Docs/agent-surfaces.md](Docs/agent-surfaces.md)
113
+ - [Docs/rust-architecture.md](Docs/rust-architecture.md)
114
+
115
+ ## License
116
+
117
+ Apache-2.0
@@ -0,0 +1,6 @@
1
+ {
2
+ "name": "forgetforge",
3
+ "version": "0.1.0",
4
+ "description": "Recall-centric memory plugin (ForgetForge) for Claude Code",
5
+ "author": "cluxion"
6
+ }
@@ -0,0 +1,41 @@
1
+ ---
2
+ name: forgetforge
3
+ description: Recall-centric memory for agent sessions. Use when context grows, when prior facts are needed, or when user tags #keep_forever / #forget_this. You (the connected AI) call forgetforge tools/CLI — the plugin does not call a separate model.
4
+ ---
5
+
6
+ # ForgetForge — 연결된 AI 지시문
7
+
8
+ ForgetForge는 **당신(연결된 AI)** 이 도구·CLI를 호출해 메모리를 관리합니다. 플러그인은 점수·tier·DB만 제공합니다.
9
+
10
+ ## 설치 확인
11
+
12
+ ```bash
13
+ forgetforge check
14
+ ```
15
+
16
+ ## 언제 호출할지
17
+
18
+ | 상황 | 동작 |
19
+ |------|------|
20
+ | 새 사실·결정 저장 | `forgetforge store <id> --content "..."` 또는 `forgetforge_store` |
21
+ | 세션 시작·맥락 비대 | `forgetforge status` |
22
+ | 과거 사실 필요 | `forgetforge recall <topic>` 또는 `forgetforge_recall` layer=`explicit` |
23
+ | 응답에 기억을 실제 사용 | `forgetforge_recall` layer=`implicit` |
24
+ | 세션 마무리 | 사용한 기억에 대해 `forgetforge_recall` layer=`reflection` |
25
+ | 사용자 `#keep_forever` | `forgetforge keep <id>` |
26
+ | 사용자 `#forget_this` | `forgetforge forget <id>` |
27
+ | preprocessing/supercoder brief 수신 | `forgetforge import-brief` 또는 `forgetforge_import_brief` |
28
+ | store 후 `contradiction_warnings` | 기존 기억과 충돌 여부를 사용자에게 알리고 reconcile |
29
+
30
+ ## 규칙
31
+
32
+ 1. **회상이 강화 신호** — 저장만으로는 강해지지 않음. 사용·recall 시 layer를 기록할 것.
33
+ 2. Tier: Hot → Warm (episodic/semantic/procedural) → Cold. Cold는 recall 시에만 다시 가져올 것.
34
+ 3. recall 결과를 읽고 **당신의 응답 맥락에 반영**할 것. 플러그인이 응답을 대신 작성하지 않음.
35
+ 4. 모르는 사실을 기억에서 찾지 못하면 추측하지 말 것.
36
+ 5. Hermes에서는 hot tier가 `pre_llm_call` hook으로 자동 inject됩니다. 수동이 필요하면 `forgetforge_hot_context`를 호출하세요.
37
+
38
+ ## Retention (참고)
39
+
40
+ R = e^{-t/S} × (1 + 0.45·N_r + 0.30·I + 0.25·F), S = ln(1 + N_r).
41
+ Scoring은 Rust `forgetforge-engine`이 수행합니다.
@@ -0,0 +1,9 @@
1
+ # Codex 연동 참고
2
+ # 연결된 AI가 터미널에서 forgetforge CLI를 호출합니다.
3
+ # 규칙은 adapters/claude/skills/forgetforge/SKILL.md 와 동일합니다.
4
+
5
+ # forgetforge recall <topic>
6
+ # forgetforge status
7
+ # forgetforge keep <memory_id>
8
+ # forgetforge forget <memory_id>
9
+ # forgetforge prune
@@ -0,0 +1,3 @@
1
+ # Install: crontab -e and add this line (adjust forgetforge path if needed)
2
+ # Runs pruner every 6 hours
3
+ 0 */6 * * * /usr/bin/env forgetforge prune >> "$HOME/.forgetforge/prune.log" 2>&1
@@ -0,0 +1,22 @@
1
+ # Hermes adapter
2
+
3
+ Hermes는 pip entry point로 ForgetForge를 로드합니다.
4
+
5
+ ```bash
6
+ hermes plugins enable forgetforge
7
+ forgetforge init --agents=hermes
8
+ ```
9
+
10
+ ## 연결된 AI 도구
11
+
12
+ | Tool | 용도 |
13
+ |------|------|
14
+ | `forgetforge_store` | 저장/갱신 (contradiction warnings) |
15
+ | `forgetforge_recall` | FTS 검색 + retrieval 기록 (`layer` 필수) |
16
+ | `forgetforge_status` | tier·건강 상태 |
17
+ | `forgetforge_keep` | `#keep_forever` |
18
+ | `forgetforge_forget` | `#forget_this` |
19
+ | `forgetforge_import_brief` | preprocessing/supercoder brief 수입 |
20
+ | `forgetforge_hot_context` | hot tier 블록 (또는 `pre_llm_call` hook) |
21
+
22
+ 연결된 AI는 recall 결과를 읽고 응답 맥락에 반영합니다. Hermes는 hot tier를 `pre_llm_call` hook으로 자동 inject합니다.