2026-07-28 12:51:00 +08:00
2026-07-28 12:51:00 +08:00
2026-07-28 12:51:00 +08:00
2026-07-28 12:51:00 +08:00
2026-07-28 12:51:00 +08:00
2026-07-28 12:51:00 +08:00
2026-07-28 12:51:00 +08:00
2026-07-28 12:51:00 +08:00
2026-07-28 12:51:00 +08:00
2026-07-28 12:51:00 +08:00
2026-07-28 12:51:00 +08:00
2026-07-28 12:51:00 +08:00
2026-07-28 12:51:00 +08:00

听娜娜讲故事

nana-story 是一个本地优先、纯 BYOK 的 AI 对话游戏。V1 聚焦一段可回溯、可分支、状态可重放的单角色纵切。

当前阶段

M0 契约基线已建立;M1/M2 第一批可并行能力已集成。

目前包括:

  • Tauri 2 + Vue 3 + TypeScript 工程;
  • Rust workspace 与模块所有权边界;
  • Rust 领域类型作为契约唯一事实来源;
  • 生成的 JSON Schema 与 TypeScript DTO
  • canonical PlayerView fixture
  • 最小娜娜内容包;
  • 原子化状态 reducer,覆盖关系、许诺、知识、持有物、时钟与判定;
  • 可验证追加、恢复和回溯分叉语义的内存 StoryStore;
  • Turn 请求/结果校验、Fake Provider 与确定性世界书触发;
  • 可交互的主演出屏、持有物/线索/许诺、关系与回溯面板。

浏览器模式目前使用确定性的本地 Turn adapter。SQLite、真实 LAPP Turn 循环和分支持久化仍在后续里程碑中。

开发

要求:

  • Node.js 24+
  • pnpm 10.29.2
  • Rust 1.96
  • 与本仓库同级的 lapp-rs,固定到 lapp-rs.lock 中的提交
workspace/
├─ lapp-rs/
└─ nana-story/
pnpm install
pnpm verify
pnpm tauri dev

只验证前端和已提交契约时可运行:

pnpm verify:web

边界

  • 模型供应商协议与凭据处理属于 lapp-rs
  • 前端只接收 PlayerView,不会得到完整 RuntimeState
  • V1 不使用向量记忆库、导演 Agent 或多个完整角色。
  • 模型与前端都不能直接修改运行时状态。
S
Description
听娜娜讲故事:本地优先的 AI 对话叙事游戏
Readme
27 KiB
Languages
Rust 87.1%
TypeScript 6.9%
CSS 2.8%
Vue 2.6%
JavaScript 0.5%