高速イテレーション期 · API とドキュメントは変更される場合があります
Liri Logo

Liri

Linglong Bird · パーソナルAIアシスタント · ローカルファースト · セキュリティ内蔵

4,109 個の TS ファイル 69 個の組み込みツール 5 層のセキュリティ 27 個のメッセージチャネル 18 種の Buddy 種族
$ git clone https://github.com/cocosoft/Liri.git
BUILD LOG

まだ歩き終えていない道

2026 年 5 月 25 日、それは v0.1 と 100 コミットだけでした。5 か月後、4000 を超えるファイルと 27 のチャネルに育ち——同時に代償も生みました。7000 行の巨石ファイル、誰も登録していない 105 個の上限超過ファイル、「デッドコードのクリーンアップ」がサンドボックスサブシステム全体を消してしまったこと。

私たちはロールバックし、復元し、削除・境界・状態語彙を 1 つずつ CI ゲートにしました。この道はまだ終わっていません。

156 日 116 リリース 20+ 項目のアーキテクチャチェック
物語全体を読む

Liri とは

Liri は TypeScript + Rust アーキテクチャで構築された パーソナルAIアシスタント です。

チャットボットにとどまりません — 意図を理解 し、コマンドを実行 し、タスクを管理 し、ツールを呼び出 し、他の AI エージェントと協働することもできます。1 つのエンジンがターミナル、デスクトップ、IM、MCP のすべての入口を支えます。

71 個のモジュール型サブシステム、4,109 個の TypeScript ファイル、429 個のデスクトップコンポーネント — ビルドバリアントごとに削減できます。

主要機能

8 つの差別化された能力。いずれも GitHub のソースで確認できます

🧠
中核

深いエージェントエンジン

自社開発の TAOR ループ。戦略、記憶、チェックポイントを備える

  • TAOR 判断ループ(Think-Act-Observe-Reason)
  • 4 種のエージェント戦略:汎用 / コーディング / 探索 / 計画
  • チェックポイント再開により、長時間タスクは中断後も復元可能
  • コンテキストの階層ウィンドウ + 3 段階の自動圧縮
  • 8 種類の終了理由 + ラウンド単位のサーキットブレーカーで空回りを防ぐ
🛡️
セキュリティ

5 層の多層防御

Rust AST コンパイル時解析 → 5 層の防御線 → マルチバックエンドのサンドボックス分離

  • Rust FFI AST によるコンパイル時の Bash 解析
  • 37 件の危険コマンド + 14 件のインジェクションルール
  • Guardrail ポリシールールエンジン
  • AutoMode リスク分類器
  • Landlock / macOS / Windows / Docker / SSH / PTY をカバーするサンドボックス
🛠️
豊富

69 個の組み込みツール

23 個のカテゴリで、ファイル、コマンド、ネットワーク、メディア、コード、コラボレーションをカバー

  • Rust AST レベルの Bash 実行
  • LSP によるコードインテリジェンス
  • Web スクレイピングと検索
  • Notebook、画像、音声・動画の処理
  • MCP クライアントとサーバーの完全サポート
🌐
マルチプラットフォーム

27 個のメッセージチャネル

27 個のチャネルアダプター。WeChat / WeCom / DingTalk / Feishu / QQ にすべて対応

  • Telegram / Discord / Slack / WhatsApp
  • WeChat / WeCom / DingTalk / Feishu / QQ / Yuanbao
  • Email / SMS / Webhook / IRC / Matrix
  • 統一されたチャネルカタログとゲートウェイルーティング
  • コンパイル時のチャネル削減でより小さなビルド
📊
可観測性

エンタープライズ向けの可観測性

OpenTelemetry 連携 + アラート + ヘルスチェック

  • Tracing + Metrics。OTel GenAI セマンティック規約に準拠
  • 構造化ログの階層管理
  • アラートルールとインシデント管理
  • ヘルスチェック、バックアップ、データアーカイブ
  • 再生・監査が可能なセッションイベント
🔌
柔軟

プラグイン可能なアーキテクチャ

プラグイン SDK + スキルシステム + 4 プロトコル。ビルドバリアントごとに削減可能

  • 5 種のビルドバリアント:core / personal / coding / enterprise / headless
  • プラグインマーケット。ホットロードと署名検証に対応
  • 3 つのスキルソースを分離(組み込み / ユーザー / サードパーティ)
  • MCP / ACP / A2A / LSP の 4 プロトコル
  • 4 段階起動(T0–T3)とオンデマンドロード
🏠
プライバシー

ローカルファースト

Ollama / llama.cpp のローカルモデル。データは既定で手元に保存

  • ローカル推論で、完全オフラインでも動作
  • SQLite の単一データファイルで、デバイスの外に出ない
  • セッションは events.jsonl に追記して保存
  • クラウドプロバイダーは任意の拡張
  • ワークスペース単位で分離されたサンドボックスディレクトリ
