同一套备忘录要在 dev 和生产各导一次,所以把写死的东西参数化: --api 指定目标环境、--phone 指定记到谁名下、--workspace 指定工作区名。 令牌缓存按「环境 + 手机号」分文件(.local/memo-token-<phone>-<host>.txt): 之前只按账号存,混着用会出现"刚登录完下一个请求就 401"——dev 的令牌拿不到生产的库。 生产(openclaw-01)实测:13605513683 名下「我的备忘」84 条(83 发布 + 1 归档)、 18 个分类,时间戳与 dev 一致。
一次性的搬迁脚本:memo_app(MySQL)→ 知识库。放在 scripts/ 下是为了留个凭据, 说明这 84 条备忘是怎么变成知识的,以及哪些东西刻意没搬。 - 走 HTTP 接口而不是直连库:直接 INSERT 会绕过版本号、审计和切片导入, 导进去的知识搜不到——检索只认 published 且有 chunk 的文档。 - 分类照搬两层(接口上限三级),标签照搬,全部按 note 发布,归档那条保持归档。 - 正文里的图片文件在旧机器上已经找不到了,所以把  换成一行 「原图未迁移:…(旧路径 …)」,不留碎图,也不丢掉原路径。 - 按标题去重、分类复用,中断后可以重跑;token 缓存到 .local/ 避免撞上验证码节流。 - 旧库时间戳是 UTC,接口不接受客户端指定 created_at,所以额外生成一条 SQL 把 item.created_at/updated_at 与 published_at 对回原值。 实测:84 条(83 published + 1 archived)、18 个分类、语义检索可命中。