Field Notes · v1.2.0 · 2026-07

TaskFlow

一个本地优先、端到端加密、跨平台的任务工作流。你的待办不必交给别人保管—— 数据在你的设备上,同步在你信任的设备间进行。

v1.2.0 测试 838 项全绿 桌面端 + 移动端 + 自托管中继 两轮安全审计

01它解决什么

市面上的任务管理工具大致分两类:一类是纯本地待办,单机好用但换设备就抓瞎; 一类是云同步,方便却把你的每一项计划、习惯、笔记都放进别人服务器。 TaskFlow 选第三条路——数据默认在本地,跨设备同步时端到端加密, 中继服务只搬运密文,看不到任何内容。

这不是因为我们做不出云同步,而是任务管理这件事没必要把你的生活细节 交给第三方保管。代价是多花了不少功夫在加密协议和冲突解决上,换来的是: 没有 TaskFlow 账号这回事,也没有人能从服务器读出你的待办。

当前形态:移动端(iOS/Android/Web)、桌面端(Windows/macOS/Linux)、 可选的 Python 后端、可自托管的 Node 中继。同步协议两端字节级互通。

02四个组件,一种数据

移动端 React Native · Expo
15 个页面、6 种视图、专注模式 / 番茄钟 / 白噪音。私钥走 Keychain / Keystore。
桌面端 Electron · React
SQLCipher 文件加密 + 字段级 AES-GCM。生物识别、截图保护、隐私外壳。
中继 Relay Node.js · WebSocket · 自托管
只转发密文帧,带离线队列(7 天 TTL)。LAN 可达时优先直连,不可达才走中继。
后端 Python · FastAPI
可选组件:任务 API、Git 管理、LLM 集成、插件系统。与同步链路解耦。

移动端 ⇄ 桌面端:端到端加密 P2P,中继仅作穿墙搬运工,全程不解密。

03端到端加密同步

这是项目里花时间最多的一块。两台设备同步前先握手,互相验明身份, 协商出一对方向隔离的会话密钥,之后所有记录都用 AES-256-GCM 加密。 中继看到的只是密文字节流。

身份层
每台设备一对 Ed25519 长期密钥,私钥存 Keychain / Keystore。设备 ID = sha256(原始公钥) 前 16 hex。
握手层
X25519 临时密钥做 ECDH,双方对 deviceId ‖ peerDeviceId ‖ nonce ‖ peerNonce ‖ ecdhPub 做 Ed25519 签名,防中间人。
派生层
HKDF-SHA256 从 ECDH 共享密钥派生 sendKey / receiveKey,info 按角色方向绑定:taskflow-sync-v1|initiator→responder
记录层
同步主密钥(SMK)做 AES-256-GCM 对称加密。线格式 iv[12] ‖ authTag[16] ‖ ciphertext,IV 每次随机。
冲突层
先比 updatedAt(last-write-wins),时间戳相等时用版本向量做因果偏序判定,判定为 concurrent 时按策略收口。
传输层
9 种消息类型,帧格式 mode[1] ‖ length[4 BE] ‖ payload。重放保护用序列号 + 滑动窗口,握手 30s 超时。

移动端用 Web Crypto API,桌面端用 Node crypto。两者线格式不同的地方 (AES-GCM 的 authTag 位置)做了显式重排,跨平台字节级互操作已用 668 项测试中的双向用例验证——移动端加密的帧桌面端能解,反之亦然。
(截至 2026-07-04,测试总数已增至 838 项,新增覆盖笔记 Markdown、AI 引擎、插件系统、MiniCharts 可视化、同步策略等。)

04隐私不是开关,是默认

两轮独立安全审计(TF-001~019、TF2-001~017)覆盖 CORS、密钥熵、备份元数据、 LLM 脱敏、API token 注入等,大部分已修复,剩余项在路线图跟踪。

05用数字说话

838
测试 · 全绿
649ms
5000 条端到端同步
7699
rec/s 吞吐
80×
批量落库提速
9
种同步消息类型
6
种任务视图

5000 条同步从 52 秒优化到 0.65 秒,靠的是修掉 REQUEST 分块 bug 加事务化批量落库。 测试覆盖:前端 509、桌面端 256、后端 65、Relay 8。

06能看到什么

六个视图同一份数据,按场景切换,不是六个独立的 TODO 列表:

07技术栈

组件选型
移动端React Native 0.86 · Expo 56 · TypeScript 6 · Zustand 5 · React Navigation 7
桌面端Electron · React · Vite · better-sqlite3-multiple-ciphers
后端Python 3.11+ · FastAPI · PyGit2 · langchain-core
中继Node.js 18+ · WebSocket · express-rate-limit · Docker 自托管
测试Vitest(前端/桌面/Relay)· pytest + Hypothesis(后端)
安全CodeQL · Gitleaks · OSSF Scorecard · cosign 签名发布

08仓库

两处镜像,内容一致。GitHub 为主仓库,GitCode 为国内镜像。

本页只是介绍。要看代码、跑起来、提 issue,请到上面任一仓库。 本地启动:git clonenpm installnpm run web 浏览器预览,npm run android / npm run ios 真机。