DevLog @ 2025.08.05
こんにちは!Neko です。
お待たせしました!v0.7 は当初7月初旬にリリース予定でしたが、 私たちを眠らせなかったいくつかの Windows 互換性の問題と、 対処することを決定した巨大な変更範囲のため、今まで延期されていました。
それでも、過去2か月間準備してきた内容をついに皆さんと共有できることに興奮しています。
興味があるかもしれない以前のブログと DevLog 記事をご覧ください:
過去3ヶ月の状況を正直にお話ししましょう:
しかし、ソフトウェア業界で働く皆さんにとって、これらの数字は意味がありません。 これらは、私たちがこのバージョンで行った重大な影響の反映にすぎません。
心配しないでください。この DevLog で重要なポイントをご案内します。
マイルストーン
v0.7 のリリースとこの DevLog の公開に伴い、 これまでに達成したいくつかのマイルストーンについて触れたいと思います:
- GitHub で 1850+ スターを獲得しました!🎉
- 40+ 以上のコントリビューターがいます!🫂
- 300+ 以上の Discord メンバーがいます!👾
- Hacker News で自己紹介を公開しました
- Product Hunt で自己紹介を公開しました
- 2025年7月17日の GitHub トレンドで
#1にランクインしました 🏆
機能
デスクトップ版
Tamagotchi は AIRI デスクトップ版の名前です。 独立した、常に実行されているコンパニオンとしてデスクトップ上で実行でき、 作業を妨げることなく他のアプリケーションと一緒に動作します。
以前は、デスクトップ版はより実験的な段階にあり、UI/UX は十分に洗練されておらず、 ローカル ASR/STT(音声認識)のようなモジュールはまだ利用できませんでした。 音声入力デバイスを使用する設定も欠けていた部分でした。
しかし、今は大幅に改善されました。
ホバーフェード (Hover Fade™)
以前のバージョン v0.6 で、ホバーフェード™機能を導入しました:
冗談です。私たちはこのプロジェクトを MIT ライセンスの下でオープンソース化しており、 この機能に登録商標はありません。
TIP
ホバーフェード機能をオフにするには、デフォルトのショートカットは Shift + Alt + I です
多くのユーザーは、カーソルがキャラクターの上に止まるたびにウィンドウ全体がフェードアウトすることに混乱していました。 この機能と、なぜ私たちが AI コンパニオンにとって重要だと考えているのかを説明するドキュメントが不足していたことをお詫びします。
VTuber アプリケーションの場合、最も人気のある VTuber Studio、Warudo の2つは Live2D と VRM 3D モデルをサポートしています。これらは VTuber ストリーミング目的で設計されているため、 OBS (Open Broadcaster Software) を使用してストリーミングする場合、 異なるレイヤーでシーン要素を編成できるため、ユーザーはウィンドウの順序を気にする必要はありません: モデルウィンドウは常に透明な背景を持つ最小化されたウィンドウになり、 OBS や他のストリーミングキャプチャドライバーがバックグラウンドでキャプチャします。
VTuber ストリーミングに AIRI を使用する場合、ホバーフェード機能を使用しなくても問題ありませんが、 仮想コンパニオンとしてデスクトップに常駐させたい場合は、次のことに気付き始めるでしょう:
- モデルウィンドウを常に手前に表示するように設計すると、その下のアプリケーションへのマウスイベントがブロックされます。 これは私たちが望んでいることではありません。
- モデルウィンドウの可視性を手動で切り替える必要がある場合、多くの不便が生じます。 特に作業に集中しているときはそうです。
これが私たちがこのアイデアを思いついた理由です:AIRI のどのキャラクターも、 マウスがウィンドウの上に止まったときにフェードアウトし、マウスクリックイベントをその下のアプリケーションに渡す機能を作成することです。
私は個人的にこの機能が大好きです。今では、ウィンドウの順序を無効にしたり整理したりすることを心配することなく、 AIRI のキャラクターと一緒にあらゆるアプリケーションを使用できるからです。 毎日 AIRI を開発するとき、Web 版でもデスクトップ版でも、 常にデスクトップで彼女を開き、ターミナルや VSCode/Cursor と一緒に私に付き添ってもらっています。
ホバーフェード™はデスクトップ版で更新した唯一の機能ではありません。 UI/UX に多くの改善を加え、より使いやすくするための機能を追加しました。
移動
ホバーフェード™ウィンドウはマウスイベントを通過させるため、 モデルウィンドウの位置をより良い場所、 おそらく右下、または中央下などに移動または調整したい場合があります...
ドラッグ可能領域の外観が改善され、テーマに合わせて角が丸くなりました。
TIP
移動モードのデフォルトのショートカットは Shift + Alt + N です
移動モードに入るとドラッグ可能領域が表示されます。マウスで位置を移動する以外に、 トレイメニューの位置 > 中央 / 左下 / 右下を使用するのも別の選択肢です。
サイズ変更
すべての人のモデルサイズが同じではないため、モデルウィンドウのサイズを調整する機能も重要です。
移動モードと同様に、サイズ変更の境界インジケーターには丸い角が適用され、 アバターの端もトリミングされた丸い角のエッジになりました。
TIP
サイズ変更モードのデフォルトのショートカットは Shift + Alt + R です
リソースアイランド
ASR/STT(音声認識)と VAD(音声活動検出)のモデルのロードを待つのは苦痛です。 Steam や Battle.net のように、さまざまなモジュールと必要なファイルのダウンロードの進行状況を可視化する方法を見つける必要がありました。
私たちはリソースアイランドと呼ばれる新しいコンポーネントセットを設計しました(iOS の Dynamic Island からインスピレーションを得ました)。 これはフローティングでホバー可能なウィジェットで、モジュールのダウンロードとインストールの進行状況を表示し、 ダウンロードが完了すると消えます。
実際の動作をご覧ください:
これには準備中のモジュールへのリンクが含まれているため、モジュールリンクをクリックして ターゲットモジュールの設定ページを開き、なぜこのモデルやファイルが必要なのかを知ることができます。
ローカル ASR/STT
@luoling8192 (Luoling) と、リポジトリ candle-examples で行った実験のおかげで、 Windows、macOS、Linux で動作するローカル ASR/STT エンジンができました。
INFO
このデモでは OpenAI の音声サービスを使用していますが、ローカルプロバイダーの ASR/STT に切り替えることができます。
当初、私たちは candle を直接使用しようとしましたが、 Windows と Linux 向けに candle ランタイム(CUDA ありとなし)を使用および埋め込むための良い方法が見つかりませんでした。 そこで、ort(Rust の ONNX ランタイム)に切り替えることにしました。これにより、 同様のパフォーマンスと精度が得られますが、互換性が向上し、使いやすくなりました。
Web
オンボーディング
現在、AIRI の設定はかなり複雑であることを私たちは知っています(それでも、他の多くの純粋な Python ベースのものと比較すれば簡単ですが、 それらは構成するためにコード構造を理解する必要があります)。
Me1td0wn76 (melty kiss) の貢献のおかげで、 Web 版にオンボーディングサポートが追加されました。これで、初めて AIRI を使用するときに より良い体験を得ることができます。
彼らは Pull Request がマージされた後、Project AIRI に貢献した経験を共有するためにブログ記事を書きました:AIRIプロジェクトに参加した話 - YAMA-blog


