人工智能AI AgentMCP 服务工具调用GUI 自动化语音数字人交互助手【免费下载链接】airi 自托管、归你拥有的 Grok 风格 AI 伴侣与 waifu / 赛博生命灵魂容器目标是接近 Neuro-sama 的高度支持实时语音聊天、Minecraft 和 Factorio 游玩支持 Web / macOS / Windows。项目地址https://gitcode.com/moeru-ai/airi点击查看免费下载在 AIRI 仓库中stage-tamagotchi-kirie应用把 Stage Tamagotchi 的 Vue 渲染器跑在 Godot Kirie WebView 桌面宿主里。平台验证文档 记录了该迁移项目的验收证据、自动化边界与历次命令结果。读完本文你能掌握这套“构建检查 原生会话验收 证据留痕”的三层验证方法论理解 Windows/macOS 双平台验收记录的组织方式并能对照仓库源码麦克风权限协调器、Spotlight 快捷键、渲染器 URL 策略等理解每条证据背后的实现依据。验证的范围与证据边界文档开篇即声明了验收记录的适用边界这是理解整份验证记录的前提每条结果只适用于其所属平台、依赖基线与已检查的流程Each result applies only to its platform, dependency baseline, and checked flow构建与路由检查不等同于原生验收一次成功的 build 或路由遍历不构成对后续变更的验收依据迁移状态由 MIGRATION.md 拥有当前验收口径简化决策的证据由 消融评审 拥有本地临时产物截图、日志只是证据引用不是仓库内的测试夹具。这种“证据不随源码变更自动延续”的原则贯穿全文2026-09-30 的框架简化批次之后此前所有 Windows 通过项都不再扩展平台矩阵——MIGRATION.md 明确要求“历史通过项不覆盖当前简化需要重新执行相关原生流程”。记录的检查基线验证文档用一张基线表压缩了各轮检查命令与结果原文完整继承如下基线命令与结果主集成分支2026-09-29从b40e3e87b合并f65867e29根 typecheck54 个任务通过。Web/C# 构建与 C# 测试通过。Vitest107 个测试通过。改动源文件 lint 通过。根 lint 因被忽略的产物文件失败。Windows2026-09-29应用fdc9161c8应用 typecheck 通过。Vitest13 个文件、42 个测试通过。C# 测试与 Web/C# 构建通过C# 无警告。同一 Windows 会话根 typecheck53 个任务通过52 个命中缓存。根 lint41 个产物错误。git diff --check通过。Windows Spotlight 修正C# 构建、C# 测试、dotnet format --verify-no-changes --no-restore、根 typecheck 通过。根 lint 仍保留 41 个错误。值得注意的是“根 lint 失败”的定性这些错误全部来自被 git 忽略的构建产物文件而不是源码回归。文档将其与 Windows 会话的 41 个错误、后来 macOS 评审的 1,715 个错误并列记录见 MIGRATION.md 的附加观察说明 lint 失败需要区分“检出产物差异”与“真实代码问题”。命令序列从哪里来验证文档把命令序列的权威定义交给 README 的 Checks and build 一节。结合仓库实际配置该应用的检查链由以下部分组成环境工具mise.toml 通过vfox-godot插件固定godot 4.7.2-stable_mono仓库根的.tool-versions再固定 Node.js、pnpm 与 .NET 版本所有命令通过mise x --前缀在锁定工具链中执行应用脚本package.json 定义了四个关键脚本——typecheckvue-tsc -p src-web/tsconfig.json --noEmit、test:unitvitest run --config vitest.config.ts、buildkirie build同时产出 Web 资产与 C# 程序集不做导出打包、devkirie dev启动 Vite、Godot 与 CEF 渲染器C# 契约测试mise x -- dotnet run --project tests/StageTamagotchiKirie.Tests运行 Program.cs 这个自包含的 C# 测试宿主前端单测vitest.config.ts 分成两个 project——nodejsdom 环境覆盖host-context/**/*.test.ts与window-context.test.ts和browserPlaywright headless Chromium覆盖*.browser.test.ts。C# 测试宿主 Program.cs 的Main依次执行窗口几何、Spotlight 快捷键策略、原生缩放边缘、Onboarding 标题栏拖拽区、渲染器 URL 策略、CEF Inspector 目标选择、麦克风权限协调聚合、持久化、超时、关停以及 loopback 认证服务器的三个 HTTP 用例任一断言失败即返回退出码 1。每个用例开头都以// ROOT CAUSE:注释块写明它守护的缺陷根因——例如麦克风权限用例注明“CEF 会在一个 AIRI 权限弹窗打开期间发出并发请求逐请求弹原生模态会造成冲突决策并把原生请求标识暴露给渲染器”。这类注释让测试与验证证据形成闭环文档里“GAP-016/GAP-017 通过”的结论可以追溯到这些具体断言。Windows 验收证据验收环境与会话范围该 Windows 会话使用 Godot 4.7.2 Mono、Kirie 0.6.5、CEF 1.16.1NVIDIA RTX 4060 Laptop GPU单台 3200 × 2000 显示、200% 缩放缺失的 Android SDK 被明确排除在范围之外。会话覆盖的检查包括12 条 Settings 与 Devtools 路由均显示标题且无路由错误原生截屏确立了窗口透明性、pin/unpin 的 z-order、通知行为、外部链接、目录访问与已连接的 InspectorSettings 与 Chat 窗口经原生标题栏关闭后可重开中文 locale 从zh-CN归一化为zh-Hans并在重启后存活恢复的英文 locale 又在另一次重启后存活Main 与 Chat 共享 locale、权限、localStorage 与一个持久 cookie物理键盘 CtrlShiftK 产生了前台与后台各一组完整的 down/up 事件对用户验收了显示、移动、onboarding、登录、缩放与麦克风状态。这一覆盖面与 MIGRATION.md 的能力矩阵 对应Windows 记录了 23 项通过、1 项失败GAP-015 应用退出 CEF 访问违例、5 项延期无“部分测试或未测试”的悬置项。麦克风权限证据与权限协调器源码文档记录了麦克风权限的完整状态机验证状态查询、重置、授予持久化、跟随窗口拒绝、应用持有的流吊销全部通过应用持有的音轨从live变为ended且音频输入保持禁用后续在 Settings 中吊销返回not-determined并显示Not set。这些行为由 MicrophonePermissionCoordinator 实现源码与证据一一对应持久化拒绝Request在State ! NotDetermined时直接以State Granted解决调用方并返回null不弹出新提示对应“follower denial”“grant persistence”提示聚合同一代提示内的并发请求进入_pending列表只创建一次promptId对应“一个不透明 prompt ID 归拢多个原生请求”两分钟超时Expire在超过_promptTimeoutMilliseconds后以granted: false完成所有等待者状态保持NotDetermined对应 host-architecture 中“两分钟超时与关停拒绝待处理请求”的要求关停即拒绝Dispose将所有挂起请求解析为false。验证记录中同时留了一条未解决问题Chat 曾通过 i18n、analytics 与音频 store 记录Must be called at the top of a setup function异常该检查既未确立吊销失败、也未确立 Chat 失败。用户验收了 GAP-016 并把该异常排除在迁移失败之外文档明确“这一观察不产生任何修复要求”——这是证据记录中“观察”与“失败”的严格分界。Chat 证据从卡死到通过以及一条被明确限定的观察Chat 窗口最初的卡死原因是“等待麦克风状态但 Chat 没有处理器”。host 挂载修复就位后该初始化失败未再复现随后用临时 loopback provider 通过 Chat UI 返回确定性 SSE 回复完成初始化与两次发送消息与回复均被保存。文档随后记录了一条会话切换观察发送后切换到原始会话选中测试会话时其回复被恢复。但文档用三段限定语收窄了这条观察的效力——记录未能通过常规会话创建与选择复现该切换也不能排除测试布置的影响因此它不构成迁移失败、不指明源码原因、也不指向更早的 macOS 修复。这种“证据效力声明”是本文档最值得借鉴的写法。Spotlight 修正一个原生窗口可见性缺陷的完整定位这是文档中最有源码深度的案例。修正前直接打开 Spotlight 会创建一个 CEF 目标却没有可见的原生窗口宿主报告visibletrue且focusedtrue但 HWND 样式为0x860B0000IsWindowVisible返回false。修正后样式变为0x960B0000且可见性返回true差异正是WS_VISIBLE位。文档给出的根因链是在Show()之后重复进行无边框、置顶、缩放与可聚焦四项赋值重写了 Windows 窗口样式而 Godot 内部可见性保持为 true因此再次调用Show()也无法恢复原生可见性。修复方式移除这四处重复赋值保留场景标志、透明性、原生聚焦与 CEF 聚焦。修正后的验证结果直接打开、重复打开、隐藏后重开均通过通过扫描码SendInput发送 CtrlShiftA 显示 Spotlight 并聚焦其输入框原生截屏在(880, 419, 1440, 200)区域显示了透明周边物理键盘与 macOS 回归检查保持待定且未变更任何依赖。仓库侧的对应实现可见于 SpotlightWindow.csInitialize依次挂载 Kirie 客户端、Eventa 上下文、Platform、麦克风权限与 Chat 处理器创建指向RendererUrl.ForMinimalFollowerRoute(rendererUrl, /spotlight)的 WebViewSpotlightHost 则负责快捷键安全策略——默认快捷键为KeyA ctrlshiftIsSafe要求非空按键且至少一个cmd/ctrl/alt/super修饰键持久化配置中不安全的快捷键会在加载时拒绝。历史 macOS 证据macOS 一侧以日期 基线表格保留历史记录日期与基线记录范围2026-09-17Kirie 0.3.0Godot 4.7.1宿主适配器、窗口、权限、导航与认证2026-09-18CEF、Inspector 与账户状态下全部 117 条静态路由和 3 条参数化路由2026-09-19CEF 1.16.0跨窗口 cookie、storage、BroadcastChannel 与 Web Lock 探针2026-09-20Kirie 0.4.1CEF 1.16.1原生重开、链接、目录、通知、共享上下文与修复后的 Chat 发送2026-09-21Kirie 0.4.2Godot 4.7.2Metal Forward 加速 OSR、重复上下文检查以及用户对 Spotlight/通知的验收2026-09-24Kirie 0.6.2主启动与依赖/构建检查2026-09-29Kirie 0.6.536 个 Node 与 6 个浏览器测试通过此前 lint 记录 32 个产物错误同时明确列出没有运行覆盖的缺口Widget、desktop-overlay 启动与 inlay 窗口缺少记录在案的原生运行覆盖Kirie 不创建 inlay 窗口其路由仍保留 Electron 引用godot-stage:get-status仍在无模型里程碑之外。文档还给出缺口判定的规则一个表面只有在范围内失败被复现后才成为缺口。自动化与证据的限制验证会话使用 AUV 0.0.22commit2957b9ff且未打依赖补丁全新 clone 以core.symlinkstrue解决了初始 proto 符号链接检出失败。Windows 操作通过auv serve与显式 Device 成功尽管直接 CLI 调用失败200% 缩放下截屏与 bounds 使用物理像素、输入使用逻辑坐标——逻辑坐标(1111, 700)的输入实际落在物理坐标(2223, 1401)附近。最关键的自动化限制是全局快捷键AUV 的input.key拒绝在 Windows 上执行经input.holdKeys的合成组合键能到达 CEF但没有触发快捷键回调AUV 写入的是零扫描码而 Kirie 的 Windows 快捷键运行时按扫描码匹配——文档明确这一解释仍是假设物理 CtrlShiftK 通过了测试因此“自动化失败本身不能否决快捷键能力”。临时截图与日志保留在airi-auv-windows-probe/、airi-auv-acceptance-records-20260929/、airi-gap007/等本地目录不可变的完整记录含 run ID保留在外部快照中。会话结束时执行了清理移除 provider、会话、cookie、存储探针、快捷键与音轨恢复英文 locale、授予麦克风权限并禁用音频输入。原始验收未改动任何源码或依赖文件只有后来的 Spotlight 修正改动了 C# 源码。当前框架批次2026-09-30 简化之后2026-09-30 的框架简化改变了宿主适配器与渲染器 bootstrap移除本地 Electron 运行时备选与延迟 Node 服务的自动启动删除两个过时 Electron 测试用例与静态更新器测试文件且没有新增永久测试。该批次的完整命令与结果表如下原文完整继承命令结果mise x -- pnpm typecheck通过54 个任务含 Kirie 应用。mise x -- pnpm -F proj-airi/stage-tamagotchi-kirie test:unit通过12 个文件、38 个既有测试。mise x -- pnpm -F proj-airi/stage-tamagotchi-kirie build通过Web 资产与 C# 程序集C# 无警告无错误既有 Web 构建警告保留。mise x -- dotnet run --project tests/StageTamagotchiKirie.Tests在应用目录下通过。mise x -- pnpm kirie devmacOS 原生会话以 Metal Forward 与加速 OSR 启动应用退出返回进程码 0 和 4 个 ObjectDB 泄漏。git diff --name-only --diff-filterACMR -z \| xargs -0 mise x -- pnpm exec moeru-lint通过无错误保留 7 个既有警告。mise x -- pnpm lint失败1,715 个错误与 698 个警告错误文件全部为被忽略的产物。git diff --check通过。原生评审在 Kirie 0.6.5、Godot 4.7.2、CEF 1.16.1 上进行真实 Eventa 请求打开了 Settings 与 Chat重复请求复用既有 CEF 目标权限页显示标题并在无路由错误的情况下保存拒绝状态Chat 完成初始化并显示输入框本次评审未发送 provider 请求共享插件 inspector 报告isAvailablefalseleader 的本地 Kokoro 预加载到达就绪状态日志中没有延迟 bootstrap 请求失败。该批次同样记录了自己的负面边界两个探针因对窗口级处理器用错了渲染器被终止其挂起请求被排除在验收证据之外退出请求在响应到达前关闭了 CDP——进程退出只证明拆除完成不证明 quit 响应成功送达既有泄漏、Vue 属性警告与原生依赖警告仍未解决本批次检查不确立Windows 验收、认证、Chat 发送、模型渲染或任何平台上的安全 CEF 关停。如何在当前仓库复现这套验证结合 README 与验证文档复现路径为# 仓库根安装锁定工具链与工作区依赖 mise install mise x -- pnpm install cd apps/stage-tamagotchi-kirie mise install # 安装与 npm/NuGet 版本匹配的 Kirie addon并检查 CEF mise x -- pnpm kirie doctor --fix kirie-addon mise x -- pnpm kirie doctor mise x -- pnpm kirie doctor --fix godot-cef # 构建 C# 并启动开发会话Vite Godot CEF mise x -- dotnet build mise x -- pnpm kirie dev # 检查与构建应用目录 mise x -- pnpm typecheck mise x -- pnpm test:unit mise x -- dotnet run --project tests/StageTamagotchiKirie.Tests mise x -- pnpm build # 检查仓库根 cd /data/web/disk1/git_repo/moeru-ai/airi mise x -- pnpm typecheck mise x -- pnpm lint适用前提与限制构建成功不确立原生验收pnpm build不导出、不打包Windows CEF 关停问题GAP-015 记录在 MIGRATION.md 中仍是打开的阻塞项生产打包保持延期。Web 侧构建细节多入口main/beat-sync、RUNTIME_ENVIRONMENTelectron的 define、页面路由的包含与排除见 kirie.config.ts。这套验证方法的可迁移要点证据与代码解耦存档每条验收结论绑定平台、依赖基线Kirie 0.6.5 / Godot 4.7.2 / CEF 1.16.1与被检查的具体流程源码批次变更后历史通过项自动失效必须重跑区分命令结果与原生验收typecheck、Vitest、C# 契约测试、lint 各管一段任何一段都不被夸大为端到端能力证明自动化失败不等于能力缺失AUV 扫描码假说被明确标注为“仍是假设”物理键盘通过才是快捷键能力的证据观察与失败严格分界麦克风异常被用户验收并排除出迁移失败但完整记录在案且声明不产生修复要求会话切换观察因无法通过常规操作复现而仅作为观察保留负结果同样成文ObjectDB 泄漏数量、CEF 关停访问违例、两个被排除的探针、提前关闭的 CDP都作为限制写入记录而不是被省略。对正在做“既有 Web 应用迁入原生桌面宿主”类迁移的开发者来说这份文档的实际价值不在于某个具体结论而在于它示范了如何把验收证据写成可审计、可复现、且对后续变更自我失效的形态。赞分享人工智能AI AgentMCP 服务工具调用GUI 自动化语音数字人交互助手【免费下载链接】airi 自托管、归你拥有的 Grok 风格 AI 伴侣与 waifu / 赛博生命灵魂容器目标是接近 Neuro-sama 的高度支持实时语音聊天、Minecraft 和 Factorio 游玩支持 Web / macOS / Windows。项目地址https://gitcode.com/moeru-ai/airi点击查看免费下载相关推荐AIRI stage-tamagotchi-kirieGodot KirieCEF桌面宿主架构与实现边界解析AIRI stage tamagotchi kirieGodot KirieCEF桌面宿主架构与实现边界解析 本文围绕 AIRI 仓库中 apps/s人工智能AI AgentMCP 服务工具调用GUI 自动化语音数字人交互助手后端使用 Devtools Sample Plugin 在 Stage Tamagotchi 中验证 AIRI 插件宿主生命周期使用 Devtools Sample Plugin 在 Stage Tamagotchi 中验证 AIRI 插件宿主生命周期 本文以 Stage Tamagot人工智能AI 应用大模型AI Agent交互助手语音数字人后端前端桌面应用移动开发GUI 自动化MCP 服务AIRI 桌面端Stage Tamagotchi开发指南Electron 应用的运行、验证与构建AIRI 桌面端Stage Tamagotchi开发指南Electron 应用的运行、验证与构建 本篇指南面向需要修改或扩展 AIRI 桌面端的开发者系人工智能AI AgentMCP 服务工具调用GUI 自动化语音数字人交互助手后端上一篇为什么你的ComfyUI插件功能不全3步完整安装ComfyUI-Impact-Pack图像增强插件下一篇专业级Foobar2000歌词增强方案ESLyric-LyricsSource配置实战指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考