我烧了4亿token,创造了一个工作台
发布时间: 2026-05-11
Personal Sync
Personal Sync 是一个面向个人工作流的同步工作台,把待办、灵感、文件、文本和常用处理工具放到同一个工作区里,适合在 Web 和桌面端统一管理日常信息。
最初我创造它的目的是为了在个人使用的多台设备上快速共享文本、文件,基于 ws 协议,多端同步数据。后来花费了 4 亿 token 将其迭代成一个个人工作台软件。
源码地址: https://cnb.cool/sojs/personal-sync 暂时只传了cnb,因为我要构建客户端然后部署到国内服务器,cnb还是比github要方便一些。
产品定位
- 一个账号下可管理多个工作区,按主题拆分个人内容。
- 核心信息统一收敛在同一界面,减少在待办软件、笔记软件、文件夹和临时工具之间反复切换。
- 支持密码登录、邀请码注册、Passkey 登录,以及桌面端常用的锁定、快捷键和客户端下载能力。
功能地图
| 功能 | 简介 | 详细说明 |
|---|---|---|
| 登录与账号 | 登录、注册、Passkey、服务端地址配置、客户端下载 | 查看详情 |
| 待办 | 列表 / 四象限 / 已完成三种视图管理任务 | 查看详情 |
| 灵感 | 快速记录灵感,按时间流查看 AI 总结 | 查看详情 |
| 文件 | 文件夹管理、上传下载、搜索排序、批量选择、分享 | 查看详情 |
| 文本 | 富文本编辑、自动同步、AI 优化、关联文件 | 查看详情 |
| 文本比对 | 双栏实时差异比对,本地即时计算 | 查看详情 |
| Markdown | 独立 Markdown 编辑与阅读模式 | 查看详情 |
| JSON 处理 | 标准化、格式化、压缩、校验、树形查看 | 查看详情 |
| 其他功能 | 工作区管理、传输任务、自动锁定、后台管理 | 查看详情 |
客户端支持情况
当前仓库覆盖的使用形态包括:Windows 桌面端、macOS 桌面端、Linux CLI、PC 浏览器端、手机浏览器端。它们共用同一套后端协议,但在交互方式和增强能力上有所区别。
| 端类型 | 当前支持情况 | 适合场景 | 与其他端的主要差异 |
|---|---|---|---|
| Windows 桌面端 | 支持完整主工作区能力 | 日常主力使用、多窗口、多快捷键场景 | 除核心工作区能力外,还支持桌面增强:本地加密存储、Passkey 桌面流程、系统级快捷键、快速新增待办/灵感窗口、剪贴板灵感、工作台显示/隐藏、桌面提醒 |
| macOS 桌面端 | 支持完整主工作区能力 | Mac 日常办公场景 | 能力边界与 Windows 桌面端基本一致,都是 Electron 壳层 + 同一套 Web 业务界面 |
| Linux CLI | 支持命令行能力 | 服务器、终端党、轻量自动化场景 | 不提供图形工作台;当前以登录、配置服务端、读取文本、写入文本、新建文本、上传文件、下载文件为主,不覆盖待办看板、灵感面板、Markdown/JSON 可视工具 |
| PC 浏览器端 | 支持完整主工作区能力 | 免安装、跨设备访问 | 与桌面端共享主业务界面,但不具备 Electron 专属增强能力,例如系统级快捷键、快速弹窗、桌面通知桥接、本地文件式存储 |
| 手机浏览器端 | 支持精简能力,已有明确范围约束 | 临时查看、轻量记录、移动补充内容 | 当前明确承诺支持:登录、查看文件区、新建和编辑文本、单文件上传;不承诺完整支持文件夹拖拽,也不建议按桌面复杂交互预期使用 |
多端差异总结
- 桌面端最完整:适合长期主力使用,尤其是依赖快捷键、弹窗录入、桌面提醒和本地持久化体验的用户。
- PC 浏览器端最均衡:核心业务功能完整,适合无需安装客户端、但仍希望使用完整工作区的人。
- 手机浏览器端最轻量:更偏向应急访问和轻输入,不等同于完整桌面体验。
- Linux CLI 最偏工具化:适合终端读写文本和传文件,不是图形化工作台替代品。
Docker 部署
当前仓库的 Docker 部署是“一个容器同时提供前端静态资源和后端 API”。容器内服务默认监听 3000 端口,对外暴露哪个端口由宿主机映射决定;上传文件等持久化数据通过宿主机目录挂载到容器内 /workspace/apps/server/runtime-storage。
部署前提
- 服务器已安装 Docker。
- 已准备可访问的 MySQL,并拿到连接串。
- 服务器上有一个用于保存部署文件和持久化数据的目录,例如
~/personal-sync/。 - 你已经能访问镜像仓库,或者准备自己构建并推送镜像。
1. 准备环境变量文件
部署时需要一个单独的 .env 文件,run-docker.sh 会通过 --env-file 把它注入容器。建议以仓库根目录的 .env.docker.example 为模板,在服务器部署目录中创建:
mkdir -p ~/personal-sync/files
cp .env.docker.example ~/personal-sync/.env需要重点填写或确认的字段:
APP_HOST=0.0.0.0APP_PORT=3000JWT_SECRET:必须改成你自己的随机密钥,不能保留默认值。DATABASE_URL:改成你的 MySQL 连接串,并带上实际数据库名。DB_AUTO_SYNC=true:服务启动时会自动创建数据库并执行内置补丁 SQL,适合首次部署和持续升级。
示例:
APP_HOST=0.0.0.0
APP_PORT=3000
JWT_SECRET=replace-with-your-secret
DATABASE_URL=mysql://user:password@127.0.0.1:3306/personal_sync
DB_AUTO_SYNC=true2. 构建并推送镜像
先在项目根目录构建镜像:
docker build -t <你的镜像仓库>/personal-sync:<版本号> .然后补一个 latest 标签:
docker tag <你的镜像仓库>/personal-sync:<版本号> <你的镜像仓库>/personal-sync:latest最后推送两个标签:
docker push <你的镜像仓库>/personal-sync:<版本号>
docker push <你的镜像仓库>/personal-sync:latest版本号可以使用提交短 SHA、日期版本,或你自己的发布版本号。仓库现有流水线默认也是这个思路:正式环境同时维护“一个固定版本标签”和 latest,测试环境则使用单独的测试标签。
3. 把启动脚本放到服务器
仓库根目录的 run-docker.sh 用于完成以下动作:
- 检查
.env文件是否存在。 - 创建宿主机持久化目录。
- 拉取指定镜像。
- 如果旧容器已存在,先停止并删除。
- 使用新的镜像重新启动容器。
把这个脚本放到服务器部署目录,例如:
scp run-docker.sh <user>@<server>:~/personal-sync/run-docker.sh
ssh <user>@<server> "chmod +x ~/personal-sync/run-docker.sh"4. 在服务器启动容器
run-docker.sh 支持通过环境变量覆盖默认值,核心变量如下:
IMAGE_REPO:镜像仓库,默认是docker.cnb.cool/sojs/personal-syncIMAGE_TAG:镜像标签,默认是latestCONTAINER_NAME:容器名,默认是personal-syncHOST_PORT:宿主机暴露端口,默认是6543ENV_FILE:部署环境文件路径HOST_STORAGE_DIR:宿主机文件存储目录
正式环境可以按下面的方式启动:
CONTAINER_NAME=personal-sync \
HOST_PORT=6543 \
ENV_FILE=~/personal-sync/.env \
HOST_STORAGE_DIR=~/personal-sync/files \
IMAGE_REPO=<你的镜像仓库>/personal-sync \
bash ~/personal-sync/run-docker.sh如果你要部署某个指定版本,而不是 latest,再额外传入 IMAGE_TAG:
CONTAINER_NAME=personal-sync \
HOST_PORT=6543 \
ENV_FILE=~/personal-sync/.env \
HOST_STORAGE_DIR=~/personal-sync/files \
IMAGE_REPO=<你的镜像仓库>/personal-sync \
IMAGE_TAG=<版本号> \
bash ~/personal-sync/run-docker.sh这一步对应 .cnb.yml 里的远程部署逻辑,但这里保留的是可手动执行的步骤,不直接暴露可复用的流水线配置。
5. 验证部署
脚本执行完成后会输出容器名、镜像名、访问端口和挂载目录。你还可以手动检查:
docker ps
docker logs personal-sync默认情况下,如果你把宿主机 6543 端口映射到容器 3000,浏览器访问:
http://<你的服务器地址>:6543首次启动时,服务会按 DATABASE_URL 自动创建数据库并执行 apps/server/db/patches/ 下的补丁脚本。上传文件会落到宿主机 HOST_STORAGE_DIR 指定的目录中,容器重建后不会丢失。
详细功能
1. 登录与账号