実際の動作をご覧ください:
VRM
Lilia-Chen (Lilia_Chen) の尽力のおかげで、 正確なカメラ実装とレンダリングメカニズムにより、VRM モデルがより良く表示されるようになりました。


モバイル Web
オンボーディング
オンボーディングはモバイル Web 版でも利用可能です:
シーン
モバイルのメインシーンは完全に再設計され、書き直されました。
LemonNekoGH (LemonNeko) のおかげで、 シーン内の Live2D モデルのオフセットを調整するより良い方法ができました。
このデザインコンセプトは iOS のサイドボリュームコントロールから取り入れました。 より直感的で、すぐに使えると感じていただければ幸いです。
TIP
デフォルト値にリセットしたいですか?X、Y、またはズームボタンをダブルクリックすると、値がデフォルトにリセットされます。
両方のバージョン
これらの機能のために、さらに多くの興味深い新しいコンポーネントを作成しました。
より良いテキストアニメーション
チャットバブルのテキストアニメーションを改善しました。sumimakito (Makito) が数日前に詳細な DevLog を書き、なぜ私たちが特別にそれを実装したのか、 そして i18n の互換性をどのように考慮したのかを説明しました。ぜひチェックしてください:DevLog 2025.08.01。
実際の動作をご覧ください:
レベルメーター
UI コンポーネント:https://airi.moeru.ai/ui/#/story/src-components-gadgets-levelmeter-story-vue
検出された音声入力レベルやリアルタイムのシステム負荷を表示する場合に便利です:


時系列チャート
UI コンポーネント:https://airi.moeru.ai/ui/#/story/src-components-gadgets-timeserieschart-story-vue
変化する値のレベルメーターに似ていますが、特に履歴データに役立ちます。


