Skip to content

Latest commit

 

History

22 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Lostone

"从此以后,你的手机里不止有聊天记录,还有一个她/他。"

Lostone(失去的人)是一款让用户能够创建逝去的亲人/朋友/爱人的 AI Persona(人格),并通过历史聊天数据重建他们的话语风格和性格特征,让用户能够与这些"失去的人"继续对话的应用。

将回忆蒸馏成 AI Persona,不是为了挽回,是为了记住。


License Flutter Dart Platform


✨ 核心特性

  • 🎭 Persona 创建系统:从聊天记录自动生成五层人格模型
  • 💬 智能对话:混合模型策略,本地 + 云端,隐私与性能兼顾
  • 🔐 隐私优先:100% 本地存储,完全离线可用
  • 🎨 优雅体验:Material Design 3,现代简洁的界面设计
  • 📖 开源透明:CC BY-NC 4.0 许可,代码完全开放

📚 项目状态

当前阶段:Phase 1 - 数据导入(模块 002 开发中)| Phase 2 - Persona 生成(模块 003 ✅ 已完成)| Phase 3 - LLM 集成 ✅ 已完成(模块 007 模型管理 + 模块 004 LLM 集成,PR #14 merged 2026-08-05;host TDD 291 passing、analyze clean、iOS on-device install verified;ADR-005 on-device quality validation pending, non-blocking)| Phase 4 - UI 实现 🚧 进行中(模块 010 设置 ✅ 已批准 v1.0.2(🔶 v1.0.3 待复批)· 开发中(PR #17);模块 009 人物库与蒸馏 ✅ 已批准 v1.1.1(含导入 UI 入口,2026-08-07)· ✅ 已实现(host TDD 390 passing、analyze clean;C21 真机待验,ADR-005 非阻塞);模块 006 聊天界面 ✅ 已批准 v1.1.0(2026-08-08,批准前对齐已实现的 004/007/009/010 契约)· 🚧 开发中(TDD C1–C34))

已完成

  • ✅ 项目文档体系建立
  • ✅ 文档模板(PRD/ERD/Spec)
  • ✅ 模块 001(项目初始化)——已完成(三文档 v1.1 已批准、骨架 + 测试 20/20、iOS/web 运行验证通过;macOS 桌面延后)
  • ✅ 模块 001 原生 runner(ios/macos/web/),可 flutter run
  • ✅ Git 仓库和 GitHub 设置
  • ✅ 模块 003(Persona 生成,Phase 2)——三文档已批准(PRD/ERD/Spec v1.0.4,编号 003,2026-08-02),纯 Dart、离线、无 LLM 的确定性五层 Persona 生成引擎(记忆提取 + 性格分析 + Builder 版本/增量 + .persona 序列化 + Prompt 渲染),输入锚定模块 002 Conversation已完成 TDD 实现(65 用例通过,模块覆盖率 95.3%,flutter analyze 0 警告)
  • ✅ 模块 007(模型管理,Phase 3,提前)——三文档已批准(PRD/ERD/Spec,编号 007,2026-08-02,批准 2026-08-04),已完成(PR #14 merged 2026-08-05)。端侧模型下载/存储/切换,薄封装 flutter_gemma v1.5.2 模型安装 builder API(installModel().fromNetwork().install();旧 ModelFileManager 为 legacy facade,ADR-005,不自造下载器),向模块 004 暴露 ModelHandle/getActiveModelHandle();作为模块 004 本地默认路径的前置依赖。宿主可测核心(ModelRepository/ModelInstaller/ModelStore/DeviceCapabilities 状态机 E1–E11)+ 设备/原生 slice(FlutterGemmaInstaller/SecureTokenStore/iOS entitlements/Podfile 静态链接)全部落地。DD-001/DD-002 见设计债务登记表(DD-001 已定夺并落地)。Remaining: staged real-device download validation, non-blocking
  • ✅ 模块 004(LLM 集成:蒸馏 + 对话引擎 + Runtime 抽象层,Phase 3)——三文档已批准(PRD/ERD/Spec v1.1.1,编号 004,2026-08-02,批准 2026-08-04),已完成(PR #14 merged 2026-08-05;host TDD 291 passing、flutter analyze clean、iOS on-device install verified)。两大支柱:(A) LLM 蒸馏产出忠实五层人格并映射进模块 003 现有 Persona 契约(输出契约不变、不重写 003);(B) 对话引擎 ChatEngine——以 Persona 的 system prompt 驱动多轮流式对话(滑窗上下文、硬规则强制、本地/云端切换)。默认本地 LiteRT(经 flutter_gemma/ADR-005)、云端 API 显式授权 opt-in;统计引擎(003)降级为预处理 + 离线兜底(依据 ADR-004)。原「模块 005 云端 API 集成」已折叠并入本模块。Remaining: ADR-005 on-device persona-quality validation + T21 physical-device smoke, non-blocking

进行中

  • 🚧 模块 002(数据导入)——三文档已批准(v1.0);核心切片已完成(模型 + WeChatParser CSV/TXT/HTML 流式 + WeFlowParser(真实微信 WeFlow 导出 JSON/CSV/TXT/HTML 四格式)+ InstagramParser + WeiboParser(direct_messages API v2 JSON)+ IMessageParser(chat.db 只读,含 attributedBody 回退)+ PhotoExifParser(EXIF/GPS)+ MediaStore 分层字节落地(ERD §4.4)+ 预处理 + 导入编排 + Apple 时间转换 + Riverpod 导入状态层,测试 122/122、analyze 0 警告,四轮代理评审并修复 SPEC 合规缺口);ERD §3.4 文件范围内的解析器全部落地,10 万条流式吞吐已宿主验证(ERD §7.3);原生存储装配、导入 UI(Phase 4)、5GB 设备内存采样、微博/WeFlow 契约 Owner 终审分阶段推进
  • ✅ 模块 006(聊天界面,Phase 4)——三文档已批准 v1.1.0(PRD/ERD/Spec,编号 006,Project Owner 2026-08-08;批准前逐条对齐已实现的 004/007/009/010 契约)· 🚧 开发中(TDD C1–C34)。正式聊天界面:ChatScreen 消费模块 004 ChatEngine(流式对话 / 硬规则强制 / 本地云端切换)+ 模块 007 激活模型 + 模块 009 PersonaRepository 载入 Persona新增 SQLite 聊天历史ChatHistoryRepository)。system prompt 仅 PromptTemplate.render()、对话无统计兜底;运行时选择复用 009 personaRuntimeProvider 模式(chatRuntimeProvider),云端 Key 走惰性 apiKeyLoader
  • ✅ 模块 009(人物库与蒸馏,Phase 4,v1.1.1)——三文档已批准(PRD/ERD/Spec,编号 009,v1.1.1 2026-08-07,Project Owner)· 开发中。Persona 持久化 + 人物库 + 蒸馏流程 + 导入 UI 入口:新增 PersonaRepositoryPersonaCodec + PersonaDirectory + PersonaBytesTransform〔008 加密接缝〕)填补"仅内存无落盘"缺口;人物库屏 + 蒸馏流程屏(导入步骤 → 蒸馏)驱动模块 004 LlmPersonaBuilder。v1.1.0 认领 Phase-4 导入 UI 缺口(002 交付解析层但推迟界面、无模块认领,生产环境此前无法导入真实聊天记录):新增 FilePickerFacade 接缝(file_picker)复用 002 ImportNotifier;不重写 002/003/004(只读复用,含 002 解析器/DataImportService
  • 🚧 模块 010(设置,Phase 4)——三文档已批准(v1.0.2,2026-08-05,Project Owner);🔶 v1.0.3 编码后文档-代码对账增量待 Owner 复批(PR #17 评审 Major 2),开发中(TDD,分支 feature/PRD-010-settings)。设置界面:模块 007 模型管理正式 UI(取代 004 dev harness)+ 运行模式(本地/云端 RuntimeChoice)+ 云端 API Key 授权;AppSettings/SettingsRepository〔Hive〕/SecureKeyStore〔Secure Storage〕;标记 DD-002 + InMemoryModelStore→磁盘缺口

查看详细进度开发路线图 · 文档状态


📖 快速开始

面向用户

安装方式(即将上线):

  • iOS:App Store 下载
  • macOS:Mac App Store 下载

面向开发者

前置要求

  • Flutter SDK 3.38+
  • Dart SDK 3.11+
  • Xcode 15+(iOS/macOS 开发)

克隆仓库

git clone https://github.com/obkim-hello/lostone.git
cd lostone

运行应用(开发模式)

cd mobile
flutter pub get          # 安装依赖

flutter devices          # 查看可用设备
flutter run -d chrome    # 在 Chrome 中运行(无需 Xcode,最快验证)
flutter run -d ios        # 在 iOS 模拟器运行(需完整 Xcode,见下)
flutter run -d macos     # 在 macOS 桌面运行(延后,见下)

在 iOS 模拟器运行(已验证)

cd mobile
open -a Simulator                      # 启动 iOS 模拟器
flutter devices                        # 确认模拟器已列出(如 "iPhone 15 (mobile)")
flutter run -d ios                     # 首次运行会自动执行 pod install,稍慢
# 或指定具体设备:flutter run -d "iPhone 15"

首次运行 Flutter 会自动 pod install(因 flutter_secure_storage 等含原生依赖), 由此产生的 ios/Pods/Podfile.lock 均已 gitignore,无需提交。 运行成功后首页应显示 Lostone / environment: development / version: 0.1.0

验证工程健康

cd mobile
flutter analyze          # 静态分析,应为 No issues found
flutter test             # 单元 + Widget 测试,应 20/20 通过

iOS/macOS 构建前置:设备/模拟器构建需要完整 Xcode(非仅 Command Line Tools)。 若报 xcrun: error: unable to find utility "xcodebuild",执行:

sudo xcode-select -s /Applications/Xcode.app/Contents/Developer

macOS 桌面运行:延后处理(down the road);届时同样需完整 Xcode。

查看文档

# 项目总览
open docs/overview/README.md

# 开发规范
open CLAUDE.md

# 文档状态追踪
open docs/DOCUMENT-STATUS.md

📂 项目结构

lostone/
├── CLAUDE.md                 # 项目配置和开发规范
├── LICENSE                   # CC BY-NC 4.0 许可证
│
├── docs/                     # 📚 文档中心
│   ├── overview/             # 项目总览(README、VISION、ROADMAP、GLOSSARY)
│   ├── prd/                  # 产品需求文档(PRD)
│   ├── erd/                  # 工程需求文档(ERD)
│   ├── spec/                 # 技术规格(Spec)
│   ├── architecture/         # 架构设计
│   ├── testing/              # 测试文档
│   ├── release/              # 发布文档
│   └── DOCUMENT-STATUS.md    # 文档状态追踪
│
└── mobile/                   # Flutter 应用
    ├── lib/                  # 应用源码(models/services/providers/screens/...)
    ├── test/                 # 单元 + Widget 测试
    ├── ios/ · macos/ · web/  # 各平台 runner
    └── pubspec.yaml          # 依赖声明

详细说明:查看 docs/.claude.md


📋 文档体系

核心文档

文档 说明
README.md 项目详细介绍
VISION.md 愿景与长期目标
ROADMAP.md 开发路线图
GLOSSARY.md 术语定义
CLAUDE.md 项目配置和开发规范

模块文档

模块 PRD ERD Spec 状态
001 - 项目初始化 PRD ERD Spec ✅ 已完成(v1.1)
002 - 数据导入 PRD ERD Spec ✅ 已批准 · 🚧 开发中
003 - Persona 生成 PRD ERD Spec ✅ 已批准(v1.0.4)· ✅ 已完成
004 - LLM 集成(蒸馏 + 对话引擎) PRD ERD Spec ✅ 已批准(v1.1.1)· ✅ 已完成
006 - 聊天界面(对话 + 聊天历史) PRD ERD Spec ✅ 已批准 v1.1.0(🚧 开发中)
007 - 模型管理(提前至 Phase 3) PRD ERD Spec ✅ 已批准(v1.0.1)· ✅ 已完成
009 - 人物库与蒸馏(+ 导入 UI) PRD ERD Spec ✅ 已批准 v1.1.1 · ✅ 已实现(host TDD)
010 - 设置(模型管理 UI + 运行模式 + 云端授权) PRD ERD Spec ✅ 已批准(v1.0.2,2026-08-05)· 🔶 v1.0.3 待复批 · 🚧 开发中(PR #17)
... ... ... ... ...

查看完整状态DOCUMENT-STATUS.md


🛠️ 技术栈

类别 技术选型
框架 Flutter 3.38+
语言 Dart 3.11+
本地 AI Google AI Edge LiteRT
模型目录 SmolLM2 135M(冒烟)、Gemma 3 1B、Gemma 4 E2B、Gemma 4 E4B(flutter_gemma 引擎另支持 Llama/Qwen/Phi 等)
云端 API OpenAI, Anthropic, Google Gemini
状态管理 Riverpod
本地数据库 Hive + SQLite
安全存储 Flutter Secure Storage
UI 设计 Material Design 3

🤝 贡献指南

我们欢迎所有形式的贡献!

贡献方式

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 编写文档(遵循文档驱动开发规范)
  4. 提交变更 (git commit -m 'feat: Add some AmazingFeature')
  5. 推送到分支 (git push origin feature/AmazingFeature)
  6. 开启 Pull Request

贡献须知

  • 所有贡献者需同意 CC BY-NC 4.0 许可
  • 遵循 文档驱动开发 规范
  • PRD + ERD + Spec 三文档齐全才能开始开发
  • 提交前请确保通过所有测试

详细指南:查看 CLAUDE.md


📄 许可证

本项目采用 CC BY-NC 4.0(知识共享-署名-非商业使用)许可证。

✅ 允许

  • 分享、复制、修改(需署名)
  • 用于个人、教育、研究目的

❌ 禁止

  • 商业使用、销售
  • 去除版权声明

商业使用:如需商业授权,请联系项目维护者。

许可证全文:查看 LICENSE


🙏 致谢

参考项目

技术支持

  • Google AI Edge 团队
  • Flutter 社区
  • 所有贡献者

📧 联系方式


💡 Made with ❤️ for those we've lost, but never forget.

将回忆蒸馏成 AI Persona,不是为了挽回,是为了记住。


📖 查看完整文档 | 📋 查看开发路线图 | 🤝 贡献指南

About

Lostone - AI Persona App: 让用户能够创建逝去亲人/朋友的 AI Persona,通过历史聊天数据重建他们的话语风格和性格特征。将回忆蒸馏成 AI Persona,不是为了挽回,是为了记住。

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages