把工作与生活,安放在一座本地岛屿。
一款为 macOS 打造的本地优先个人工作站,把日程、任务、笔记、资料与生活记录收进同一个安静的空间。
栖屿当前以源码形式提供,面向 macOS 本地使用。仓库暂不提供经过 Apple 公证的通用安装包;clone 后可以直接进入开发模式,或在自己的 Mac 上构建应用。
很多个人工具只解决一个问题:日历记时间、待办记任务、笔记记想法、浏览器保存链接。真正使用时,信息却被拆散在十几个入口里。
栖屿选择了另一种方式:
- 一个仪表盘看见今天:时间、天气、日历、待办、设备状态和生活信息都在首页。
- 十二个抽屉承载细节:需要专注处理某件事时,从侧边栏打开对应模块,完成后回到工作台。
- 本地数据默认留在本机:主要数据进入应用专属 SQLite 数据库,不要求注册账号,也不依赖云端工作区。
- 工作和生活使用同一套节奏:项目、财务、习惯、阅读和日常工具不再是彼此隔离的孤岛。
界面采用 Liquid Glass 风格,支持浅色、深色和跟随系统;首页卡片可调整顺序、尺寸与显隐,侧边栏也可以折叠。
全局搜索会同时检索模块、待办、日程、笔记、书签、阅读、项目、财务、文件与工具。所有结果都来自当前设备。
笔记知识库 Markdown、目录树、双向链接、Mermaid 与版本历史。 |
密码与剪贴板 Argon2id + AES-256-GCM 保险库、自动锁定和敏感剪贴板策略。 |
文件管理 用户授权目录索引、内容搜索、大文件和重复候选分析。 |
浅色模式 与深色模式共享同一套清晰、克制的玻璃层级。 |
截图说明
README 中的截图来自实际运行版本,内容为演示数据。界面显示会随窗口大小、系统权限、当地天气和你创建的数据变化。
- 大号时钟、公历与农历、节气节日提示、分时问候
- 多城市天气、24 小时趋势、7 日预报、空气质量与生活建议
- 月历、近三日日程、重要日期倒计时和班休信息
- 今日待办、优先级、自然语言快速添加与周完成度
- CPU、内存、磁盘、网络、电池、快捷启动和剪贴板概览
- 便签、习惯打卡、财务摘要、RSS 和阅读进度
- 卡片拖拽排序、方向按钮排序、尺寸调整和自定义显隐
| 模块 | 能力 |
|---|---|
| 日程管理 | 日/周/月视图、复杂重复、提醒、班休调休、时间块统计 |
| 待办事项 | 无限层级项目、四象限、标签、循环任务、番茄钟、完成趋势 |
| 笔记知识库 | Markdown、目录树、全文检索、双向链接、Mermaid、版本历史、批量导入导出 |
| 书签与收藏 | 文件夹、标签、网页截图、稍后读、正文抓取、死链检测、浏览器书签导入导出 |
| 密码与剪贴板 | 本地加密保险库、密码生成与审计、自动锁定、加密备份、剪贴板保留策略 |
| 财务记账 | 账户、收支、分类预算、月年报表、资产概览和账单提醒 |
| 习惯追踪 | 自定义周期、打卡日历、连续天数、趋势、成就与备注 |
| 阅读与学习 | 书架、阅读进度、读书笔记、离线文章、RSS、单词复习与学习时长 |
| 项目管理 | 看板、主子任务、预估/实际耗时、文档关联、甘特图与里程碑 |
| 工具箱 | 计算、单位、时间、文本、图片、二维码、开发调试与日常决策工具 |
| 文件管理 | 授权目录索引、文件名与正文搜索、最近文件、大文件、重复候选和标签 |
| 设置与数据 | 主题与布局、快捷键、开机启动、窗口行为、备份恢复和数据导出 |
推荐环境:
- macOS 13 Ventura 或更新版本
- Apple Silicon 或 Intel Mac
- Git
- Node.js 22.13 或更新版本(仓库提供 .node-version)
- Rust stable 与 Cargo
- Xcode Command Line Tools
先确认本机工具:
xcode-select -p
node --version
npm --version
rustc --version
cargo --version如果第一条命令提示尚未安装开发工具,请执行:
xcode-select --installgit clone https://github.com/cwj-gyh/Personal_Workstation.git
cd Personal_Workstation
npm ci使用 npm ci 可以严格按照仓库锁文件安装依赖,适合第一次 clone 和持续集成环境。
npm run desktop:dev首次启动需要编译 Rust 依赖,时间会比后续启动长。终端出现开发服务器和 Tauri 窗口后即可使用。
如果只想快速查看界面,也可以启动浏览器回退模式:
npm run dev浏览器模式将数据保存在浏览器本地存储中,不提供 SQLite 数据库快照、密码保险库、系统状态、全局快捷键和目录索引等桌面能力。
- 打开“设置与数据”,选择主题、首页卡片、天气城市与快捷键。
- 首次使用通知、截图、开机启动或文件索引时,根据 macOS 提示授予对应权限。
- 进入“密码与剪贴板”创建主密码。主密码不会保存,也无法找回。
- 立即导出一份 .qiyuvault 加密备份,并为普通工作数据创建第一个数据库恢复点。
- 在文件管理中只选择你愿意授权索引的目录;栖屿不会自动删除文件。
更完整的功能说明见使用手册。
构建本机可运行的 release 应用:
npm run desktop:build产物位于:
src-tauri/target/release/bundle/macos/栖屿.app
可以直接打开:
open "src-tauri/target/release/bundle/macos/栖屿.app"当前构建使用 macOS 临时签名,适合源码使用者在自己的 Mac 上构建运行,不等同于使用 Apple Developer 证书签名并公证的公开安装包。
如果移动应用后 macOS 报告扩展属性或临时签名问题,可以在项目目录执行:
xattr -cr "src-tauri/target/release/bundle/macos/栖屿.app"
codesign --force --deep --sign - "src-tauri/target/release/bundle/macos/栖屿.app"
codesign --verify --deep --strict --verbose=2 "src-tauri/target/release/bundle/macos/栖屿.app"~/Library/Application Support/com.qiyu.workstation/qiyu.sqlite3
~/Library/Application Support/com.qiyu.workstation/backups/
- 普通工作数据保存在应用专属 SQLite 数据库。
- 应用每天首次启动时创建一次自动快照,最多保留最近 14 份。
- 恢复快照前会先校验备份,并保存当前数据库的安全副本。
- JSON 导出用于迁移普通工作数据;密码保险库需要单独导出 .qiyuvault。
详细恢复流程见备份与恢复指南。
- 主密码通过 Argon2id 派生密钥。
- 保险库内容以 AES-256-GCM 整体加密后写入数据库。
- 主密码不写入磁盘;锁定后会清除当前解锁状态。
- 密码复制不会进入剪贴板历史,并可按设定时间自动清理。
密码管理涉及高价值数据。虽然仓库包含自动化测试和明确的数据边界,当前项目并未声明经过独立第三方安全审计。请保留加密备份,并自行评估使用风险。更多细节见安全说明。
栖屿不要求账号或云端工作区。网络访问主要来自:
- Open-Meteo 天气和城市搜索
- 用户主动添加的 RSS 地址
- 用户主动触发的书签正文、截图与死链检查
- 工具箱中由用户主动发送的接口测试请求
文件索引、密码保险库、笔记、待办、财务和大多数工具默认在本机处理。
flowchart LR
UI["Liquid Glass 界面"] --> Bridge["Tauri 本地桥接"]
Bridge --> DB["SQLite 工作数据"]
Bridge --> Vault["Argon2id + AES-256-GCM 保险库"]
Bridge --> Mac["macOS 系统能力"]
UI --> Local["浏览器本地回退"]
Bridge -. "用户主动触发" .-> Net["天气 / RSS / 网页请求"]
| 命令 | 用途 |
|---|---|
| npm run desktop:dev | 启动完整 Tauri 桌面开发环境 |
| npm run dev | 启动浏览器回退模式 |
| npm run lint | 检查 TypeScript、React 和可访问性规则 |
| npm test | 构建并运行产品、领域与桌面结构测试 |
| npm run desktop:web:build | 构建桌面静态前端 |
| npm run test:performance | 检查首屏资源性能预算 |
| npm run test:browser | 使用本机 Chromium 执行 WCAG、键盘、启动与十二模块冒烟检查 |
| npm run test:desktop | 运行 Rust 桌面数据、安全和恢复测试 |
| npm run verify:local | 依次运行完整本地验收流程 |
| npm run desktop:build | 构建本机 release 应用 |
完整验收需要本机安装 Google Chrome、Microsoft Edge、Brave 或 Chromium 之一。浏览器验收会使用临时用户目录,不会读取日常浏览器资料,也不会修改真实栖屿数据库。
仓库的 macOS GitHub Actions 会在 push 和 pull request 时运行依赖安装、代码检查、产品测试、性能预算、Rust 格式和桌面核心测试。
npm ci
npm run verify:local
git status运行 node --version,确认版本不低于 22.13。使用 fnm、nvm、Volta 或其他版本管理器时,可以让它读取仓库的 .node-version。
确认 Rust stable 与 Xcode Command Line Tools 已安装,然后执行:
rustup update stable
rustup component add rustfmt
xcode-select -pnpm run test:browser 会寻找 Google Chrome、Microsoft Edge、Brave 或 Chromium。安装其中一个后重新运行即可;它不影响 npm run desktop:dev。
只有功能首次真正需要权限时,macOS 才会询问。也可以前往“系统设置 → 隐私与安全性”检查通知、文件与文件夹、屏幕录制等权限。
确认网络可以访问 Open-Meteo。栖屿会保留最近一次成功天气数据,网络恢复后可再次搜索城市。
主密码无法找回,这是本地加密设计的一部分。只能使用你仍记得密码的旧保险库备份;因此第一次建立保险库后应立即备份。
当前产品范围明确为 macOS。部分底层代码具有非 macOS 回退实现,但快捷启动、钥匙串、截图、窗口行为、系统目录和测试流程均以 macOS 为准,暂不承诺其他平台可用。
Personal_Workstation/
├── app/ # 仪表盘、模块界面、领域逻辑和数据桥接
├── desktop/ # Tauri 使用的静态前端入口
├── src-tauri/ # macOS 外壳、SQLite、保险库和系统能力
├── docs/ # 使用、安全、恢复文档与 README 截图
├── scripts/ # 性能、浏览器与完整本地验收
├── tests/ # 产品、领域和桌面结构测试
├── public/ # App 图标与网页静态资源
└── .github/workflows/ # macOS 持续集成
技术栈:React 19、TypeScript、Vite/Vinext、Tauri 2、Rust、SQLite。
欢迎通过 Issue 描述问题或建议。提交修改前请:
- 保持 macOS 本地优先和最小权限边界。
- 不提交真实个人数据、数据库、保险库备份或环境文件。
- 为行为变化补充测试。
- 运行 npm run verify:local,并在 Pull Request 中说明未能执行的检查。
栖屿以 MIT License 开源。你可以使用、修改和分发源码,但软件按“原样”提供,不附带担保。