さらに多くのコンポーネントを追加しました...
コミュニティ
新しいドキュメントサイト
現在、新しいドキュメントサイトがあります:
とても素晴らしく見えます。Reka UI の作業に基づいて完全に書き直しましたが、 ブログ記事リスト、言語切り替え、VitePress への多くのスタイルの適応など、多くの機能を追加しました。
いつものように、彼らの美しいデザインに感謝します。私たちは独自のコンポーネントを構築するために彼らのコンポーネントを多く使用しました。 ぜひチェックしてください!
ブログページも素敵です。さらに良いことに、@lynzrand (Rynco Maekawa) がデザインした新しいカバーがあります。


翻訳ワークフローの変更
いわゆる i18n またはローカリゼーションファイルを、独自の巨大な monorepo 内の専用パッケージに分割しました。
新しいローカリゼーションの貢献、新しい翻訳の追加、または既存の翻訳の修正を行う場合は、 まず https://github.com/moeru-ai/airi/tree/main/packages/i18n/src/locales に移動してください。


ここでは、さまざまな言語のさまざまなディレクトリがあります。必要な言語を選択して続行します。
英語を例にとると、ディレクトリ構造は次のとおりです:
└── en
├── docs
├── tamagotchi
#
├── base.yaml
├── settings.yaml
├── stage.yaml
└── index.tsdocs と tamagotchi は、異なるモジュール専用の2つのディレクトリです:
- ドキュメントサイト
- デスクトップ版(Tamagotchi)
ドキュメントサイト(記事や実際のドキュメントではなく、UI)の翻訳を手伝いたい場合は、 docs ディレクトリに移動し、theme.yaml ファイルを編集します。 これにはドキュメントサイトの UI 文字列が含まれています。
tamagotchi ディレクトリは少し特別で、すべての翻訳文字列が見つからない場合があります。 これはデスクトップ版でのみ使用されるいくつかの特別な翻訳を含むことを目的としており、 他のすべての内容はルートディレクトリにあります。
docs と tamagotchi 以外のすべてについて:
base.yamlには、言語の基本文字列、ボタンの基本状態が含まれますsettings.yamlには、設定ページの文字列が含まれますstage.yamlには、ステージの文字列が含まれます(モデルを表示する UI)
さらに言語を追加したい場合は、既存の言語ローカリゼーションディレクトリをコピーして貼り付け、 新しい言語コードに名前を変更します。たとえば、フランス語を追加したい場合は、 en ディレクトリを fr にコピーし、base.yaml、settings.yaml、 stage.yaml、index.ts ファイルの編集を開始して翻訳を追加します。 Pull Request のレビュープロセス中は、部分的な翻訳ファイルでも構いません。
助けが必要です!
これは少しばかげているように聞こえるかもしれませんが、 i18n パッケージと Crowdin や Weblate などの 翻訳自動化ツールとの統合を支援してくれる経験豊富な人を求めています。
私たちはこの分野の専門家ではありません。私たちを助けるために Pull Request を開くか、 議論するために issue を開いてください。
言語コードについては、以下のいずれかのツールを使用して、使用している言語コードを見つけてください:
.
├── packages
├── i18n
├── package.json
└── src
├── index.ts
└── locales
├── en
│ ├── base.yaml
│ ├── docs
│ │ ├── index.ts
│ │ └── theme.yaml
│ ├── index.ts
│ ├── settings.yaml
│ ├── stage.yaml
│ └── tamagotchi
│ ├── index.ts
│ ├── settings.yaml
│ └── stage.yaml
├── index.ts
└── zh-Hans
├── base.yaml
├── docs
│ ├── index.ts
│ └── theme.yaml
├── index.ts
├── settings.yaml
├── stage.yaml
└── tamagotchi
├── index.ts
├── settings.yaml
└── stage.yaml関連リソースの詳細については、こちらをご覧ください:
- https://developer.mozilla.org/en-US/docs/Glossary/BCP_47_language_tag
- https://en.wikipedia.org/wiki/IETF_language_tag
- https://en.wikipedia.org/wiki/ISO_15924
エンジニアリング
ツールチェーンによりワークフローが何倍も高速化
TL;DR:
- 多くのパッケージをビルドなしの設定に変換しました
unbuildからstubを削除しましたrolldown-viteに切り替えましたunbuildをtsdownに置き換えました- 高速化とキャッシュされたビルドのために
turborepoを統合しました
詳細:
以前は、シームレスな開発体験を実現するために、Monorepo アーキテクチャを使用することを選択した際、 独自の jiti エクスポートと .d.ts モジュールを備えたスタブパッケージをブートストラップするために postinstall スクリプトに依存する必要がありました。 コントリビューターがプロジェクトをクローンした後に依存関係をインストールするたびにこれを行う必要がありました。
これにより、コントリビューターは monorepo の仕組みを学習しなくても貢献できるようになりました。 しかし、pnpm install がトリガーされるたびに再ビルドと再スタブを行うのは賢明な戦略ではないことは明らかです。
@kwaa がビルドなしアーキテクチャに導入した変更により、 以前最も時間がかかっていた最大のパッケージ stage-ui を、型チェックや依存関係解決の問題なしにスキップできるようになりました。
その後、@kwaa は、unbuild によってもたらされる時々問題のある冗長な stub スクリプトの削除を支援してくれました。 これにより、厄介な The requested module './dist/index.mjs' does not provide an export named 'foo' エラーと戦う必要のない、よりクリーンなワークフローが得られました。
最大の変更は2か月前、@kwaa が vite の代わりに rolldown-vite に切り替えることを選択したときに起こりました。 これにより、ワークフローが2倍高速化されました。
しかし、これで終わりではありません。unbuild を tsdown に置き換えました。これにより、さらに4.2倍の速度向上が導入され、 各サブパッケージのビルド時間は250ミリ秒未満になりました。
tsdownへの移行にはさらに多くの利点があります...
- 未使用の依存関係チェックの実行
- CSS のバンドル
- Vue SFC コンポーネントのバンドル
現在、postinstall スクリプトはまだ必要ですが、 依存関係認識を通じてビルド結果をキャッシュする方法を見つけることができれば、多くの冗長なビルドを回避できます。 ここで turborepo がより高速なビルドを実現するのに役立ちます。 turborepo を使用すると、AIRI のビルドに必要な時間が平均4分から25秒に短縮されました。
Nix をサポート
@Weathercold (Weathercold) のおかげで、 AIRI をビルドするための Nix flake ができました。これはクロスプラットフォーム互換性への素晴らしい追加です。 macOS でも動作します。
最終的な Pull Request が nix-pkgs にマージされるのを待っていますが、 次のコマンドを使用して試すことができます:
nix run --extra-experimental-features 'nix-command flakes' github:moeru-ai/airi統一されたビルドパイプライン
以前は、テスト、ステージング、リリースのビルドパイプラインはすべて異なっていました。 これは私にとって新しいバージョンをリリースするかどうかを決める際の悪夢でした。 パイプラインが成功するかどうかわからなかったからです。
Tauri は多くのクロスプラットフォーム互換性の利点と、 Rust を使用してシステムコールやネイティブ OS 機能への統合を行う強力な機能をもたらしてくれましたが...
当初、v0.7 開発の初期段階で、 ASR/STT パイプラインの推論エンジンの実装として huggingface/candle を導入しましたが、 NVIDIA CUDA に依存していたため、ビルドは本当に混乱しており、いたるところに非互換性がありました。
しかし今ははるかに良くなりました。リリースと同じスクリプトとワークフロー手順を毎日実行する計画されたビルドパイプラインがあります。 (canary または nightly ビルドとして聞いたことがあるかもしれません。)
技術的には、最新バージョンで問題が発生した場合は、 いつでも main ブランチの最新ビルドを試して、修正されたかどうかを確認できます。
ナイトリービルドは https://github.com/moeru-ai/airi/actions/workflows/release-tamagotchi.yml で見つけることができます
終わる前に...
このバージョンの間に誕生した新しいパッケージ:
@sumimakito に大声で感謝を叫びます。彼女は数え切れないほど多くの素晴らしいことをしてくれました...
@proj-airi/chromatic(@sumimakito 作)@proj-airi/unocss-preset-chromatic(@sumimakito 作)@moeru-ai/jem(@LemonNekoGH 作)、統一モデルディレクトリclustr(@sumimakito 作)@proj-airi/drizzle-orm-browser(私作)
このバージョンの間に誕生したサイドプロジェクト:
- HuggingFace Inspector (https://github.com/moeru-ai/hf-inspector)
- whisper & VAD、candle、burn、ort に関するその他の candle の例
- (モデルディレクトリ)Inventory 提出!(@LemonNekoGH 作)
この DevLog ですべてを網羅することはできません。詳細については、いつでも ロードマップ上の Roadmap v0.7 を追跡および確認できます。
