8.2 KiB
Life OS / 人生操作系统
以桌面操作系统为交互方式的个人记录网站。用 App 记录日常、管理目标与待办,并沿时间线回看已经留下的内容。
在线站点:Life OS · 当前应用版本:v1.16.0 · 更新日志
功能
| App | 用途 |
|---|---|
| 今日 | 为选定日期写记忆,记录天气、1–5 能量、标题、标签、地点和关联任务;每日电影是写作提示,不会替代记忆标题。 |
| 时间线 | 按日期浏览记忆,使用关键词或标签筛选,编辑、删除和收藏。 |
| 博物馆 | 回看收藏的记忆。 |
| 目标与待办 | 创建目标和任务,设置截止日期、优先级和完成状态;目标倒计时可选择显示在桌面。 |
| 日历 | 在月视图与日视图中查看记忆、任务和目标节点,并为选定日期新增记忆。 |
| 数据库管理器 | 在再次登录并确认风险后,按表查看、创建、编辑和删除当前账号的云端记录。 |
| 洞察 | 周报和月报展示记录频率、完成任务数、常见天气、能量记录及收藏或标记高光的记忆;仅依据已保存的数据统计。 |
| 档案 | 查看记录概况并维护个人资料。 |
| 浏览器 | 在桌面窗口里打开网页或使用 Google 搜索,支持后退、前进、刷新和外部打开。默认打开 Google;第三方网站可能禁止 iframe 嵌入。 |
| 终端 | 逐项创建记忆、目标与待办;选择并确认删除记录,管理完成状态,查询数据和打开其他 App。 |
| 系统设置 | 按首页、个性化、通知、语言、数据与备份、关于分类浏览;选择主题、壁纸、桌面快捷方式和开机 App,管理备份与通知。 |
通知权限需手动授予,开关和时间仅保存在当前浏览器。网页打开时检查提醒;关闭网站后无法保证定时送达,如需关闭网页后的可靠提醒,需要另行接入推送服务。
桌面端支持单击选择、双击打开 App、多窗口、任务栏恢复、图标拖动排列和窗口布局记忆。拖动图标或小部件时会显示吸附网格;目标倒计时、时钟、今日概览与快捷操作小部件可移动、调整大小和分别开关。移动端以横排图标和全屏 App 为主,小部件在桌面下方排列。可选必应每日图片、内置背景或自定义 HTTPS 图片链接。中文与英文可自动跟随浏览器语言,也可手动选择。
快捷键:Ctrl / ⌘ + K 打开启动器,Ctrl / ⌘ + F 搜索记忆,Ctrl / ⌘ + S 保存今日记忆;Alt + 1–9 打开原有 App,Alt + 0 打开终端。终端内 ↑↓ 浏览命令历史,Tab 补全命令,记忆正文输入时 Ctrl / ⌘ + Enter 保存。站点包含 PWA 清单和 Service Worker,离线时可打开已缓存的应用外壳;云同步、外部网页与必应图片仍需要联网。
终端首次打开显示欢迎信息,输入 help 查看命令。memory add、goal add、task add 可逐项创建;回车保留默认值,back 返回,cancel 取消。memory delete、goal delete、task delete 会列出记录供选择,并要求输入 yes 确认。原有带参数的快速输入仍可用,例如 memory add "实验记录" --date 2026-09-28 --tag 学习 --text "完成实验"、task add "背单词" --due tomorrow --priority high。date、time、datetime 读取当前设备时间;另有 uptime、status、apps、history、echo、version 等命令。终端只执行明确支持的 Life OS 操作,不是系统 shell。
浏览器开发者工具的 Console 也可使用同一套命令:LifeOS.help()、LifeOS.run('date')、LifeOS.run('memory add');逐项填写后用 LifeOS.note('正文') 保存记忆,或用 LifeOS.cancel() 取消。该入口不会替换或拦截浏览器原生的 console,删除操作同样需要在后续调用 LifeOS.run('yes') 确认。
数据与备份
站点使用 ChatGPT 登录标识隔离不同用户的数据。登录后,资料通过同源 API 保存到 Sites 的 D1 数据库;浏览器 localStorage 充当缓存、草稿及首次迁移来源。首次云端恢复前,本地资料会保留一份迁移前副本。浏览器缓存与 JSON 备份仍使用 lifeos_system.tasksBoard;云端将其中的目标和待办拆分为独立记录。
系统设置 → 导出数据 会生成 JSON 备份;导入支持合并或覆盖。备份格式使用 schemaVersion: 2,仍可导入 v1 备份。壁纸来源、快捷方式、开机 App 和小部件开关包含在同步与备份中;窗口布局与小部件格位分别保存在本设备的 lifeos_window_layout_v1、lifeos_widget_layout_v1,也包含在 JSON 导出中,覆盖导入时可恢复。未保存的今日草稿仅留在本机。
主要本地数据键:lifeos_memories、lifeos_museum、lifeos_profile、lifeos_settings、lifeos_system。云端表结构见 drizzle/0001_lifeos_records.sql:记忆、标签、目标、待办、收藏各自按记录保存,资料与设置保留按用户存储的 JSON。旧版 lifeos_states 作为只读迁移来源保留;用户首次访问新版本时自动回填新表,旧表不会被清空。单条记录的修改使用版本号校验;冲突时会保存本地副本并要求选择。旧版浏览器标签页需刷新,整份状态写入接口已停用,避免覆盖新数据。应用的备份 schemaVersion: 2 与数据库迁移编号是两回事。建议定期导出备份。
数据库管理器的服务器固定为本站 D1,用户名固定为 lifeos-admin。每个 ChatGPT 账号首次打开管理器时设置自己的密码(至少 12 个字符),旧版共用口令不再有效。密码以独立盐值与 PBKDF2 摘要存入 lifeos_admin_credentials,不保存明文,也不写进仓库或浏览器;管理页可验证当前密码后更换。它在原有账号登录之上再次验证密码;会话仅在当前页面内存中保留 20 分钟,退出或修改密码后旧会话立即失效,连续五次输错锁定 15 分钟。管理 API 只允许当前账号在预设表内按记录操作,没有任意 SQL 执行入口。更改云端记录后应刷新桌面,使其他 App 重新加载数据。派生的标签索引和旧版状态备份不能在管理器中单独修改。
构建与验证
项目无需安装第三方 npm 依赖,使用 Node.js 运行:
npm run build
npm run validate
npm run test:cloud
build 将页面及 App 脚本打包成 dist/server/ 中的 Cloudflare Worker 产物;validate 检查产物、双语键与主要交互;test:cloud 使用内存 SQLite 检查旧数据回填、版本冲突与租户隔离。生产托管配置在 .openai/hosting.json,含 Sites 项目 ID 和 D1 逻辑绑定。直接在其他环境部署时,需要提供兼容的 Worker 环境与 DB 绑定;云端 API 还依赖托管层提供的 oai-authenticated-user-id 请求头。
项目结构
public/index.html 桌面框架与窗口基础交互
public/tasks.js 目标与待办
public/calendar.js 日历
public/browser-app.js iframe 浏览器
public/terminal-app.js 命令解析与终端界面
public/db-admin.js 数据库管理器界面
public/data-actions.js 图形界面与终端共用的数据写入
public/i18n-renderers.js 记忆、洞察、设置等双语界面
public/desktop-personalization.js 图标、窗口与壁纸偏好
public/desktop-widgets.js 吸附网格与桌面小部件
public/addons.js 导入导出、云同步与辅助操作
public/locales/ 中文、英文文案
public/service-worker.js PWA 缓存
worker/index.js Worker 路由与必应图片代理
worker/cloud-state.js 云端记录迁移与同步 API
worker/db-admin.js 当前用户的数据库管理 API
drizzle/ D1 数据表迁移
scripts/ 构建与产物验证
隐私与版权
Life OS 不保存 ChatGPT 密码。自定义壁纸链接由浏览器直接加载;使用第三方图片时,请考虑图片服务的访问与隐私规则。必应每日图片版权归原始权利人所有。