Files
memind/docs/architecture/remote-dev-sync.md
2026-07-07 10:01:32 +08:00

83 lines
2.6 KiB
Markdown

# Remote Dev Sync Runbook
更新时间: 2026-07-02
## 目标
让远程开发电脑和当前生产主机的 Memind 代码版本保持一致,同时避免覆盖生产数据、密钥、用户文件和本机脏改动。
## 当前基线
- 生产运行目录: `/Users/john/Project/Memind`
- 生产 release manifest: `release_id=20260701-220548-4fc5972`
- 生产来源提交: `4fc59729ee222734628dca001e172c127c84488f`
- 干净同步分支: `memind-streaming-runtime-20260702`
- 干净分支目录: `/Users/john/Project/memind-clean-main-20260702`
- 远端仓库: `https://git.tkmind.cn/tkmind/memind.git`
## 硬约束
- 不在生产运行目录执行 `git reset --hard``git clean -fdx``rm -rf`、数据库清理或数据目录同步删除。
- 不提交生产 `.env`、数据库、`MindSpace/``data/``users/``.tailscale/``logs/`、证书、密钥和运行缓存。
- 本次 H5 public base 临时切到 `https://m.tkmind.cn`
- 后续公网 H5 不再依赖 105 转发链路;105 只保留 legacy/rollback 说明。
## 远程开发机拉取方式
```bash
git clone https://git.tkmind.cn/tkmind/memind.git memind
cd memind
git fetch origin
git switch memind-streaming-runtime-20260702
```
如果远程开发机已有仓库:
```bash
cd /path/to/memind
git fetch origin
git switch memind-streaming-runtime-20260702
git pull --ff-only
```
## 配置方式
`.env.example` 复制生成本机 `.env`,然后只在本机填入密钥和数据库连接:
```bash
cp .env.example .env
```
生产关键项:
```text
H5_PUBLIC_BASE_URL=https://m.tkmind.cn
VITE_MINDSPACE_BASE=https://m.tkmind.cn
MEMIND_RUNTIME_REDIS_URL=redis://127.0.0.1:6379/0
MEMIND_RUNTIME_REDIS_NAMESPACE=memind:runtime
```
## 本分支包含的改造
- StreamController v1: SSE headers、flush、abort propagation、backpressure-aware pipeline。
- Redis Runtime Router v1: session pointer、worker score、active stream、drain。
- Runtime status: `/api/runtime/status`
- Gateway SSE 示例: `m.tkmind.cn` 对应的 nginx SSE 配置。
- H5 public base: `m.tkmind.cn`
- 普通用户默认不暴露 Aider/OpenHands,显式白名单保留。
## 验证命令
```bash
node --check server.mjs
node --check scripts/wechat-mp-menu.mjs
curl -sk https://m.tkmind.cn/api/status
curl -sk https://m.tkmind.cn/api/runtime/status
```
## 回滚思路
- 代码回滚: 切回 `origin/main` 对应提交 `4fc59729ee222734628dca001e172c127c84488f`
- 配置回滚: 恢复生产主机 `/Users/john/Project/Memind/.env.bak-mm-domain-20260702-0633`
- Worker drain 回滚: 删除 Redis drain key,例如 `DEL memind:runtime:worker:goosed-3:drain`