🚦
ルーティング

スマートルーティング

19 種類のタスク × 4 段階の tier × 5 段階の判定 + プロバイダーのフォールバックチェーン

  • 19 種のタスク種別を自動識別
  • 4 段階の tier:simple / medium / complex / reasoning
  • 5 段階の判定:スイッチ → ファストパス → セッション固定 → LLM 判定 → Tier
  • FallbackChain によるマルチプロバイダーのフォールバック + リトライ方針
  • 価格とコンテキストウィンドウはどちらもデータベースから取得

オペレーティングシステムのように層を分ける

薄いカーネル、サブシステムの境界、依存ゲート。ローカルファーストはスイッチではなく既定です。

カーネル

@openliri/kernel は独立パッケージとして薄いインターフェースだけを公開し、K01–K08 のゲートが守ります

サブシステム

ツール、チャネル、記憶、ルーティング、サンドボックス、タスクがそれぞれ入口と境界を持ちます

ゲート

6 層の依存方向 + 20 項目以上のアーキテクチャチェック。違反は CI で遮断されます

ローカルファースト

データは既定で手元に残り、モデルは完全ローカルでも実行できます

5 層の多層防御

コンパイル時の AST 解析から実行時のサンドボックスまで。ルール数、しきい値、縮退方針はすべてソースに書かれています

🦀

Rust AST コンパイル時解析

コンパイル時

コード実行前に Rust FFI で AST レベルのセキュリティ解析を行い、37 件の危険コマンドルールに照合します

  • Rust FFI 層が Bash AST を解析
  • Bash AST を解析し、37 件の危険コマンドルールを適用
  • 変数インジェクションの検出とパストラバーサルの遮断
  • 引数の改ざん検出と許可リストによるコマンド検証
🔍

TypeScript 意味解析

実行時

実行時に複合コマンドを区間ごとに判定し、拒否理由を具体的な文に紐づけます

  • 複合的な読み取り専用コマンドを区間ごとに通し、全体を拒否しない
  • 14 件のインジェクションパターンを検出(ゼロ幅文字、環境変数の汚染を含む)
  • 10 件の Shell 専用ルール(bash / PowerShell / cmd)
  • 拒否メッセージは実際の原因と該当する文を指す
⚙️

Guardrail ルールエンジン

ポリシー

設定可能なポリシールールシステム。ツール / チャネル / ユーザーグループ単位で細かく認可します

  • deny-by-default の許可リスト方式
  • 権限の粒度:ツール → ルール → フィンガープリント
  • ルール変更は再起動なしで即時反映
  • 拒否時はルールの出所と一致した文を返す
🤖

AutoMode 分類器

適応型

タスクとツールのコンテキストからリスクレベルを判定し、許可・確認・拒否を自動で決めます

  • コマンドの意味とツールのコンテキストに基づくリスク分類
  • 低リスクのコマンドはポリシーに従い自動で許可
  • 高リスクは承認へ回し、Inbox に入れて処理待ちにする
  • 信頼できないコマンドは既定で拒否ではなく確認に回す
🔒

サンドボックス分離実行

分離

6 種の分離バックエンド:Landlock / macOS / Windows / Docker / SSH / PTY。権限を超えたコマンドはホストに到達できません

  • Linux Landlock:カーネルレベルのファイルシステム制限
  • macOS サンドボックス / Windows Low IL + Job によるフォールバック
  • Docker コンテナ:完全分離 + リソースとネットワークのポリシー
  • SSH リモート実行と PTY 疑似端末の経路制御
  • 利用できる分離バックエンドがない場合は正直に縮退し、その旨を表示

セキュリティ防御の数値

37
危険コマンドルール
AST レベルでマッチし、bash / PowerShell / cmd をカバー
14
インジェクション検出ルール
ゼロ幅文字や環境変数の汚染などのインジェクション形態を含む
6
サンドボックスバックエンド
Landlock / macOS / Windows / Docker / SSH / PTY
51
サンドボックス実装ファイル
app/src/sandbox 配下の TypeScript 実装

Rust AST コンパイル時解析 · TypeScript 意味解析 · Guardrail ルールエンジン · AutoMode 分類器 · サンドボックス分離実行

スマートルーティング

タスク種別と難易度からモデルの tier を選び、プライマリプロバイダーが使えない場合は設定順にフォールバックします

19 種のタスク種別を自動識別(以下は代表的な 8 種)

💻
コーディング
コード生成・デバッグ・レビュー
✍️
執筆
ドキュメント・コピー・翻訳
📊
分析
データ分析・推論・計画
🔧
ツール
ファイル・検索・システム操作
🌐
翻訳
多言語翻訳・ローカライズ
🔍
検索
Web 検索・情報検索
🎨
発想
ブレインストーミング・デザイン・アイデア出し
💬
雑談
日常会話・一般的なやり取り

