把你的内在世界,做成一个可以走进去、并随你生长的三维空间。
名字取自 1990 年钱学森对 "Virtual Reality" 的译法——"灵境",一个虚的、却能走进去的、属于个人精神的空间。
一句话定位:会用一句话描述自己,就能拥有一个属于自己的世界——往里写、往里放,它逐渐变成"你"。
这是 MVP(阶段 ①+②+③):一个房间、三个功能区、内容可写可存、刷新仍在、可导出复现。
npm install
npm run dev # http://localhost:5173打开后:
- 拖拽环视房间,滚轮缩放。
- 点击书架 / 物件基座 / 唱片机任一功能区,镜头平滑飞入;左上"← 返回房间"回到全景。
- 书房:写一段思考 → "放进书架",书脊随之 +1;点书脊或列表项可重读、编辑、删除。
- 物件博物馆:填标题/来历,选一个几何体与颜色 → "放上基座",可旋转端详。
- 唱片机:贴一个音频链接 + 标题 → 播放,唱片随之转动。
- 顶栏:暖/冷/中/雨 切换房间心境(光照随之变);最近 看时间线;导出/导入 备份与复现整个世界。
所有内容存在浏览器本地(IndexedDB),刷新不丢。导出的 JSON 就是你拥有的整个世界,可自行同步到 OneDrive / Obsidian。
| 命令 | 作用 |
|---|---|
npm run dev |
本地开发(HMR) |
npm test |
单元测试(io 往返 / IndexedDB 往返 / store) |
npm run build |
类型检查 + 生产构建 |
npm run preview |
预览生产构建 |
配置即唯一真相源:整个世界由 { world, entries } 描述,渲染层只读它。
因此"生长 / 时间旅行 / 后期接 AI"都只是往数据里追加,渲染层无需改动。
src/
config/ types.ts(核心契约) · defaultWorld.ts(初始世界)
store/ useWorld.ts(zustand 唯一真相源 + CRUD)
data/ db.ts(Dexie 落盘) · io.ts(导出/导入与校验)
scene/ Experience/Room/Lighting/CameraRig + zones/(书架·物件·唱片机)
ui/ Hud + 各功能区面板(DOM 覆盖层)
hooks/ usePersistence(启动时从本地水合)
约束与取舍见 CLAUDE.md(仓库守则)与 DECISIONS.md(选型理由)。
时间旅行滑条、AI 自然语言生成配置、香气室 / 人物志墙、照片转 3D、多用户云同步。 内核已为这些留好了位置——它们都只是"往数据里加",不动渲染层。