我日常在两台电脑上工作:一台在单位,一台在家里。项目分散在不同的目录里,进度全靠记忆,想知道"现在手头有哪些事、各自做到哪一步"得翻好几个地方。于是我给自己做了一个个人工作台,核心思路是:每台电脑只负责扫描自己的文件夹,把结果推到服务器,由服务器统一展示。
约定大于配置:一个文件夹就是一个项目
采集器不需要我手工登记项目。我只定了两条约定:
- 项目根目录下的每个子文件夹算一个项目,文件夹名就是项目名。
- 项目里放一个
progress.md,用几行固定格式写明阶段(规划、开发、测试、上线)和下一步。没有这个文件的项目会显示"未标注",但依然会出现在列表里。
这样新建项目不需要任何额外操作,下一次扫描就会自动接入。
采集器怎么工作
- 按配置里的目录列表扫描项目,读取
progress.md和文件的最近修改时间。 - 扫描笔记库(Markdown 文件),提取标题、标签和关联项目。
- 把结果通过 HTTPS 推送到服务器的同步接口,请求头里带一个共享令牌。
- 服务器写入数据库,工作台页面读取并展示,同时在"最近动态"里记录新接入、有更新等事件。
Windows 上用计划任务运行 PowerShell 脚本,Mac 上用 launchd 运行 Python 脚本,都是每隔一段时间自动跑一次。两台机器各自带一个"来源"标记,页面上能看到每台电脑最后一次采集的时间。
几个值得记下的细节
- 令牌不进代码:同步令牌放在本机的一个单独文件里,权限设为仅自己可读,仓库里只有不含令牌的配置模板。
- 网络抖动要能扛住:第一次在 Mac 上运行时,笔记推送碰到一次 TLS 握手超时。我给推送函数加了最多 4 次的重试和更长的超时,之后就稳定了。
- 首次接入别刷屏:第一次扫描会发现几十个"新项目",如果每个都生成一条动态,最近动态会被淹没。现在超过 3 个新项目时合并成一条"接入 N 个项目"。
- 列表要能收起来:项目一多页面就变长。默认只显示前 8 个,其余折叠,另外提供"隐藏"功能,把不想展示的文件夹从列表里拿掉,需要时还能恢复。
页面布局的一次小调整
我原本把页面做成三列,窗口拉宽后"站点运维"和"AI 日报"会跑到右侧,布局随窗口变化。后来改成固定的两列加底部通栏:左边是今日事项和随手记,中间是项目和动态,运维与日报固定在最下面一行并排。桌面宽度下不再乱跳,窄屏仍然自动变成单列。
小结
个人工作台不需要复杂的系统,关键是让数据"自己长出来":用文件夹约定代替手工登记,用定时采集代替手动更新。两台电脑各跑一个小脚本,页面就始终是最新的。下一步我准备给更多项目补上 progress.md,让"未标注"这一类越来越少。
