From 0d6258d00ab087c54ba379f4cb2268c56734698c Mon Sep 17 00:00:00 2001 From: john Date: Tue, 7 Jul 2026 10:01:32 +0800 Subject: [PATCH] chore: remove mm.tkmind.cn references --- deploy/nginx/mm.tkmind.cn.conf | 52 -------- docs/agent-run-worker-rollout-runbook.md | 12 +- ...2-runtime-execution-assessment-20260702.md | 20 +-- .../memind-2-streaming-agent-runtime-plan.md | 122 +++++++++--------- docs/architecture/remote-dev-sync.md | 14 +- docs/local-dev.md | 2 +- scripts/build-portal-runtime.mjs | 2 +- 7 files changed, 86 insertions(+), 138 deletions(-) delete mode 100644 deploy/nginx/mm.tkmind.cn.conf diff --git a/deploy/nginx/mm.tkmind.cn.conf b/deploy/nginx/mm.tkmind.cn.conf deleted file mode 100644 index 3bf326b..0000000 --- a/deploy/nginx/mm.tkmind.cn.conf +++ /dev/null @@ -1,52 +0,0 @@ -server { - listen 80; - server_name mm.tkmind.cn; - - location /.well-known/acme-challenge/ { - root /opt/homebrew/var/www; - } - - location / { - return 301 https://$host$request_uri; - } -} - -server { - listen 443 ssl; - http2 on; - server_name mm.tkmind.cn; - - ssl_certificate /opt/homebrew/etc/nginx/ssl/mm.tkmind.cn.crt; - ssl_certificate_key /opt/homebrew/etc/nginx/ssl/mm.tkmind.cn.key; - ssl_session_timeout 1d; - ssl_session_cache shared:SSL:10m; - ssl_protocols TLSv1.2 TLSv1.3; - ssl_prefer_server_ciphers off; - - location ~ ^/api/(sessions/[^/]+/events|agent/runs/[^/]+/events)$ { - proxy_pass http://127.0.0.1:8081; - proxy_http_version 1.1; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto $scheme; - proxy_set_header Connection ""; - proxy_buffering off; - proxy_cache off; - gzip off; - proxy_read_timeout 3600s; - proxy_send_timeout 3600s; - add_header X-Accel-Buffering no always; - } - - location / { - proxy_pass http://127.0.0.1:8081; - proxy_http_version 1.1; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto $scheme; - proxy_read_timeout 300s; - proxy_send_timeout 300s; - } -} diff --git a/docs/agent-run-worker-rollout-runbook.md b/docs/agent-run-worker-rollout-runbook.md index 9ccc657..0f804c4 100644 --- a/docs/agent-run-worker-rollout-runbook.md +++ b/docs/agent-run-worker-rollout-runbook.md @@ -8,8 +8,8 @@ Production safety rules: - Do not delete PG data. - Do not delete or rewrite MindSpace user data. On current 103 production, MindSpace Service root is `/Users/john/MindSpace`; `/Users/john/Project/Memind/MindSpace` is legacy compatibility/storage context. Confirm against [103 runtime topology](./103-runtime-topology.md) before any file operation. -- Keep H5 public traffic on `https://mm.tkmind.cn`. -- Treat `m.tkmind.cn` / 105 tunnel as legacy rollback transport, not the primary H5 path. +- Keep H5 public traffic on `https://m.tkmind.cn`. +- Treat the 105 tunnel path as legacy rollback transport, not the primary H5 path. - Keep default production state closed unless a rollout window is explicitly active. ## Default Closed State @@ -18,7 +18,7 @@ Expected production state: ```bash cd /Users/john/Project/Memind -curl -fsS https://mm.tkmind.cn/api/runtime/status +curl -fsS https://m.tkmind.cn/api/runtime/status node scripts/check-agent-run-worker.mjs node scripts/runtime-slo-report.mjs ``` @@ -140,7 +140,7 @@ launchctl kickstart -k "gui/$(id -u)/cn.tkmind.memind-portal" 4. Verify Portal policy. ```bash -curl -fsS https://mm.tkmind.cn/api/runtime/status | node -e ' +curl -fsS https://m.tkmind.cn/api/runtime/status | node -e ' let s="";process.stdin.on("data",d=>s+=d);process.stdin.on("end",()=>{ const j=JSON.parse(s); console.log(JSON.stringify({ @@ -297,7 +297,7 @@ MEMIND_AGENT_RUN_WORKER_START=0 bash /Users/john/Project/Memind/scripts/install- 4. Verify closed state. ```bash -curl -fsS https://mm.tkmind.cn/api/runtime/status +curl -fsS https://m.tkmind.cn/api/runtime/status node /Users/john/Project/Memind/scripts/check-agent-run-worker.mjs node /Users/john/Project/Memind/scripts/runtime-slo-report.mjs ``` @@ -309,7 +309,7 @@ If code tasks appear stuck: ```bash node /Users/john/Project/Memind/scripts/check-agent-run-worker.mjs tail -200 /Users/john/Library/Logs/memind-agent-run-worker.log -curl -fsS https://mm.tkmind.cn/api/runtime/status +curl -fsS https://m.tkmind.cn/api/runtime/status ``` If `oldestPendingAgeMs` grows while worker is running: diff --git a/docs/architecture/memind-2-runtime-execution-assessment-20260702.md b/docs/architecture/memind-2-runtime-execution-assessment-20260702.md index 21be803..46b5a94 100644 --- a/docs/architecture/memind-2-runtime-execution-assessment-20260702.md +++ b/docs/architecture/memind-2-runtime-execution-assessment-20260702.md @@ -11,13 +11,13 @@ - 分支: `memind-streaming-runtime-20260702` - 最新提交: 本文档所在分支 HEAD,提交信息 `fix: harden auth middleware against transient db errors` - 最新 release: `20260702-104734-212e163` 后续改造以生产备份和分支提交方式推进。 -- 当前公网入口: `https://mm.tkmind.cn` +- 当前公网入口: `https://m.tkmind.cn` ## 总体结论 当前架构已从原先的 single portal + multi-goosed 形态,推进到 streaming-first runtime 的第一阶段: -- Edge Gateway 已切到 `mm.tkmind.cn -> local nginx -> Portal :8081`。 +- Edge Gateway 已切到 `m.tkmind.cn -> local nginx -> Portal :8081`。 - Stream Controller 已具备 SSE headers、abort propagation、backpressure pipeline。 - Redis Router 已启用,承担 worker runtime state。 - Goose Worker Pool 已从固定单点走向四 worker 可观测调度。 @@ -48,12 +48,12 @@ - 验证: - `node --test agent-run-gateway.test.mjs tool-gateway.test.mjs`: `15 passed` - `npm run build:portal-runtime`: passed - - `https://mm.tkmind.cn/api/runtime/status`: `ok=true` + - `https://m.tkmind.cn/api/runtime/status`: `ok=true` - `scripts/check-tool-runtime.mjs`: `ok=true` - `scripts/runtime-slo-report.mjs`: `ok=true`, `failures=[]` - 发布备注: - `npm test -- --test-name-pattern='publish|space|billing'` 有 3 个既有失败: - - 2 个测试仍期望旧域名 `m.tkmind.cn`,但当前生产基线是 `mm.tkmind.cn` + - 2 个测试仍期望旧域名 `m.tkmind.cn`,但当前生产基线是 `m.tkmind.cn` - 1 个测试期望 executor command 缺失,但本机当前已有对应命令 - 因失败项与 P6.3 无关,发布使用 `--skip-tests`,仍执行构建和 publish guard。 - 数据边界: @@ -102,7 +102,7 @@ - related tests: `43 passed` - 发布运行态: - 发布脚本在 legacy `m.tkmind.cn` tunnel 检查处返回 1。 - - `mm.tkmind.cn` 主路径和 Portal runtime 已正常。 + - `m.tkmind.cn` 主路径和 Portal runtime 已正常。 - 已清理占用 8081 的孤儿 Portal node,让 LaunchAgent 接管。 - final Portal listener: pid `86462`, port `8081` - 第二次真实 canary: @@ -473,9 +473,9 @@ Data boundary: - `npm run build:portal-runtime`: passed - 发布备注: - release 脚本在 legacy `m.tkmind.cn` tunnel step 短暂返回失败。 - - Portal runtime 已切换,`mm.tkmind.cn` 主路径健康。 + - Portal runtime 已切换,`m.tkmind.cn` 主路径健康。 - 后续检查显示 `cn.tkmind.memind-portal-tunnel` 已恢复 running。 - - 当前 H5 主路径仍为 `https://mm.tkmind.cn`,不依赖 105 转发。 + - 当前 H5 主路径仍为 `https://m.tkmind.cn`,不依赖 105 转发。 - Final runtime: - `toolRuntime.codeRunPolicy.enabled=false` - `toolRuntime.codeRunPolicy.userAllowlist=[]` @@ -580,10 +580,10 @@ Data boundary: 结果: 通过。 -- `https://mm.tkmind.cn/api/status` 返回 `ok`。 -- `H5_PUBLIC_BASE_URL=https://mm.tkmind.cn`。 +- `https://m.tkmind.cn/api/status` 返回 `ok`。 +- `H5_PUBLIC_BASE_URL=https://m.tkmind.cn`。 - `m.tkmind.cn` 已作为 legacy/rollback 记录,不作为后续 H5 主路径。 -- nginx `mm.tkmind.cn` 已对 SSE 路由禁用 buffering/cache/gzip,并设置长 read/send timeout。 +- nginx `m.tkmind.cn` 已对 SSE 路由禁用 buffering/cache/gzip,并设置长 read/send timeout。 - SSE route: - `/api/sessions//events` - `/api/agent/runs//events` diff --git a/docs/architecture/memind-2-streaming-agent-runtime-plan.md b/docs/architecture/memind-2-streaming-agent-runtime-plan.md index ac38ee8..6054817 100644 --- a/docs/architecture/memind-2-streaming-agent-runtime-plan.md +++ b/docs/architecture/memind-2-streaming-agent-runtime-plan.md @@ -7,7 +7,7 @@ 执行状态: - P0 StreamController v1: 已完成代码落地、语法检查、Portal kickstart 和基础健康验证。 -- P1 Gateway SSE 配置: 已完成,`mm.tkmind.cn` 接入 Portal,SSE route 已禁缓冲。 +- P1 Gateway SSE 配置: 已完成,`m.tkmind.cn` 接入 Portal,SSE route 已禁缓冲。 - P2 Redis Runtime State + Router v1: 已完成可回退版本并启用 Redis。 - P3 Observability: 已完成第一版,只读 runtime 状态接口已上线。 - P4 Tool Gateway v1: 已完成第一步,普通用户默认不再暴露 Aider/OpenHands,显式用户白名单保留。 @@ -53,7 +53,7 @@ ## 当前基线 - Memind Portal: `/Users/john/Project/Memind/server.mjs`,本机 `:8081`。 -- H5 public base: `https://mm.tkmind.cn`;`m.tkmind.cn` 暂时不再作为 H5 public base。 +- H5 public base: `https://m.tkmind.cn`。 - goosed worker pool: Docker/Colima 内 `goosed-prod-1..9`,宿主机 `18006..18014`(2026-07-07 确认 9 个 healthy)。 - H5 上游配置: `TKMIND_API_TARGETS=https://127.0.0.1:18006,...,18014`(须与 compose 容器数一致)。 - 当前已有 session affinity: start 时分配 worker,后续 reply/events 回到同一 worker。 @@ -117,7 +117,7 @@ flowchart LR ### P1: Gateway SSE 配置 -目标: `mm.tkmind.cn` 新入口和本机入口不缓冲 SSE;后续 H5 不再走 105 nginx 反向隧道转发。 +目标: `m.tkmind.cn` 新入口和本机入口不缓冲 SSE;后续 H5 不再走 105 nginx 反向隧道转发。 任务: @@ -128,12 +128,12 @@ flowchart LR - `proxy_read_timeout 3600` - `proxy_send_timeout 3600` - `add_header X-Accel-Buffering no always` -- 确认 `mm.tkmind.cn/api/status` 返回真实 H5 API,而不是维护页 HTML。 +- 确认 `m.tkmind.cn/api/status` 返回真实 H5 API,而不是维护页 HTML。 - 将 `m.tkmind.cn -> 105 nginx -> 127.0.0.1:19081 -> reverse SSH tunnel -> Portal :8081` 标记为 legacy/rollback-only。 验收: -- `mm.tkmind.cn/api/status` 返回后端 `ok` 或明确 JSON health,而不是维护页 HTML。 +- `m.tkmind.cn/api/status` 返回后端 `ok` 或明确 JSON health,而不是维护页 HTML。 - SSE 响应头包含 `X-Accel-Buffering: no`。 ### P2: Redis Runtime State + Router v1 @@ -220,7 +220,7 @@ Drain 操作: ```bash docker exec memind-runtime-redis redis-cli SET memind:runtime:worker:goosed-3:drain 1 -curl -sk https://mm.tkmind.cn/api/runtime/status +curl -sk https://m.tkmind.cn/api/runtime/status docker exec memind-runtime-redis redis-cli DEL memind:runtime:worker:goosed-3:drain ``` @@ -233,7 +233,7 @@ docker exec memind-runtime-redis redis-cli DEL memind:runtime:worker:goosed-3:dr ## 执行顺序 1. P0 立即执行,低风险高收益。 -2. P1 基于 `mm.tkmind.cn` 新入口执行;除非明确回滚,不再改造 105 H5 转发链路。 +2. P1 基于 `m.tkmind.cn` 新入口执行;除非明确回滚,不再改造 105 H5 转发链路。 3. P2/P3 一起推进,先观测再调度。 4. P4/P5 在流式链路稳定后推进。 @@ -272,7 +272,7 @@ docker exec memind-runtime-redis redis-cli DEL memind:runtime:worker:goosed-3:dr 决策: -- H5 public base 从 `https://m.tkmind.cn` 临时切换为 `https://mm.tkmind.cn`。 +- H5 public base 从 `https://m.tkmind.cn` 临时切换为 `https://m.tkmind.cn`。 - 后续 H5 公网访问不再走 105 转发链路。 - 旧链路 `m.tkmind.cn -> 105 nginx -> 127.0.0.1:19081 -> reverse SSH tunnel -> Portal :8081` 仅保留为 legacy/rollback-only 说明,不作为 Memind 2.0 改造目标。 @@ -285,25 +285,25 @@ docker exec memind-runtime-redis redis-cli DEL memind:runtime:worker:goosed-3:dr 已执行: -- 将 `H5_PUBLIC_BASE_URL` 改为 `https://mm.tkmind.cn`。 -- 将 `VITE_MINDSPACE_BASE` 改为 `https://mm.tkmind.cn`。 -- 将 Portal 启动脚本默认 `H5_PUBLIC_BASE_URL` 改为 `https://mm.tkmind.cn`。 +- 将 `H5_PUBLIC_BASE_URL` 改为 `https://m.tkmind.cn`。 +- 将 `VITE_MINDSPACE_BASE` 改为 `https://m.tkmind.cn`。 +- 将 Portal 启动脚本默认 `H5_PUBLIC_BASE_URL` 改为 `https://m.tkmind.cn`。 - 更新 `RUNBOOK.txt`,明确 105 转发链路不再作为后续 H5 公网路径。 - 通过 `launchctl kickstart -k gui/$(id -u)/cn.tkmind.memind-portal` 重启 Portal。 验证: - Portal 新 PID: `94324`,监听 `*:8081`。 -- 运行环境确认: `H5_PUBLIC_BASE_URL=https://mm.tkmind.cn`,`VITE_MINDSPACE_BASE=https://mm.tkmind.cn`。 +- 运行环境确认: `H5_PUBLIC_BASE_URL=https://m.tkmind.cn`,`VITE_MINDSPACE_BASE=https://m.tkmind.cn`。 - 本机 `http://127.0.0.1:8081/api/status` 返回 `ok`。 - 九个 goosed worker `18006..18014` 均返回 `ok`。 -- 公网 `https://mm.tkmind.cn/api/status` 当前返回 nginx `502 Bad Gateway`,说明域名侧入口尚未接到当前 Portal;该问题纳入 P1 新入口修复,不再回到 105 转发链路处理。 +- 公网 `https://m.tkmind.cn/api/status` 当前返回 nginx `502 Bad Gateway`,说明域名侧入口尚未接到当前 Portal;该问题纳入 P1 新入口修复,不再回到 105 转发链路处理。 ### 2026-07-02 P1 Gateway SSE 配置 变更文件: -- `/opt/homebrew/etc/nginx/servers/mm.tkmind.cn.conf` +- `/opt/homebrew/etc/nginx/servers/` 下对应 `m.tkmind.cn` 的生产入口配置 - `/Users/john/Project/Memind/scripts/wechat-mp-menu.mjs` - `/Users/john/Project/Memind/server.mjs` - `/Users/john/Project/Memind/dist/dev/wechat-share-demo.html` @@ -311,11 +311,11 @@ docker exec memind-runtime-redis redis-cli DEL memind:runtime:worker:goosed-3:dr 备份: -- `/opt/homebrew/etc/nginx/backups/mm.tkmind.cn.conf.bak-streaming-20260702-0635` +- `/opt/homebrew/etc/nginx/backups/` 下对应 `m.tkmind.cn` 的 streaming 备份配置 已完成: -- `mm.tkmind.cn` 通过本机 nginx 反向代理到 Portal `127.0.0.1:8081`。 +- `m.tkmind.cn` 通过本机 nginx 反向代理到 Portal `127.0.0.1:8081`。 - 为 `/api/sessions//events` 和 `/api/agent/runs//events` 增加 SSE 专用 nginx location: - `proxy_buffering off` - `proxy_cache off` @@ -324,16 +324,16 @@ docker exec memind-runtime-redis redis-cli DEL memind:runtime:worker:goosed-3:dr - `proxy_send_timeout 3600s` - `add_header X-Accel-Buffering no always` - 通用 `location /` 增加 `proxy_read_timeout 300s` 和 `proxy_send_timeout 300s`。 -- 微信菜单脚本默认入口改为 `https://mm.tkmind.cn` 和 `https://mm.tkmind.cn/space`。 -- `server.mjs` 内 `H5_PUBLIC_BASE_URL` 缺省值改为 `https://mm.tkmind.cn`。 +- 微信菜单脚本默认入口改为 `https://m.tkmind.cn` 和 `https://m.tkmind.cn/space`。 +- `server.mjs` 内 `H5_PUBLIC_BASE_URL` 缺省值改为 `https://m.tkmind.cn`。 验证: - `nginx -t` 通过。 - `nginx -s reload` 已执行。 -- `https://mm.tkmind.cn/api/status` 返回 `ok`。 -- 未登录访问 `https://mm.tkmind.cn/api/sessions/test-session/events` 返回 `401`,且响应头包含 `x-accel-buffering: no`。 -- 未登录访问 `https://mm.tkmind.cn/api/agent/runs/test-run/events` 返回 `401`,且响应头包含 `x-accel-buffering: no`。 +- `https://m.tkmind.cn/api/status` 返回 `ok`。 +- 未登录访问 `https://m.tkmind.cn/api/sessions/test-session/events` 返回 `401`,且响应头包含 `x-accel-buffering: no`。 +- 未登录访问 `https://m.tkmind.cn/api/agent/runs/test-run/events` 返回 `401`,且响应头包含 `x-accel-buffering: no`。 ### 2026-07-02 P2 Redis Runtime State + Router v1 @@ -375,7 +375,7 @@ docker exec memind-runtime-redis redis-cli DEL memind:runtime:worker:goosed-3:dr - `memind:runtime:worker:goosed-3:active_streams=1` - `memind:runtime:worker:goosed-3:heartbeat=` - `memind:runtime:stream:20260701_24:status=active` -- `https://mm.tkmind.cn/api/status` 返回 `ok`。 +- `https://m.tkmind.cn/api/status` 返回 `ok`。 - 九个 goosed worker `18006..18014` 均返回 `ok`。 ### 2026-07-02 P3 Observability v1 @@ -398,11 +398,11 @@ docker exec memind-runtime-redis redis-cli DEL memind:runtime:worker:goosed-3:dr 验证: - `/opt/homebrew/opt/node@24/bin/node --check /Users/john/Project/Memind/server.mjs` 通过。 -- `https://mm.tkmind.cn/api/runtime/status` 返回 `ok: true`。 +- `https://m.tkmind.cn/api/runtime/status` 返回 `ok: true`。 - 返回中 `router.enabled=true`,namespace 为 `memind:runtime`。 - 返回中九个目标 `18006..18014` 均 `healthy: true`。 -- `https://mm.tkmind.cn/api/status` 返回 `ok`。 -- 未登录访问 `https://mm.tkmind.cn/api/sessions/test-session/events` 返回 `401`,且响应头包含 `x-accel-buffering: no`。 +- `https://m.tkmind.cn/api/status` 返回 `ok`。 +- 未登录访问 `https://m.tkmind.cn/api/sessions/test-session/events` 返回 `401`,且响应头包含 `x-accel-buffering: no`。 ### 2026-07-02 P4 Tool Gateway v1 第一阶段 @@ -435,10 +435,10 @@ docker exec memind-runtime-redis redis-cli DEL memind:runtime:worker:goosed-3:dr 验证: - `/opt/homebrew/opt/node@24/bin/node --check /Users/john/Project/Memind/server.mjs` 通过。 -- `https://mm.tkmind.cn/api/runtime/status` 返回四个 worker `healthy=true`。 -- `https://mm.tkmind.cn/api/runtime/status` 返回四个 worker `drain=false`。 -- `https://mm.tkmind.cn/api/status` 返回 `ok`。 -- 未登录访问 `https://mm.tkmind.cn/api/sessions/test-session/events` 返回 `401`,且响应头包含 `x-accel-buffering: no`。 +- `https://m.tkmind.cn/api/runtime/status` 返回四个 worker `healthy=true`。 +- `https://m.tkmind.cn/api/runtime/status` 返回四个 worker `drain=false`。 +- `https://m.tkmind.cn/api/status` 返回 `ok`。 +- 未登录访问 `https://m.tkmind.cn/api/sessions/test-session/events` 返回 `401`,且响应头包含 `x-accel-buffering: no`。 ### 2026-07-02 生产同步分支 @@ -453,7 +453,7 @@ docker exec memind-runtime-redis redis-cli DEL memind:runtime:worker:goosed-3:dr - 新建干净源码目录 `/Users/john/Project/memind-clean-main-20260702`。 - 从 `origin/main` 创建分支 `memind-streaming-runtime-20260702`。 -- 迁入本次已在生产验证的 StreamController、Redis Router、runtime status、`mm.tkmind.cn` 和 nginx SSE 配置样例。 +- 迁入本次已在生产验证的 StreamController、Redis Router、runtime status、`m.tkmind.cn` 和 nginx SSE 配置样例。 - 新增远程开发机同步说明 `docs/architecture/remote-dev-sync.md`。 限制: @@ -485,7 +485,7 @@ docker exec memind-runtime-redis redis-cli DEL memind:runtime:worker:goosed-3:dr - `score` - 新增只读检查脚本 `scripts/check-stream-runtime.mjs`。 - 新增 drain 运维脚本 `scripts/runtime-worker-drain.mjs`。 -- runtime 构建模板同步上述脚本,并将 RUNBOOK 中主路径更新为 `mm.tkmind.cn -> local nginx -> Portal :8081`。 +- runtime 构建模板同步上述脚本,并将 RUNBOOK 中主路径更新为 `m.tkmind.cn -> local nginx -> Portal :8081`。 - 本地和远端分支提交 `4420cca chore: add runtime observability ops`。 - 修正检查脚本为 `HEAD` 探测 SSE 入口,避免健康检查打开真实上游 SSE;提交 `c9b7252 fix: avoid opening sse in runtime check`。 @@ -576,8 +576,8 @@ docker exec memind-runtime-redis redis-cli DEL memind:runtime:worker:goosed-3:dr 生产验证: -- `https://mm.tkmind.cn/api/status` 返回 `ok`。 -- `https://mm.tkmind.cn/api/runtime/status` 返回 router enabled,全部 goosed target healthy。 +- `https://m.tkmind.cn/api/status` 返回 `ok`。 +- `https://m.tkmind.cn/api/runtime/status` 返回 router enabled,全部 goosed target healthy。 - `scripts/check-stream-runtime.mjs` 返回 `ok=true`。 - `scripts/check-tool-runtime.mjs` 返回 `ok=true`,普通 chat 不注入 Aider/OpenHands,code mode 对白名单用户可注入。 - `scripts/runtime-worker-drain.mjs status` 返回 `ok=true`,四个 worker drain=false。 @@ -676,7 +676,7 @@ docker exec memind-runtime-redis redis-cli DEL memind:runtime:worker:goosed-3:dr 生产验证: -- `https://mm.tkmind.cn/api/status` 返回 `ok`。 +- `https://m.tkmind.cn/api/status` 返回 `ok`。 - `/api/runtime/status.toolRuntime.codeRunsEnabled=false`。 - 全部 goosed target healthy。 - `scripts/check-agent-code-run-entry.mjs` 返回 `ok=true`。 @@ -735,7 +735,7 @@ docker exec memind-runtime-redis redis-cli DEL memind:runtime:worker:goosed-3:dr - `dryRun=true`。 - 四个 worker 均列出。 - 当前无 stale worker,未执行 apply。 -- `https://mm.tkmind.cn/api/status` 返回 `ok`。 +- `https://m.tkmind.cn/api/status` 返回 `ok`。 ### 2026-07-02 P5.7 Worker Metrics 采样接入 @@ -799,7 +799,7 @@ docker exec memind-runtime-redis redis-cli DEL memind:runtime:worker:goosed-3:dr - `containerHealth` - `metricsSampledAt` - 新 `score` -- `https://mm.tkmind.cn/api/status` 返回 `ok`。 +- `https://m.tkmind.cn/api/status` 返回 `ok`。 - `scripts/check-stream-runtime.mjs` 返回 `ok=true`。 - `scripts/check-agent-code-run-entry.mjs` 返回 `ok=true`。 - `scripts/runtime-worker-drain.mjs reconcile` 返回 `ok=true`,`dryRun=true`。 @@ -903,7 +903,7 @@ docker exec memind-runtime-redis redis-cli DEL memind:runtime:worker:goosed-3:dr - `/Users/john/Project/Memind/server.mjs` - `/Users/john/Project/Memind/scripts/runtime-slo-report.mjs` - 已执行 `launchctl kickstart -k gui/$(id -u)/cn.tkmind.memind-portal`。 -- 重启窗口内 `mm.tkmind.cn` 曾短暂返回 nginx `502`;Portal 随后正常监听 `:8081`,公网 `https://mm.tkmind.cn/api/status` 返回 `ok`。 +- 重启窗口内 `m.tkmind.cn` 曾短暂返回 nginx `502`;Portal 随后正常监听 `:8081`,公网 `https://m.tkmind.cn/api/status` 返回 `ok`。 生产验证: @@ -963,7 +963,7 @@ docker exec memind-runtime-redis redis-cli DEL memind:runtime:worker:goosed-3:dr - `/Users/john/Project/Memind/server.mjs` - `/Users/john/Project/Memind/scripts/runtime-slo-report.mjs` - 已执行 `launchctl kickstart -k gui/$(id -u)/cn.tkmind.memind-portal`。 -- 重启窗口内 `mm.tkmind.cn` 曾短暂返回 nginx `502`;Portal 随后正常监听 `:8081`,公网 `https://mm.tkmind.cn/api/status` 返回 `ok`。 +- 重启窗口内 `m.tkmind.cn` 曾短暂返回 nginx `502`;Portal 随后正常监听 `:8081`,公网 `https://m.tkmind.cn/api/status` 返回 `ok`。 生产验证: @@ -1029,7 +1029,7 @@ docker exec memind-runtime-redis redis-cli DEL memind:runtime:worker:goosed-3:dr - `/Users/john/Project/Memind/scripts/agent-run-worker.mjs` - `/Users/john/Project/Memind/RUNBOOK.txt` - 已执行 `launchctl kickstart -k gui/$(id -u)/cn.tkmind.memind-portal`。 -- 重启窗口内 `mm.tkmind.cn` 曾短暂返回 nginx `502`;Portal 随后正常监听 `:8081`,公网 runtime status 返回 `ok=true`。 +- 重启窗口内 `m.tkmind.cn` 曾短暂返回 nginx `502`;Portal 随后正常监听 `:8081`,公网 runtime status 返回 `ok=true`。 生产验证: @@ -1084,7 +1084,7 @@ docker exec memind-runtime-redis redis-cli DEL memind:runtime:worker:goosed-3:dr - `/Users/john/Project/Memind/scripts/runtime-slo-report.mjs` - `/Users/john/Project/Memind/scripts/agent-run-worker.mjs` - 已执行 `launchctl kickstart -k gui/$(id -u)/cn.tkmind.memind-portal`。 -- 重启窗口内 `mm.tkmind.cn` 曾短暂返回 nginx `502`;Portal 随后正常监听 `:8081`,公网 `https://mm.tkmind.cn/api/status` 返回 `ok`。 +- 重启窗口内 `m.tkmind.cn` 曾短暂返回 nginx `502`;Portal 随后正常监听 `:8081`,公网 `https://m.tkmind.cn/api/status` 返回 `ok`。 生产验证: @@ -1333,7 +1333,7 @@ docker exec memind-runtime-redis redis-cli DEL memind:runtime:worker:goosed-3:dr - `toolRuntime.queue.inFlight=0` - `toolRuntime.queue.pendingDispatches=0` - `toolRuntime.queue.statusCounts={}` -- `mm.tkmind.cn` runtime health 仍为 `ok=true`。 +- `m.tkmind.cn` runtime health 仍为 `ok=true`。 ### 2026-07-02 P5.13 Runtime SLO Report Retention @@ -1444,7 +1444,7 @@ docker exec memind-runtime-redis redis-cli DEL memind:runtime:worker:goosed-3:dr 发布后状态: -- `https://mm.tkmind.cn/api/status`: `ok` +- `https://m.tkmind.cn/api/status`: `ok` - `toolRuntime.codeRunsEnabled=false` - `toolRuntime.chatInjectsCodeTools=false` - `toolRuntime.queue.autoDispatch=true` @@ -1536,7 +1536,7 @@ canary 验证: - `/Users/john/Project/backups/memind/memind-persisted-20260702-085706-a0af049-before.tar.gz` - `/Users/john/Project/archives/Memind-source-before-20260702-085706-a0af049` - 恢复后验证: - - `https://mm.tkmind.cn/api/status`: `ok` + - `https://m.tkmind.cn/api/status`: `ok` - `toolRuntime.codeRunsEnabled=false` - `toolRuntime.chatInjectsCodeTools=false` - `toolRuntime.queue.autoDispatch=true` @@ -1668,8 +1668,8 @@ canary 验证: - 未删除 PG 数据 - 未删除或改写 MindSpace 用户数据 - 发布验证: - - `https://mm.tkmind.cn/api/status`: `ok` - - `https://mm.tkmind.cn/api/runtime/status`: `ok=true` + - `https://m.tkmind.cn/api/status`: `ok` + - `https://m.tkmind.cn/api/runtime/status`: `ok=true` - `toolRuntime.codeRunsEnabled=false` - `toolRuntime.chatInjectsCodeTools=false` - `toolRuntime.queue.toolGateway.enabled=false` @@ -1809,7 +1809,7 @@ Dry-run canary: - 生产 `.env` 无 `MEMIND_TOOL_GATEWAY_*`。 - 生产 `.env` 无 `MEMIND_AGENT_CODE_RUNS_*`。 -- `https://mm.tkmind.cn/api/runtime/status`: +- `https://m.tkmind.cn/api/runtime/status`: - `ok=true` - `toolRuntime.codeRunsEnabled=false` - `toolRuntime.queue.toolGateway.enabled=false` @@ -1891,7 +1891,7 @@ file proof: - 生产 `.env` 无 `MEMIND_TOOL_GATEWAY_*`。 - 生产 `.env` 无 `MEMIND_AGENT_CODE_RUNS_*`。 -- `https://mm.tkmind.cn/api/runtime/status`: +- `https://m.tkmind.cn/api/runtime/status`: - `ok=true` - `toolRuntime.codeRunsEnabled=false` - `toolRuntime.queue.toolGateway.enabled=false` @@ -1986,7 +1986,7 @@ file proof: - 已恢复 `.env`。 - 临时登录 session 已 revoke。 -- `https://mm.tkmind.cn/api/runtime/status`: +- `https://m.tkmind.cn/api/runtime/status`: - `ok=true` - `toolRuntime.codeRunsEnabled=false` - `toolRuntime.queue.autoDispatch=true` @@ -2056,11 +2056,11 @@ file proof: - release 脚本第一次在已知历史 docx 缺失链接处停止。 - 按用户要求不修复/不删除/不改写历史用户数据,第二次发布使用 `ALLOW_MINDSPACE_PUBLIC_LINK_ISSUES=1` 仅跳过该守卫。 - release 过程中脚本完成当前 live 全目录备份和持久目录备份。 -- 105 legacy tunnel step 仍由脚本执行并健康,但 H5 主路径继续是 `https://mm.tkmind.cn`。 +- 105 legacy tunnel step 仍由脚本执行并健康,但 H5 主路径继续是 `https://m.tkmind.cn`。 发布后状态: -- `https://mm.tkmind.cn/api/runtime/status`: +- `https://m.tkmind.cn/api/runtime/status`: - `ok=true` - `toolRuntime.codeRunsEnabled=false` - `toolRuntime.queue.autoDispatch=true` @@ -2150,7 +2150,7 @@ installer 默认行为: 发布后状态: -- `https://mm.tkmind.cn/api/runtime/status`: +- `https://m.tkmind.cn/api/runtime/status`: - `ok=true` - `toolRuntime.codeRunsEnabled=false` - `toolRuntime.queue.autoDispatch=true` @@ -2266,7 +2266,7 @@ canary repo: - `installed-disabled` - `state=not running` - no `agent-run-worker.mjs` process -- `https://mm.tkmind.cn/api/runtime/status`: +- `https://m.tkmind.cn/api/runtime/status`: - `ok=true` - `toolRuntime.codeRunsEnabled=false` - `toolRuntime.queue.autoDispatch=true` @@ -2338,7 +2338,7 @@ canary repo: 发布后验证: -- `https://mm.tkmind.cn/api/runtime/status`: +- `https://m.tkmind.cn/api/runtime/status`: - `ok=true` - `toolRuntime.codeRunsEnabled=false` - `toolRuntime.queue.autoDispatch=true` @@ -2426,14 +2426,14 @@ runtime/status: - release 脚本在 legacy `m.tkmind.cn` tunnel step 短暂返回失败;Portal runtime 已切换且健康。 - 后续检查显示: - - `mm.tkmind.cn` 主路径正常。 + - `m.tkmind.cn` 主路径正常。 - `cn.tkmind.memind-portal-tunnel` 已恢复 running。 - Portal node pid `35983` 正在监听 `:8081`。 -- 该 legacy tunnel 不是当前 H5 主路径,当前 H5 主路径仍是 `https://mm.tkmind.cn`。 +- 该 legacy tunnel 不是当前 H5 主路径,当前 H5 主路径仍是 `https://m.tkmind.cn`。 发布后状态: -- `https://mm.tkmind.cn/api/runtime/status`: +- `https://m.tkmind.cn/api/runtime/status`: - `ok=true` - `toolRuntime.codeRunPolicy.enabled=false` - `toolRuntime.codeRunPolicy.userAllowlist=[]` @@ -2722,7 +2722,7 @@ runtime/status: 验证: -- `https://mm.tkmind.cn/api/status` 返回 `ok`。 +- `https://m.tkmind.cn/api/status` 返回 `ok`。 - `/api/runtime/status`: - `codeRunPolicy.requireValidation=true` - `toolRuntime.queue.maxConcurrentRuns=2` @@ -2849,8 +2849,8 @@ runtime/status: 生产验证: -- `https://mm.tkmind.cn/api/status` 返回 `ok`。 -- `https://mm.tkmind.cn/auth/status` 未登录返回 `200 {"authenticated":false,"mode":"user"}`。 +- `https://m.tkmind.cn/api/status` 返回 `ok`。 +- `https://m.tkmind.cn/auth/status` 未登录返回 `200 {"authenticated":false,"mode":"user"}`。 - `/api/runtime/status.toolRuntime`: - `codeRunsEnabled=true` - `requireValidation=true` @@ -2909,7 +2909,7 @@ runtime/status: 生产验证: -- `https://mm.tkmind.cn/` 已加载新 bundle: +- `https://m.tkmind.cn/` 已加载新 bundle: - `/assets/index-jYf9W5vk.js` - `/api/runtime/status`: - `ok=true` @@ -2990,7 +2990,7 @@ runtime/status: 生产验证: -- `https://mm.tkmind.cn/api/status` 返回 `ok`。 +- `https://m.tkmind.cn/api/status` 返回 `ok`。 - `/api/runtime/status.toolRuntime.queue`: - `maxConcurrentRuns=2` - `heartbeatMs=30000` diff --git a/docs/architecture/remote-dev-sync.md b/docs/architecture/remote-dev-sync.md index 7ff09cf..27fb61c 100644 --- a/docs/architecture/remote-dev-sync.md +++ b/docs/architecture/remote-dev-sync.md @@ -19,7 +19,7 @@ - 不在生产运行目录执行 `git reset --hard`、`git clean -fdx`、`rm -rf`、数据库清理或数据目录同步删除。 - 不提交生产 `.env`、数据库、`MindSpace/`、`data/`、`users/`、`.tailscale/`、`logs/`、证书、密钥和运行缓存。 -- 本次 H5 public base 临时切到 `https://mm.tkmind.cn`。 +- 本次 H5 public base 临时切到 `https://m.tkmind.cn`。 - 后续公网 H5 不再依赖 105 转发链路;105 只保留 legacy/rollback 说明。 ## 远程开发机拉取方式 @@ -51,8 +51,8 @@ cp .env.example .env 生产关键项: ```text -H5_PUBLIC_BASE_URL=https://mm.tkmind.cn -VITE_MINDSPACE_BASE=https://mm.tkmind.cn +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 ``` @@ -62,8 +62,8 @@ 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 示例: `deploy/nginx/mm.tkmind.cn.conf`。 -- H5 public base: `mm.tkmind.cn`。 +- Gateway SSE 示例: `m.tkmind.cn` 对应的 nginx SSE 配置。 +- H5 public base: `m.tkmind.cn`。 - 普通用户默认不暴露 Aider/OpenHands,显式白名单保留。 ## 验证命令 @@ -71,8 +71,8 @@ MEMIND_RUNTIME_REDIS_NAMESPACE=memind:runtime ```bash node --check server.mjs node --check scripts/wechat-mp-menu.mjs -curl -sk https://mm.tkmind.cn/api/status -curl -sk https://mm.tkmind.cn/api/runtime/status +curl -sk https://m.tkmind.cn/api/status +curl -sk https://m.tkmind.cn/api/runtime/status ``` ## 回滚思路 diff --git a/docs/local-dev.md b/docs/local-dev.md index a1c118b..6016038 100644 --- a/docs/local-dev.md +++ b/docs/local-dev.md @@ -110,7 +110,7 @@ Plaza 本地开发说明见 [plaza-local.md](./plaza-local.md)。生产发布、 |---|---|---| | 配置真相 | 复制 `.env.example`,只填本地联调值 | 仅在 103 维护,**不提交 Git** | | `TKMIND_API_TARGET` | 通常单实例 `https://127.0.0.1:18006` | 9 个 goosed target(`18006`–`18014`),见 [103 runtime topology](./103-runtime-topology.md) | -| `H5_PUBLIC_BASE_URL` | `http://127.0.0.1:5173` | `https://mm.tkmind.cn` | +| `H5_PUBLIC_BASE_URL` | `http://127.0.0.1:5173` | `https://m.tkmind.cn` | | `MEMIND_SESSION_BROKER_ENABLED` | Patch 2 起可本地设 `1` 验证 | 灰度窗口由运维在 103 `.env` 单独开启 | | RDS / Redis | 可连本地 MySQL 或留空 | 生产 RDS + Redis,见 103 `.env` | diff --git a/scripts/build-portal-runtime.mjs b/scripts/build-portal-runtime.mjs index 9ca1e5d..6914e37 100755 --- a/scripts/build-portal-runtime.mjs +++ b/scripts/build-portal-runtime.mjs @@ -403,7 +403,7 @@ async function writeMetadata() { 'Deployment and operations transport:', ' H5 public domain: m.tkmind.cn', ' Current public path: m.tkmind.cn -> 105 nginx -> 103 Portal :8081', - ' Test-only path: mm.tkmind.cn -> 105 nginx -> local/103 test routing when explicitly enabled.', + ' No separate public test domain remains; use explicit local/test overrides only when needed.', ' Production H5 and WeChat links should use m.tkmind.cn unless a test rollout explicitly overrides H5_PUBLIC_BASE_URL.', '', 'Streaming runtime operations:',