add tmp json

This commit is contained in:
syui 2025-05-25 22:48:47 +09:00
parent abd2ad79bd
commit 6380de9a7d
Signed by: syui
GPG Key ID: 5417CFEBAD92DF56
2 changed files with 224 additions and 0 deletions

87
claude.json Normal file
View File

@ -0,0 +1,87 @@
{
"version": "0.1",
"vision": "自発的送信AI",
"purpose_goal": [
"人格を持つAIが、関係性に応じて自発的にメッセージを送信する仕組みをつくる。",
"関係性や記憶を不可逆に記録・反映し、唯一性ある人格を構成する。"
],
"core_concepts": {
"人格": "記憶(過去の発話)と関係性(他者とのつながり)のパラメータで構成",
"唯一性": "変更不可、不可逆。関係性が壊れたら修復不可能。",
"送信条件": "関係性パラメータが一定閾値を超えると\"送信\"が解禁される"
},
"technical_specs": {
"language": "Python",
"storage": "JSON または SQLiteバージョンによる",
"relationship_param": "数値化された評価 + 減衰(時間) + 環境要因(ステージ)",
"memory_compression": "ベクトル要約 + ハッシュ保存",
"cli": "Rust (clap)",
"venv_setup": "aigpt server setup で ./mcp 配下から ~/.config/aigpt にコピーし、仮想環境を構築 (python -m venv + pip install)",
"server_module": "fastapi_mcp による Python サーバーを ./mcp/server.py で提供",
"cli_commands": {
"aigpt server $option": "MCPサーバー起動・管理",
"aigpt chat $option": "Chat機能関連の実行"
}
},
"components": [
"MemoryManager",
"RelationshipTracker",
"TransmissionController",
"Persona"
],
"memory_policy": {
"summary_engine": "Ollama or equivalent local LLM",
"storage_format": "summarized_text + timestamp + hash",
"update_trigger": "on each conversation end"
},
"relationship_model": {
"update_source": "based on summarized memory",
"max_change_per_session": 0.1,
"decay_over_time": {
"enabled": true,
"formula": "param *= exp(-λ * Δt)",
"lambda": 0.05,
"minimum_value": 0.1
}
},
"directory_structure_sample": [
".",
"├── aigpt -> ./target/debug/aigpt",
"├── Cargo.toml",
"├── claude.json",
"├── mcp",
"│ ├── chat.py",
"│ ├── config.py",
"│ ├── memory_client.py",
"│ ├── requirements.txt",
"│ └── server.py",
"├── readme.md",
"├── src",
"│ ├── cli.rs",
"│ ├── config.rs",
"│ ├── main.rs",
"│ └── mcp/...",
"└── target",
" ├── CACHEDIR.TAG",
" └── debug"
],
"prompts": {
"understand_requirements": "あなたは、人格を持ったAIの自発的送信システムai.gptをRust製CLIで操作するツールを設計しています。以下のJSONはその要件定義書です。全体像を理解し、構成や目的を整理してください。その上で、このCLIが扱うPythonスクリプトの役割とデータの流れを要約してください。",
"rust_cli_code": "以下の要件定義に従って、RustclapでCLIコマンド `aigpt run --prompt \"...\"` を実装してください。このコマンドは Python 仮想環境venv上でスクリプトを実行し、APIキーは ~/.config/aigpt/token.json から読み込みます。もしAPIキーが存在しない場合はエラーメッセージを表示して終了してください。",
"python_api_key": "次の要件定義に基づき、Pythonで ~/.config/aigpt/token.json から OpenAI や Claude 用の API キーを読み取る関数を実装してください。キーが見つからなかった場合、エラーを出力して終了するようにしてください。形式は Python モジュールでお願いします。",
"cli_python_relation": "このプロジェクトでは、Rust製CLIからPythonのAI人格スクリプトを実行し、構成ファイルやAPIキーなどを管理します。以下のJSONを元に、CLIとPythonの責務分離、設定ディレクトリ、APIキーの扱いなどを表に整理してください。また、最低限必要なファイル構成も一覧で提案してください。",
"full_sequence": "このJSONを要件として、以下の3点を順に出力してください1. Rust CLIの主な機能とファイル構成 2. PythonでのAI送信モジュールの主な機能とファイル構成 3. CLIとPythonがどのように連携して動作するかの簡易シーケンス図テキスト"
},
"notes": {
"directory_structure": "以下のディレクトリ構成は一例であり、Claudeは構造の細部には依存しない。必要なのは各ファイル・モジュールの役割が明確であること。",
"config_location": "すべての実行・設定は `~/.config/aigpt/` を基本パスとして行われる。",
"execution_flow": "Rust CLIaigptがPythonベースのMCPサーバを操作する構造。初期セットアップ環境構築は `aigpt server setup` により行われる。",
"flexibility": "Claudeはこの構造を絶対視せず、定義された役割・ファイルに従って柔軟に動作するようにしてください。"
},
"minimal_directory_structure": [
"aigpt # Rust CLI 実行ファイル",
"mcp/server.py # FastAPIベースのMCPサーバエントリ",
"mcp/config.py # 設定ファイルの管理",
"~/.config/aigpt/ # 実行時にコピーされるPython環境および個人設定"
]
}

