9 月 14 号我在这个节点发过一帖( https://v2ex.com/t/1241860 ),介绍了我的新应用,是一个用 DeepSeek Harness 套了 Electron 壳,做的桌面 Agent 。
一个多月了,一些用户真实的用起来了,一直用到现在。最多的一个账号已经发了一万多次请求,昨天一天还有两千多次。说实话,这比我预期的多。
我一直坚持的是,用 Mareo 写 Mareo ,一个多月过去,踩了不少坑。其中最崩溃的是一次把自己打挂的迁移。。。
给产品加邀请功能,数据库要加一个字段和一条索引。迁移代码大概长这样:
function migrate(db) {
db.exec(SCHEMA) // SCHEMA 里有 CREATE UNIQUE INDEX ON users(inviteCode)
addUsageColumns(db)
}
看起来没问题,但 SCHEMA 里包含:
CREATE UNIQUE INDEX idx_users_inviteCode ON users(inviteCode) WHERE inviteCode IS NOT NULL;
而这一列要靠 addUserColumns(db) 加上去。那个函数定义了,但没人调用。
结果:老数据库启动时 no such column: inviteCode,进程直接退出。Docker 的重启策略是 unless-stopped,于是:启动 → 迁移失败 → 退出 → 重启 → …… 循环了 15 次。
API 502 了十分钟。
最讽刺的部分:我自己的模型调用也走这个网关。所以打挂它之后,我失去了「修复它」的能力,最后是靠 codex 帮我修的。
后来改成什么样:
- 部署前预演:把生产数据库
VACUUM INTO一份副本,在隔离容器里跑一次迁移。失败就在这里停,线上一个字节都不动。 - 双槽位切换:新实例先起在另一个端口,通过健康检查和真实数据读取之后,才把 nginx 指过去。失败就指回来。
- 迁移必须有覆盖升级路径的测试:我们原来 155 个测试全过,因为它们全部新建数据库、走
fresh分支,永远不会触发「老库升级」这条路径。
现在的样子
- 三个模型:DeepSeek 两档,加上 Sol / Astra ,昨天又加了 Terra (便宜一半)
- 每天有免费额度,北京时间 0 点恢复;用完可以充值,¥10 起,扫码到账
- Windows 和 macOS 都有
这次想请大家帮个忙
产品里加了邀请码,在额度面板底部。如果你觉得这玩意儿对同事有用,可以把码发给他。
不过说实话:邀请奖励很小(¥5 ),我更想要的是反馈。
用下来哪里别扭、哪个任务它做不好、你希望它会做什么——回帖或者发我邮箱都行。官网有个用户群入口,也可以直接加群。
产品地址: https://mareo.cn