5 段階の判定パイプライン

1 L1: ルーティングスイッチ オフのときは追加判定なしで既定モデルへ直接接続
2 L2: ファストパス 単純なタスクやプレフィックスルールに一致したら下位 tier のモデルへ
3 L3: セッション固定 同じ会話では選択済みのモデルを維持し、頻繁な切り替えを避ける
4 L4: LLM 判定 小型モデルがタスク種別と難易度を判定し、tier を出力
5 L5: Tier 解決 simple/medium/complex/reasoning を具体的なモデルに割り当て

プロバイダーのフォールバックチェーン

プライマリモデルが利用不可 → 自動フォールバック → 中断なく縮退

プライマリ プライマリプロバイダー · 現在の tier のモデル
フォールバック 1 同一 tier の予備プロバイダー
フォールバック 2 別 tier へ縮退するプロバイダー
フォールバック 3 その他設定済みのプロバイダー
最後の受け皿 ローカル Ollama / llama.cpp

音声インタラクション

タイピングだけではありません——話せば、Liri が理解し、実行し、答えます

🎤

音声入力

ローカルの faster-whisper と SenseVoice、またはクラウドの OpenAI Whisper

ローカル faster-whisper
SenseVoice
OpenAI Whisper
ストリーミング認識
🔊

音声出力

ローカルの Piper またはクラウドの Edge / OpenAI。独自コマンドも接続可能

ローカル Piper
Edge TTS
OpenAI TTS
カスタムコマンド
⚡

ツールとしての呼び出し

音声機能自体もツールで、モデルが必要に応じて呼び出せます

tts ツール
audio_play ツール
音声入力
返答の読み上げ
📱

マルチデバイス対応

デスクトップとターミナルが同じ音声サービスを共有

Tauri デスクトップ
CLI ターミナル
HTTP API

ハンズフリー操作 · マルチタスク · アクセシビリティ支援 · 音声ショートカット · いつでもどこでも、話せば実行

セカンドブレイン

ナレッジベース → 記憶 → セッションイベント:検索可能な 3 層のコンテキストを、すべて手元に保存

第 1 層:ナレッジベース

ナレッジベース

Markdown をディスクに保存 + セマンティックインデックス。検索結果には出典を付与

Markdown をディスクに保存 セマンティックインデックス JSONL キーワード検索 ベクトル検索 RRF 融合
第 2 層:記憶

記憶システム

階層型記憶 + SQLite ベクトルテーブル。関連度で重み付けして想起

階層型記憶 memory_vectors 関連度重み付け 記憶のクレンジング コンテキスト注入
第 3 層:事実の源

セッションイベントログ

モデルへのリクエストに入る内容はすべてセッションイベントとして保存され、再生できます

events.jsonl 追記 書き込み前に永続化 セッション再生 監査可能な履歴 コンパイル時の登録強制

整理とガバナンス

アイドル時に知識を整理し、ウィンドウを超えたらコンテキストを圧縮 — 実在する 2 本のバックグラウンドパイプライン

DreamEngine の 5 段階パイプライン

01 Gather
収集
整理待ちのセッションとドキュメントを集約
02 Analyze
分析
主題と再利用できる結論を抽出
03 Generate
生成
上位層に向けたノートを生成
04 Write
書き込み
ナレッジベースと記憶へ書き込む
05 Index
インデックス
ベクトルとキーワードのインデックスを再構築
🧠

コンテキストの階層ガバナンス

長い会話がウィンドウを超えると、まず古いターンから捨て、構築時のメモリ使用量を O(全量) から O(ウィンドウ) に下げます。切り詰め時には「原文は取得可能」という注記を残し、必要ならページ単位で読み戻し、さらにトークン水位に応じて自動圧縮します。

階層ウィンドウ
超えたらまず古いターンを削る
オンデマンド取得
原文を分割して読み戻せる
3 段階圧縮
Tier1/2 は同期 + Tier3 はバックグラウンド
🔄

PDCA 自己反復ループ

長時間のタスクでは、Liri が Plan-Do-Check-Act ループを自動で回します。タスク分解 → 手順の実行 → 結果のレビュー → 計画の修正を、完了または終了条件に達するまで繰り返します。

Plan
自動分解
Do
段階的実行
Check
自動レビュー
Act
自動修正

デスクトップクライアント

Tauri 2.11 + React 19 で構築 · 429 個の TSX コンポーネント · 32 個の機能ページ · 完全なデスクトップ体験

Liri Desktop · Tauri 2.11
💬
チャットパネル
Liri · Linglong Bird
こんにちは!Liri です。何かお手伝いできますか?
このプロジェクトのデータを分析してください
かしこまりました。分析中です...
メッセージを入力し、Enter で送信...

