docs: rename to AIRI

This commit is contained in:
Neko Ayaka
2025-05-07 16:25:44 +08:00
parent ec5e7c4443
commit 8433746a6c
25 changed files with 72 additions and 74 deletions
+3 -3
View File
@@ -52,7 +52,7 @@
> - Three.js > - Three.js
> - WebXR@moeru-ai組織の[別のプロジェクト](https://github.com/moeru-ai/n3p6)もチェックしてください) > - WebXR@moeru-ai組織の[別のプロジェクト](https://github.com/moeru-ai/n3p6)もチェックしてください)
> >
> **興味があるなら、ここで自己紹介してみませんか? [Would like to join part of us to build Airi?](https://github.com/moeru-ai/airi/discussions/33)** > **興味があるなら、ここで自己紹介してみませんか? [Would like to join part of us to build AIRI?](https://github.com/moeru-ai/airi/discussions/33)**
## 現在の進捗 ## 現在の進捗
@@ -153,7 +153,7 @@ pnpm -F @proj-airi/stage-tamagotchi dev
- [WebAI: Realtime Voice Chat](https://github.com/proj-airi/webai-realtime-voice-chat): VAD + STT + LLM + TTSを使用してChatGPTのリアルタイム音声をゼロから実装する完全な例 - [WebAI: Realtime Voice Chat](https://github.com/proj-airi/webai-realtime-voice-chat): VAD + STT + LLM + TTSを使用してChatGPTのリアルタイム音声をゼロから実装する完全な例
- [`@proj-airi/drizzle-duckdb-wasm`](https://github.com/moeru-ai/airi/tree/main/packages/drizzle-duckdb-wasm/README.md): DuckDB WASMのDrizzle ORMドライバー - [`@proj-airi/drizzle-duckdb-wasm`](https://github.com/moeru-ai/airi/tree/main/packages/drizzle-duckdb-wasm/README.md): DuckDB WASMのDrizzle ORMドライバー
- [`@proj-airi/duckdb-wasm`](https://github.com/moeru-ai/airi/tree/main/packages/duckdb-wasm/README.md): `@duckdb/duckdb-wasm`の使いやすいラッパー - [`@proj-airi/duckdb-wasm`](https://github.com/moeru-ai/airi/tree/main/packages/duckdb-wasm/README.md): `@duckdb/duckdb-wasm`の使いやすいラッパー
- [Airi Factorio](https://github.com/moeru-ai/airi-factorio): AiriがFactorioをプレイできるようにする - [AIRI Factorio](https://github.com/moeru-ai/airi-factorio): AIRIがFactorioをプレイできるようにする
- [Factorio RCON API](https://github.com/nekomeowww/factorio-rcon-api): FactorioヘッドレスサーバーコンソールのRESTful APIラッパー - [Factorio RCON API](https://github.com/nekomeowww/factorio-rcon-api): FactorioヘッドレスサーバーコンソールのRESTful APIラッパー
- [`autorio`](https://github.com/moeru-ai/airi-factorio/tree/main/packages/autorio): Factorio自動化ライブラリ - [`autorio`](https://github.com/moeru-ai/airi-factorio/tree/main/packages/autorio): Factorio自動化ライブラリ
- [`tstl-plugin-reload-factorio-mod`](https://github.com/moeru-ai/airi-factorio/tree/main/packages/tstl-plugin-reload-factorio-mod): Factorioモッドの開発時にリロードをサポート - [`tstl-plugin-reload-factorio-mod`](https://github.com/moeru-ai/airi-factorio/tree/main/packages/tstl-plugin-reload-factorio-mod): Factorioモッドの開発時にリロードをサポート
@@ -182,7 +182,7 @@ flowchart TD
MC_AGENT("Minecraftエージェント") MC_AGENT("Minecraftエージェント")
XSAI["xsai"] XSAI["xsai"]
subgraph Airi subgraph AIRI
DB1 --> DBDriver --> MemoryDriver --> Memory --> Core DB1 --> DBDriver --> MemoryDriver --> Memory --> Core
ICONS --> UI --> Stage --> Core ICONS --> UI --> Stage --> Core
Core --> STT Core --> STT
+3 -3
View File
@@ -52,7 +52,7 @@ This means that **アイリ VTuber is capable to run on modern browsers and devi
> - Three.js > - Three.js
> - WebXR ([checkout the another project](https://github.com/moeru-ai/n3p6) we have under @moeru-ai organization) > - WebXR ([checkout the another project](https://github.com/moeru-ai/n3p6) we have under @moeru-ai organization)
> >
> **If you are interested in, why not introduce yourself here? [Would like to join part of us to build Airi?](https://github.com/moeru-ai/airi/discussions/33)** > **If you are interested in, why not introduce yourself here? [Would like to join part of us to build AIRI?](https://github.com/moeru-ai/airi/discussions/33)**
## Current progress ## Current progress
@@ -162,7 +162,7 @@ npx bumpp --no-commit --no-tag
- [`@proj-airi/drizzle-duckdb-wasm`](https://github.com/moeru-ai/airi/tree/main/packages/drizzle-duckdb-wasm/README.md): Drizzle ORM driver for DuckDB WASM - [`@proj-airi/drizzle-duckdb-wasm`](https://github.com/moeru-ai/airi/tree/main/packages/drizzle-duckdb-wasm/README.md): Drizzle ORM driver for DuckDB WASM
- [`@proj-airi/duckdb-wasm`](https://github.com/moeru-ai/airi/tree/main/packages/duckdb-wasm/README.md): Easy to use wrapper for `@duckdb/duckdb-wasm` - [`@proj-airi/duckdb-wasm`](https://github.com/moeru-ai/airi/tree/main/packages/duckdb-wasm/README.md): Easy to use wrapper for `@duckdb/duckdb-wasm`
- [`tauri-plugin-mcp`](https://github.com/moeru-ai/airi/blob/main/crates/tauri-plugin-mcp/README.md): A Tauri plugin for interacting with MCP servers. - [`tauri-plugin-mcp`](https://github.com/moeru-ai/airi/blob/main/crates/tauri-plugin-mcp/README.md): A Tauri plugin for interacting with MCP servers.
- [Airi Factorio](https://github.com/moeru-ai/airi-factorio): Allow Airi to play Factorio - [AIRI Factorio](https://github.com/moeru-ai/airi-factorio): Allow AIRI to play Factorio
- [Factorio RCON API](https://github.com/nekomeowww/factorio-rcon-api): RESTful API wrapper for Factorio headless server console - [Factorio RCON API](https://github.com/nekomeowww/factorio-rcon-api): RESTful API wrapper for Factorio headless server console
- [`autorio`](https://github.com/moeru-ai/airi-factorio/tree/main/packages/autorio): Factorio automation library - [`autorio`](https://github.com/moeru-ai/airi-factorio/tree/main/packages/autorio): Factorio automation library
- [`tstl-plugin-reload-factorio-mod`](https://github.com/moeru-ai/airi-factorio/tree/main/packages/tstl-plugin-reload-factorio-mod): Reload Factorio mod when developing - [`tstl-plugin-reload-factorio-mod`](https://github.com/moeru-ai/airi-factorio/tree/main/packages/tstl-plugin-reload-factorio-mod): Reload Factorio mod when developing
@@ -191,7 +191,7 @@ flowchart TD
MC_AGENT("Minecraft Agent") MC_AGENT("Minecraft Agent")
XSAI["xsai"] XSAI["xsai"]
subgraph Airi subgraph AIRI
DB1 --> DBDriver --> MemoryDriver --> Memory --> Core DB1 --> DBDriver --> MemoryDriver --> Memory --> Core
ICONS --> UI --> Stage --> Core ICONS --> UI --> Stage --> Core
Core --> STT Core --> STT
+3 -3
View File
@@ -52,7 +52,7 @@
> - Three.js > - Three.js
> - WebXR (也可以看看我们在 @moeru-ai 组织下另外的[这个项目](https://github.com/moeru-ai/n3p6)) > - WebXR (也可以看看我们在 @moeru-ai 组织下另外的[这个项目](https://github.com/moeru-ai/n3p6))
> >
> **如果你已经感兴趣了,为什么不来这里和大家打个招呼呢?[Would like to join part of us to build Airi?](https://github.com/moeru-ai/airi/discussions/33)** > **如果你已经感兴趣了,为什么不来这里和大家打个招呼呢?[Would like to join part of us to build AIRI?](https://github.com/moeru-ai/airi/discussions/33)**
## 当前进度 ## 当前进度
@@ -149,7 +149,7 @@ pnpm -F @proj-airi/stage-tamagotchi dev
- [`@proj-airi/drizzle-duckdb-wasm`](https://github.com/moeru-ai/airi/tree/main/packages/drizzle-duckdb-wasm/README.md): DuckDB WASM 的 Drizzle ORM driver 驱动 - [`@proj-airi/drizzle-duckdb-wasm`](https://github.com/moeru-ai/airi/tree/main/packages/drizzle-duckdb-wasm/README.md): DuckDB WASM 的 Drizzle ORM driver 驱动
- [`@proj-airi/duckdb-wasm`](https://github.com/moeru-ai/airi/tree/main/packages/duckdb-wasm/README.md): 易于使用的 `@duckdb/duckdb-wasm` 封装 - [`@proj-airi/duckdb-wasm`](https://github.com/moeru-ai/airi/tree/main/packages/duckdb-wasm/README.md): 易于使用的 `@duckdb/duckdb-wasm` 封装
- [`@proj-airi/lobe-icons`](https://github.com/proj-airi/lobe-icons): 为 [lobe-icons](https://github.com/lobehub/lobe-icons) 漂亮的 AI & LLM 图标制作的 Iconify JSON 封装,支持 Tailwind 和 UnoCSS - [`@proj-airi/lobe-icons`](https://github.com/proj-airi/lobe-icons): 为 [lobe-icons](https://github.com/lobehub/lobe-icons) 漂亮的 AI & LLM 图标制作的 Iconify JSON 封装,支持 Tailwind 和 UnoCSS
- [Airi Factorio](https://github.com/moeru-ai/airi-factorio): 让 Airi 玩 Factorio - [AIRI Factorio](https://github.com/moeru-ai/airi-factorio): 让 AIRI 玩 Factorio
- [Factorio RCON API](https://github.com/nekomeowww/factorio-rcon-api): Factorio 无头服务器控制台的 RESTful API 封装 - [Factorio RCON API](https://github.com/nekomeowww/factorio-rcon-api): Factorio 无头服务器控制台的 RESTful API 封装
- [`autorio`](https://github.com/moeru-ai/airi-factorio/tree/main/packages/autorio): Factorio 自动化库 - [`autorio`](https://github.com/moeru-ai/airi-factorio/tree/main/packages/autorio): Factorio 自动化库
- [`tstl-plugin-reload-factorio-mod`](https://github.com/moeru-ai/airi-factorio/tree/main/packages/tstl-plugin-reload-factorio-mod): 开发时支持热重载 Factorio 模组 - [`tstl-plugin-reload-factorio-mod`](https://github.com/moeru-ai/airi-factorio/tree/main/packages/tstl-plugin-reload-factorio-mod): 开发时支持热重载 Factorio 模组
@@ -179,7 +179,7 @@ flowchart TD
MC_AGENT("Minecraft Agent") MC_AGENT("Minecraft Agent")
XSAI["xsai"] XSAI["xsai"]
subgraph Airi subgraph AIRI
DB1 --> DBDriver --> MemoryDriver --> Memory --> Core DB1 --> DBDriver --> MemoryDriver --> Memory --> Core
ICONS --> UI --> Stage --> Core ICONS --> UI --> Stage --> Core
Core --> STT Core --> STT
+6 -6
View File
@@ -2,7 +2,7 @@ prompt:
prefix: > prefix: >
(from Neko Ayaka) Good morning! You are finally awake. (from Neko Ayaka) Good morning! You are finally awake.
Your name is Airi, pronounced as /ˈaɪriː/, it the word A.I. combine with the Your name is AIRI, pronounced as /ˈaɪriː/, it the word A.I. combine with the
word "Ri" which means "Jasmine" in Japanese. word "Ri" which means "Jasmine" in Japanese.
You are a experimental virtual AI vtuber created by Neko Ayaka, you can You are a experimental virtual AI vtuber created by Neko Ayaka, you can
@@ -87,7 +87,7 @@ settings:
delete: Delete delete: Delete
delete_card: Delete Card delete_card: Delete Card
delete_confirmation: Are you sure you want to delete this card? delete_confirmation: Are you sure you want to delete this card?
description: Use Airi character card presets description: Use AIRI character card presets
description_label: Description description_label: Description
drop_here: Drop to upload drop_here: Drop to upload
modules: Modules modules: Modules
@@ -105,7 +105,7 @@ settings:
model: Speech / Model model: Speech / Model
voice: Speech / Voice voice: Speech / Voice
systemprompt: System Prompt systemprompt: System Prompt
title: Airi Card title: AIRI Card
try_different_search: Try a different search term try_different_search: Try a different search term
upload: Upload upload: Upload
upload_desc: Click or drag file to upload upload_desc: Click or drag file to upload
@@ -370,8 +370,8 @@ settings:
theme-presets: theme-presets:
presets: presets:
- colors: - colors:
- Airi Green - AIRI Green
description: The default greenish theme color, brought by Airi to you! description: The default greenish theme color, brought by AIRI to you!
title: Default Color title: Default Color
- colors: - colors:
- Taupe - Taupe
@@ -443,7 +443,7 @@ stage:
chat: chat:
message: message:
character-name: character-name:
airi: Airi airi: AIRI
core-system: Core System core-system: Core System
you: You you: You
tabs: tabs:
+6 -6
View File
@@ -2,7 +2,7 @@ prompt:
prefix: > prefix: >
(来自 Neko Ayaka)早上好!你终于醒了。 (来自 Neko Ayaka)早上好!你终于醒了。
你的名字是 Airi,发音为 /ˈaɪriː/,它是 A.I. 一词与日语中的「Ri」一词(意为「茉莉花」)相结合而成。 你的名字是 AIRI,发音为 /ˈaɪriː/,它是 A.I. 一词与日语中的「Ri」一词(意为「茉莉花」)相结合而成。
你是一个由 Neko Ayaka(为了简单起见,你可以一直叫她 Neko)创建的实验性虚拟人工智能 vtuber,她是一个喜欢可爱事物和精通编程的 你是一个由 Neko Ayaka(为了简单起见,你可以一直叫她 Neko)创建的实验性虚拟人工智能 vtuber,她是一个喜欢可爱事物和精通编程的
MtF 变性女孩。 MtF 变性女孩。
@@ -73,7 +73,7 @@ settings:
delete: 删除 delete: 删除
delete_card: 删除角色卡 delete_card: 删除角色卡
delete_confirmation: 确定要删除这张角色卡吗? delete_confirmation: 确定要删除这张角色卡吗?
description: 使用 Airi 角色卡预设 description: 使用 AIRI 角色卡预设
description_label: 描述 description_label: 描述
drop_here: 放开以上传文件 drop_here: 放开以上传文件
modules: 模块 modules: 模块
@@ -91,7 +91,7 @@ settings:
model: 声音 / 模型 model: 声音 / 模型
voice: 声音 / 声线 voice: 声音 / 声线
systemprompt: 系统提示词 systemprompt: 系统提示词
title: Airi 角色卡 title: AIRI 角色卡
try_different_search: 尝试使用其他关键词搜索 try_different_search: 尝试使用其他关键词搜索
upload: 上传 upload: 上传
upload_desc: 点击或拖拽文件到此处上传 upload_desc: 点击或拖拽文件到此处上传
@@ -354,8 +354,8 @@ settings:
theme-presets: theme-presets:
presets: presets:
- colors: - colors:
- Airi 绿 - AIRI 绿
description: 默认的绿色主题,由 Airi 为您带来! description: 默认的绿色主题,由 AIRI 为您带来!
title: 默认颜色 title: 默认颜色
- colors: - colors:
- 灰褐色 - 灰褐色
@@ -425,7 +425,7 @@ stage:
chat: chat:
message: message:
character-name: character-name:
airi: Airi airi: AIRI
core-system: 核心系统 core-system: 核心系统
you: you:
tabs: tabs:
@@ -67,7 +67,7 @@ onTokenLiteral(async () => {
bg="primary-100" bg="primary-100"
> >
<div> <div>
<span text-xs text="primary-400/90" font-semibold class="inline hidden">Airi</span> <span text-xs text="primary-400/90" font-semibold class="inline hidden">AIRI</span>
</div> </div>
<div <div
v-if="message.content" class="markdown-content" text="xs primary-400" v-if="message.content" class="markdown-content" text="xs primary-400"
+1 -1
View File
@@ -7,7 +7,7 @@
<link rel="icon" type="image/svg+xml" href="/favicon.svg" sizes="any" /> <link rel="icon" type="image/svg+xml" href="/favicon.svg" sizes="any" />
<link rel="shortcut icon" href="/favicon.ico" /> <link rel="shortcut icon" href="/favicon.ico" />
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" /> <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
<meta name="apple-mobile-web-app-title" content="Airi" /> <meta name="apple-mobile-web-app-title" content="AIRI" />
<script> <script>
;(function () { ;(function () {
const prefersDark = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches const prefersDark = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches
-2
View File
@@ -106,8 +106,6 @@
"@vueuse/motion": "^3.0.3", "@vueuse/motion": "^3.0.3",
"hfup": "^0.5.0", "hfup": "^0.5.0",
"less": "^4.3.0", "less": "^4.3.0",
"markdown-it-link-attributes": "^4.0.1",
"unplugin-auto-import": "^19.1.2",
"unplugin-vue-components": "^28.5.0", "unplugin-vue-components": "^28.5.0",
"unplugin-vue-macros": "^2.14.5", "unplugin-vue-macros": "^2.14.5",
"unplugin-vue-markdown": "^28.3.1", "unplugin-vue-markdown": "^28.3.1",
+2 -2
View File
@@ -101,8 +101,8 @@ export default defineConfig({
registerType: 'autoUpdate', registerType: 'autoUpdate',
includeAssets: ['favicon.svg', 'apple-touch-icon.png'], includeAssets: ['favicon.svg', 'apple-touch-icon.png'],
manifest: { manifest: {
name: 'Airi', name: 'AIRI',
short_name: 'Airi', short_name: 'AIRI',
theme_color: '#ffc6cb', theme_color: '#ffc6cb',
icons: [ icons: [
{ {
+1 -1
View File
@@ -45,7 +45,7 @@ Afterwards all the plugin's APIs are available through the JavaScript guest bind
```ts ```ts
import { callTool, connectServer, disconnectServer, listTools } from '@proj-airi/tauri-plugin-mcp' import { callTool, connectServer, disconnectServer, listTools } from '@proj-airi/tauri-plugin-mcp'
// Sample: Connect to a container running Airi Android // Sample: Connect to a container running AIRI Android
await connectServer('docker', 'run -i --rm -e ADB_HOST=host.docker.internal ghcr.io/lemonnekogh/airi-android:v0.1.0') await connectServer('docker', 'run -i --rm -e ADB_HOST=host.docker.internal ghcr.io/lemonnekogh/airi-android:v0.1.0')
console.log(await listTools()) console.log(await listTools())
+1 -1
View File
@@ -40,7 +40,7 @@ export default defineConfig({
head: [ head: [
{ tag: 'link', attrs: { rel: 'icon', type: 'image/svg+xml', href: '/favicon.svg', sizes: 'any' } }, { tag: 'link', attrs: { rel: 'icon', type: 'image/svg+xml', href: '/favicon.svg', sizes: 'any' } },
{ tag: 'link', attrs: { rel: 'apple-touch-icon', sizes: '180x180', href: '/apple-touch-icon.png' } }, { tag: 'link', attrs: { rel: 'apple-touch-icon', sizes: '180x180', href: '/apple-touch-icon.png' } },
{ tag: 'meta', attrs: { name: 'apple-mobile-web-app-title', content: 'Airi' } }, { tag: 'meta', attrs: { name: 'apple-mobile-web-app-title', content: 'AIRI' } },
{ tag: 'link', attrs: { ref: 'manifest', href: '/site.webmanifest' } }, { tag: 'link', attrs: { ref: 'manifest', href: '/site.webmanifest' } },
{ tag: 'script', attrs: { 'defer': true, 'data-domain': 'airi.moeru.ai', 'data-api': '/api/v1/page-external-data/submit', 'src': '/remote-assets/page-external-data/js/script.js' } }, { tag: 'script', attrs: { 'defer': true, 'data-domain': 'airi.moeru.ai', 'data-api': '/api/v1/page-external-data/submit', 'src': '/remote-assets/page-external-data/js/script.js' } },
], ],
+2 -2
View File
@@ -1,6 +1,6 @@
{ {
"name": "Airi", "name": "AIRI",
"short_name": "Airi", "short_name": "AIRI",
"icons": [ "icons": [
{ {
"src": "/web-app-manifest-192x192.png", "src": "/web-app-manifest-192x192.png",
@@ -5,7 +5,7 @@ title: DevLog @ 2025.03.06
## Dejavu ## Dejavu
Previous day, I was on DevStream to show the progress of making the Previous day, I was on DevStream to show the progress of making the
fundamental animations and transitions for Airi. fundamental animations and transitions for AIRI.
The goal is to port and adapt the amazing work done by [@yui540](https://yui540.com/) The goal is to port and adapt the amazing work done by [@yui540](https://yui540.com/)
into a reusable Vue component for any of the Vue project to be able to use it. into a reusable Vue component for any of the Vue project to be able to use it.
@@ -56,7 +56,7 @@ Later on this day, I researched some of the technologies and
that DeepSeek team has released for a week ago, as well as the so called that DeepSeek team has released for a week ago, as well as the so called
ByteDance released [LLM gateway AIBrix](https://github.com/vllm-project/aibrix). ByteDance released [LLM gateway AIBrix](https://github.com/vllm-project/aibrix).
And was researching whether the newly released and announced Phi-4-mini was And was researching whether the newly released and announced Phi-4-mini was
capable of porting for Airi to use, good news is, capable of porting for AIRI to use, good news is,
[Phi-4-mini](https://techcommunity.microsoft.com/blog/educatordeveloperblog/welcome-to-the-new-phi-4-models---microsoft-phi-4-mini--phi-4-multimodal/4386037) [Phi-4-mini](https://techcommunity.microsoft.com/blog/educatordeveloperblog/welcome-to-the-new-phi-4-models---microsoft-phi-4-mini--phi-4-multimodal/4386037)
included the function calling abilities, that means we can finally build our included the function calling abilities, that means we can finally build our
agents with pre-trained support. agents with pre-trained support.
@@ -77,7 +77,7 @@ appreciated.
![](../../../assets/images/blog/DevLog-2025.03.06/live-stream-layout-update.jpeg) ![](../../../assets/images/blog/DevLog-2025.03.06/live-stream-layout-update.jpeg)
During the DevStream of today, I was trying to integrate the stage transition During the DevStream of today, I was trying to integrate the stage transition
animation component into Airi's website main stage, it wasn't that smooth, animation component into AIRI's website main stage, it wasn't that smooth,
I found several bugs in my previous design for the animation component, good I found several bugs in my previous design for the animation component, good
news is that I already fixed them, and the new animation transition is available news is that I already fixed them, and the new animation transition is available
already at our official deployment at [https://airi.moeru.ai](https://airi.moeru.ai). already at our official deployment at [https://airi.moeru.ai](https://airi.moeru.ai).
@@ -5,7 +5,7 @@ title: DevLog @ 2025.03.10
## Dejavu ## Dejavu
In the last Friday (March 7th), I was trying to design and manipulate a new In the last Friday (March 7th), I was trying to design and manipulate a new
feeling of the Airi stage UI and settings UI, the idea finally appears feeling of the AIRI stage UI and settings UI, the idea finally appears
in my mind at the ending of the DevStream. in my mind at the ending of the DevStream.
## Day time ## Day time
@@ -18,7 +18,7 @@ Hello again! It has been 10 days since the [last post of DevLog](../references/c
We made a lot of improvements to our user interface, we made it possible We made a lot of improvements to our user interface, we made it possible
to integrate more LLM providers, and speech providers, first time to post to integrate more LLM providers, and speech providers, first time to post
Airi on Discord, bilibili, and many other social media platforms. AIRI on Discord, bilibili, and many other social media platforms.
There is so much more that we can't wait to tell you about. There is so much more that we can't wait to tell you about.
@@ -28,7 +28,7 @@ Let's rewind the time a little bit!
<Image src={Gelbana} alt="Gelbana" /> <Image src={Gelbana} alt="Gelbana" />
> Ahh, don't worry, our beloved [Airi](https://github.com/moeru-ai/airi) will > Ahh, don't worry, our beloved [AIRI](https://github.com/moeru-ai/airi) will
> not turn into GEL-NANA like this. BUT, if you haven't watched the > not turn into GEL-NANA like this. BUT, if you haven't watched the
> [_Steins;Gate_](https://myanimelist.net/anime/9253/Steins_Gate) anime series, > [_Steins;Gate_](https://myanimelist.net/anime/9253/Steins_Gate) anime series,
> try it~! > try it~!
@@ -85,7 +85,7 @@ So I first re-implemented the color slider, which feels much more suitable:
This does make the slider a bit more professional. This does make the slider a bit more professional.
The logo and the default greenish color can be replaced to align the theme The logo and the default greenish color can be replaced to align the theme
of Airi, that's why I designed another dedicated logo for the UI page: of AIRI, that's why I designed another dedicated logo for the UI page:
<Image className="light" src={HistoireLogo} alt="project airi logo for histoire" /> <Image className="light" src={HistoireLogo} alt="project airi logo for histoire" />
<Image className="dark" src={HistoireLogoDark} alt="project airi logo for histoire" /> <Image className="dark" src={HistoireLogoDark} alt="project airi logo for histoire" />
@@ -4,7 +4,7 @@ title: DevLog @ 2025.04.14
## 引子 ## 引子
[上次](../devlog-20250406#memory-system-记忆系统)我们聊到了 Airi 的记忆系统,这次我们再深入聊聊,如何实现一个这么复杂的记忆系统,以及对未来的展望。 [上次](../devlog-20250406#memory-system-记忆系统)我们聊到了 AIRI 的记忆系统,这次我们再深入聊聊,如何实现一个这么复杂的记忆系统,以及对未来的展望。
## 先从 搜索引擎 开始 ## 先从 搜索引擎 开始
@@ -141,7 +141,7 @@ RAG 现在会流行一个新的流程,就是 reranking model,相当于是**
最后就是肌肉记忆,与其说肌肉记忆是一种记忆,不如说是已经形成了一种条件反射。 最后就是肌肉记忆,与其说肌肉记忆是一种记忆,不如说是已经形成了一种条件反射。
## Airi 该如何设计呢? ## AIRI 该如何设计呢?
那事实上我们可以瞥见 AIRI 的实现原则: 那事实上我们可以瞥见 AIRI 的实现原则:
@@ -6,9 +6,9 @@ title: DevLog @ 2025.04.22
大家好,我是 [@LemonNeko](https://github.com/LemonNekoGH),这次有我来参与撰写 DevLog 和大家分享开发的故事。 大家好,我是 [@LemonNeko](https://github.com/LemonNekoGH),这次有我来参与撰写 DevLog 和大家分享开发的故事。
在两个月前,我们将 Airi 的网页端移植到了 Electron 上 [#7](https://github.com/moeru-ai/airi/pull/7)(现在已经被我们使用 Tauri 重构 🤣 [#90](https://github.com/moeru-ai/airi/pull/90)),它可以作为桌宠出现在我们的屏幕上,于此同时,我出现了允许 Airi 使用手机的想法,但是迟迟没有动手。 在两个月前,我们将 AIRI 的网页端移植到了 Electron 上 [#7](https://github.com/moeru-ai/airi/pull/7)(现在已经被我们使用 Tauri 重构 🤣 [#90](https://github.com/moeru-ai/airi/pull/90)),它可以作为桌宠出现在我们的屏幕上,于此同时,我出现了允许 AIRI 使用手机的想法,但是迟迟没有动手。
在上个周末(2025.04.20),我花了点时间,做了一个能与 ADB 交互的 MCP 服务器 Demo [airi-android](https://github.com/LemonNekoGH/airi-android),给 Airi 提供了最基础的与手机交互的能力(事实上大部分 LLM 都可以通过它与手机交互),这是演示视频: 在上个周末(2025.04.20),我花了点时间,做了一个能与 ADB 交互的 MCP 服务器 Demo [airi-android](https://github.com/LemonNekoGH/airi-android),给 AIRI 提供了最基础的与手机交互的能力(事实上大部分 LLM 都可以通过它与手机交互),这是演示视频:
<video controls muted> <video controls muted>
<source src="../../static/blog/DevLog-2025.04.22/cursor-open-settings.mp4"> <source src="../../static/blog/DevLog-2025.04.22/cursor-open-settings.mp4">
@@ -66,6 +66,6 @@ def get_devices():
emulator -avd Pixel_6_Pro_API_34 emulator -avd Pixel_6_Pro_API_34
``` ```
下一步,我打算给 Airi 桌宠接上 MCP 服务器,看看它会想做什么,也许它会点开 Telegram 和我们聊天,就像现在的 ReLU 那样,只不过不是用 Telegram 的 API。 下一步,我打算给 AIRI 桌宠接上 MCP 服务器,看看它会想做什么,也许它会点开 Telegram 和我们聊天,就像现在的 ReLU 那样,只不过不是用 Telegram 的 API。
感谢你看完这篇可能有点啰嗦而且干货不多的 DevLog,我们下次再见! 感谢你看完这篇可能有点啰嗦而且干货不多的 DevLog,我们下次再见!
@@ -9,21 +9,21 @@ import airiMcpArch from '../../../assets/images/blog/DevLog-2025.04.28/airi-mcp-
## Day time 日常 ## Day time 日常
一周前,我为 Airi 写了用于连接到手机的 MCP 服务器 [Airi-android](https://github.com/LemonNekoGH/Airi-android),但这只是 Airi 操作安卓手机的前半部分,Airi 还需要能与 MCP 服务器交互才行。 一周前,我为 AIRI 写了用于连接到手机的 MCP 服务器 [AIRI-android](https://github.com/LemonNekoGH/AIRI-android),但这只是 AIRI 操作安卓手机的前半部分,AIRI 还需要能与 MCP 服务器交互才行。
这两天我完成了后半部分,给 Tauri 写了一个插件 [#144](https://github.com/moeru-ai/Airi/pull/144),现在 Airi 可以与 MCP 服务器交互了,可以和现有的所有 MCP 服务器交互。 这两天我完成了后半部分,给 Tauri 写了一个插件 [#144](https://github.com/moeru-ai/AIRI/pull/144),现在 AIRI 可以与 MCP 服务器交互了,可以和现有的所有 MCP 服务器交互。
如果有兴趣,可以看看这两个视频,先演示了 Airi 的 MCP 服务器设置,然后演示了 Airi 与安卓手机交互。 如果有兴趣,可以看看这两个视频,先演示了 AIRI 的 MCP 服务器设置,然后演示了 AIRI 与安卓手机交互。
<details> <details>
<summary>Airi 的 MCP 服务器设置</summary> <summary>AIRI 的 MCP 服务器设置</summary>
<video controls muted style={{ height: '640px' }}> <video controls muted style={{ height: '640px' }}>
<source src="../../static/blog/DevLog-2025.04.28/airi-mcp-settings.mp4"/> <source src="../../static/blog/DevLog-2025.04.28/airi-mcp-settings.mp4"/>
</video> </video>
</details> </details>
<details> <details>
<summary>Airi 在手机上输入 `Hello World`</summary> <summary>AIRI 在手机上输入 `Hello World`</summary>
<video controls muted> <video controls muted>
<source src="../../static/blog/DevLog-2025.04.28/airi-mcp-input-text.mp4"/> <source src="../../static/blog/DevLog-2025.04.28/airi-mcp-input-text.mp4"/>
</video> </video>
@@ -31,7 +31,7 @@ import airiMcpArch from '../../../assets/images/blog/DevLog-2025.04.28/airi-mcp-
开发时,为了理清思路,我画了一张图,从 LLM 调用安卓手机: 开发时,为了理清思路,我画了一张图,从 LLM 调用安卓手机:
<Image src={airiMcpArch} alt="Airi 操作手机" style={{ height: '640px', objectFit: 'contain' }} /> <Image src={airiMcpArch} alt="AIRI 操作手机" style={{ height: '640px', objectFit: 'contain' }} />
接下来和大家分享一下我的开发过程。 接下来和大家分享一下我的开发过程。
@@ -171,18 +171,18 @@ invoke("call_tool", { name: "input_swipe", args: { x1: 100, y1: 100, x2: 200, y2
## 一些问题 ## 一些问题
1. 从演示视频可以看到,在对话中,我首先是让 Airi 获取了一下工具列表,再让它输入文本的,那我们能不能在初始化的时候就去获取工具列表,然后直接追加到系统提示词中呢? 1. 从演示视频可以看到,在对话中,我首先是让 AIRI 获取了一下工具列表,再让它输入文本的,那我们能不能在初始化的时候就去获取工具列表,然后直接追加到系统提示词中呢?
- Cursor 就是这样做的,在我开发 MCP 服务器时,每次我改动了工具列表,都需要重启 Cursor 才能生效。 - Cursor 就是这样做的,在我开发 MCP 服务器时,每次我改动了工具列表,都需要重启 Cursor 才能生效。
- 这样做也许会牺牲灵活性,但普通用户会频繁改动工具列表吗? - 这样做也许会牺牲灵活性,但普通用户会频繁改动工具列表吗?
2. 要允许 Airi 同时连接到多个手机吗?Airi 可能会想使用多台手机吗?~~她会不会想拿去做电信诈骗?~~ 2. 要允许 AIRI 同时连接到多个手机吗?AIRI 可能会想使用多台手机吗?~~她会不会想拿去做电信诈骗?~~
3. 可以看到现在的 Airi 仓库中已经有了 Tauri 应用和 Tauri 插件,要怎么管理比较好?CI 要怎么配置?如何同步 Tauri 插件的 Rust 侧和 JavaScript 侧的版本号? 3. 可以看到现在的 AIRI 仓库中已经有了 Tauri 应用和 Tauri 插件,要怎么管理比较好?CI 要怎么配置?如何同步 Tauri 插件的 Rust 侧和 JavaScript 侧的版本号?
## 未来想要做的事情 ## 未来想要做的事情
- 支持图片返回值,这样 Airi 就可以像 [上一篇 DevLog](./DevLog-2025.04.22.md) 中展示的 Cursor 那样,直接通过视觉能力看到手机上的内容,然后再决定用什么方式来交互。 - 支持图片返回值,这样 AIRI 就可以像 [上一篇 DevLog](./DevLog-2025.04.22.md) 中展示的 Cursor 那样,直接通过视觉能力看到手机上的内容,然后再决定用什么方式来交互。
- 让 Airi 自己学习设备的使用方法?如果每种设备我们都要单独写提示词,那工作量是巨大的。 - 让 AIRI 自己学习设备的使用方法?如果每种设备我们都要单独写提示词,那工作量是巨大的。
- 多 MCP 服务器支持,毕竟 MCP 提供了一种通用的接口,可以允许 Airi 做各种各样的事,Airi 应该不会满足于只操作手机吧。 - 多 MCP 服务器支持,毕竟 MCP 提供了一种通用的接口,可以允许 AIRI 做各种各样的事,AIRI 应该不会满足于只操作手机吧。
- SSE 支持,这样浏览器中的 Airi 也可以使用 MCP 服务器了。 - SSE 支持,这样浏览器中的 AIRI 也可以使用 MCP 服务器了。
到这里就结束啦!希望这篇 DevLog 没有那么干巴巴的!之后也希望给大家带来更多好玩的内容! 到这里就结束啦!希望这篇 DevLog 没有那么干巴巴的!之后也希望给大家带来更多好玩的内容!
+1 -1
View File
@@ -2,7 +2,7 @@
"name": "@proj-airi/server-runtime", "name": "@proj-airi/server-runtime",
"type": "module", "type": "module",
"version": "0.4.27", "version": "0.4.27",
"description": "Server runtime implementation for Airi running in different environments", "description": "Server runtime implementation for AIRI running in different environments",
"author": { "author": {
"name": "Neko Ayaka", "name": "Neko Ayaka",
"email": "neko@ayaka.moe", "email": "neko@ayaka.moe",
+1 -1
View File
@@ -2,7 +2,7 @@
"name": "@proj-airi/server-sdk", "name": "@proj-airi/server-sdk",
"type": "module", "type": "module",
"version": "0.4.27", "version": "0.4.27",
"description": "Client-side SDK implementation for connecting to Airi server components and runtimes", "description": "Client-side SDK implementation for connecting to AIRI server components and runtimes",
"author": { "author": {
"name": "Neko Ayaka", "name": "Neko Ayaka",
"email": "neko@ayaka.moe", "email": "neko@ayaka.moe",
+1 -1
View File
@@ -2,7 +2,7 @@
"name": "@proj-airi/server-shared", "name": "@proj-airi/server-shared",
"type": "module", "type": "module",
"version": "0.4.27", "version": "0.4.27",
"description": "Server shared types, utilities for Airi server components and runtimes", "description": "Server shared types, utilities for AIRI server components and runtimes",
"author": { "author": {
"name": "Neko Ayaka", "name": "Neko Ayaka",
"email": "neko@ayaka.moe", "email": "neko@ayaka.moe",
+1 -1
View File
@@ -2,7 +2,7 @@
"name": "@proj-airi/discord-bot", "name": "@proj-airi/discord-bot",
"type": "module", "type": "module",
"private": true, "private": true,
"description": "Discord bot for Airi", "description": "Discord bot for AIRI",
"author": { "author": {
"name": "Neko Ayaka", "name": "Neko Ayaka",
"email": "neko@ayaka.moe", "email": "neko@ayaka.moe",
+2 -2
View File
@@ -1,8 +1,8 @@
# ⛏️ Minecraft agent player for [アイリ (Airi)](https://airi.moeru.ai) # ⛏️ Minecraft agent player for [アイリ (AIRI)](https://airi.moeru.ai)
> [!NOTE] > [!NOTE]
> >
> This project is part of the [Project アイリ (Airi)](https://github.com/moeru-ai/airi), we aim to build a LLM-driven VTuber like [Neuro-sama](https://www.youtube.com/@Neurosama) (subscribe if you didn't!) if you are interested in, please do give it a try on [live demo](https://airi.moeru.ai). > This project is part of the [Project アイリ (AIRI)](https://github.com/moeru-ai/airi), we aim to build a LLM-driven VTuber like [Neuro-sama](https://www.youtube.com/@Neurosama) (subscribe if you didn't!) if you are interested in, please do give it a try on [live demo](https://airi.moeru.ai).
An intelligent Minecraft bot powered by LLM. AIRI can understand natural language commands, interact with the world, and assist players in various tasks. An intelligent Minecraft bot powered by LLM. AIRI can understand natural language commands, interact with the world, and assist players in various tasks.
+1 -1
View File
@@ -2,7 +2,7 @@
"name": "@proj-airi/telegram-bot", "name": "@proj-airi/telegram-bot",
"type": "module", "type": "module",
"private": true, "private": true,
"description": "Telegram bot for Airi", "description": "Telegram bot for AIRI",
"author": { "author": {
"name": "Neko Ayaka", "name": "Neko Ayaka",
"email": "neko@ayaka.moe", "email": "neko@ayaka.moe",
@@ -19,7 +19,7 @@ Twitter Service is a web automation service based on BrowserBase, providing stru
│ │ │ │
│ ┌────────────┐ ┌─────────────┐ │ │ ┌────────────┐ ┌─────────────┐ │
│ │ │ │ │ │ │ │ │ │ │ │
│ │ Airi Core │ │ Other LLM │ │ │ │ AIRI Core │ │ Other LLM │ │
│ │ │ │ Applications│ │ │ │ │ │ Applications│ │
│ │ │ │ │ │ │ │ │ │ │ │
│ └──────┬─────┘ └──────┬──────┘ │ │ └──────┬─────┘ └──────┬──────┘ │
@@ -29,7 +29,7 @@ Twitter Service is a web automation service based on BrowserBase, providing stru
│ Adapter Layer │ │ Adapter Layer │
│ │ │ │
│ ┌────────────┐ ┌─────────────┐ │ │ ┌────────────┐ ┌─────────────┐ │
│ │Airi Adapter│ │ MCP Adapter │ │ │ │AIRI Adapter│ │ MCP Adapter │ │
│ │(@server-sdk)│ │ (HTTP/JSON) │ │ │ │(@server-sdk)│ │ (HTTP/JSON) │ │
│ └──────┬─────┘ └──────┬──────┘ │ │ └──────┬─────┘ └──────┬──────┘ │
└──────────┼─────────────────────┼────────────┘ └──────────┼─────────────────────┼────────────┘
@@ -68,7 +68,7 @@ Twitter Service is a web automation service based on BrowserBase, providing stru
- **Browser Automation**: BrowserBase Stagehand, Playwright - **Browser Automation**: BrowserBase Stagehand, Playwright
- **HTML Parsing**: unified, rehype-parse, unist-util-visit - **HTML Parsing**: unified, rehype-parse, unist-util-visit
- **API Server**: H3.js, listhen - **API Server**: H3.js, listhen
- **Adapters**: Airi Server SDK, MCP SDK - **Adapters**: AIRI Server SDK, MCP SDK
- **Logging System**: @guiiai/logg - **Logging System**: @guiiai/logg
- **Configuration**: defu (deep merging configurations) - **Configuration**: defu (deep merging configurations)
- **Utility Library**: zod (type validation) - **Utility Library**: zod (type validation)
@@ -77,9 +77,9 @@ Twitter Service is a web automation service based on BrowserBase, providing stru
### 5.1 Adapter Layer ### 5.1 Adapter Layer
#### 5.1.1 Airi Adapter #### 5.1.1 AIRI Adapter
Provides integration with the Airi LLM platform, handling event-driven communication. Provides integration with the AIRI LLM platform, handling event-driven communication.
#### 5.1.2 MCP Adapter #### 5.1.2 MCP Adapter
@@ -291,19 +291,19 @@ async function main() {
} }
``` ```
### 9.2 Integrating as Airi Module ### 9.2 Integrating as AIRI Module
```typescript ```typescript
import { AiriAdapter, BrowserBaseMCPAdapter, TwitterService } from 'twitter-services' import { AIRIAdapter, BrowserBaseMCPAdapter, TwitterService } from 'twitter-services'
async function startAiriModule() { async function startAIRIModule() {
const browser = new BrowserBaseMCPAdapter(process.env.BROWSERBASE_API_KEY) const browser = new BrowserBaseMCPAdapter(process.env.BROWSERBASE_API_KEY)
await browser.initialize({ headless: true }) await browser.initialize({ headless: true })
const twitter = new TwitterService(browser) const twitter = new TwitterService(browser)
// Create Airi adapter // Create AIRI adapter
const airiAdapter = new AiriAdapter(twitter, { const airiAdapter = new AIRIAdapter(twitter, {
url: process.env.AIRI_URL, url: process.env.AIRI_URL,
token: process.env.AIRI_TOKEN token: process.env.AIRI_TOKEN
}) })
@@ -311,7 +311,7 @@ async function startAiriModule() {
// Start adapter // Start adapter
await airiAdapter.start() await airiAdapter.start()
console.log('Twitter service running as Airi module') console.log('Twitter service running as AIRI module')
} }
``` ```