文档版本:0.1.0-draft
更新日期:2026-07-17
状态:开发基线
Nimora Platform 是一个跨平台桌面生命体运行时。它将桌宠体验、自动化、技能扩展、开放连接器和可控 AI Agent 组合为一个本地优先、权限可控、可审计的桌面平台。
- 先是生命体,再是工具:陪伴感、动作反馈和长期人格是用户价值入口。
- 能力全部注册:命令、动作、触发器、工具、资源和 UI 贡献均通过稳定契约注册。
- 官方能力使用公开 API:官方技能与第三方技能遵循相同扩展边界。
- 本地优先且默认安全:开放入口默认关闭,密钥进入系统安全存储,高风险动作强制确认。
- 契约版本化:事件、扩展、资源包、API 和配置均可独立演进。
- 可降级:无网络、无 AI、单个技能故障时,核心桌宠仍可运行。
- 可编程但不越权:用户代码通过 Manifest 声明能力,经隔离 Worker 与 Capability Gateway 调用模块;自动事件支持
serial、drop、cancel-previous三种宿主监督策略。
所有开发工作从 docs/INDEX.md 开始。该文件定义文档优先级、术语和变更流程。
- Desktop shell:Tauri 2
- Core:Rust
- UI 与渲染:TypeScript、WebView、PixiJS
- 扩展 SDK:TypeScript,稳定 JSON/IPC 契约
- Node 工具链:Corepack + pnpm,唯一锁文件
pnpm-lock.yaml - 配置:用户侧 YAML,运行时 JSON Schema 校验
- 本地存储:SQLite + 文件资源仓库 + OS Secure Store
- 自动化测试:Rust tests、Vitest、Playwright、跨平台桌面冒烟测试
apps/
desktop/ Tauri 桌面客户端
creator-studio/ 资源与扩展创作者工具
crates/
runtime-core/ 领域模型、命令、事件、权限
platform-adapters/ Windows/macOS 系统适配
extension-supervisor/ 扩展进程监督与能力代理
packages/
schemas/ 全部版本化 JSON Schema
sdk/ Skill/Connector/Asset SDK
renderer/ 宠物渲染和动画图
automation/ 规则模型与编辑器共享代码
client/ Gateway JS Client
extensions/official/ 官方扩展
assets/official/ 官方角色和主题资源
docs/ 规范、ADR、指南和运行手册
tests/ contract、integration、e2e、fixtures
项目当前处于 M1 Creator Foundation 开发阶段。M0 已落地 Rust 领域核心、应用用例层、唯一当前 SQLite Schema、可创建与激活的离线 Profile、Command/Event Trace 关联、事务 Outbox 的租约/ACK/重试/死信/清理协议、自动 SQLite 一致性备份调度、启动前安全恢复、数据库损坏时的隔离恢复模式、脱敏诊断摘要、跨重启有界固定事件日志与可选导出、控制中心健康状态,以及 Tauri 双窗口、系统托盘和类型化 IPC。M1 已提供 nimora.asset/1 严格契约、限额归档导入、确定性导出、静态海报预览、Sprite Sequence/Atlas 真实渲染与回退、GLB 独立 Worker 探测、带 SHA-256 inventory 的本地 Character 包原子安装、nimora.animation-map/1 标准动作映射,以及 Pet Overlay 内由 Three.js 驱动的受控 GLB 2.0 WebGL 渲染和动作 cross-fade。具体 Outbox 消费者、VRM/Live2D Adapter、包签名、独立 Renderer 进程、自由文本日志/Trace 诊断导出与跨重启崩溃循环恢复仍需继续闭环;全量范围和证据以 docs/IMPLEMENTATION_STATUS.md 为准。
本地开发使用 pnpm 与 Rust stable:
pnpm install --frozen-lockfile
pnpm check
cargo test --workspace
cargo clippy --workspace --all-targets -- -D warnings
pnpm --dir apps/desktop tauri dev
cargo run -p nimora-cli --bin nimora -- ai provider probe
printf '%s' '{"prompt":"offline check"}' | cargo run -q -p nimora-cli --bin nimora -- ai run --input - --output json --offline所有 JavaScript/TypeScript 命令仅使用 pnpm,禁止使用 npm、Yarn 或 Bun。普通浏览器执行 pnpm --dir apps/desktop dev 时自动进入离线预览适配器,不调用伪造的原生能力。