我们为什么不会把你的计划改乱
·作者 [email protected]
你说一句话,我们就能改你的安排。但真被改动的,只有“还没做”的那些事;做完的、你说跳过的、推后过的,我们一概不碰。这篇讲我们记住什么、敢动什么,以及改坏了怎么退回去。
一、我们只记三样东西
三样东西各管一段:你是谁几乎不变,你种了什么会被改,天气每小时都在变。
- 你是谁:在哪个城市,阳台还是露地,用什么盆、多大的盆,有没有“家里没药”这类限制。这些话你说一次,我们就记着,不用每次重复。
- 你种了什么:一份种植就是一本账,账上是一条条“哪天该做什么”。番茄和菊花各是一本,互不干扰。
- 最近的天气:我们自己去查,不用你报。而且看的是未来三天加过去三天 —— 因为“今天要不要浇水”,跟前两天下过多少关系更大。
二、我们只动“还没做”的事
为什么这么严?假设我们能改“已经做完”的记录:你今天翻回去看“上周三浇过水”,可我们前天悄悄把这条改了,你看到的账就跟你实际做过的事对不上。账不对,后面所有判断都是错的。
已经做完、跳过、推后、事后补记的,我们一律不碰。想改那些,只能走“恢复”,等于重做一步并留下记录。
三、每改一次,我们都留一份完整存档
我们的做法很笨但很好用:每改一次,就把改完的样子整份存下来。所以任何一个时刻都能回到“上周三的样子”,也能看见谁在什么时候改了哪一条。
- 这就是我们敢主动改你计划的原因:改错了能退,退回去只要一句话。
- 你说“不对,改回来”,我们不需要“撤销上一步”这种复杂操作,直接把存档取回来就行。
- 存档是给你看的,不是给你维护的:你不用管,我们自己存。
四、代价,也说清楚
- 东西存在一台机器上,一份一份的文件,不是一个庞大的数据库。好处是简单、能拿走、看得懂;代价是这台机器坏了,服务就停了。
- 我们能扛的是“一个人、几份种植、每天几十条活”这个量级,不是几万人同时在线。说白了:现在这个阶段,够用优先。
- 我们不追求“永远不出错”,追求的是出错能退、退回来你知道。
五、如果你也写代码
- 一个常驻 Node 进程,零运行时依赖:
floramind.mjs 只做装配与分发,逻辑在 lib/。 - 数据是
data/flora/<用户>/store.json(当前状态)+ commits.jsonl(每次写的完整快照,追加不重写)。 - 写入用“临时文件 + 改名”保证原子;读缓存校验
mtime + size,否则会吃到旧数据。 - 写只有一个入口(
applyAction),所以“变更记录”和“恢复”不需要第二套逻辑。 - 模块大小有行数水位(
tools/test-structure.mjs),只许往下调;共享状态只许有一份。
← 开发日志