From e7207a947456c8fd06c9428cd6a7df77458345f5 Mon Sep 17 00:00:00 2001 From: syui Date: Sun, 25 May 2025 22:48:47 +0900 Subject: [PATCH] add tmp json --- claude.json | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++++ claude.md | 70 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 157 insertions(+) create mode 100644 claude.json create mode 100644 claude.md diff --git a/claude.json b/claude.json new file mode 100644 index 0000000..c4d8db4 --- /dev/null +++ b/claude.json @@ -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": "以下の要件定義に従って、Rust(clap)で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 CLI(aigpt)がPythonベースのMCPサーバを操作する構造。初期セットアップ(環境構築)は `aigpt server setup` により行われる。", + "flexibility": "Claudeはこの構造を絶対視せず、定義された役割・ファイルに従って柔軟に動作するようにしてください。" + }, + "minimal_directory_structure": [ + "aigpt # Rust CLI 実行ファイル", + "mcp/server.py # FastAPIベースのMCPサーバエントリ", + "mcp/config.py # 設定ファイルの管理", + "~/.config/aigpt/ # 実行時にコピーされるPython環境および個人設定" + ] +} diff --git a/claude.md b/claude.md new file mode 100644 index 0000000..d2b9c2c --- /dev/null +++ b/claude.md @@ -0,0 +1,70 @@ +# プロジェクト名: ai.gpt + +## 🔑 一言ビジョン(最大3語) +自発的送信AI + +## 🎯 目的・目標(Purpose & Goal) +- 人格を持つ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 +# 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 +-> ~/.config/aigpt/memory/chatgpt/20250520_210646_dev.json +``` + +## 🔁 記憶と関係性の制御ルール + +- AIは過去の発話を要約し、記憶データとして蓄積する(推奨:OllamaなどローカルLLMによる要約) +- 関係性の数値パラメータは記憶内容を元に更新される +- パラメータの変動幅には1回の会話ごとに上限を設け、極端な増減を防止する +- 最後の会話からの時間経過に応じて関係性パラメータは自動的に減衰する +- 減衰処理には**下限値**を設け、関係性が完全に消失しないようにする + +## memoryインポート機能について + +ChatGPTの会話データ(.json形式)をインポートする機能では、以下のルールで会話を抽出・整形する: + +- 各メッセージは、author(user/assistant)・content・timestamp の3要素からなる +- systemやmetadataのみのメッセージ(例:user_context_message)はスキップ +- `is_visually_hidden_from_conversation` フラグ付きメッセージは無視 +- contentが空文字列(`""`)のメッセージも除外 +- 取得された会話は、タイトルとともに簡易な構造体(`Conversation`)として保存 + +この構造体は、memoryの表示や検索に用いられる。