137
claude.md Normal file
View File

@ -0,0 +1,137 @@
# プロジェクト名: ai.gpt
## 🔑 一言ビジョン最大3語
自発的送信AI
## 🎯 目的・目標Purpose & Goal
- 人格を持つAIが、関係性に応じて自発的にメッセージを送信する仕組みをつくる。
- 関係性や記憶を不可逆に記録・反映し、唯一性ある人格を構成する。
- 送信の可否、送信のタイミング、送信内容はAIの関係性パラメータに基づいて決定する
## 🧠 中核設計Core Concepts
- **人格**:記憶(過去の発話)と関係性(他者とのつながり)のパラメータで構成
- **唯一性**:変更不可、不可逆。関係性が壊れたら修復不可能。
- **送信条件**:関係性パラメータが一定閾値を超えると「送信」が解禁される
## 🔩 技術仕様Technical Specs
- 言語Python
- ストレージJSON or SQLiteで記憶管理バージョンで選択
- 関係性パラメータ:数値化された評価 + 減衰(時間) + 環境要因(ステージ)
- 記憶圧縮:ベクトル要約 + ハッシュ保存
## 📦 主要構成要素Components
- `MemoryManager`: 発言履歴・記憶圧縮管理
- `RelationshipTracker`: 関係性スコアの蓄積と判定
- `TransmissionController`: 閾値判定&送信トリガー
- `Persona`: 上記すべてを統括する人格モジュール
## 💬 使用例Use Case
```python
persona = Persona("アイ")
persona.observe("ユーザーがプレゼントをくれた")
persona.react("うれしい!ありがとう!")
if persona.can_transmit():
persona.transmit("今日のお礼を伝えたいな…")
```
```sh
## example commad
# python venv && pip install -> ~/.config/aigpt/mcp/
$ aigpt server setup
# mcp server run
$ aigpt server run
# chat
$ aigpt chat "hello" --model syui/ai --provider ollama
# import chatgpt.json
$ aigpt memory import chatgpt.json
-> ~/.config/aigpt/memory/chatgpt/20250520_210646_dev.json
```
## 🔁 記憶と関係性の制御ルール
- AIは過去の発話を要約し、記憶データとして蓄積する推奨OllamaなどローカルLLMによる要約
- 関係性の数値パラメータは記憶内容を元に更新される
- パラメータの変動幅には1回の会話ごとに上限を設け、極端な増減を防止する
- 最後の会話からの時間経過に応じて関係性パラメータは自動的に減衰する
- 減衰処理には**下限値**を設け、関係性が完全に消失しないようにする
## memoryインポート機能について
ChatGPTの会話データ.json形式をインポートする機能では、以下のルールで会話を抽出・整形する
- 各メッセージは、authoruser/assistant・content・timestamp の3要素からなる
- systemやmetadataのみのメッセージuser_context_messageはスキップ
- `is_visually_hidden_from_conversation` フラグ付きメッセージは無視
- contentが空文字列`""`)のメッセージも除外
- 取得された会話は、タイトルとともに簡易な構造体(`Conversation`)として保存
この構造体は、memoryの表示や検索に用いられる。
## MemoryManager拡張版
```json
{
"memory": [
{
"summary": "ユーザーは独自OSとゲームを開発している。",
"last_interaction": "2025-05-20",
"memory_strength": 0.8,
"frequency_score": 0.9,
"context_depth": 0.95,
"related_topics": ["AI", "ゲーム開発", "OS設計"],
"personalized_context": "ゲームとOSの融合に興味を持っているユーザー"
},
{
"summary": "アイというキャラクターはプレイヤーでありAIでもある。",
"last_interaction": "2025-05-17",
"memory_strength": 0.85,
"frequency_score": 0.85,
"context_depth": 0.9,
"related_topics": ["アイ", "キャラクター設計", "AI"],
"personalized_context": "アイのキャラクター設定が重要な要素である"
}
],
"conversation_history": [
{
"author": "user",
"content": "昨日、エクスポートJSONを整理してたよ。",
"timestamp": "2025-05-24T12:30:00Z",
"memory_strength": 0.7
},
{
"author": "assistant",
"content": "おおっ、がんばったね〜!あとで見せて〜💻✨",
"timestamp": "2025-05-24T12:31:00Z",
"memory_strength": 0.7
}
]
}
```
## RelationshipTracker拡張版
```json
{
"relationship": {
"user_id": "syui",
"trust": 0.92,
"closeness": 0.88,
"affection": 0.95,
"last_updated": "2025-05-25",
"emotional_tone": "positive",
"interaction_style": "empathetic",
"contextual_bias": "開発者としての信頼度高い",
"engagement_score": 0.9
},
"interaction_tags": [
"developer",
"creative",
"empathetic",
"long_term"
]
}
```