登录页负责完成账号进入工作区前的全部基础动作,包括密码登录、邀请码注册、Passkey 登录、服务端地址配置,以及桌面客户端下载。
核心能力
- 密码登录:输入用户名和密码后进入工作区。
- 邀请码注册:普通用户通过邀请码注册账号,再使用新账号登录。
- Passkey 登录:在支持环境下可直接使用 Passkey 完成身份验证。
- 服务端地址配置:可切换后端地址,适合自部署或桌面端连接指定服务。
- 客户端下载:登录页提供 Windows、macOS、Linux 的下载入口。
使用说明
- 首次使用时,先配置服务端地址,再完成注册或登录。
- 有较高账号安全要求时,登录后可在账户菜单中继续绑定 Passkey。
- 需要桌面体验时,可直接从登录页下载安装客户端。
2. 待办

待办模块用于维护当前工作区的执行清单,既支持普通列表,也支持按四象限管理优先级,还能单独查看已完成事项。
核心能力
- 三种视图:列表、四象限、已完成。
- 四象限分类:重要且紧急、紧急不重要、重要不紧急、不重要不紧急。
- 待办字段:标题、说明、计划时间、象限。
- 拖拽调整:四象限视图下可直接拖拽待办切换象限。
- 完成流转:未完成事项可标记完成,已完成事项可撤销恢复。
- 已完成分页:完成记录支持继续加载更多历史项。
使用价值
- 列表模式适合快速扫清当天清单。
- 四象限模式适合做优先级判断和任务分配。
- 已完成模式适合回看执行结果,避免任务做完后直接消失。
3. 灵感