画面構成のイメージであり、実際のスクリーンショットではありません

💬
チャットパネル
複数ターンの会話
🤖
モデル管理
モデルの切り替え
📚
ナレッジベース
ファイル検索
🧠
記憶管理
過去の履歴の振り返り
⏰
スケジュールタスク
Cron スケジューリング
🔌
MCP 連携
サービスの検出とインストール
💰
コストセンター
利用量と費用の記録
🎭
Buddy
外見と成長データ

27 個のメッセージチャネル

27 個のチャネルすべてに対応するアダプターがあります。環境変数を設定すると有効になり、コンパイル時に削減することもできます。

メッセージング
Telegram
Discord
Slack
WhatsApp
Signal
Matrix
IRC
Line
Zalo
中国国内プラットフォーム
WeChat
WeCom
DingTalk
Feishu
QQ
Yuanbao
コラボレーションとソーシャル
Microsoft Teams
Google Chat
Mattermost
Facebook Messenger
Twitter/X
その他のチャネル
Email
SMS
Webhook
Nostr
Claude
iMessage
モバイル接続

全 27 チャネル · 統一カタログ · チャネル単位で有効化 · コンパイル時に削減可能

エコシステム

プラグインマーケット + MCP マーケット + 3 つのスキルソース + テンプレートマーケット = 組み合わせ可能な Liri エコシステム

🔌

MCP マーケット

5 つのソースアダプターを一括検索

GitHub
npm
公式レジストリ
Smithery
同梱サービス
🧩

プラグインマーケット

ローカル / npm / リモートレジストリの 3 ソース

プラグイン SDK + アダプター
ライフサイクルとホットリロード
署名検証
設定エンドポイント + CLI
5 種のビルドバリアント
⚡

3 つのスキルソース

組み込み / ユーザー / サードパーティを物理的に分離

11 個の組み込みスキル
ユーザー定義スキル
ClawHub サードパーティソース
条件付きオーケストレーション
スキルの合成とマッチング
📚

テンプレートとプロトコル

エージェントとドキュメントのテンプレート。接続するだけで使える

エージェントテンプレートマーケット
ドキュメントテンプレートマーケット
MCP / ACP / A2A / LSP
プラグインとスキルを組み合わせ可能
パラメーター化したテンプレートの再利用

機能一覧にとどまらない

見落としやすいけれど、毎日使っている 3 つ。

🐣

Buddy ペルソナ

ツールではなく、相棒です。外見はシードから決定論的に生成されるため、同じ Buddy はいつも同じ姿。成長状態は保存され、セッションをまたいで積み上がります。

18 種の種族 8 種の帽子 6 種の目 5 段階のレア度
🧾

コストの透明性

価格はデータベースから読み、プロバイダーが返した実際のモデル名に帰属させ、呼び出しごとに cost_records へ書き込みます。予算は水位を超えるとまず警告し、次に圧縮し、最後に遮断します。

model_registry の価格 実際の usage 呼び出しごとの記録 日次予算
🎯

4 種類の利用者

開発者はコマンド実行とコード編集に、セキュリティ責任者は AST レベルの遮断と監査に、運用は常駐サービスとして、一般ユーザーはチャットアプリからそのまま使います。

開発者 セキュリティ責任者 運用 一般ユーザー

現在の制限

高速イテレーション期にまだ整っていない点を、先に書いておきます。遠回りを避けられるように。

セキュリティ体系は外部監査待ち

外部監査待ち

5 層の防御線と 6 種のサンドボックスバックエンドは実装済みで、51 個のサンドボックス関連ファイルを 1 つずつ確認できますが、第三者によるセキュリティ監査はまだ受けていません。

デスクトップの操作感を調整中

調整中

429 個の TSX コンポーネントと 32 個のページは用意済みですが、ショートカット、アニメーション、境界ケースはまだ調整中です。

エコシステムマーケットの項目は限定的

構築中

プラグインマーケット、MCP マーケット、スキルソースはつながっていますが、インストールできる項目はまだ拡充中です。

クイックスタート

3 ステップ:依存関係のインストール → API キーの設定 → dev の実行

1

依存関係のインストール

$ git clone https://github.com/cocosoft/Liri.git
$ cd Liri/app && bun install
2

API キーの設定

$ cp .env.example .env
$ # .env を編集して API キーを入力
3

Liri の起動

$ bun run dev

オープンソース · コミュニティ

Liri はオープンソースプロジェクトで、すべての貢献者を歓迎します

GitHub

GitHub でプロジェクトをフォローし、Issue や PR を送ってください

github.com/cocosoft/liri

コミュニティに参加する

議論に参加し、Issue や PR を送ってください