Myrisle(私屿)是一款 iOS 本地情绪日记与自我整理工具。日记、情感分析和趋势数据保存在设备上;可选的“云端 AI”倾诉功能必须经过明确同意,并通过匿名 App Attest 和 Vercel FastAPI 代理访问 OpenRouter。
本应用不是医疗、心理治疗或紧急服务,也不提供诊断。
- Core Data 本地日记、图片、标签和情绪趋势。
- Qwen GGUF 本地情感分析与本地倾诉模型。
- 中英文、浅色/深色主题、设备端语音识别。
- 可选云端 AI:App Attest 匿名验证、Keychain 短期令牌和固定的 OpenRouter 免费模型。
- 云端代理不保存对话正文;服务端只保存验证、公钥、短期会话和限流状态。
MindVault/ iOS App
MindVaultTests/ iOS 单元测试
Config/ 可提交的公开 Debug/Release 配置
server/ FastAPI + Vercel 服务端
server/privacy-policy.html 由 `/privacy` 提供的中英文隐私政策
发布指南.md TestFlight / App Store 发布检查
要求 Xcode 26、iOS 18.6+。下载 qwen2.5-1.5b-instruct-q4_k_m.gguf 后放入:
MindVault/SelfAi/qwen2.5-1.5b-instruct-q4_k_m.gguf
打开 MindVault.xcodeproj,选择 Myrisle Scheme 后运行。公开 API 地址分别位于:
Config/Debug.xcconfigConfig/Release.xcconfig
客户端不需要、也不得包含 OpenRouter API Key。
模拟器不能进行真实 App Attest。若要联调 Vercel Preview,可复制 Config/Secrets.xcconfig.example 为已忽略的 Config/Secrets.xcconfig,设置 Preview URL 与 DEV_BYPASS_TOKEN;也可使用同名 Xcode Scheme 环境变量。该凭据只会被 Debug 模拟器读取,不得提交或用于 Production。
cd server
uv sync --all-groups
cp .env.example .env.local
uv run uvicorn app.main:app --reload默认 CLOUD_CHAT_ENABLED=false。本地调试时配置 .env.local;生产密钥只写入 Vercel Environment Variables。
uv run ruff check app tests
uv run mypy app
uv run pytestVercel 项目 Root Directory 设置为 server,函数区域为 hkg1。Production 和 Preview 必须使用独立的 OpenRouter key、Redis 命名空间与 App Attest 环境。
- 日记和本地分析结果不会发送到 MindVault 服务端。
- 只有用户启用云端 AI 后,最近最多 15 条倾诉消息才会发送到 Vercel、OpenRouter 和实际模型提供商。
- 服务端固定
inclusionai/ling-3.0-flash:free,不传入provider路由筛选。根据 2026-07-31 的 OpenRouter 端点信息,该模型只有 NovitaAI 端点,标记为 Private、Zero Retention 且不用于提示词训练;端点和政策可能变化,发布前需重新核验。 - 设置中可撤销云端同意并删除匿名 App Attest 身份。
- 日志不得输出日记、提示词、聊天输入、模型回复或第三方原始错误正文。
详见 server/README.md 与 隐私政策。
# 服务端
cd server && uv run pytest
# iOS
xcodebuild test \
-project MindVault.xcodeproj \
-scheme Myrisle \
-destination 'platform=iOS Simulator,name=iPhone 17 Pro'见 LICENSE.md。