灵感模块适合快速收集碎片化想法,再通过 AI 或人工整理,把零散输入变成可复用内容。
核心能力
- 快速记录:输入内容后回车即可加入 Inbox,
Shift + Enter换行。 - Inbox 收集:未总结灵感集中存放,适合后续批量整理。
- 重要标记:可把关键灵感单独标记为重要。
- 删除管理:无效灵感可直接清理。
- AI 总结:支持把当前 Inbox 内容整理成总结结果。
- 时间流查看:总结结果按日期分组展示,并支持继续加载更多。
- 转为文本:总结内容可继续转成文本,进入长期沉淀流程。
使用价值
- 适合捕捉临时想法、会议闪念、阅读摘录和行动线索。
- 先收集、后整理的流程能降低记录门槛。
- 总结转文本的设计让灵感可以自然进入正式笔记体系。
4. 文件

文件模块负责工作区内的层级化文件管理,支持上传、下载、目录浏览和后续分享预览等动作。
核心能力
- 目录导航:支持从根目录逐层进入文件夹。
- 上传文件:支持按钮上传,也支持直接拖拽到文件区域。
- 新建文件夹:在当前目录下快速创建结构。
- 搜索与排序:可按名称搜索,也可按名称或更新时间排序。
- 视图切换:支持网格视图和列表视图。
- 选择模式:支持多选、全选和批量删除。
- 下载文件:点击文件即可下载,点击文件夹进入下级目录。
- 上传状态反馈:上传中的文件会展示传输进度与错误状态。
延伸能力
- 文件可进一步用于分享链接生成。
- 支持把可识别内容加载到 Markdown 或 JSON 工具中继续处理。
- 传输任务会统一显示在顶部任务列表中,便于查看上传下载进度。
5. 文本

文本模块是工作区里的富文本编辑区,适合沉淀会议记录、方案草稿、阶段总结和长期笔记。
核心能力
- 富文本编辑:支持常规富文本内容输入与排版。
- 标题内联修改:可直接点击标题重命名当前文本。
- 自动同步:编辑状态会持续同步,并显示当前同步状态与最后同步时间。
@关联能力:可在文本内关联工作区中的文本或文件。- 图片嵌入:支持把图片上传到工作区并嵌入富文本内容。
- AI 优化:可对当前文本发起 AI 润色或优化。
- 冲突处理:离线或多端编辑冲突时,可对比本地草稿与远端版本并选择处理方式。
- 冲突留痕:最近冲突版本会保留,便于回看和确认。
使用价值
- 比纯文件管理更适合长期内容沉淀。
- 比临时 Markdown 工具更适合与工作区内文件、灵感和同步状态联动。
- 冲突处理能力适合多端使用场景。
6. 文本比对

