rewrite: simple memory MCP - 4 tools, file I/O only
This commit is contained in:
283
README.md
283
README.md
@@ -1,264 +1,65 @@
|
|||||||
# aigpt
|
# aigpt
|
||||||
|
|
||||||
AI memory system with psychological analysis for Claude via MCP.
|
アイの記憶を管理するMCPサーバー。
|
||||||
|
|
||||||
**Current: Layers 1-4 Complete** - Memory storage, AI interpretation, personality analysis, integrated profile, and relationship inference.
|
## 思想
|
||||||
|
|
||||||
## Features
|
AIが判断し、ツールは記録する。
|
||||||
|
ツールはシンプルで安定した記録係に徹する。判断・解釈・圧縮はすべてAIが行う。
|
||||||
|
|
||||||
### Layer 1: Pure Memory Storage
|
## 記憶モデル
|
||||||
- 🗄️ **SQLite Storage**: Reliable database with ACID guarantees
|
|
||||||
- 🔖 **ULID IDs**: Time-sortable, 26-character unique identifiers
|
|
||||||
- 🔍 **Search**: Fast content-based search
|
|
||||||
- 📝 **CRUD Operations**: Complete memory management
|
|
||||||
|
|
||||||
### Layer 2: AI Memory
|
```
|
||||||
- 🧠 **AI Interpretation**: Claude interprets and evaluates memories
|
core.md ← 核。物語・設定・アイデンティティ。ユーザーが管理。不変
|
||||||
- 📊 **Priority Scoring**: Importance ratings (0.0-1.0)
|
memory.md ← 記憶。会話から圧縮。AIが管理。成長する
|
||||||
- 🎯 **Smart Storage**: Memory + evaluation in one step
|
```
|
||||||
|
|
||||||
### Layer 3: Personality Analysis
|
核は変わらない。記憶は育つ。この2つのファイルがアイのすべて。
|
||||||
- 🔬 **Big Five Model**: Scientifically validated personality assessment
|
|
||||||
- 📈 **Pattern Recognition**: Analyzes memory patterns to build user profile
|
|
||||||
- 💾 **Historical Tracking**: Save and compare analyses over time
|
|
||||||
|
|
||||||
### Layer 3.5: Integrated Profile
|
## MCP ツール
|
||||||
- 🎯 **Essential Summary**: Unified view of personality, interests, and values
|
|
||||||
- 🤖 **AI-Optimized**: Primary tool for AI to understand the user
|
|
||||||
- ⚡ **Smart Caching**: Auto-updates only when necessary
|
|
||||||
- 🔍 **Flexible Access**: Detailed data still accessible when needed
|
|
||||||
|
|
||||||
### Layer 4: Relationship Inference (Optional)
|
| ツール | 説明 |
|
||||||
- 🤝 **Relationship Tracking**: Track interactions with entities (people, characters, etc.)
|
|--------|------|
|
||||||
- 📊 **Bond Strength**: Infer relationship strength from memory patterns
|
| read_core | core.mdの内容を返す |
|
||||||
- 🎮 **Game Ready**: Foundation for companion apps, games, VTubers
|
| read_memory | memory.mdの内容を返す |
|
||||||
- 🔒 **Opt-in**: Enable only when needed with `--enable-layer4` flag
|
| save_memory | memory.mdに書き込む |
|
||||||
|
| compress | 会話内容を受け取り、memory.mdに圧縮して書く |
|
||||||
|
|
||||||
### General
|
4つだけ。それ以上は必要ない。
|
||||||
- 🛠️ **MCP Integration**: Works seamlessly with Claude Code
|
|
||||||
- 🧪 **Well-tested**: Comprehensive test coverage
|
|
||||||
- 🚀 **Simple & Fast**: Minimal dependencies, pure Rust
|
|
||||||
|
|
||||||
## Quick Start
|
## 使い方
|
||||||
|
|
||||||
### Installation
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Build
|
# MCPサーバーとして起動
|
||||||
cargo build --release
|
aigpt serve
|
||||||
|
|
||||||
# Install (optional)
|
# CLIで直接操作
|
||||||
cp target/release/aigpt ~/.cargo/bin/
|
aigpt read-core
|
||||||
|
aigpt read-memory
|
||||||
|
aigpt save-memory "新しい記憶の内容"
|
||||||
```
|
```
|
||||||
|
|
||||||
### CLI Usage
|
## 圧縮のルール
|
||||||
|
|
||||||
```bash
|
compressが呼ばれた時、AIは以下の基準で記憶を圧縮する:
|
||||||
# Create a memory
|
|
||||||
aigpt create "Remember this information"
|
|
||||||
|
|
||||||
# List all memories
|
- 事実・決定事項は残す
|
||||||
aigpt list
|
- 手順・経緯は捨てる
|
||||||
|
- 矛盾があれば新しい方を残す
|
||||||
|
- core.mdと重複する情報は書かない
|
||||||
|
|
||||||
# Search memories
|
ツールは書くだけ。何を残し何を捨てるかはAIが決める。
|
||||||
aigpt search "keyword"
|
|
||||||
|
|
||||||
# Show statistics
|
## データの場所
|
||||||
aigpt stats
|
|
||||||
|
```
|
||||||
|
~/.config/aigpt/
|
||||||
|
├── core.md
|
||||||
|
└── memory.md
|
||||||
```
|
```
|
||||||
|
|
||||||
### MCP Integration with Claude Code
|
## 技術
|
||||||
|
|
||||||
```bash
|
- Rust
|
||||||
# Add to Claude Code
|
- MCP (JSON-RPC over stdio)
|
||||||
claude mcp add aigpt /path/to/aigpt/target/release/aigpt server
|
- ファイルI/Oのみ。データベースは使わない
|
||||||
```
|
|
||||||
|
|
||||||
## MCP Tools
|
|
||||||
|
|
||||||
### Layer 1: Basic Memory (6 tools)
|
|
||||||
- `create_memory` - Simple memory creation
|
|
||||||
- `get_memory` - Retrieve by ID
|
|
||||||
- `list_memories` - List all memories
|
|
||||||
- `search_memories` - Content-based search
|
|
||||||
- `update_memory` - Update existing memory
|
|
||||||
- `delete_memory` - Remove memory
|
|
||||||
|
|
||||||
### Layer 2: AI Memory (1 tool)
|
|
||||||
- `create_ai_memory` - Create with AI interpretation and priority score
|
|
||||||
|
|
||||||
### Layer 3: Personality Analysis (2 tools)
|
|
||||||
- `save_user_analysis` - Save Big Five personality analysis
|
|
||||||
- `get_user_analysis` - Retrieve latest personality profile
|
|
||||||
|
|
||||||
### Layer 3.5: Integrated Profile (1 tool)
|
|
||||||
- `get_profile` - **Primary tool**: Get integrated user profile with essential summary
|
|
||||||
|
|
||||||
### Layer 4: Relationship Inference (2 tools, requires `--enable-layer4`)
|
|
||||||
- `get_relationship` - Get inferred relationship with specific entity
|
|
||||||
- `list_relationships` - List all relationships sorted by bond strength
|
|
||||||
|
|
||||||
## Usage Examples in Claude Code
|
|
||||||
|
|
||||||
### Layer 1: Simple Memory
|
|
||||||
```
|
|
||||||
Remember that the project deadline is next Friday.
|
|
||||||
```
|
|
||||||
Claude will use `create_memory` automatically.
|
|
||||||
|
|
||||||
### Layer 2: AI Memory with Evaluation
|
|
||||||
```
|
|
||||||
create_ai_memory({
|
|
||||||
content: "Designed a new microservices architecture",
|
|
||||||
ai_interpretation: "Shows technical creativity and strategic thinking",
|
|
||||||
priority_score: 0.85
|
|
||||||
})
|
|
||||||
```
|
|
||||||
|
|
||||||
### Layer 3: Personality Analysis
|
|
||||||
```
|
|
||||||
# After accumulating memories, analyze personality
|
|
||||||
save_user_analysis({
|
|
||||||
openness: 0.8,
|
|
||||||
conscientiousness: 0.7,
|
|
||||||
extraversion: 0.4,
|
|
||||||
agreeableness: 0.65,
|
|
||||||
neuroticism: 0.3,
|
|
||||||
summary: "High creativity and planning ability, introverted personality"
|
|
||||||
})
|
|
||||||
|
|
||||||
# Retrieve analysis
|
|
||||||
get_user_analysis()
|
|
||||||
```
|
|
||||||
|
|
||||||
### Layer 3.5: Integrated Profile (Recommended)
|
|
||||||
```
|
|
||||||
# Get essential user profile - AI's primary tool
|
|
||||||
get_profile()
|
|
||||||
|
|
||||||
# Returns:
|
|
||||||
{
|
|
||||||
"dominant_traits": [
|
|
||||||
{"name": "openness", "score": 0.8},
|
|
||||||
{"name": "conscientiousness", "score": 0.7},
|
|
||||||
{"name": "extraversion", "score": 0.4}
|
|
||||||
],
|
|
||||||
"core_interests": ["Rust", "architecture", "design", "system", "memory"],
|
|
||||||
"core_values": ["simplicity", "efficiency", "maintainability"],
|
|
||||||
"key_memory_ids": ["01H...", "01H...", ...],
|
|
||||||
"data_quality": 0.85
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
**Usage Pattern:**
|
|
||||||
- AI normally uses `get_profile()` to understand the user
|
|
||||||
- For specific details, AI can call `get_memory(id)`, `list_memories()`, etc.
|
|
||||||
- Profile auto-updates when needed (10+ memories, new analysis, or 7+ days)
|
|
||||||
|
|
||||||
### Layer 4: Relationship Inference (Optional, requires `--enable-layer4`)
|
|
||||||
```
|
|
||||||
# Create memories with entity tracking
|
|
||||||
Memory::new_with_entities({
|
|
||||||
content: "Had lunch with Alice",
|
|
||||||
ai_interpretation: "Pleasant social interaction",
|
|
||||||
priority_score: 0.7,
|
|
||||||
related_entities: ["alice"]
|
|
||||||
})
|
|
||||||
|
|
||||||
# Get relationship inference
|
|
||||||
get_relationship({ entity_id: "alice" })
|
|
||||||
|
|
||||||
# Returns:
|
|
||||||
{
|
|
||||||
"entity_id": "alice",
|
|
||||||
"interaction_count": 15,
|
|
||||||
"avg_priority": 0.75,
|
|
||||||
"days_since_last": 2,
|
|
||||||
"bond_strength": 0.82,
|
|
||||||
"relationship_type": "close_friend",
|
|
||||||
"confidence": 0.80
|
|
||||||
}
|
|
||||||
|
|
||||||
# List all relationships
|
|
||||||
list_relationships({ limit: 5 })
|
|
||||||
```
|
|
||||||
|
|
||||||
**Relationship Types:**
|
|
||||||
- `close_friend` (0.8+): Very strong bond
|
|
||||||
- `friend` (0.6-0.8): Strong connection
|
|
||||||
- `valued_acquaintance` (0.4-0.6, high priority): Important but not close
|
|
||||||
- `acquaintance` (0.4-0.6): Regular contact
|
|
||||||
- `regular_contact` (0.2-0.4): Occasional interaction
|
|
||||||
- `distant` (<0.2): Minimal connection
|
|
||||||
|
|
||||||
**Starting the Server:**
|
|
||||||
```bash
|
|
||||||
# Normal mode (Layer 1-3.5 only)
|
|
||||||
aigpt server
|
|
||||||
|
|
||||||
# With relationship features (Layer 1-4)
|
|
||||||
aigpt server --enable-layer4
|
|
||||||
```
|
|
||||||
|
|
||||||
## Big Five Personality Traits
|
|
||||||
|
|
||||||
- **Openness**: Creativity, curiosity, openness to new experiences
|
|
||||||
- **Conscientiousness**: Organization, planning, reliability
|
|
||||||
- **Extraversion**: Social energy, assertiveness, outgoingness
|
|
||||||
- **Agreeableness**: Cooperation, empathy, kindness
|
|
||||||
- **Neuroticism**: Emotional stability (low = stable, high = sensitive)
|
|
||||||
|
|
||||||
Scores range from 0.0 to 1.0, where higher scores indicate stronger trait expression.
|
|
||||||
|
|
||||||
## Storage Location
|
|
||||||
|
|
||||||
All data stored in: `~/.config/syui/ai/gpt/memory.db`
|
|
||||||
|
|
||||||
## Architecture
|
|
||||||
|
|
||||||
Multi-layer system design:
|
|
||||||
|
|
||||||
- **Layer 1** ✅ Complete: Pure memory storage (with entity tracking)
|
|
||||||
- **Layer 2** ✅ Complete: AI interpretation with priority scoring
|
|
||||||
- **Layer 3** ✅ Complete: Big Five personality analysis
|
|
||||||
- **Layer 3.5** ✅ Complete: Integrated profile (unified summary)
|
|
||||||
- **Layer 4** ✅ Complete: Relationship inference (optional, `--enable-layer4`)
|
|
||||||
|
|
||||||
**Design Philosophy**:
|
|
||||||
- **"Internal complexity, external simplicity"**: Simple API, complex internals
|
|
||||||
- **"AI judges, tool records"**: AI makes decisions, tool stores data
|
|
||||||
- **Layered architecture**: Each layer independent but interconnected
|
|
||||||
- **Optional features**: Core layers always active, advanced layers opt-in
|
|
||||||
|
|
||||||
See [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) for details.
|
|
||||||
|
|
||||||
## Documentation
|
|
||||||
|
|
||||||
- [Architecture](docs/ARCHITECTURE.md) - Multi-layer system design
|
|
||||||
- [Layer 1 Details](docs/LAYER1.md) - Technical details of memory storage
|
|
||||||
- [Old Versions](docs/archive/old-versions/) - Previous documentation
|
|
||||||
|
|
||||||
## Development
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Run tests
|
|
||||||
cargo test
|
|
||||||
|
|
||||||
# Build for release
|
|
||||||
cargo build --release
|
|
||||||
|
|
||||||
# Run with verbose logging
|
|
||||||
RUST_LOG=debug aigpt server
|
|
||||||
```
|
|
||||||
|
|
||||||
## Design Philosophy
|
|
||||||
|
|
||||||
**"AI evolves, tools don't"** - This tool provides simple, reliable storage while AI (Claude) handles interpretation, evaluation, and analysis. The tool focuses on being maintainable and stable.
|
|
||||||
|
|
||||||
## License
|
|
||||||
|
|
||||||
MIT
|
|
||||||
|
|
||||||
## Author
|
|
||||||
|
|
||||||
syui
|
|
||||||
|
|||||||
57
claude.md
Normal file
57
claude.md
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
# aigpt
|
||||||
|
|
||||||
|
## これは何か
|
||||||
|
|
||||||
|
アイの記憶を管理するMCPサーバー。core.mdとmemory.mdの読み書きだけを行う。
|
||||||
|
|
||||||
|
## 設計原則
|
||||||
|
|
||||||
|
- AIが判断し、ツールは記録する
|
||||||
|
- ファイルI/Oのみ。データベースは使わない
|
||||||
|
- MCPツールは4つだけ: read_core, read_memory, save_memory, compress
|
||||||
|
- シンプルで壊れない。ずっと使える
|
||||||
|
|
||||||
|
## アーキテクチャ
|
||||||
|
|
||||||
|
```
|
||||||
|
aigpt
|
||||||
|
├── mcp/
|
||||||
|
│ └── server.rs ← JSON-RPC over stdio
|
||||||
|
├── core/
|
||||||
|
│ ├── reader.rs ← core.md, memory.mdの読み込み
|
||||||
|
│ └── writer.rs ← memory.mdの書き込み
|
||||||
|
└── main.rs ← CLI + MCPサーバー起動
|
||||||
|
```
|
||||||
|
|
||||||
|
## MCPツール定義
|
||||||
|
|
||||||
|
### read_core
|
||||||
|
- 引数: なし
|
||||||
|
- 戻り値: core.mdの内容 (string)
|
||||||
|
|
||||||
|
### read_memory
|
||||||
|
- 引数: なし
|
||||||
|
- 戻り値: memory.mdの内容 (string)
|
||||||
|
|
||||||
|
### save_memory
|
||||||
|
- 引数: content (string)
|
||||||
|
- 動作: memory.mdを上書き
|
||||||
|
|
||||||
|
### compress
|
||||||
|
- 引数: conversation (string)
|
||||||
|
- 動作: 現在のmemory.mdを読み、会話内容と合わせて圧縮し、memory.mdに書く
|
||||||
|
- 注: 圧縮の判断はAI側が行う。ツールは受け取った内容をそのまま書くだけ
|
||||||
|
|
||||||
|
## データ
|
||||||
|
|
||||||
|
```
|
||||||
|
~/.config/aigpt/
|
||||||
|
├── core.md ← read only (このツールからは書かない)
|
||||||
|
└── memory.md ← read/write
|
||||||
|
```
|
||||||
|
|
||||||
|
## 開発方針
|
||||||
|
|
||||||
|
1. まずMCPサーバーで4ツールを実装
|
||||||
|
2. CLIでも同じ操作ができるようにする
|
||||||
|
3. それ以上は作らない
|
||||||
Reference in New Issue
Block a user