hhyqhh/inno-agent
An open-source personal learning agent with three-layer memory (learner profile / wiki knowledge base / cross-conversation recall), a proactive scheduler, personal IM channels, and a workspace-scoped Practice Lab — built on the Pi SDK.
Inno Agent – 個人学習アシスタント
Inno Agent は、個人の学習を支援するためのオープンソースでローカル実行可能なAIアシスタントです。このプロジェクトは Pi coding-agent SDK(汎用的なLLMエージェントフレームワーク)を基盤としており、階層的なメモリ、能動的なスケジューラ、IMチャネル連携、ブラウザ内実習ラボといった教育向け機能を追加しています。同じ状態を共有する3つの実行形式を提供しています:
- デスクトップアプリ(Electron) – macOS/Windows向けワンクリックインストール。
- Web UI(React 19 + Tailwind 4) – Nodeサーバー、SSEストリーミング、ターミナル、Wikiビュー、ジョブリスト、設定画面を備えています。
- CLI/TUI(
inno) – HTTPサーバー不要の純粋なターミナルインターフェース。
コアコンセプト
| レイヤー | 保存内容 | 使用方法 |
|---|---|---|
| L1 – 学習者プロファイル | 学習目標、知識状態、誤解、好み。毎ターンに注入されるコンテキストパックに要約されます。 | パーソナライズされた説明と診断フィードバックを提供します。 |
| L2 – ネイティブWiki | 人間が読めるページ(テキスト、PDF、画像)をBM25 + 知識グラフでインデックス化。インジェスト時にLLMによる要約を実施。 | エージェントがWikiを照会して事実を取得、または新しいノートを生成できます。 |
| L3 – セッション記録 | SQLite FTS5に格納された完全な会話ログ。関連性閾値に基づくリトリーブ制御。 | 複数会話間の記憶とセッションリプレイを可能にします。 |
cron形式スケジューラにより、自然言語でジョブを定義できます(例:「明日、第2章を復習する」)。個人用IMチャネル(Feishu、WeChat)でリマインダーを送信し、Web UI外でもエージェントとチャット可能です。実習ラボは、xterm.jsを用いたワークスペーススコープのターミナルを提供し、エージェントがコマンド出力を読み取り、対応できます。
主な機能(READMEに記載)
- 3層メモリ(L1/L2/L3):個別のライフサイクルを持つ。
- 能動的スケジューラ – 任意のインターフェースから自然言語で実行可能なcronジョブ。
- 個人用IMチャネル – Feishuネイティブ連携、WeChat(iLink QRログインまたはブリッジモード)。
- 実習ラボ – 記録可能な実行履歴を持つブラウザ内ターミナル。
- シンプルモード+プリセット – 非技術者向けのワンクリックワークスペーステンプレート(授業計画、PPT作成、シナリオ説明)。
- スキルシステム&コンテンツハブ – 公開GitHubハブまたは自己ホスティングバンドルサービスから再利用可能なスキル/プリセットをインポート可能。
- 会話の分岐編集 – 以前に送信したメッセージを編集し、その時点から再生成可能。アクティブなモデルコンテキストを汚染しません。
- プラグイン可能なLLMプロバイダー – OpenAI風・Anthropic風エンドポイント(OpenAI、Anthropic、DeepSeek、Ollama、ローカルモデル)に対応。UI上でライブでモデルを切り替え可能。
- 国際化&テーマ – 英語/中国語UI、4種類のビジュアルテーマ。
- セッションリプレイ – 任意のセッションをエクスポートし、スタンドアロンサイトで正確なUI操作を再現可能。
- オプションのOSレベルサンドボックス –
pi-sandboxでファイルシステム/ネットワークアクセスを制限。許可/尋ねる/拒否の権限システムによりUI承認ステップを追加。 - コンピュータ使用(デスクトップ限定) –
@injaneity/pi-computer-use経由で、ユーザー承認後に画面を観察し、UI操作を実行可能。
アーキテクチャ概要
ユーザーインターフェース → アプリケーション層 → Piエージェントランタイム → 階層的メモリ
- ユーザーインターフェース – CLI、React Web UI、Electronデスクトップ、Feishu/WeChatアダプタ。
- アプリケーション層 – チャネルアダプタ、Server-Sent Events付きHTTP API、WebSocketターミナル、cronスケジューラ、実習ラボオーケストレーション。
- エージェントランタイム – 変更なしの
@earendil-works/pi-coding-agentカーネル。Innoはツールとbefore_agent_startフックを追加し、L1/L3コンテキストを注入。 - 階層的メモリ –
- L1:
src/memory/learner/ - L2:
src/memory/l2/(Wiki、グラフ、インジェスト、要約) - L3:
src/memory/l3/(セッションJSONLファイルに対するSQLite FTS5インデックス)
- L1:
リポジトリの構成はこの分離を反映しています(バックエンドは apps/inno-agent/、フロントエンドは apps/inno-agent/web/、Electronラッパー、コンテンツハブサーバーなど)。
セットアップ方法
クイックオプション
- デスクトップアプリ – GitHubリリースページから最新の DMG/EXE をダウンロードし実行。初回起動時に
~/.inno-agent/config/config.jsonが作成され、LLMプロバイダーのAPIキーを追加します。 - ソースから – クローン後、
npm install、npm run build、次にサーバーを起動:npm run server -- --home ./runtime --workspace ./workspace --port 3000http://localhost:3000を開きます。 - Docker –
docker compose up -d(runtime/とworkspace/をマウント)。
設定
JSONファイル(config.example.json)で定義される内容:
- デフォルトプロバイダーとモデル。
- プロバイダー一覧(ベースURL、APIタイプ、APIキー、モデルID)。
- 有効なチャネル(Feishu、WeChat)。
- 有効なメモリレイヤー。
- UIの好み(テーマ、閉じる動作)。
実行ディレクトリはCLIフラグまたは環境変数(INNO_HOME、INNO_DATA_DIR など)で上書き可能。
使い方の例(説明済み)
- パーソナライズされたチュートリアル – エージェントは会話から誤解を診断し、L1に証拠を保存。必要に応じて演習や説明を生成可能。
- 自己ペースの学習スケジュール – 自然言語で復習ジョブを作成し、スケジューラが自動実行。
- ワークスペーススコープのコーディング実習 – 実習ラボのターミナルを使用。エージェントは出力を読み取り、修正を提案、または新しいファイルを生成可能。
- 知識ベース構築 – PDF、Officeドキュメント、画像をL2 Wikiにインジェスト。後でチャットでWikiを照会可能。
- セッションのレビューと共有 – セッションをエクスポートし、静的サイトで再現して個人的な振り返りや教育デモに活用可能。
ライセンスと引用
- MITライセンスで提供。
- プロジェクトは Pi SDK(
@earendil-works/pi-*)に依存しており、こちらもMITライセンス。 - READMEにBibTeX形式の推奨引用が記載されています。
コミュニティと貢献
- 問題報告とプルリクエストを歓迎。ビルドステップ(
npm run build)が健全性チェックとして機能します。 - 非公式サポート用のWeChatユーザーグループが紹介されています。
- ドキュメントには技術レポート(arXiv 2026年6月)、詳細なシステムドキュメント、セッションリプレイ用ショーケースサイトが含まれます。
結論:Inno Agentは、汎用LLMエージェントコアに教育特化のメモリ管理、スケジューリング、ツールを組み合わせた、完全機能のローカルホスティングAI学習アシスタントです。デスクトップ、Web、ターミナルのいずれの環境でも利用可能です。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- Dispatch
- プロジェクト