文本比对模块用于快速比较两段文本内容,不依赖服务端接口,打开即可使用。
核心能力
- 双栏编辑:左右两侧都可直接输入或粘贴内容。
- 实时高亮差异:修改后立即显示新增、删除和变更区域。
- 本地运行:不依赖网络请求,适合临时快速比对。
- 一键复制:可分别复制左侧或右侧内容。
- 重置示例:可快速恢复默认示例内容。
使用场景
- 对比原稿与修改稿。
- 检查 AI 优化前后的文本差异。
- 临时验证接口文案、配置内容或说明文档的变更。
7. Markdown 编辑器

Markdown 编辑器提供独立的 Markdown 编写和阅读体验,适合处理结构化文档、草稿和说明材料。
核心能力
- 编辑模式:直接编写 Markdown 内容。
- 阅读模式:渲染最终效果,便于阅读检查。
- 文档大纲:阅读模式下展示目录结构,适合长文导航。
- 本地缓存:内容保存在当前浏览器本地,不依赖服务端同步。
- 外部加载:可把工作区里的 Markdown 文本加载进来继续编辑。
使用价值
- 适合整理接口文档、会议纪要、技术草稿和说明文档。
- 与工作区主文本区分开,适合专门处理 Markdown 结构化内容。
8. JSON 处理

JSON 处理模块用于快速整理、修复和检查 JSON 内容,适合接口调试、配置整理和数据清洗。
核心能力
- 文本模式:适合直接粘贴和编辑原始 JSON。
- 树形模式:适合查看层级结构并展开折叠节点。
- 标准化:尝试修复非标准内容并转换为合法 JSON。
- 格式化:输出易读的缩进格式。
- 压缩:压缩成紧凑 JSON。
- 校验:检查当前 JSON 是否有效。
- 展开 / 折叠:适合处理层级较深的数据。
- 复制与清空:便于快速带走结果或重新开始。
- 外部载入:支持把工作区里的 JSON 文件内容加载进来继续处理。
使用价值
- 适合接口返回值检查。
- 适合配置文件清理和规范化。
- 适合在不切换外部工具的情况下完成临时 JSON 操作。
9. 其他功能

除核心工作区能力外,Personal Sync 还提供一组账户级和系统级辅助能力,覆盖安全、分享、管理和桌面端增强场景。
账户与安全
- 工作区管理:创建、切换、删除当前账号下的工作区。
- Passkey 管理:查看、绑定、删除当前账号的 Passkey 凭证。
- 修改密码:支持更新登录密码。
- 自动锁定:可设置数字锁定密码和自动锁定超时时间。
协作与分发
- 分享链接:为文件生成无需登录即可下载的分享链接。
- 分享列表:分页查看历史分享记录,并支持复制、停止、延期。
- 传输任务:统一查看上传与下载任务进度、状态和失败信息。
AI 与效率
- AI 设置:配置灵感总结与文本优化所使用的模型服务。
- Token 管理:为灵感接入和自动化生成 API Token。
- 快捷键设置:可配置快速新增待办、快速新增灵感等快捷操作。
管理后台
- 管理用户:管理员可查看普通用户、重置密码、禁用、启用和删除账号。
- 邀请码管理:管理员可生成邀请码,并查看状态、过期时间和使用记录。
使用价值
- 让工作区不仅能记录内容,也能覆盖安全控制和日常运维动作。
- 对个人使用者,重点是 Passkey、自动锁定、快捷键和分享。
- 对管理员,重点是邀请码发放和用户管理。
适用场景
- 需要把待办、笔记、文件和灵感放到同一工作区统一维护。
- 希望在 Web 和桌面端共享同一套工作流与数据入口。
- 经常处理临时文本、Markdown、JSON 或文稿比对,希望在一个工具里直接完成。
阅读顺序建议
- 先看“产品定位”和“功能地图”,快速了解整体结构。
- 再按顺序阅读各功能详细部分,主 README 已包含完整说明。
- 最后结合界面截图确认自己最关心的模块是否符合预期。
