# 汎用デイリーアシスタント - README 汎用デイリーアシスタント(General Purpose Daily Assistant)は、複数のデバイスにまたがる日常のルーチン作業を自動化するために設計された、拡張可能なタスク実行フレームワークです。中央集権的な永続データベース、パワーユーザー向けのCLI、そしてリモートアクセス用のWebインターフェースを備えています。 ## 目次 1. [前提条件](#前提条件) 2. [セットアップとインストール](#セットアップとインストール) 3. [CLIの使い方](#cliの使い方) - [AIによるタスク実行 (`do`)](#aiによるタスク実行-do) - [ナレッジ管理 (`note`)](#ナレッジ管理-note) - [サブエージェント管理 (`subagent`)](#サブエージェント管理-subagent) - [ツールの直接実行 (`run`)](#ツールの直接実行-run) 4. [Webインターフェース](#webインターフェース) 5. [アシスタントの拡張(プラグイン)](#アシスタントの拡張プラグイン) --- ## 前提条件 - **Python**: 3.11以上 - **Node.js**: 18以上(Webインターフェース用) - **APIキー**: Google Gemini APIキー --- ## セットアップとインストール 1. **環境設定**: プロジェクトのルートディレクトリに `.env` ファイルを作成します: ```env GOOGLE_API_KEY=your_api_key_here AI_PROVIDER=google DATABASE_URL=sqlite:///./assistant.db ``` 2. **Pythonの依存関係**: ```bash pip install -r requirements.txt ``` 3. **バックエンドのセットアップ**: ```bash cd web/backend npm install npm run dev ``` --- ## CLIの使い方 すべてのCLIコマンドはプロジェクトのルートディレクトリから実行してください。コアロジックを認識できるように `PYTHONPATH` を設定する必要があります: ```bash export PYTHONPATH=. ``` ### AIによるタスク実行 (`do`) `do` コマンドは、自然言語で表現された意図に基づいてアシスタントがタスクを計画・実行できるようにします。プラグインシステムの中から最適なツールを自動的に選択します。 **自律的な機能拡張**: アシスタントが「能力のギャップ」(既存のツールでは実行できないタスク)を検知した場合、以下を提案します: 1. **ギャップの分析**: 何が不足しているかを正確に特定します。 2. **コードの生成**: 新しいPythonプラグインを自律的に作成します。 3. **安全性チェック**: 危険な操作を防ぐため、自動でAST(抽象構文木)検証を行います。 4. **依存関係の管理**: 不足しているPythonライブラリを検出し、インストールを要求します。 5. **人間によるレビュー**: ファイルを書き込む前に、コードをユーザーの承認のために提示します。 6. **自己修復**: 生成したツールが失敗した場合、アシスタントはエラーを分析し、自動的に修正を試みます。 **使い方**: `python3 cli/main.py do "YOUR_INTENT"` **高度な機能**: - **マルチツールチェイニング**: 「現在地を調べてから天気予報を取得して」のような複雑なタスクを依頼できます。アシスタントは連続した計画を生成し、各ステップ間でデータを自動的に受け渡しします。 - **環境統合**: APIキーやパスワードなどの機密情報については、アシスタントは `{{env.VARIABLE_NAME}}` を使用して `.env` ファイルやシステム環境から値を直接取得できるため、認証情報がハードコードされることはありません。 - **サブエージェントへの委任**: 長時間実行されるタスクや監視タスクについては、「[目標] のためのサブエージェントを作成して」と依頼してください。プロセスとして分離されたバックグラウンドタスクが起動します。 **例**: ```bash python3 cli/main.py do "List all files in the current directory" ``` ### ナレッジ管理 (`note`) タグによる整理機能を使って、ブレインストーミングのアイデアやメモ、記録を記録します。すべてのメモは中央データベースに同期されます。 **コマンド**: - **メモの追加**: `python3 cli/main.py note add "CONTENT" --tags "tag1,tag2"` - **メモの一覧表示**: `python3 cli/main.py note list` **例**: ```bash python3 cli/main.py note add "Idea for a new plugin: weather checker" --tags "ideas,brainstorming" ``` ### サブエージェント管理 (`subagent`) アシスタントによって起動されたバックグラウンドタスクを監視・制御します。 **コマンド**: - **サブエージェントの一覧表示**: `python3 cli/main.py subagent list` - **ステータスの確認**: `python3 cli/main.py subagent status ` - **エージェントの終了**: `python3 cli/main.py subagent kill ` ### ツールの直接実行 (`run`) AIによる計画を介さずに、IDを指定して特定のツールを手動で実行します。 **使い方**: `python3 cli/main.py run TOOL_ID [--params '{"key": "value"}']` **例**: ```bash python3 cli/main.py run list_files --params '{"path": "./core"}' ``` --- ## Webインターフェース ### バックエンド Webバックエンドは、リモートアクセスとリアルタイムのタスク送出のためのREST APIとWebSocket接続を提供します。 - **ポート**: 3001 - **APIベース**: `http://localhost:3001/api` ### フロントエンド フロントエンドは、メモの管理とリモートでのタスク実行を行うためのダッシュボードを提供するReactアプリケーションです。 - **場所**: `web/frontend` - **ステータス**: 現在開発中(スケルトンのセットアップ段階)。 --- ## アシスタントの拡張(プラグイン) `core/plugins/` ディレクトリにPythonクラスを作成することで、新しい機能を追加できます。 ### プラグインの要件: 1. `core.plugins.base` の `Tool` クラスを継承すること。 2. 一意の `id`、`name`、`description`、`version` を持つ `ToolMetadata` を定義すること。 3. `execute(self, params: dict)` メソッドを実装すること。 ### プラグインの例 (`core/plugins/my_tool.py`): ```python from core.plugins.base import Tool, ToolMetadata class MyNewTool(Tool): metadata = ToolMetadata( id="my_unique_tool", name="My Custom Tool", description="Does something amazing.", version="0.1.0" ) def execute(self, params: dict): # Your logic here return {"status": "success", "data": "Hello world!"} ``` アシスタントは新しいプラグインを自動的に検出し、`do` コマンドや `run` コマンドから利用できるようにします。